Instrukcje pętli oraz instrukcja wyboru switch
Pętla for:
for ( instrukcja początkowa ; warunek sterujący ; instrukcja kroku)
gdzie
Instrukcja początkowa - wykonywana jest przed pierwszym obrotem pętli, zazwyczaj instrukcja przypisania. W C++ liczba obrotów pętli oznaczana jest 0 do (n-1) - w przeciwieństwie do Pascala gdzie było 1 do n;
Warunek sterujący - wyrażenie, którego wartość logiczna jest badana przed każdym obiegiem pętli.
Instrukcja kroku - instrukcja wykonywana po każdym obrocie pętli, tzw licznik.
Instrukcja inkrementacji i++ jest równoważna i = i+1
Instrukcja dekrementacji i-- jest równoważna i = i -1
Np.
for (int i = 0; i < 10; i++)
{
cout << i ;
}
Wyświtlenie:0 1 2 3 4 5 6 7 8 9
lub
for ( instrukcja końcowa ; warunek sterujący ; instrukcja kroku)
Np.
for (int i = 10; i >0; i- -)
{
cout << i ;
}
Wyświetlenie: 10 9 8 7 6 5 4 3 2 1
Pętla while:
while (wyrażenie)
instrukcja;
gdzie wyrażenie przyjmuje wartość logiczną true lub false
np.
int main()
{
char z; //definicja zmiennej
cout << "Podaj znak ";
cin >> z; //wczytanie zmiennej
while (z!='k') //dopóki z nie jest różne od znaku k
{
cout << "Podaj kolejny znak ";
cin >> z; //wczytanie ponownie zmiennej
}
cout << "Podales " << k<< " wiec koncze"; //jako z wczytano znak k wiec oznacza to
koniec pętli
}
Pętla while sprawdza warunek przed wykonaniem instrukcji wewnątrz pętli, instrukcja zatem może się nie wykonać wcale.
Pętla do ..while
do
instrukcja;
while (warunek)
np.
int main()
{
int i = 0; // definicja zmiennej
do // rób...
{ // klamra otwierająca blok instrukcyjny
cout << '*'; // wypisz gwiazdkę
i++; // zwiększ wartość zmiennej i
} // klamra zamykająca blok instrukcyjny
while (i<4); // ...dopóki i jest mniejsze od czterech
}
Pętla do ..while wykonuje się co najmniej raz w programie ponieważ warunek wyjścia jest sprawdzany na końcu.
Instrukcja break:
Wpisanie w pętli słowa break powoduje natychmiastowe wyjście z pętli.
Instrukcja wyboru switch:
switch (wyrażenie)
{
case wartość1: instrukcja 1; break;
case wartość2:instrukcja 2; break;
…
default:instrukcja_inna; break;
}
Jeśli wartość wyrażenie odpowiada którejś z wartości podanych po etykiecie case, wówczas zostanie wykonana instrukcja znajdująca się przy tej właśnie etykiecie. Po wykonaniu instrukcji następuje instrukcja break powodująca przekazanie sterowania do instrukcji poza blokiem switch.
Jeśli wyrażenie nie przyjmie żadnej z wartości przy etykiecie case, wówczas wykonana zostanie instrukcja z etykieta default. Wpisywanie etykiety default jest obiektywne.
Np.
int main()
{
int lekcja; //definicja zmiennej stanowiącej wyrażenie
cout << "Ktora godzina lekcyjna sie zaczela? ";
cin >> lekcja; //wczytanie zmiennej
switch (lekcja)
{
case 1: cout << "Masz teraz matematyke"; break;
case 2: cout << "Masz teraz fizyke"; break;
case 3: cout << "Masz teraz j. polski"; break;
case 4: cout << "Masz teraz historie"; break;
case 5: cout << "Masz teraz geografie"; break;
case 6: cout << "Masz teraz informatyke"; break;
default: cout << "Jestes juz po lekcjach"; break; //jeśli nie występuje żadna z wartości 1-6
}
}
Wyświetlenie:
Ktora godzina lekcyjna sie zaczela?2
Masz teraz fizyke
Przykład bez użycia instrukcji break:
int lekcja; //definicja zmiennej stanowiącej wyrażenie
cout << "Ktora godzina lekcyjna sie zaczela? ";
cin >> lekcja; //wczytanie zmiennej
cout<<”pozostały lekcje:”<<endl;
switch (lekcja)
{
case 1: cout << " matematyka";
case 2: cout << " fizyka";
case 3: cout << " j. polski";
case 4: cout << " historia";
case 5: cout << " geografia";
case 6: cout << " informatyka";
}
}
Wyświetlenie:
Która godzina lekcyjna się zaczela?4
Pozostały lekcje: historia geografia informatyka
ZADANIA:
Napisz program, który:
wczytuje liczbę całkowitą z klawiatury. Program powinien przyjmować jedynie liczę dodatnia. W przypadku gdy liczba nie jest dodatnia powinien być wyświetlony komunikat o błędzie i ponowiona próba wczytania liczby.
wczytuje z klawiatury liczbę aż do momentu gdy będzie ona należała do przedziału <0;100>
wyświetla liczby parzyste dopóki ich sumę nie przekroczy 20
wczytuje z klawiatury poprawny numer miesiąca tzn. liczbę z przedziału <1;12>. Zakładamy, że możliwe są tylko 3 próby podania poprawnego numeru. Do liczenia prób wprowadź zmienną określającą licznik, zwiększaną w każdym obrocie pętli.
dla wczytanej z klawiatury liczby n ,wypisze na ekranie liczby 1, 4, 9, … n2.
wczytuje z klawiatury liczby rzeczywiste aż do momentu, gdy podana liczba jest równa 0, a następnie wyświetla na ekranie sumę i średnia arytmetyczną tych liczb.
najpierw wczytuje liczbę naturalną n, następnie wczytuje n liczb rzeczywistych i jako wynik działania wyświetla na ekranie liczbę najmniejszą i największą z podanego ciągu.
dla wczytanej z klawiatury liczby naturalnej wypisuje sumę jej cyfr.
pobiera od użytkownika liczbę całkowitą n i liczy n!
liczący pole kwadratu podanej długości boku. W przypadku podania niewłaściwej wartości, czyli zera lub liczby ujemnej, program wyświetla komunikat z prośbą o podanie poprawnej wartości.
wyświetla nazwy dni tygodnia w zależności od cyfry określającej kolejne dni z zakresu 1-7, jaką wprowadza użytkownik
korzysta z zad 11 z tą różnicą, że po wprowadzeniu cyfry określającej dzień tygodnia, wyświetlone zostaną :dany dzień oraz dni, które pozostały do końca tygodnia
wyświetla nazwy miesięcy w zależności od cyfry określającej kolejne numery miesiąca z zakresu 1-12, jaką wprowadza użytkownik
korzysta z zad 13 z tą różnicą, że po wprowadzeniu cyfry określającej miesiąc, wyświetlone zostaną :dany miesiąc oraz miesiące, które pozostały do końca roku