русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


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


Дата додавання: 2014-11-28; переглядів: 802.


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

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

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

Пр. Умова "тільки одне зі значень 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. Відношення.

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


<== попередня лекція | наступна лекція ==>
Компілятор і оболонка Turbo Pascal | Приклади програм з умовним оператором


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн