урок №5

Пряме відношення до програмування має дисципліна, яка називається математичною логікою. Основу математичної логіки становить алгебра логіки, або числення висловів. Під висловом розуміється будь-яке твердження, відносно якого можна однозначно сказати, істинно воно або помилково. Наприклад, «Місяць - супутник Землі» - це правда, «5> 3» - це правда, «Москва - столиця Китаю» - помилково; «1 = 0» - помилково. Істина або брехня є логічними величинами. Логічні значення наведених вище висловлювань однозначно визначені; іншими словами, їх значення є логічними константами.

Логічне значення нерівності х <0, где х — переменная, является переменной величиной. В зависимости от значения х оно может быть либо истиной, либо ложью. В связи с этим возникает понятие логической переменной.

Основи формального апарату математичної логіки створив в середині XIX в. англійський математик Джордж Буль. У його честь числення висловів називають булевої алгеброю, а логічні величини - Булевського.

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

Є три основні логічні операції: заперечення, кон'юнкція (логічне множення) і диз'юнкція (логічне додавання).

Операція заперечення позначається в математичній логіці значком ¬ і Новомосковскется як частка не. Це одномісна операція.

Наприклад, ¬ (x = у) Новомосковскется «ні (х одно y)». В результаті вийде істина, якщо х не дорівнює у, і брехня, якщо х одно у. Заперечення змінює значення логічної величини на протилежне.

Операція кон'юнкції позначається і Новомосковскется як частка і. Це двомісна операція. Наприклад, (х> 0) (х <1) Новомосковскется «х больше 0 и х меньше 1». Данная логическая формула примет значение истина, если х

(0,1), і брехня - в іншому випадку. Отже, результат кон'юнкції - істина, якщо істинні обидва операнда. Знак операції диз'юнкції v Новомосковскется як частка або. Наприклад, (х = 0) v (х = 1) Новомосковскется «х дорівнює 0 або х дорівнює 1». Формула дає істину, якщо х - двійкова цифра (0 або 1). Отже, диз'юнкція дає в результаті істину, якщо хоча б один операнд - істина.

У Паскалі логічні значення позначаються службовими словами false (брехня) і true (істина), а ідентифікатор логічного типу - boolean.

Крім величин (констант і змінних) типу boolean логічні значення false, true приймають результати операцій відносини.

Операції відносини (рис. 18) здійснюють порівняння двох операндів і визначають, істинно або хибно відповідне відношення між ними.

урок №5

Приклади запису відносин: х<у; a+b>= C / d; abs (m-n)<=l. Примеры вычисления значений отношений:

урок №5

Логічні операції виконуються над операндами булева типу. Є чотири логічні операції: Not - заперечення; And - логічне множення (кон'юнкція); Or - логічне додавання (диз'юнкція). Крім цих трьох обов'язкових операцій в Турбо Паскалі є ще операція - виключає АБО. Її знак - службове слово Хоr. Це двомісна операція, яка в результаті дає значення істина, якщо обидва операнда мають різні логічні значення.

Операції перераховані в порядку убування пріоритетів. Результати логічних операцій для різних значень операндів наведені в табл. 3.5.

урок №5

Операції відносини мають найнижчий пріоритет. Тому якщо операндами логічного операції є відносини, то їх слід укладати в круглі дужки. Наприклад, математичного нерівності 1 ≤ х ≤ 50 відповідає наступне логічне вираз:

Логічний вираз є логічна формула, записана на мові програмування. Логічний вираз складається з логічних операндів, пов'язаних логічними операціями і круглими дужками. Результатом обчислення логічного виразу є булева величина (false або true). Логічними операндами можуть бути логічні константи, змінні, функції, операції відносини. Один окремий логічний операнд є найпростішою формою логічного виразу.

Приклади логічних виразів (тут d, b, с - логічні змінні; х, у - речові змінні; k - ціла змінна):

Якщо d = true; b = false; c = true; x = 3.0; y = 0.5; k = 5, то результати обчислення будуть наступними:

У прикладі використана логічна функція odd (k). Це функція від цілого аргументу k, яка приймає значення true, якщо значення k непарне, і false, якщо k парне.

Логічний оператор присвоювання має структуру, представлену на рис. 19.

урок №5

Приклади логічних операторів присвоювання:

2) b: = (x> y) and (k<>0);

3) c: = d or b and not (odd (k) and d).

Програмування розгалужень на Паскалі

Основні теми параграфа:

