Programska petlja while
1. Petlja while
1.4. Primjer 4.
Bez upisivanja programa odgovorite koliko će se puta izvršiti ova petlja?
int i=100,suma=0;while(i)
{
suma+=--i;
i++;
}
Rješenje
Ova će se petlja izvršavati beskonačno.
Početna vrijednost varijable i je 100. Uvjet je samo (i) i dok god je i različit od 0 naredbe u petlji while će se izvršavati. Unutra petlje while nalazi se naredba koja računa zbroj varijabli i (suma+=--i;), ali ta naredba ujedno i dekrementom smanjuje vrijednost varijable i na 99. Naredba i++; ponovo povećava vrijednost varijable i na 100, nakon toga se program vraća na uvjet u naredbi while.
Ako dodate naredbu printf("\n%d\t%d",suma,i); između naredbe suma+=--i; i naredbe i++;vidjet ćete promjene varijabli suma i i. Pokretanjem tako popravljenog programa vidjet ćete kako se mijenja varijabla suma. U jednom od koraka izvođenja programa varijabla suma poprimit će negativan predznak.
Zašto?
Da bismo odgovorili na to pitanje moramo se prisjetiti prikaza cijelih brojeva u računalu. S obzirom na to da je memorija računala ograničena, cijeli se brojevi prikazuju u određenom broju bitova (konkretno int se prikazuje u 32 bita). U jednom koraku izvođenja programa vrijednost varijable suma će biti veća od najvećeg broja koji stane u 32 bita. Višak bitova neće imati mjesto u memoriji i zanemariti će se, procesor će broj interpretirati kao negativan.