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

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

Протокол № 2

дата: 16.10.2009


Управляваща структура разклонение - разклонението е управляваща структура, чрез която действието на програмата продължава с изпълнението на определен процес, избран от набор взаимно изключващи се възможни процеси. В зависимост от броя на възможните посоки прогамата бива:

Многопосочно разклонение - тип двоично дърво(а), тип превключвател(б) и комбнирани структури между тип двоично дърво и  тип превключвател




Управляваща структура алтернатива. Пълна форма оператор if-then-else. Същност – управляваща структура, представляваща механизъм за двоично решение - избор между два алтернативни процеса.

Начин на управление - двоичният избор се осъществява в зависимост от изпълнението (избира се процес Т) или неизпълнението (избира се процес F) на предварително дефинирано логическо уравнение <ЛУ>.

Блок-схема на пълната форма на if-then-else





Действие:

Стъпка 1: изчислява се стойността на булевия израз (<ЛУ> логическо условие);

Стъпка 2: избор на алтернативен процес (Изпълнение на Оператор_Т или Оператор_F)

в зависимост от изчислената стойност:

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

- FALSE - избира се линията грешно - преход към Стъпка 4;

Стъпка 3: изпълнение на Оператор_Т и преход към Стъпка 5;

Стъпка 4: изпълнение на Оператор_F и преход към Стъпка 5;

Стъпка 5: край на двупосочното разклонение

Синтаксис на оператора if-then-else пълна форма
а) с единични оператори
if < ЛУ > then
Оператор_T
else
Оператор_F;
б) със съставни оператори

 

Задача 1

Да се състави програма, която да изследва въведено от клавиатурата число, дели се на 6 и 7 и да извежда на екрана подробна информация за всички случаи - делимо само на едно от числата, делимо на двете числа и неделимо на нито едно от тях.

program demo;

var

Flag_6, Flag_7 : Boolean;

A : Integer;

begin

write(’Въведете числото: ‘);

Readln(A);

writeln;

Flag_6 := True;

Flag_7 := True;

if a mod 6 = 0 then

begin

Flag_6 := False;

write(’Чиалото ‘,А,’ се дели на 6’);

end;

if a mod 7 = 0 then

begin

if Flag_6 then

write(’Чиалото ‘,А,’ се дели на 7’);

else

write(’ I na 7’);

Flag_7 := False;

end;

if Flag_6 and Flag_7 then

writeln(’Числото не се дели нито на 6, нито на 7’);

readln;

end.



Блок схема на задача 1


 

Задача 2


Да се състави програма, която да въвежда от клавиатурата едно цяло число А и границите на два интервала, съответно М - N и Р - Q. Ако числото се дели на зададен от клавиатурата делител Del - дали удвоената му стойност е в границите на втория интервал Р - Q. Да се съставят необходи­мите параметри и съответните входни данни за пълно тестване на програмата.

program demo2;

const

Ci = ‘ е в интервала от ‘;

var

M, N, P, Q : Integer;

A, Del : Integer;

begin

write(’Въведете числото A: ‘);

readln(A);

write(’Въведете делителя Del: ‘);

readln(Del);

writeln(’Въведете границите на първия интервал: ‘);

write(’M = ‘); raedln(M);

write(’N = ‘); raedln(N);

writeln(’Въведете границите на втория интервал: ‘);

write(’P = ‘);

readln(P);

write(’Q = ‘);

readln(Q);

if A mod Del = 0 then

begin

write(’Числото ‘,А,’ се дели на ‘,Del);

A := Sqr(A);

if ((A > M) and (A < N)) then

write(’, квадратът му’,Ci,M,’ - ‘,N);

else

write(’, квадратът му не’,Ci,M,’ - ‘,N);

end

else

begin

write(’Числото ‘,А,’ не се дели на ‘,Del);

A := 2*А;

if ((A > Р) and (A < Q)) then

write(’, удвоената му стойност’,Ci,P,’ - ‘,Q);

else

write(’, удвоената му стойност не’,Ci,P,’ - ‘,Q);

end;

readln;

end.



Блок схема на задача 2

 

Задача 3


Да се състави програма, която намира най-голямото от три различни реални числа, въведени от клавиатурата. Ако числата не са различни, програмата да извежда съответното съобщение и без да обработи числата да приключи своето действие. Да се съставят примери за пълно тестване на програмата.

program demo3;

var

A, B, C, Max : Real;

begin

writeln(’Въведете три различни числа А, В и С’);

writeln;

write(’Въведете А: ‘);

readln(A);

write(’Въведете B: ‘);

readln(B);

write(’Въведете C: ‘);

readln(C);

writeln;

if (A = B) or (A = C) or (C = B) then

writeln(’Защо не сте въвели три различни числа?’)

else

begin

if A > B then

if A > C then

Max := A

else

Max := C

else

if B > C then

Max := B

else

Max := C;

writeln(’Въведени числа ‘,А:4:2,В:4:2,’ и ‘,С:4:2);

writeln(’Най-голямото число е ‘,Max:4:2);

end;

readln;

end.


Блок схема на задача 3


0 коментара:

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