Подручја рада
Претрага
25. WHILE наредба

Уводни део часа :
1. Шта су циклуси ?
2. Које су одлике циклуса ?
-------------------------------------------------------------------------------------------------------------------
Главни део часа :
Када број понављања није унапред познат, наредба for није погодна за организацију циклуса. Тада се користе while или repeat наредбе.
Синтаксни дијаграм и дијаграм тока наредбе while приказан је на слици.


 while.jpg


Наредба while извршава се на следећи начин :
1) израчунава се вредност логичког израза;
2) ако је логички израз тачан ( true ), извршава се наредба иза службене речи do и прелази на корак 1;
3) ако је логички израз нетачан ( false ) завршава се извршавање while наредбе.
Наредба која следи иза службене речи do може бити проста или сложена.

Пример : Написати while наредбу којом се израчунавају и штампају сви непарни бројеви мањи од 100.
x:=1;
while x < 100 do
begin
       writeln(x);
       x:=x+2
end;

Наредба repeat омогућава организацију циклуса код којих се услов понављања испитује тек по извршењу тела циклуса. То значи да ће се такав циклус извршити бар једном, без обзира да ли је услов понављања задовољен или не. Синтаксни дијаграм и дијаграм тока су приказани на слици :

repeat.jpg


Наредба repeat извршава се на следећи начин :

1) извршава се наредба која чини тело циклуса;
2) израчунава се вредност логичког израза;
3) ако је логички израз нетачан ( false ) наставља се извршавање repaeat наредбе кораком 1;
4) ако је логички израз тачан ( true ), завршава се извршавање repeat наредбе.

Било који број наредби, одвојених тачка - зарезом, може бити смештен између repeat и until, што значи да оне преузимају улогу begin и end код сложене наредбе.

Пример 1. - Написати repeat наредбу којом се израчунавају и штампају сви бројеви дељиви са 5 мањи од 19.

i:=0;
repeat
        i:=i + 5;
        write(i:4);
until i > 19;
Наведена наредба узрокује следећи испис : 5  10  15.

Упоредимо наредбе repeat и while на следећем примеру :

x:=101;                                                                           x:=101;
repeat                                                                             while x<=100 do
        x:=x + 2                                                                          x:=x + 2
until x > 100;                                                                   writeln('x=',x);
writeln('x=',x);

По извршењу наредбе repeat добићемо испис : x = 103, што значи да је наредба x:=x + 2 извршена, без обзира на то што
је услов понављања испуњен.
Насупрот томе, наредба while се неће извршити,тако да добијамо испис : x = 101.

Основна разлика између наредби repeat и while је у положају услова понављања, о чему треба водити рачуна.

Одговорити на питања :
1. Написати програм за одређивање троцифрених бројева који су једнаки суми кубова својих цифара.
2. Написати програм за одређивање броја понављања знакова интерпункције у реченици.
3. Написати програм за одређивање броја речи у наведеном реду.
4. Написати програм којим се исписују сви ASCII знакови.
5. Које су основне разлике између while и repeat наредбе ?