Пример 2.Составить блок-схему алгоритма вычисления угла перекладки руля судна в произвольный момент времени. Характер изменения угла перекладки руля изображен на рис. 2.
Рисунок 2 – Характер изменения угла перекладки руля
Программа:
Program Primer2;
Uses Crt;
Var a1,t,t1,t2,t3:real;
Begin
Write(‘Введите параметр t1:’);
Readln(t1);
Write(‘Введите параметр t2:’);
Readln(t2);
Write(‘Введите параметр t3:’);
Readln(t3);
Write(‘Введите время t:’);
Readln(t);
Write(‘Введите значение угла alfa1, уз:’);
Readln(a1);
If t<t1 then a:=a1*t/t1 else
If t<t2 then a:=a1 else
If t<t3 then a:=a1*(t3-t)/(t3-t2) else a:=0;
Writeln(‘Угол перекладки руля alfa=’, a:1:3);
Readkey;
End.
Блок-схема алгоритма вычисления угла перекладки руля судна в произвольный момент времени представлена на рис. 3.
Рисунок 3 – Блок-схема разветвляющегося алгоритма
Дополнительно рассмотрим несколько вариантов написания команды условия в зависимости от вида блок-схемы (рис.4 – рис.6). В данных примерах показаны записи команд от самой краткой до самой полной.
Рисунок 4 – Условие с действиями на одной (а) и двух ветках (б)
Команда (вариант а):
If x<0 then y:=2+x;
Команда (вариант б):
If x<0 then y:=2+x else y:=sqr(x);
Рисунок 5 – Взаимное расположение условий:
последовательное (а) и вложенное (б)
Команда (вариант а):
If x<0 then y:=2+x;
If x<=2 then y:=sqr(x);
Команда (вариант б):
If x<0 then y:=2+x else
If x<=2 then y:=sqr(x) else y:=x-1;
Рисунок 6 – Условие с двумя действиями на каждой ветке
Команда:
If x<0 then
begin
y:=2+x;
z:=5-x;
end
Else
begin
y:=sqr(x);
z:=x*x*x;
end;
Последняя запись представляет собой полный вариант написания команды условия (см. п.2.5). Парная команда begin-end в команде условия If применяется, когда на какой-либо ветке имеется два и более действия. При этом под действиями подразумеваются не только формулы, но и, например, ввод данных, вывод на экран, циклы, другие условия и т.д.