Умовний оператор - що це таке
Умовний оператор IF служить для програмування ситуацій вибору (моделювання різних варіантів розвитку ситуації, з яким ми стикаємося в житті, але тепер уже всередині програми).
Структура умовного оператора. блочность
Умовний оператор в загальному вигляді складається з трьох частин:
- Перевірка логічного значення
- Гілка істинності (обов'язкова) - виконається якщо логічне значення істинне (true)
- Гілка хибності (необов'язкова) - виконається якщо логічне значення помилково (false)
Відразу відзначимо, що логічне значення - це фактично відповідь на питання формату "так / ні". нагадаємо, що логічним типом значенням володіють:
- логічні літерали
- логічні змінні
- і логічні вираження
-- точно також як і будь-який простий тип даних може бути представлений літералами, змінними або виразами з них.
У програмному коді структуру умовного оператора можна проілюструвати наступною схемою:
-- в даному випадку виконається "помилкова" гілка, так як $ 5> 7 $ повертає результат false.
Крапка з комою перед else
Зауважте (див. Приклади вище і нижче), що перед else крапка з комою не ставиться.
Операторні дужки умовного оператора
У попередньому прикладі зверніть увагу на операторні дужки. навколишні тіла гілок оператора розгалуження - begin і end необхідні, якщо в гілці виконується більш однієї операції. якщо ж в гілці міститься тільки одна операція, то операторні дужки не потрібні.
Наприклад для ситуації, зображеної на цій блок-схемі:
Цю ж ситуацію можна проілюструвати кодом:
-- тут в обох гілках тільки одна операція, а тому операторні дужки не потрібні.
Повна і неповна форми оператора IF
Оператор IF в програмі може бути представлений в наступних формах:
- Повна форма - форма оператора if, в якій присутні обидві гілки - і then і else
- Неповна форма - форма в якій присутня тільки then.
Повна форма умовного оператора IF
У повній формі оператора IF присутні обидві гілки - саме повну форму ми розглядали вище, наприклад:
-- тут в якості умови ми порівнювали змінну з числом, а потім описували два сценарії, один з яких виконається в залежності від значення умови.
В останньому прикладі коду, у нас в гілці істинності одна операція, а в гілки хибності 2 - цю ситуацію можна зобразити на блок-схемі так (з якимось попередніми дією до if):
Неповна форма умовного оператора IF
У неповній формі умовного оператора є тільки сценарій істинності. гілка хибності ж взагалі не описується. наприклад:
-- в гілці хибності тут взагалі нічого немає. тобто якщо $ a $ не більше $ 5 $, то і ніяких дій зроблено не буде.
На блок-схемі неповна форма оператора розгалуження виглядає так:
-- правило використання операторних дужок діє і тут: якщо в гілці більше однієї операції, то begin і end потрібні.
Розбір задач
Приклад №1 - неповна форма IF
Порівняйте два числа, якщо перше більше другого, то виведіть на екран "22" і потім окремим викликом writeln () число 555.
-- в цьому завданні вказано, що треба робити якісь дії тільки в одному випадку ( "якщо перше більше другого"), а значить буде використовувати оператор розгалуження в неповній формі:
-- в гілці істинності тут було дві операції, а тому ми використовували для неї операторні дужки.
Приклад №2 - повна форма, по одному дії в кожній гілці
Порівняйте два числа, якщо перше більше другого, то виведіть на екран "22", а інакше виведете на екран 'abc'.
-- в цьому завданні вказані два альтернативних дії, а тому будемо використовувати оператор розгалуження в його повній формі:
-- зверніть увагу, що перед else крапка з комою не ставиться.
Приклад №3 - логічні вираження і оператор розгалуження IF
Коля набрав $ k $ балів, Міша $ n $ балів, а Петя $ d $ балів в ході змагань. якщо:
- сума балів Колі і Міші більше $ 20 $
- і сума балів Петі і Міші менше $ 55 $
--то тоді вивести в консоль повідомлення про те, що нічия, в іншому випадку вивести повідомлення, що переміг Коля.
У цій як умову слід дотримуватися відразу двох підумови, причому не одного з них - а двох одночасно, тому в логічному вираженні для if ми будемо використовувати логічну операцію AND. тоді можна вирішити якось так:
Приклад №4 - вкладені умовні оператори
Оператори можуть вкладатися один в інший так, як як це показано на блок-схемі (на ділі внутрішній оператор вкладається в одну з гілок зовнішнього):
Розглянемо задачу, рішення якої буде відповідати цій блок-схемі:
Отримайте від користувача два цілих числа, якщо перше більше другого, то виведіть на екран їх суму, а потім їх різницю, інакше:
- спочатку порівняйте їх суму з числом $ 25 $, якщо вона більше, то виведіть на екран перше число, а якщо менше, то друге.
- потім виведіть на екран друге число в квадраті
Реалізуємо рішення у вигляді програми:
Приклад №5 - вкладені умовні оператори
Наприклад завдання з більш раннього прикладу:
Коля набрав $ k $ балів, Міша $ n $ балів, а Петя $ d $ балів в ході змагань. якщо:
- сума балів Колі і Міші більше $ 20 $
- і сума балів Петі і Міші менше $ 55 $
--то тоді вивести в консоль повідомлення про те, що нічия, в іншому випадку вивести повідомлення, що переміг Коля.
можна було б вирішити за допомогою вкладених блоків умовного оператора IF:
-- зверніть увагу, що begin і end не потрібні для гілки істинності зовнішнього оператора, так як в нього вкладено лише один if - а інші рядки ставляться до цього вкладеного if.
ВАЖЛИВО: В цьому примі тут у наявності дублювання коду. що є поганим стилем. Більш того вкладені блоки в коді важче розуміти, тому:
Якщо можна не використовувати вкладеність - не використовуйте її. краще використовуйте більш складні умови з логічними операціями.
Приклад №6 - життєвий вибір
Тобто ситуацію, в яку потрапив богатир на цій ілюстрації:
Можна запрограмувати таким чином:
- по суті це теж кілька вкладених один в іншій операторів розгалуження, причому вкладення тут на будь-яких двох молодших рівнях відбувається в гілку хибності.
Самостійна робота
- Для чого потрібен оператор розгалуження (умовний оператор)?
- Які гілки умовного оператора ви знаєте?
- Чим повна форма умовного оператора відрізняється від неповної?
- Коли потрібні операторні дужки в гілках оператора IF, а коли ні?
- Порівняйте два числа, якщо перше більше другого, то виведіть на екран "12". (Тут потрібно використовувати неповну форму умовного оператора)
- Порівняйте два числа, якщо перше більше другого, то виведіть на екран "12", а якщо немає, то виведіть на екран "888".
- Дано три цілих числа: $ A $, $ B $, $ C $. Перевірити істинність висловлювання: «Число $ A $ знаходиться між числами $ B $ і $ C $» - виведіть "так", якщо істинно і "ні" якщо помилково.
ПРИМІТКА: ця наступна задача базуються на тому, що ми вже вирішували (див. Завдання в кінці уроку).
ПРИМІТКА: тут вам знадобляться вкладені if-блоки.
- сума балів Колі і Міші більше $ 20 $
- або твір балів Петі і Міші менше $ 55 $
--то тоді вивести в консоль повідомлення про те, що нічия, в іншому випадку вивести повідомлення, що переміг Коля.