Технически университет – София
Катедра ПКТ,ФКСУ
Протокол № 3
дата: *.**.2009
Многопосочно разклонение превключвател - управляваща структура, представляваща механизъм за избор на вариант - избор на един процес от набор взаимно изключващи се вариантни процеси. Организацията на избор на вариант (превключвател) става чрез вложени условни параметри или чрез специално предвидения за реализацията на превключвател оператор case.
Превключвател, организиран чрез вложени условни оператори - подредена в дълбочина структура от n на брой вложени след клаузата else един в друг условни оператори, чиито логически условия взаимно се изключват. По този начин логическото условие на всеки условен оператор дефинира един процес от набора взаимно изключващи се процеси на многопосочното разклонение превключвател.
Блок схема на многопосочно разклонение с вложени оператори

Синтаксис
if <ЛУ_1> then
Оператор_1
else
if <ЛУ_2> then
Оператор_2
else
.........
else
if <ЛУ_n> then
Оператор_n
else
Оператор_n+1
Организация на превключвател чрез оператор case - структура от n на брой оформени в списъци групи константи, при което константа, включена в състава на дадена група не се повтаря в нито една от останалите групи от структурата. По този начин съставът на константите от всеки списък дефинира еднозначно условие по отношение на параметъра case. Условието е изпълнено или не в зависимост от това, дали стойността на параметъра съвпада или не съвпада със стойността на някоя от константите от състава на списъка. Съвкупността от списъците формира набор от n взаимноизключващи се условия. Всяко условие определя един процес от набора взаимно изключващи се вариантни процеси от многопосочното разклонение превключвател.
Блок схема на опеаратор
case
Синтаксис
case Selector of
ListC_1 : Оператор_1;
ListC_2 : Оператор_2;
..........
ListC_n : Оператор_n
else
Оператор_n+1
end;
Особености: променливите в израза - селектор могат да бъдат освен от дискретните стандартни типове и от дискретните типове програмирани от програмиста; етикетните константи могат да бъдат представени и чрез подобласт; освен константи в изразите могат да участват и константни изрази; последователността на записване на константите в съответния списък е без значение; последователостта на записване на операторите и списъцит с етикетни константи пред тях е без значение.
Задача 1
Да се състави и изпълни програма, която намира корените на квадратно уравнение за всички случаи. Коефициентите на квадратното уравнение да се въвеждат от клавиатурата. След получаването на резултата прогамата да извежда на екрана стойностите на корените.
program zadacha1;
var
A, B, C , D: Real;
X1, X2 : Real;
begin
writeln(‘Въведете коефициента А: ‘);
write(’A = ‘);
readln(A);
writeln(’Въведете коефициента B: ‘);
write(’B = ‘);
readln(B);
writeln(’Въведете коефициента C: ‘);
write(’C = ‘);
readln(C);
if A = 0 then
begin
X1 := - C/B;
writeln(’В този случай уравнението е линейно ‘);
writeln(’Неговият корен е Х = ‘,Х1:6:2);
end
else
if C = 0 then
writeln(’Уравнението има решение при Х = 0’)
else
begin
D := Sqr(B) - 4*A*C;
if D < 0 then
writeln(’Уравнението няма реални корени’)
else
it D = 0 then
begin
X1 := -B/(1*A);
X2 := X1;
write(’Уравнението има два ‘);
write(’Равни реални корена: ‘);
writeln(’Х1 = ‘,Х1:6:2,’ Х2 = ‘,Х2:6:2);
end
else
begin
X1 := (- B + Sqrt(D))/(2*A);
X2 := (- B - Sqrt(D))/(2*A);
writeln(’Уравнението има два реални корена: ‘);
writeln(’X1 + ‘,X1:6:2,’, X2 = ‘,X2:6:2);
end;
end;
readln;
end.

Задача 2
Да се състави и изпълни програма тип “меню”, която да въвежда от клавиатурата две числа А и B и да извежда на екрана меню. По избор на потребителя програмата изпълнява едно от четирите аритметични действия - събиране, изваждане, умножение или деление.
program zadacha2;
var
A, B, C : Real;
Is |: Integer;
begin
write(’Въведете числото А: ‘);
readln(A);
write(’Въведете числото B: ‘);
readln(B);
writeln;
writeln;
writeln(’МЕНЮ ПРОСТИ АРИТМЕТИЧНИ ДЕЙСТВИЯ’);
writeln;
writeln(’ СЪБИРАНЕ 1’);
writeln(’ ИЗВАЖДАНЕ 1’);
writeln(’ УМНОЖЕНИЕ 1’);
writeln(’ ДЕЛЕНИЕ 1’);
writeln;
write(’Изберете дейстие (1 - 4): ‘);
readln(Is);
is ((Is < 0) or (Is > 4)) then
begin
writeln(’Въведохте ‘,Is,’ Грешен избор! ‘);
writeln(’Изборът трябва да е от 1 до 4;);
end
else
begin
writeln(’Въведените числа са ‘,А:4:2,’ и ‘,В:4:2);
if Is = 1 then
begin
C := A + B;
writeln(’Сумата им е = ‘,С:4:2);
end
else
if Is = 2 then
begin
C := A - B;
writeln(’Разликата им е = ‘,С:4:2);
end
else
if Is = 3 then
begin
C := A * B;
writeln(’Произвадението им е = ‘,С:4:2);
end
else
begin C := A / B;
writeln(’Частното им е = ‘,С:8:6);
end;
end;
readln;
end.

Задача 3
Да се състави и изпълни програма, която да въвежда от клавиатурата номера на месеца, да определя сезона и името на месеца. Резултатите да се извеждат на екрана.
program zadacha3;
var
month : integer;
m : string [30];
begin
write(' vavedete meseca : ');
readln(month);
begin
case month of
1: m:= 'Qnuari - zima';
2: m:= 'Fevruari - zima';
3: m:= 'Mart - prolet';
4: m:= 'Aprol - prolet';
5: m:= 'Mai - prolet';
6: m:= 'Juni - lqto';
7: m:= 'Juli - lqto';
8: m:= 'Avgust - lqto';
9: m:= 'Septemvri - esen';
10: m:= 'Oktomvri - esen';
11: m:= 'Noemvri - esen';
12: m:= 'Dekemvri - zima';
end
end;
writeln('Meseca i sezona sa : ',m);
readln
end.