Pascal. Структура ветвления. Условный оператор

Структура ветвления. Условный оператор






1. Какая целесообразность применения структуры ветвления в программах?

Бывает, что в программах возникает необходимость организовать ветвление. В этом случае процесс решения задачи происходит на основе выполнения или не выполнения некоторого условия.

В языке Паскаль выбор действия, в зависимости от некоторого условия, может быть реализован с помощью конструкции

if ... then ... else ...

или

if ... then ... 


2. Какой вид имеет полная форма оператора условного перехода if в языке Паскаль?

Полная форма оператора условного перехода if:

if условие then
  оператор1
else
  оператор2;

Действие оператора состоит в следующем: сначала вычисляется значение выражения условие. Если оно истинное (равное TRUE), то выполняется оператор, который следует за словом then (оператор1). Если значение ложное (FALSE), то выполняется оператор, который следует за словом else (оператор2).

Операторы оператор1 и оператор2 могут быть составными, то есть содержать несколько строк кода. Такие операторы берутся в операторные скобки beginend. Такая необходимость возникает, если после зарезервированных слов then или else нужно указать несколько операторов.

В этом случае общий вид оператора условного перехода может иметь, например, следующий вид:

if условие then
begin
  // несколько операторов
  ...
end
else
begin
  // несколько операторов
  ...
end;


3. Какой вид имеет сокращенная форма оператора условного перехода?

Сокращенная форма оператора условного перехода не содержит блока else и имеет вид:

if условие then
  оператор;

В этом случае оператор работает следующим образом. Сначала вычисляется значение логического (булевого) выражения условие. Если результат логического выражения условие истинный (равный TRUE), то выполняется оператор, который следует за словом then. Если результат равный FALSE, то выполняется оператор, который следует за оператором if (в операторе if…then ничего не выполняется).



Если при выполнении условия нужно выполнить несколько операторов, то общий вид оператора условного перехода может быть таким:

if условие then
begin
  // два или больше оператора
  ...
end;


4. Примеры использования оператора условного перехода, который имеет полную форму представления.

Пример 1. Фрагмент программы нахождения максимального значения между двумя вещественными числами.

var
  a,b:real; // a, b - переменные, для которых ищется максимум
  max:real; // максимум

...

begin

  ...

  // a, b - задаются

  if a>b then
    max:=a
  else
    max:=b;

  ...

end;

Пример 2. Вычисление значения функции согласно условию. Пусть необходимо найти значение функции:

formula_01r

Фрагмент программного кода, решающего эту задачу:

...

var
  x,f:real;
 
begin

  ...

  // x - задается

  if -5<x then
    f := x*x+8
  else
    f := -x*x*x+2;

  // в переменной f - результат

  ...

end;


5. Примеры использования оператора условного перехода, который имеет сокращенную форму представления.

Пример 1. Фрагмент кода, который находит минимальное значение между двумя вещественными числами x и y.

...

var
  min:real;

...

begin

  ...

  // x, y - заданы

  min := x;
  if min<y then
    min := y;

  ...

end;

Пример 2. Вычисление значения функции согласно условию. Пусть необходимо найти значение функции:

formula_02r

var
  x, f:real;

begin

  ...

  // x - задано

  if x<-6 then
    f:=3*x*x-x;
  if (-6<=x) and (x<=5) then
    f:=sqrt(7-x);
  if x>5 then
    f:=8*x-3;

...

end;


6. Примеры использования вложенных операторов условного перехода.

Операторы условного перехода могут быть вложенными. Степень их вложенности неограничена.

Пример. Поиск максимального значения среди трех заданных чисел, которые сохраняются в переменных a, b, c. Максимальное значение записывается в переменную max.

...

var
  a, b, c:integer;
  max:integer; // максимальное значение, которое нужно вычислить

...

begin

  ...

  // a,b,c - задается
  if a<b then
  begin
    if b<c then
      max:=c
    else
      max:=b;
  end
  else
  begin
    if a<c then
      max:=c
    else
      max:=a;
  end;

  ...

end;