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_01uФрагмент програмного коду, що розв’язує цей приклад:

...

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_02u

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;