58
ROZDZIA L 9. INSTR UKCJE STER UJĄCE
Pętle
Często zdarza się, że nasz program musi wielokrotnie powtarzać ten sam ciąg instrukcji. Aby nie przepisywać wiele razy tego samego kodu można skorzystać z tzw. pętli. Pętla wykonuje się dotąd, dopóki prawdziwy jest warunek.
uhile (warunek) {
/* instrukcje do wykonania w pętli */
/* dalsze instrukcje */
Całą zasadę pętli zrozumiemy lepiej na jakimś działającym przykładzie. Załóżmy, że mamy obliczyć kwadraty liczb od 1 do 10. Piszemy zatem program:
#include <stdio.h>
int main ()
{
int a-l;
while (a <= 10) { /* dopóki a nie przekracza 10 */ printf ("y,d\n", a*a); /* wypisz a*a na ekran*/
++a; /* zwiększamy a o jeden*/
>
return 0;
Po analizie kodu mogą nasunąć się dwa pytania:
• Po co zwiększać wartość a o jeden? Otóż gdybyśmy nie dodali instrukcji zwiększającej a, to warunek zawsze byłby spełniony, a pętla “kręciła’* by się w nieskończoność.
• Dlaczego warunek to “a <= 10" a nie “a!—10' ? Odpowiedź jest dość prosta. Pętla sprawdza warunek przed wykonaniem kolejnego “obrotu”. Dlatego też gdyby warunek brzmiał “a!=10" to dla a= 10 jest on nieprawdziwy i pętla nie wykonałaby ostatniej iteracji, przez co program generowałby kwadraty liczb od 1 do 9, a nie do 10.
Od instrukcji while czasami wygodniejsza jest instrukcja for. Umożliwia ona wpisanie ustawiania zmiennej, sprawdzania warunku i inkrementowania zmiennej w jednej linijce co często zwiększa czytelność kodu. Instrukcję for stosuję się w następujący sposób:
for (wyrażenie1; wyrażenie2; vyrażenie3) {
/* instrukcje do wykonania w pętli •/
/• dalsze instrukcje */