Programiranje u C-u

  

 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

©Copyright B Brown. 1984-1998. All rights reserved.