♦ оператор розгалуження на Паскалі;
♦ програмування повного і неповного розгалуження;
♦ програмування вкладених розгалужень;
♦ логічні операції;
♦ складні логічні вирази.

Оператор розгалуження на Паскалі

У мові Паскаль є оператор розгалуження. Інша його назва - умовний оператор, Формат повного оператора розгалуження наступний:

if <логическое выражение> then <оператор1>

Тут if - «якщо», then - «то», else - «інакше».

Програмування повного і неповного розгалуження

Порівняйте запис алгоритму БІД1 з попереднього параграфа з відповідною програмою.

урок №5

Дуже схоже на переклад з української мови на англійську. Зверніть увагу на наступне відмінність: в програмі немає спеціального службового слова, що позначає кінець розгалуження. Тут ознакою кінця оператора розгалуження є крапка з комою. (Зрозуміло, залишати в програмі порожній рядок зовсім не обов'язково. Тут це зроблено тільки заради наочності.)

Простий формою логічного виразу є операція відносини. Як і в АЯ, в Паскалі допускаються всі види відносин (нижче вказані їх знаки):

<(меньше);>= (Більше або дорівнює);
> (Більше); = (Дорівнює);
<= (меньше или равно); <> (не дорівнює).

А тепер запрограмуємо на Паскалі алгоритм БІД2, в якому використано неповне розгалуження.

урок №5

Знову все дуже схоже. Гілка else в операторі розгалуження може бути відсутнім.

Програмування вкладених розгалужень

Запишемо на Паскалі програму визначення більшого з трьох чисел, Блок-схема яка показана на рис. 6.6. Структура цього алгоритму - вкладені розгалуження. Алгоритм на АЯ (БІТ2) наведено в попередньому параграфі.

урок №5

урок №5

Зверніть увагу на те, що перед else крапка з комою не ставиться. Вся розгалужені частина структури алгоритму закінчується на точці з коми після оператора D: = C.

Складемо програму впорядкування значень двох змінних.

урок №5

Цей приклад ілюструє наступне правило Паскаля: якщо на якійсь з гілок оператора розгалуження знаходиться декілька послідовних операторів, то їх потрібно записувати між службовими словами begin і end. Конструкція такого виду:

begin <последовательность операторов> end

називається складовим оператором. Отже, в описаній вище загальній формі розгалуження <оператор1> і <оператор2> можуть бути простими (один) і складовими операторами.

Нарешті, складемо ще один, третій варіант програми визначення більшого числа з трьох.

Неважко зрозуміти сенс цієї програми. Тут використані три послідовних неповних розгалуження. А умови розгалужень є складні логічні вирази, що включають логічну операцію and (І). З логічними операціями ви зустрічалися, працюючи з базами даних і з електронними таблицями.

Нагадаємо, що операція and називається логічним множенням або кон'юнкція. Її результат - «істина», якщо значення обох операндів - «істина». Очевидно, що якщо А> В і А> С, то А має найбільше значення і т. Д. У Паскалі присутні всі три основні логічні операції:

and - І (сполучення),
or - АБО (диз'юнкція),
not - НЕ (заперечення).

Складні логічні вирази

Зверніть увагу на те, що відносини, які пов'язують логічними операціями, полягають в дужки. Так треба робити завжди! Наприклад, потрібно визначити, чи є серед чисел А, В, С хоча б одне негативне. Це завдання вирішує наступний оператор розгалуження:

if (A<0) or (B<0) or (C<0)
then write ( 'YES') else write ( 'NO');

Вираз, справжнє для негативного числа, може бути записано ще й так:

Коротко про головне

Оператор розгалуження (умовний оператор) Паскаля має вигляд:

if <логическое выражение>
then <оператор1> else <оператор2>

На гілках умовного оператора можуть перебувати прості або складові оператори. Складовою оператор - це послідовність операторів, укладена між службовими словами begin і end.

У складних логічних виразах використовуються логічні операції: and, or, not.

Запитання і завдання

1. Як програмується на Паскалі повне і неповне розгалуження?
2. Що таке складовою оператор? В яких випадках складовою оператор використовується в операторі розгалуження?
3. Виконайте на комп'ютері всі програми, наведені в цьому параграфі.
4. Складіть не менше трьох варіантів програми визначення найменшого з трьох даних чисел.
5. Складіть програму сортування за зростанням значень в трьох змінних: А, В, С.
6. Складіть програму обчислення коренів квадратного рівняння за даними значенням його коефіцієнтів.