12. Искази понављања - петље

Понављање (петља, итерација) је структура која омогућава понављање одређених активности.

FOR петља

Исказ FOR омогућава да се неки део алгоритма понови тачно одређени број пута. Синтакса овог исказа је:
for kp:=pv to kv do iskaz;
где је
  • kp - контролна променљива која одређује колико ће се пута извршити исказ у for исказу;
  • pv - почетна вредност контролне променљиве;
  • kv - крајња вредност контролне променљиве;
Исказ for се може писати и на следећи начин
for kp:=kv downto pv do iskaz;
при чему се исказ извршава за вредности које иду од крајње до почетне, односно од веће ка мањој вредности контролне променљиве.

Пример:

Израдити програм којим се исписује збир свих бројева од 1 до 1000.
program suma;
    uses crt;
    var i, s: longint;
    begin
        clrscr;
        s:=0;
        for i:=1 to 1000 do s:=s+i;
        writeln('zbir svih brojeva od 1 do 1000 iznosi ',s);
  end.

WHILE петља

Исказ WHILE омогућава извршавање неког исказа све док је неки услов испуњен, односно истина (true). Када услов престане бити истина, престаје и извршавање исказа, односно искаче се из петље и програм се наставља извршавањем исказа који је изван WHILE структуре.
while log_izraz do iskaz;
Видљиво је да је могуће да се while исказ не изврши ниједном уколико је вредност логичког израза одмах постављена на false.

Пример:

Израдити програм којим се исписује збир свих бројева од 1 до 1000 применом while наредбе.
program suma;
    uses crt;
    var i, s: longint;
    begin
    clrscr;
    s:=0;
    i:=1;
    while i<=1000 do
        begin
            s:=s+i;
            i:=i+1;
        end;
    writeln('zbir svih brojeva od 1 do 1000 iznosi ',s);
end.

REPEAT ... UNTIL петља

Исказ REPEAT...UNTIL омогућава извршавање одређених акција све док је услов (логички израз) једнак false, то јест док услов није задовољен. У тренутку када логички израз добије вредност true престаје извршавање исказа унутар repeat...until структуре.
repeat
    naredba_1;
    naredba_2;
    ...
    naredba_n
until uslov;
У оваквој структури исказ(и) ће се извршити најмање једном, јер се за разлику од while петље овде услов тестира накнадно, то јест прво се изврши скуп исказа унутар петље, а потом се тестира истинитост логичког израза.

Пример:

Израдити програм којим се исписује зброј свих бројева од 1 до 1000 применом repeat ... until petlje.
program suma;
    uses crt;
    var i, s: longint;
    begin
        clrscr;
        s:=0;
        i:=1;
        repeat
            s:=s+i;
            i:=i+1;
         until i>1000;
    writeln('zbir svih brojeva od 1 do 1000 iznosi ',s);
end.
Comments