Var a, b, c, h: real;
BEGIN
READ (A,B,C);
IF A<=B THEN GOTO 10
ELSE BEGIN
H: =A;
A:=B;
B:=H;
END;
10:IF A<=C THEN GOTO 20
ELSE BEGIN
H:=A;
A:=C;
C:=H;
END;
20:IF B<=C THEN GOTO 30
ELSE BEGIN
H:=B;
B:=C;
C:=H;
END;
30: Writeln (a, b, c)
END.
Оператор выбора (CASE) обеспечивает выполнение одного оператора (простого или составного) из нескольких возможных. Выбор оператора (последовательности операторов) определяется значением выражения (селектора), которое располагается между ключевыми словами CASE и OF. Значение выражения должно совпадать с константами, любому типу, кроме REAL. Выбор оператора определяется совпадением значения селектора и константы, стоящей перед оператором.
Пример 4 Написать программу для ввода на недели. Программа имеет вид:
PROGRAM DAYWEEK (INPUT, OUTPUT);
VAR NUMBER: INTEGER;
BEGIN
READ (NUMBER);
CASE NUMBER OF
1: WRITELN (‘ПОНЕДЕЛЬНИК’);
2: WRITELN (‘ВТОРНИК’);
3: WRITELN (‘СРЕДА’);
4: WRITELN (‘ЧЕТВЕРГ’);
5: WRITELN (‘ПЯТНИЦА’);
6: WRITELN (‘СУББОТА’);
7: WRITELN (‘ВОСКРЕСЕНЬЕ’); END; END.
Задание А. Вычислить на ЭВМ значение функции
если at < 1;
s = если at = 1;
если at > 1,
для a = 1,3, b = 1,29, t = 0,38.
Схема алгоритма решения представлена на блок – схеме (а). Блоки 3, 5, 7 осуществляют проверку условия — at меньше, равно или больше единицы — ив зависимости от результата сравнения направляют вычисления по одной из ветвей — 4, 6 или 8. Блок 9 выводит на печать полученное значение функции s совместно с введенными исходными данными.
Представленная схема алгоритма не является единственной. Число проверок можно сократить до двух блок - схема (б).
Программы, реализующие схему алгоритма, представленную на блок – схеме (б), имеют вид
Рис
5.2
Программа на языке паскаль:
PROGRAM PRIM3A ( INPUT, OUTPUT) ;
{ЛАБОРАТОРНАЯ РАБОТА ПЗА}
{1 СТУДЕНТ ГРУППЫ РЛ-21 ИВАНОВ Я.}
VAR
А, В, Т, Б: REAL:
BEGIN
WR ITELN (‘ ВВЕДИТЕ А, В, Т');
READ (А, В, Т);
S: =А*Т+В;
IF А*Т=1 ТНЕN S:=COS(A*T);
IF А*Т>1 ТНЕN S:=EXP(-A*T)*COS(A*T);
WRITELN('A=',A:8:3,’ В=',В:8:3,' Т=',Т:8:3);
WRITELN('РЕЗУЛЬТАТ=',S:8:3);
END.
В качестве тестовых наборов исходных данных примем следующие тесты:
1) a = 1, b = 1, t = 0,5, s = 1 * 0,5 + 1 = 1,5;
2) а=1, b==1, t = 1, s = cos (1)= 0,5403;
3) a=2, b=1, t=1, s= e –2 cos (2) = 0,0563.
Задание Б. Вычислить на ЭВМ значение функции, указанной в задании А при изменении аргумента t в диапазоне t [0,1; 2,1] с шагом 0,1. Вывод значений t и s выполнить в виде таблицы.
Схема алгоритма решения приведена на блок - схеме (а). Блоки 5, 6 выполняют собственно расчет значений функции с выдачей их на печать. Это рабочая часть цикла. Блоки 4, 7, 8 являются вспомогательными и служат для организации циклического повторения рабочей части цикла. Блок 4 задает начальное значение параметра цикла t, т. е. осуществляет подготовку цикла. Блок 7 вычисляет текущее значение параметра цикла, увеличивая значение аргумента (параметра цикла) на величину заданного шага. Блок 8 проверяет условие окончания цикла. Для печати заголовка таблицы служит блок 3.
Для цикла с известным числом повторений программа получается более компактной и наглядной, если для его организации использовать оператор цикла, который выполняет функции блоков 4, 7, 8.
Схема алгоритма решения с использованием блока модификации (цикла) представлена в блок - схеме (б).
Программы, реализованные в соответствии со схемой алгоритма (а, б) имеют вид:
Программа на языке ПАСКАЛЬ
PROGRAM PRIH3B(INPUT, OUTPUT);
{ЛАБОРАТОРНАЯ РАБОТА ПЗБ}
{СТУДЕНТ ГРУППЫ РЛ-21 ИВАНОВ И. И}
VAR А, В, Т, S:REAL;
ТО,TK,DT:REAL;
BEGIN
WRITELN ('ВВЕДИТЕ А, В, ТО, TK, DT');
READ (А, В, ТО, TK, DT);
WRITELN ('ТАБЛИЦА ФУНКЦИИ S (Т) ‘);
WRITELN (‘ Т S(T) ‘);
Т:=ТО;
REPEAT
S: =А*Т+В;
IF А*Т=1 ТНЕN S:=COS(A*T);
IF А*Т>1 ТНЕН S:=EXP(-A*T)*COS(A*T);
WRITELN(Т: 10: 3 ' ',S:10;3);
Т: =T+DT
UNTIL T>TK;
END.