Технически университет – София

Катедра ПКТ,ФКСУ

Протокол № 4

дата: *.**.2009

 

Управляваща структура цикъл. Цикли с неизвестен брой повторения - итерационни цикли.


Същност - итерационните цикли са с неопределен брой изпълнения. Чрез операторите за итерационни цикли се организира многократно изпълнение на блок от оператори, представляващ работно тяло на цикъла.

 

Видове:
  • цикли с предусловие - организират се с оператор while-do.
  • цикли с постусловие - организират се с оператор repeat-until.
Блок схема на цикъл с предусловие

1.jpg (801×483)

Действие:


  • Стъпка 1: инициализация на променливите (преди началото на цикъла);
  • Стъпка 2: избор на алтеранативен процес(изпълнение на тялото или изход от цикъла) в зависимост от стойността на <УК> - изчисление и проверка на стойността на булевия израз(преди всяко изпълнение на тялото).При стойност:

- FALSE - премонава към изход от цикъла - Стъпка 4;

- TRUE - преминава към изпълнение на тялото - Стъпка 3;


  • Стъпка 3: Изпълнява се тялото на цикъла - обработка на данните и актуализация на управляващите променливи, след което управлението се предава в началото на цикъла - Стъпка 2;
  • Стъпка 4: изход от цикъла.

 

Блок схема на цикъл с постусловие

1.jpg (580×431)

 

Действие:


  • Стъпка 1: инициализация на променливите (преди началото на цикъла);
  • Стъпка 2: Изпълнява се тялото на цикъла - възможна инициализация, обработка на данните и актуализация на управляващите променливи;
  • Стъпка 3: избор на алтеранативен процес(изпълнение на тялото или изход от цикъла) в зависимост от стойността на <УК> - изчисление и проверка на стойността на булевия израз. При стойност:

FALSE - премонава към изпълнение от цикъла - Стъпка 4;

TRUE - преминава към изход на тялото - Стъпка 3;


  • Стъпка 4: изход от цикъла.

 

Синтаксис на while-do

а) с единичен оператор

while < УК > do

Oператор_C;

б) със съставен оператор

1.jpg (532×293)

където;

- while и do - служебни думи(запазени думи);

- <УК> - булев израз(булева променлива или булева функция), наречен условие за край на цикъла;

- Оператор_C - тяло на цикъла. Може да бъде единичен прост или структуриран оператор или съставен оператор;

 

Синтаксис на repeat-until

а) с единичен оператор

repeat

Oператор_C;

until <УК>;

б) със съставен оператор

където;

- repeate и until - служебни думи(запазени думи);

- <УК> - булев израз(булева променлива или булева функция), наречен условие за край на цикъла;

- Оператор_C - тяло на цикъла. Може да бъде единичен прост или структуриран оператор или структуриран съставен оператор;

- когато тялото е съставен оператор, не е задължително поставянето на операторните скоби begin и end. Тяхната функция се изпълнява съответно от repeat и until.

 

Задача 1

Да се състави програма, която сумира всички четни числа в затворения интервал от 0 до N,където N е положително число и се задава от клавиатурата. Резултатът от изчисленията да се изведе в подходящ вид на екрана.

program zadacha1;

var

a,n,sum : integer;

begin

write('Vavedete kraq na intervala N = ');

readln(N);

sum := 0;

a := 2;

while a <= N do

begin

sum := sum + a;

a := a +2;

end;

write('sumata ot chetnite chisla');

writeln(' v intervala ot 0 do ',N,' e ',sum);

readln;

end.

1.jpg (807×644)

 

Задача 2


Да се състави програма, която сумира въведени от клавиатурата числа докато сумата им надхвърли 100. В края програмата да извежда на екрана сумата и поредния номер на числото, с което сумата надхвърля 100.

program zadacha2;

var

a,sum,br : integer;

begin

writeln('Въведете число за сумиране ');

br := 0;

sum := 0;

while sum <= 100 do

begin

br := br + 1;

write('Въведете ',br,'-то число: ');

readln(a);

sum := sum + a;

end;

writeln('След обявяване на ',br,'-то число ');

writeln('Сумата надхвърли 100 и е равна на ',sum);

readln;

end.

1.jpg (807×644)

 

Задача 3

Да се състави програма, която сумира само четните от 10 въведени от клавиатурата числа.

program zadacha3;

var

a,sum,br,I : integer;

begin

writeln('Vavedete 10 chisla za sumirane: ');

br := 0;

I := 1;

sum := 0;

while I <= 10 do

begin

write('vavedete ',I:2,'-to chislo: ');

readln(a);

I := I + 1;

if Odd(a) then

continue;

br := br + 1;

sum := sum + a;

end;

write('vavedohte ',br,' chetni chisla, ');

writeln(' sumata im e = ',sum);

readln;

end.

1.jpg (807×644)

 


Задача 3
Да се състави програма, която сумира само четните от 10 въведени от клавиатурата числа.

program zadacha3;
var
a,sum,br,I : integer;
begin
writeln('Vavedete 10 chisla za sumirane: ');
br := 0;
I := 1;
sum := 0;
while I <= 10 do
begin
write('vavedete ',I:2,'-to chislo: ');
readln(a);
I := I + 1;
if Odd(a) then
continue;
br := br + 1;
sum := sum + a;
end;
write('vavedohte ',br,' chetni chisla, ');
writeln(' sumata im e = ',sum);
readln;
end.

0 коментара:

Публикуване на коментар