DO WHILE PETLJA
do { } while petla omogućava da
se naredbe izvršavaju dok je uvjet istinit - TRUE (različit od nule).
Petlja se izvršava barem jednom.
/* Demonstracija petlje DO...WHILE */ #include <stdio.h> main() { int value, r_digit; printf("Unesite broj koji će se ispisati od kraja.\n"); scanf("%d", &value); do { r_digit = value % 10; printf("%d", r_digit); value = value / 10; } while( value != 0 ); printf("\n"); }Gornji program broj koji unese korisnik ispisuje od kraja. To čini koristeći ostatak dijeljenja ( % operator ) da bi krajnje desnu znamenku upisao u varijablu r_digit. Početni broj se zatim dijeli sa 10, i operacija se ponavlja dok broj ne postane jednak 0.
Naša je namjera pokazati da je ovakvo programiranje nepravilno i da bi se trebalo izbjegavati. Ima potencijalne probleme, kojih morate biti svjesni.
Jedan od takvih problema jest nedostatak kontrole. Pogledajmo slijedeći dio programa,
do { r_digit = value % 10; printf("%d", r_digit); value = value / 10; } while( value != 0 );NEMA nikakvog izbora hoće li se petlja izvršavati ili ne. Ulazak u petlju je automatski, jer je vaš jedini izbor nastavak.
Još jedan problem je što se petlja uvijek bar jednom izvrši. Ovo ide uz nedostatak kontrole. To znači da je moguće ući u do { } while petlju s nevaljanim podacima.
Programeri početnici lako mogu zapasti u brdo nevolja, pa je naša preporuka da ovu petlju izbjegavate koristiti. Ovo je jedini put da ćete je ovdje susresti. Uporabu je lako izbjeći korištenjem slijedećeg algoritma,
inicijaliziraj varijablu za kontrolu petlje while( varijabla kontrole petlje je valjana ) { obrađuj podatke prilagodi kontrolnu varijablu ako je potrebno }Sada napišimo ponovno gornji program bez upotrebe do { } while petlje.
/* ponovljeni program bez do-while */ #include <stdio.h> main() { int value, r_digit; value = 0; while( value <= 0 ) { printf("Unesite broj koji će se ispisati od kraja.\n"); scanf("%d", &value); if( value <= 0 ) printf("Broj mora biti pozitivan\n"); } while( value != 0 ) { r_digit = value % 10; printf("%d", r_digit); value = value / 10; } printf("\n"); } Ispis programa Unesite broj koji će se ispisati od kraja. -43 Broj mora biti pozitivan Unesite broj koji će se ispisati od kraja. 423 324