Технически университет – София
Катедра ПКТ, ФКСУ
Протокол № 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 пълна форма
Задача 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 коментара:
Публикуване на коментар