INDEX

Programowanie w C

Pętla while


W języku programowania C, podobnie jak w wielu innych językach, istnieje kilka struktur pętli. Pierwsza zostanie omówiona pętla while. Pętla ta ma ogólnie postać:

    while (Exp) Ins
gdzie Exp jest pewnym wyrażeniem, a Ins instrukcją prostą lub złożoną.

Instrukcja Ins jest wykonywana tak długo, jak długo wyrażenie Exp reprezentuje daną o wartości różnej od zera. Algorytm postępowania jest następujący:

  1. Określa się wartość wyrażenia Exp
  2. Jeżeli Exp jest tożsame zeru, to instrukcje w ciele pętli nie są wykonywane; koniec
  3. Jeżeli dana obliczona z Exp nie równa się zeru, to Ins wykonywana jest jeden raz; powtórzenie opisanych czynności od początku

Załadujmy program przykładowy while.c. Widzimy znane elementy programu takie jak komentarze i dyrektywy preprocesora, a następnie definicję funkcji main. Jej ciało rozpoczyna definicja zmiennej o nazwie licznik. Zmienna ta jest przed wejściem w pętle while wyzerowana. Najistotniejsza dla nas konstrukcja rozpoczyna się od słowa while, za którym w nawiasach okrągłych pojawia się jakieś wyrażenie. Za tą linią (nie jest ona zakończona średnikiem) znajduje się ujęte w klamry ciało pętli. Składa się ono z funkcji printf oraz instrukcji zwiększającej o jeden wartość zmiennej licznik.

Tak długo, jak wyrażenie w nawiasach okrągłych jest prawdziwe wszystkie zdania wewnątrz klamer będą wykonywane. Za pierwszym wejściem w pętle licznik wynosi zero, co jest mniejsze od sześciu, zatem pętla się wykona. Za drugim razem licznik wynosi jeden, bowiem ostatnią instrukcją (wykonaną we wcześniejszym obiegu) była inkrementacja wartości zmiennej o jeden. W tym przypadku pętla też się wykona, bowiem zmienna nadal jest mniejsza od sześciu. W końcu jednak osiągnie ona wartość sześciu i wyrażenie licznik < 6 będzie fałszywe - pętla nie rozpocznie się, a wykonywanie programu będzie kontynuowane od pierwszej instrukcji za ciałem pętli.

Przy instrukcji while należy zwrócić uwagę na możliwe sytuacje:

  1. Pętla nigdy się nie wykona;
    np. przed instrukcją while zmienna licznik jest inicjalizowana na liczbę większą od pięciu.
  2. Pętla się nigdy nie zakończy;
    np. w ciele pętli brak linii zwiększającej wartość zmiennej licznik o jeden.
  3. Jeżeli w pętli ma być wykonywana tylko jedna instrukcja, to nie trzeba jej ujmować w klamry.
  4. Wyrażenie testowane w nawiasach okrągłych może składać się z kilku warunków.
  5. Istnieją konstrukcje, w których interesuje nas tylko dana reprezentowana przez testowane wyrażenie, a ciało pętli składa się z instrukcji pustej tj. samotnego średnika, np. konstrukcja oczekująca na naciśnięcie klawisza ENTER:
        while (getchar() = '\n');

Nigdy nie kończący się program z wypunktowanymi powyżej sytuacjami przedstawia program while02.c. Dodatkowo można w nim znaleźć jedną pętle zagnieżdżoną w drugiej.

INDEX