Программирование разветвляющихся алгоритмов

При записи на языке Паскаль разветвляющихся алгоритмов используют условный оператор. Его общий вид:
1.png
Для записи неполных ветвлений используется неполная форма условного оператора:
2.png
Слова if — then — else переводятся с английского языка на русский как если — то — иначе, что полностью соответствует записи ветвления на алгоритмическом языке.
Обрати внимание!
Перед else знак «;» не ставится.
В качестве условий используются логические выражения:
  • простые — записанные с помощью операций отношения;
  • сложные — записанные с помощью логических операций.
Пример:
Алгоритм определения принадлежности точки x отрезку [a,b]. Если точка x принадлежит данному отрезку, то выводится ответ ДА, в противном случае — НЕТ. Запишем на языке Паскаль алгоритм определения принадлежности точки x отрезку [a,b].
3.png
Пример:
Алгоритм, в котором переменной y присваивается значение большей из трёх величин a, b и c. Запишем на языке Паскаль данный алгоритм.
4.png
В условном операторе и после then, и после else можно использовать только один оператор. Если при некотором условии требуется выполнить определённую последовательность операторов, то их объединяют в один составной оператор.
Конструкция вида
5.png
называется составным оператором.
Пример:
Алгоритм решения квадратного уравнения тебе хорошо известен. Запишем соответствующую программу на языке Паскаль.
program uravnenie;
  var a, b, c: real;
  var d: real;
  var x, x1, x2: real;
begin
  writeln ('Решение квадратного уравнения');
  write ('Введите коэффициенты a, b, c  >>');
  readln (a, b, c);
  d:=b*b-4*a*c;
  if d<0 then writeln ('Корней нет');
  if d=0 then
begin
        x:=-b/2*a;
        writeln ('Корень уравнения x=', x:9:3)
      end;
if d>0 then
begin
       x1:=(-b+sqrt(d))/(2*a);
       x2:=(-b-sqrt(d))/(2*a);
       writeln ('Корни уравнения:');
       writeln ('x1=', x1:9:3);
       writeln ('x2=', x2:9:3)
      end;
end.
В качестве оператора после then и else можно использовать условный оператор. Например, возможна следующая конструкция:
6.png
При использовании таких сложных конструкций (их ещё называют вложенными ветвлениями) следует иметь в виду, что else всегда относится к ближайшему оператору if.
Пример:
Воспользуемся вложенным ветвлением для записи на языке Паскаль алгоритма решения линейного уравнения ax+b=0.
program lin_urav;
var
a,b,x:real;
begin
writeln('Решение линейного уравнения');
write('Введите коэффициенты a и b<<');
readln(a,b);
if a<>0 then
begin
x:=-b/a;
writeln('Корень уравнения x=',x:9:3);
end
else if b<>0 then writeln ('Корней нет')
else writeln(' x - любое число');
end.
Как правило, для решения одной и той же задачи можно предложить несколько алгоритмов. Убедимся в этом, записав программу решения линейного уравнения, не прибегая к вложенным ветвлениям.
program lin_urav_2;
var
a,b,x:real;
begin
writeln('Решение линейного уравнения');
write('Введите коэффициенты a и b<<');
readln(a,b);
if a<>0 then
begin
x:=-b/a;
writeln('Корень уравнения x=',x:9:3);
end;
if (a=0) and (b<>0) then writeln('Корней нет');
if (a=0) and (b=0) then writeln('x-любое число')
end.

Комментариев нет:

Отправить комментарий