Циклус do while

За разлику од циклуса for и while, које услов завршетка проверавају на почетку, do while услов проверава на крају након што направи пролаз кроз тело петље. Do while циклус је сложена наредба која представља петљу са ПОСТУСЛОВОМ.

*** Пример из свакодневног живота којим можемо илустровати do while петљу: Дете се спрема за контролни из математике. Оно вежба задатке докле год су му родитељи код куће, чим родитељи оду на посао он престаје са вежбањем.

Синтакса наредбе do while је следећа:


do
{
    naredba (ili grupa naredbi);
}
while(uslov);

Све наредбе које се налазе између знакова { и } називају се тело петље.

Приметимо да се код do while петље наредба у телу петље увек извршава барем једном.

Наредба у телу петље може бити проста или сложена. Do while петља се ивршава на следећи начин:

  1. Извршава се тело петље.
  2. Проверава се услов, тј. израчунава се израз из услова. Ако је тај израз тачан, односно ако је услов испуњен, тело циклуса се поново извршава и тако даље.
  3. Када услов више није испуњен петља се завршава.

Напомена: Петља do while еквивалентна је следећој while петљи:

izraz1;
naredba;
while (izraz2)
{
    naredba;
    izraz3;
}

Напомена: Такође, ми и while петљу можемо представити помоћу do while петље и то на следећи начин:

izraz1;
if (izraz2)
    do
        naredba;
    while (izraz2);

За разлику од од петљи for и while петља do while се много ређе користи.

Do while петљу можемо представити и блок дијаграмом.(Слика 8.9)

Слика 8.9. Приказ do while петље

*** Пример из свакодневног живота: Сада ћемо видети како ради do while петља на примеру са дететом, родитељима и вежбањем за контролни.
Прво дете седне и крене да вежба и уради један задатак. То је први пролазак кроз петљу. Затим постави себи један услов, а то је питање да ли су родитељи још увек код куће. Ако су родитељи још увек код куће, он наставља да вежба математику и након сваког урађеног задатка провери да ли су родитељи ту. Чим родитељи оду на посао, тј. када услов више није испуњен ученик завршава са вежбањем и иде напоље да се игра.

Пример 1. Написати програм који притиском на командно дугме ODREDI узима природан број n који је корисник унео, израчунава збир првих n природних бројева и исписује резултат на екрану.

Решење:

  1. label1 - у овој лабели ћемо написати Broj n:
  2. textBox1 - у ово поље ће наш корисник да уноси одговарајући податак, тј. унеће природан број n
  3. button1 - ово је наше контролно дугме и на њему ћемо написати ODREDI
  4. label2 - у овој лабели ћемо исписивати резултат нашег задатка
Слика 8.10. Изглед форме у Примеру 1

int n = int.Parse(textBox1.Text);
int zbir = 0;

//Prvo proverimo da li je broj koji je unet prirodan.
if (n < 0) 
{
    //Ukoliko broj nije prirodan ispisujemo odgovarajucu poruku na ekranu.
    MessageBox.Show("Unesite prirodan broj n!"); 
    //Oslobadjamo textBox1 da korisnik moze da unese ispravan broj.
    textBox1.Text = ""; 
}

//Proveravamo da li je unet ispravan broj.
else 
{
    label2.Text =  "Zbir prvih " + n +  " prirodnih brojeva je ";
    do
    {
        //Na zbir dodajemo vrednost broja koji je unet. 
        zbir = zbir + n; 
        //Zatim uneti broj smanjimo za 1 i sada je vrednost naseg broja za jedan manja.
        n--; 
    }
    //Za tu novu vrednost, koja je za jedan manja od prethodne 
    //Proveravamo da li je uslov ispunjen, tj. da li je taj broj veci ili jednak 0.
    while (n >= 0);  

    //Na kraju rezultat ispisujemo u labeli 2.                                
    label2.Text = label2.Text + zbir; 
}
Слика 8.11. Изглед форме у Примеру 1 ако је унос исправан Слика 8.12. Изглед форме у Примеру 1 ако унос није исправан