Pętla while

Pętla while
Ta pętla jest jedną z najpopularniejszych i najbardziej elastycznych. W odróżnieniu od for nie musimy określać ile razy się wykona. Składa się ona z dwóch elementów słowa kluczowego while i warunku kończącego w nawiasach okrągłych. Pętla wykonuje się dopóki wartość logiczna warunku jest prawdziwa. W tej części omówimy również inną pętle do…while. Na początku bardzo prosty przykład użycia.
#include <stdio.h>
int main()
{
int n=0;
while(n<5) //warunek
{
n++;
printf("%d", n); //wypisanie zmiennej n
printf("\n"); //przejście do nowej linii zabieg estetyczny
}
return 0;
}
W odróżnieniu od for inkrementacje zmiennej (zwiększanie o jeden n++) wykonujemy w ciele pętli a nie w nawiasach okrągłych. Widzisz jakie to proste?
#include <stdio.h>
int main()
{
printf("Podaj 5 liczb\n");
int liczba, i = 0, suma = 0; //tworzymy dwie zmienne int
float srednia; //tworzymy zmienną ułamkową
while(i<5) //warunek
{
i++; //inkrementacja zmiennej
printf("%d. ", i); //wypisujemy zmienną i
scanf("%d", &liczba);
suma = suma + liczba; //sumujemy pobrane wartości
}
srednia = suma / 5.0; //obliczamy średnią
printf("Srednia wynosi %.2f ", srednia); //wyświetlamy zmienną float
//ale tylko 2 miejsca po przecinku
return 0;
}
Ten fragment kodu jest z poprzedniej lekcji. Aby go przerobić na pętle while wystarczyło dopisać jedną linijkę a mianowicie i++ oraz stworzyć zmienną na początku programu. Warunek należy czytać w ten sposób. Wykonuj dopóki prawdą jest (i mniejsze od 5). Przytaczanie kolejnych fragmentów kodu nie mam sensu. Jeżeli masz ochotę w ramach ćwiczeń sam możesz to zrobić. Pętla while jest dużo łatwiejsza w użyciu od for więc nie poświęcimy jej tyle czasu. Na koniec pokaże jak zrobić nieskończoną pętle czego oczywiście nie należy robić.
#include <stdio.h>
int main()
{
while(1)
{
printf(":c ");
}
return 0;
}
Oczywiście w okrągłych nawiasach może być cokolwiek co będzie różne od 0. Uzyskamy wówczas ten sam efekt. Tak samo można to uzyskać w do…while.
Pętla do…while
Jest to trzeci typ pętli jaki możemy spotkać w języku C. Jedyna różnica jest taka że ta pętla wykonuje się zawsze co najmniej raz. Spójrz jak to wygląda w praktyce.
#include <stdio.h>
int main()
{
int k, x=0;
printf("0 kończy program\n");
do
{
printf("Niezależnie od k ten napis pojawi się zawsze");
printf("\nPodaj k: ");
scanf("%d", &k);
}while(x!=k);
printf("KONIEC");
return 0;
}
Warto zwrócić uwagę na to po klamrze zamykającej ciało pętli znajduje się słowo while a tam w nawiasach okrągłych warunek. Najbardziej zaskakujące jest jednak to że za nim jest średnik i o tym należy zawsze pamiętać.
Podsumowanie
Pamiętaj aby w ciele pętli robić krok który zbliża zmienną do warunku kończącego. Nie zależnie od tego jakiej pętli używasz programując każda z nich obsługuje instrukcje break i continue. Warto abyś o tym wiedział i miał świadomość że to od Ciebie zależy z jakiej skorzystasz. Każda działa w ten sam sposób różnią się pewnymi drobiazgami.