http://kondel.dx.am
kurs c++ : pętle

Pętle


Pętle służą do wykonywania wielokrotnie tego samego bloku instrukcji.

Pętla while


Składnia:
while( <warunek> )
{
instrukcja1;
instrukcja2;
//...
}
Po słowie kluczowym while w nawiasach podajemy warunek warunek a następnie instrukcje zawarte w bloku.

Na początku sprawdzany jest warunek. Jeżeli jest on spełniony to wykonywane są instrukcje zawarte w bloku. Następnie ponownie jeśli warunek jest spełniony wykonywanie są te same instrukcje z bloku.

UWAGA:
Warunek nie jest spełniony wtedy i tylko wtedy gdy jego wartość logiczna wynosi false co liczbowo odpowiada 0 (zeru). W przeciwnym wypadku warunek jest spełniony.

Pętla kończy się jeżeli warunek nie zostanie jest spełniony (możliwe jest, że instrukcje nie zostaną wykonane ani raz jeżeli warunek nie zostanie spełniony już przy pierwszym sprawdzaniu).

Istnieją jeszcze inne możliwości przerwania pętli:
  • Jeżeli wewnątrz bloku pętli wystąpi słowo kluczowe break to kolejne instrukcje zawarte w tym bloku nie zostaną już wykonane i pętla kończy swoje działanie.
  • Instrukcja goto zawarta w bloku może spowodować skok to etykiety znajdującej się poza blokiem pętli tym samym powodując jej przerwanie.
  • Wewnątrz bloku pętli może znajdować się także instrukcja continue, która co prawda nie powoduje natychmiastowego przerwania pętli ale sprawia, że kolejne instrukcje zawarte w bloku nie zostaną już wykonane i nastąpi ponowne sprawdzenie warunku pętli.

Pomijam słowo kluczowe return, które oczywiście przerywa wykonywanie pętli i całej funckji ;D.

A teraz przykłady:
int i = 5;

while(i < 10) i++; //po wykonaniu pętli i = 10

while(i++) if(i==15) break; //jeśli i wynosi 15 to przerywamy wykonywanie pętli

while(true) goto etykieta1; //skok do etykiety

etykieta1:

while(i <= 20) //wyswietla liczby 15, 16, 17, 19 i 20
{
if(i==18) { i++; continue; }
cout << i++ << endl;
}

Pętla do - while


Składania:
do {
instrukcja1;
instrukcja2;
//...
}while( <warunek> );
Zwracam uwagę, że po nawiasach w których zawarty jest warunek musimy postawić średnik!

Pętla do-while bardzo przypomina pętlę while. Działa ona niemal tak samo z tą różnicą, że instrukcje zawarte w bloku są wykonane minimum jeden raz! Dopiero po ich wykonaniu sprawdzany jest warunek i zależnie od jego spełnienia pętla ponownie wykonuje dane instrukcje bądź jest przerywana.

Pętlę tą możemy przerywać tymi samymi sposobami co pętlę while.

Pętla for


Tradycyjnie zacznę od przedstawienia składni:
for(intrukcja1 ; <warunek> ; instrukcja2)
{
//instrukcje
}
Na początku wykonywana jest instruckcja1 (może być to kilka instrukcji oddzielonych przecinkami). Następnie sprawdzany jest warunek. Jeżeli jest spełniony to wykonywane są instrukcje zawarte w bloku a jeśli nie to pętla kończy swoje działanie. Po wykonaniu tych instrukcji (oczywiście jeżeli pętla nie została zakończona :-) wykonywana jest instruckcja2 (znowu może to być kilka instrukcji oddzielonych przecinkami) po której ponownie sprawdzany jest warunek.

Podsumowując:
Instruckcja1 wykonywana jest zawsze tylko raz na samym początku. Następnie sprawdzany jest warunek i wykonywane są instrukcje zawarte w bloku (war. spełniony). Instruckcja2 wykonywana jest zawsze po wykonaniu instrukcji z bloku (przed sprawdzeniem warunku) - wykonuje się zatem tyle razy ile wykonane zostały instrukcje z bloku chyba, że pętla została przerwana wewnątrz bloku (break, goto czy return).

Jeśli wewnątrz bloku wystąpi instrukcja continue to instrukcje w tym bloku występujące dalej zostaną pominięte i wykonana zostanie instruckcja2 po której sprawdzony zostanie ponownie warunek.


Chyba nieco zagmatwałem opis ostatniej pętli, ale w rzeczywistości jest to bardzo proste.
Dla formalności jeszcze krótki przykład:
for(int i=1; i<=10 ;i++) cout << i << endl;
//pętla wypisze liczby od 1 do 10 włącznie


Valid XHTML 1.1 Valid CSS 2 StopIE.com - Stop Internet Explorer Spam Poison
copyrights © 2003-2014 by Kondel
0.144s.   wróć