РЕФЕРАТ

на тему:

Оператори розгалужень

ПЛАН

1. Оператор розгалужень в мові Паскаль

2. Оператор розгалуження if в мові програмування Сі

Використана література

1. Оператор розгалужень в мові Паскаль

У мові Паскаль умову можна відтворити бульовим виразом, як правило, із
змінними. Його значеннями можуть бути true або false – це залежить від
значень змінних. Звичайно, умови можуть бути тотожно істинними або
тотожно хибними – вони відтворюються виразами, швидше за все, без
змінних. Втім, вирази z or not z і z and not z мають значення відповідно
true і false незалежно від значення z.

Перевірка умови при виконанні програми – це обчислення відповідного
бульового виразу.

Перевірка умов і виконання залежно від цього різних дій задається в мові
Паскаль операторами розгалуження. Вони мають дві форми – повну та
скорочену. Оператор розгалуження в повній формі має вигляд:

if умова then оператор else оператор

Ключові слова if, then, else – це англійські «якщо», «то», «інакше». Для
полегшення читаності програми оператор розгалуження часто записують
«східцями»:

if умова

then

оператор

else

оператор

або

if умова then

оператор

else оператор

Виконання його полягає в тім, що спочатку обчислюється значення умови,
записаної після слова if. Далі, якщо цим значенням є true, виконується
оператор, записаний після слова then, і на цьому виконання закінчується.
Але якщо це значення хибне, те виконується не перший, а другий оператор,
записаний після else. Наприклад, при виконанні послідовності операторів

readln(x);

if x>=0 then z := 1 else z := -1

змінна z одержить значення 1, якщо прочитано невід’ємне значення x. Якщо
ж прочитано значення від’ємне, то z одержить значення –1.

Оператор розгалуження в скороченій формі має вигляд:

if умова then оператор

Він відрізняється лише тим, що якщо обчислення умови дає значення false,
то на цьому його виконання закінчується.

Як бачимо, оператори розгалуження містять умови, з обчислення яких і
починається їх виконання. Тому ці оператори ще називаються умовними.

Застосуємо оператори розгалуження для перекладу алгоритму обчислення
коренів на мову Паскаль. Пункт (3) можна, здавалося б, перекласти так:

if d>0 then x1:=(-b- sqrt(d))/(2*a); x2:=(-b+sqrt(d))/(2*a)

else

if d=0 then x1:=-b/(2*a);

{інакше нічого не робити}

Але це неправильно! Оператор розгалуження закінчується оператором
присвоювання змінній x1. Оператор x2 := (-b+sqrt(d))/(2*a) записано уже
за роздільником «;», тобто після оператора розгалуження. Те, що написано
далі, взагалі не є оператором.

Як же записати послідовність із двох або більше операторів там, де має
бути один? Напрошується відповідь, що їх треба взяти в дужки. І такі
дужки, що перетворюють послідовність операторів у один оператор, у мові
Паскаль є. Це так звані відкриваюча та закриваюча операторні дужки:
ключові слова begin і end (початок і кінець).

2. Оператор розгалуження if в мові програмування Сі

        Оператор розгалуження призначений для виконання тих або інших
дій в залежності від істинності або хибності деякої умови. Основний
оператор цього блоку в Сі — if … else не має ключового слова then, як
у Паскалі, проте обов’язково вимагає, щоб умова, що перевіряється,
розміщувалася б у круглих дужках. Оператор, що слідує за логічним
виразом, є then- частиною оператору if…else.

        Синтаксис оператора :

if (<умова>)

<оператор1>;

[else <оператор2;>]

Рис. 1.6. Синтаксис оператора if

        Умова хибна, якщо вона дорівнює нулю, в інших випадках вона
істинна. Це означає, що навіть від’ємні значення розглядаються як
істинні. До того ж, умова, що перевіряється, повинна бути скалярною,
тобто зводитися до простого значення, яке можливо перевірити на рівність
нулю. Взагалі не рекомендується використання змінних типу float або
double в логічних виразах перевірки умов з причини недостатньої точності
подібних виразів. Більш досвідчені програмісти скорочують оператори
типу:

if (вираз!=0) оператор;

        до наступного:

if (вираз) оператор;

        Обидва логічні вирази функціонально еквівалентні, тому що
будь-яке ненульове значення розцінюється як істина. Це можна довести
наступними програмами:

Приклад 1.

/* програма виводить результат ділення двох дійсних чисел */

#include

#include

void main()

{

      float a,b,c;

      printf(«Введiть число a :\n»);

      scanf(«%f»,&a);

      printf(«Введiть число b :\n»);

      scanf(«%f»,&b);

      if (b==0) printf(«Дiлення да нуль !\n»);

      else

      {

            c=a/b;

            printf(«a : b == %g»,c);

      };

}

Приклад 2.

/* застосування умовного розгалужування */

#include

main()

{

      int number;

      int ok;

      printf(«Введіть число з інтервалу 1..100 : «);

      scanf(«%d»,&number);

      ok=(1<=number) && (number<=100);       if (!ok)             printf("Не коректно !!\n");       return ok; }       Змінній ok присвоюється значення результату виразу: ненульове значення, якщо істина, і в протилежному випадку - нуль. Умовний оператор if(!ok) перевіряє, якщо ok дорівнюватиме нулю, то !ok дасть позитивний результат й відтоді буде отримано повідомлення про некоректність, виходячи з контексту наведеного прикладу. Використана література: Бартків А.Б. та ін. Паскаль: Алгоритми і програми. -К.: Вища школа, 1992. Фаронов В.В. Практика программирования. Учебное пособие. -М.: Нолидж, 1997. -432с. Ян Белецкий. Турбо Паскаль с графикой для персональных компьютеров. -М.: Машиностроение, 1991. -320с.

Похожие записи