Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основи програмування Паскаль.docx
Скачиваний:
51
Добавлен:
12.05.2015
Размер:
511.7 Кб
Скачать

7. Обчислювальний процес, що розгалужується, і умовний оператор

Головне, чого бракує нашим першим програмам – гнучкості й уміння ухвалювати рішення. Адже вже нескладний алгоритм розв'язку квадратного рівняння передбачає два варіанти розрахунків, реальні ж алгоритми можуть видавати результати, що залежать від десятків і сотень умов.

обчислювальний процес, Що розгалужується (РВП) реалізується по одному з декількох напрямків обчислення (галузей алгоритму). Вибір однієї з галузей залежить від істинності або хибності деякої умови (логічного вирази), включеного до складуумовного оператора. Програма повиннавраховувати всіможливі галузі обчислень. Завжди виконуєтьсятільки однаіз усіх можливих галузей.

7.1. Логічні виразибудуються з арифметичних виразів, операцій відношення, логічних операцій і круглих дужок.

Результатом обчислення логічного вирази є одне із двох значень: TRUE або FALSE.

7.2. Операції відношеннямають наступний загальний вид:

арифм.вираз.1 ОО арифм.вираз.2

де ОО – один з наступних знаків операцій:

< <= > >= = <>

Останній знак позначає відношення "не рівно". Звернете також увагу на запис відношення "менше або рівно", "більше або рівно".

У будь-яке логічне вирази повинна входити хоча б 1 операція відношення!

Пр.

d<0вибір галузей обчислень залежить від значення d

sqr(x)+sqr(y)<=sqr(R)результат = TRUE для крапок з коорд. (x,y), що лежать усередині кола радіуса R із центром на початку координат

cos(x)>1результат завжди = FALSE

До дійсних значень операція = ("рівно") у загальному випадку незастосовна через неточну виставу цих значень у пам'яті комп'ютера. Тому для дійсних змінних відношення видуa=bзаміняється наabs(a–b)<E, деЕ– мала величина, що визначає припустиму погрішність.

7.3. Логічні операціїзастосовні тільки в логічних виразих і служать для складання складних умов, що вимагають більш однієї операції відношення. У Паскалі визначено 3 логічних операції:

Математичний запис

Запис на Паскалі

Назва

not

Заперечення

and

Операція "И" (логічне множення)

or

Операція "АБО" (логічне додавання)

xor

Операція ", що виключає АБО"

Операція NOT застосовна до одномулогічному вираженню (єунарной). Результат рівний TRUE, якщо вирази неправильне й навпаки.

Пр.NOT (sin(x)>1)результат завжди TRUE

Операція AND зв'язує не менш двілогічні вирази (єбінарною). Результат рівнийTRUE, якщовсівирази дійсні йFALSE, якщо хоча б одне з виразів неправильно.

Пр.Розпишемо виразиТому що операції приналежності в Паскалі ні, використовуємо операціюANDі операції відношення:(x>=a) and (x<=b)

Розпишемо вирази a,b,c>0 (одночасно): (a>0) and (b>0) and (c>0)

Операція ORтакож зв'язує не менш 2 логічних виразів. Результат рівнийTRUE, якщохочаб одневирази дійсне йFALSE, якщо всі вирази неправильні.

Пр.Розпишемо вирази:(x<a) or (x>b)

інший спосіб – not ((x>=a) and (x<=b))

Пр.Розпишемо умову "хоча б одне зі значень a,b,c позитивно":

(a>0) or (b>0) or (c>0)

Пр.Умова "тільки одне зі значень a,b,c позитивно":

(a>0) and (b<=0) and (c<=0) or (a<=0) and (b>0) and (c<=0) or (a<=0) and (b<=0) and (c>0)

Операція XOR, на відміну відOR, дає неправда (false) і в тому випадку, коли всі зв'язані їй логічні вирази дійсні. Щоб краще усвідомити цю відмінність, складемо так званутаблицю істинностіцих двох логічних операцій. Для стислості значенняfalseпозначимо нулем, аtrue– одиницею. Для двох логічних аргументів можливо всього 4 комбінації значень 0 і 1:

Аргумент A

Аргумент B

A or B

A xor B

0

0

0

0

0

1

1

1

1

0

1

1

1

1

1

0

Пр.Умова "тільки одне зі значень a,b позитивно":

(a>0) xor (b>0)

На жаль, записати умова "тільки одне зі значень a,b,c позитивно" у виді, що напрошується (a>0) xor (b>0) xor (c>0)не можна – результат цього вирази буде рівнийtrueі у випадку, коли всі три значення позитивні! Зв'язане це з тим, що при послідовному розрахунках логічних виразів ліворуч праворуч(1 xor 1) xor 1буде рівно0 xor 1 = 1.

За допомогою xorзручно організовувати різного роду перемикачі, які послідовно повинні ухвалювати одне із двох станів:

x := x xor true;

writeln ('x=',x);

x := x xor true;

writeln ('x=',x);

Незалежно від початкового значення логічної змінної x, друге виведене на екран значення буде логічним запереченням першого. У реальній практиці конструкції подібніx := x xor true;не дублюються в коді багаторазово, а застосовуються усередині циклу (див. главу 9).

Пріоритет операцій:1. not. 2. and. 3. or і xor. 4. Відношення.

Оскільки відношення мають найнижчий пріоритет, те їх необхідно брати в круглі дужки.