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

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

Протокол № 3

дата: *.**.2009

 

 

Многопосочно разклонение превключвател - управляваща структура, представляваща механизъм за избор на вариант - избор на един процес от набор взаимно изключващи се вариантни процеси. Организацията на избор на вариант (превключвател) става чрез вложени условни параметри или чрез специално предвидения за реализацията на превключвател оператор case.

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

 

Блок схема на многопосочно разклонение с вложени оператори

1.jpg (518×773)

 

Синтаксис

if <ЛУ_1> then

Оператор_1

else

if <ЛУ_2> then

Оператор_2

else

.........

else

if <ЛУ_n> then

Оператор_n

else

Оператор_n+1

 

Организация на превключвател чрез оператор case - структура от n на брой оформени в списъци групи константи, при което константа, включена в състава на дадена група не се повтаря в нито една от останалите групи от структурата. По този начин съставът на константите от всеки списък дефинира еднозначно условие по отношение на параметъра case. Условието е изпълнено или не в зависимост от това, дали стойността на параметъра съвпада или не съвпада със стойността на някоя от константите от състава на списъка. Съвкупността от списъците формира набор от n взаимноизключващи се условия. Всяко условие определя един процес от набора взаимно изключващи се вариантни процеси от многопосочното разклонение превключвател.

 

Блок схема на опеаратор case

1.jpg (580×723)

Синтаксис

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.

1.jpg (808×697)

 

Задача 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.

1.jpg (585×755)

 

 

Задача 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.

1.jpg (585×755)


0 коментара:

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