Умова

У повсякденному житті умова зазвичай формулюється у вигляді питання, на яке можна відповісти Так або Ні. Наприклад:

  • Величина опору дорівнює нулю?
  • Відповідь правильний?
  • Сума покупки більше 300 рублів?

У програмі умова – це вираз логічного типу (Boolean), яке може приймати одне з двох значень: True (істина) або False (брехня).

Рис. 2.1. Два варіанти алгоритму розв’язання однієї задачі

Просте умова полягає з двох операндів і оператора порівняння. У загальному вигляді умова записується таким чином:
Оn1 Оператор On2
де:

    • On1 і ОП2 – операнди умови, в якості яких може виступати змінна, константа, функція або вираз;
    • Оператор – оператор порівняння.

У мові Delphi є шість операторів порівняння, які наведені в табл. 2.1.

Таблиця 2.1. Оператори порівняння

Оператор Опис Результат порівняння
> Більше True, якщо перший операнд більше другого, інакше False
< Менше True, якщо перший операнд менше другого, інакше False
= Так само          True, якщо перший операнд дорівнює другому, інакше
False
<> Не дорівнює True, якщо перший операнд НЕ дорівнює другому, інакше False
> = Більше або дорівнює True, якщо перший операнд більше або дорівнює другому, інакше False
< = Менше або дорівнює True, якщо перший операнд менше або дорівнює другому, інакше False

Нижче наведені приклади умов:

Summa < 1000 Score > = HBound Sim = Chr (13)

У першому прикладі операндами умови є змінна і константа. Значення цієї умови залежить від значення змінної Summa. Умова буде вірним і, отже, мати значення True, якщо значення змінної Summa менше, ніж 1000. Якщо значення змінної Summa більше або дорівнює юоо, то значення цієї умови буде False.

У другому прикладі в Як операнди використовуються змінні. Значення цієї умови буде True, якщо значення змінної Score більше або дорівнює значенню змінної HBound.

У третьому прикладі в Як другий операнда використовується функція. Значення цієї умови буде True, якщо в змінної Sim знаходиться символьний код клавіші <Enter >, рівний 13.
При запису умов слід звернути особливу увагу на те, що операнди умови повинні бути одного типу або, якщо тип операндів різний, то тип одного з операндів може бути приведений до типу іншого операнда. Наприклад, якщо змінна Key оголошена як integer, то умова

Key = Chr (13)

синтаксично невірне, т. к. значення, що повертається функцією Chr має тип char (символьний).

Під час трансляції програми при виявленні невірного умови компілятор виводить повідомлення: incompatible types (несумісні типи).

З простих умов за допомогою логічних операторів: and – “ логічне І ”,

or – “ логічне АБО ”  і not – “ заперечення ” можна будувати складні умови.

У загальному вигляді складне умова записується таким чином:

условіе1 оператор условіе2

де:

  • условіе1 і условіе2 – прості умови (вираження логічного типу);
  • оператор – оператор and або or.

Наприклад:

(ch >= '0') and (ch <= '9')

(day = 7) or (day = 6)

(Forml.Editl.Text <> ' ' ) or (Forml.Edit2.Text <> '' )

Forml.CheckBoxl.Checked and (Forml.Editl.Text <> '' )

Результат виконання логічних операторів and, or і not представлений в табл. 2.2.

Таблиця 2.2. Виконання логічних операцій

Op1 Op2 Opt and Op2 Op1 or Op2
not Op1
False False False False True
False True False True True
True False False True False
True True True True False

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

Наприклад, нехай умова надання знижки сформульовано таким чином: & quot; Знижка надається, якщо сума покупки перевищує 100 руб. і день покупки – неділя & quot ;, Якщо день тижня позначений як змінна Day цілого типу, і рівність її значення семи відповідає неділі, то умова надання знижки можна записати:

(Summa > 100) and (Day = 7)

Якщо умова надання знижки доповнити тим, що знижка надається в будь-який день, якщо сума покупки перевищує 500 руб., то умова можна записати:

((Summa > 100) and (Day =7)) or (Summa > 500)