9 Умовний оператор if (оператор розгалуження if else) в паскаль

Умовний оператор - що це таке

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

Структура умовного оператора. блочность

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

  1. Перевірка логічного значення
  2. Гілка істинності (обов'язкова) - виконається якщо логічне значення істинне (true)
  3. Гілка хибності (необов'язкова) - виконається якщо логічне значення помилково (false)

Відразу відзначимо, що логічне значення - це фактично відповідь на питання формату "так / ні". нагадаємо, що логічним типом значенням володіють:

  1. логічні літерали
  2. логічні змінні
  3. і логічні вираження

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

У програмному коді структуру умовного оператора можна проілюструвати наступною схемою:

-- в даному випадку виконається "помилкова" гілка, так як $ 5> 7 $ повертає результат false.

Крапка з комою перед else

Зауважте (див. Приклади вище і нижче), що перед else крапка з комою не ставиться.

Операторні дужки умовного оператора

У попередньому прикладі зверніть увагу на операторні дужки. навколишні тіла гілок оператора розгалуження - begin і end необхідні, якщо в гілці виконується більш однієї операції. якщо ж в гілці міститься тільки одна операція, то операторні дужки не потрібні.

Наприклад для ситуації, зображеної на цій блок-схемі:

9 Умовний оператор if (оператор розгалуження if else) в паскаль

Цю ж ситуацію можна проілюструвати кодом:

-- тут в обох гілках тільки одна операція, а тому операторні дужки не потрібні.

Повна і неповна форми оператора IF

Оператор IF в програмі може бути представлений в наступних формах:

  1. Повна форма - форма оператора if, в якій присутні обидві гілки - і then і else
  2. Неповна форма - форма в якій присутня тільки then.

Повна форма умовного оператора IF

У повній формі оператора IF присутні обидві гілки - саме повну форму ми розглядали вище, наприклад:

-- тут в якості умови ми порівнювали змінну з числом, а потім описували два сценарії, один з яких виконається в залежності від значення умови.

В останньому прикладі коду, у нас в гілці істинності одна операція, а в гілки хибності 2 - цю ситуацію можна зобразити на блок-схемі так (з якимось попередніми дією до if):

9 Умовний оператор if (оператор розгалуження if else) в паскаль

Неповна форма умовного оператора IF

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

-- в гілці хибності тут взагалі нічого немає. тобто якщо $ a $ не більше $ 5 $, то і ніяких дій зроблено не буде.

На блок-схемі неповна форма оператора розгалуження виглядає так:

9 Умовний оператор if (оператор розгалуження if else) в паскаль

-- правило використання операторних дужок діє і тут: якщо в гілці більше однієї операції, то begin і end потрібні.

Розбір задач

Приклад №1 - неповна форма IF

Порівняйте два числа, якщо перше більше другого, то виведіть на екран "22" і потім окремим викликом writeln () число 555.

-- в цьому завданні вказано, що треба робити якісь дії тільки в одному випадку ( "якщо перше більше другого"), а значить буде використовувати оператор розгалуження в неповній формі:

-- в гілці істинності тут було дві операції, а тому ми використовували для неї операторні дужки.

Приклад №2 - повна форма, по одному дії в кожній гілці

Порівняйте два числа, якщо перше більше другого, то виведіть на екран "22", а інакше виведете на екран 'abc'.

-- в цьому завданні вказані два альтернативних дії, а тому будемо використовувати оператор розгалуження в його повній формі:

-- зверніть увагу, що перед else крапка з комою не ставиться.

Приклад №3 - логічні вираження і оператор розгалуження IF

Коля набрав $ k $ балів, Міша $ n $ балів, а Петя $ d $ балів в ході змагань. якщо:

  1. сума балів Колі і Міші більше $ 20 $
  2. і сума балів Петі і Міші менше $ 55 $

--то тоді вивести в консоль повідомлення про те, що нічия, в іншому випадку вивести повідомлення, що переміг Коля.

У цій як умову слід дотримуватися відразу двох підумови, причому не одного з них - а двох одночасно, тому в логічному вираженні для if ми будемо використовувати логічну операцію AND. тоді можна вирішити якось так:

Приклад №4 - вкладені умовні оператори

Оператори можуть вкладатися один в інший так, як як це показано на блок-схемі (на ділі внутрішній оператор вкладається в одну з гілок зовнішнього):

9 Умовний оператор if (оператор розгалуження if else) в паскаль

Розглянемо задачу, рішення якої буде відповідати цій блок-схемі:

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

  1. спочатку порівняйте їх суму з числом $ 25 $, якщо вона більше, то виведіть на екран перше число, а якщо менше, то друге.
  2. потім виведіть на екран друге число в квадраті

Реалізуємо рішення у вигляді програми:

Приклад №5 - вкладені умовні оператори

Наприклад завдання з більш раннього прикладу:

Коля набрав $ k $ балів, Міша $ n $ балів, а Петя $ d $ балів в ході змагань. якщо:

  1. сума балів Колі і Міші більше $ 20 $
  2. і сума балів Петі і Міші менше $ 55 $

--то тоді вивести в консоль повідомлення про те, що нічия, в іншому випадку вивести повідомлення, що переміг Коля.

можна було б вирішити за допомогою вкладених блоків умовного оператора IF:

-- зверніть увагу, що begin і end не потрібні для гілки істинності зовнішнього оператора, так як в нього вкладено лише один if - а інші рядки ставляться до цього вкладеного if.

ВАЖЛИВО: В цьому примі тут у наявності дублювання коду. що є поганим стилем. Більш того вкладені блоки в коді важче розуміти, тому:

Якщо можна не використовувати вкладеність - не використовуйте її. краще використовуйте більш складні умови з логічними операціями.

Приклад №6 - життєвий вибір

Тобто ситуацію, в яку потрапив богатир на цій ілюстрації:

9 Умовний оператор if (оператор розгалуження if else) в паскаль

Можна запрограмувати таким чином:

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

Самостійна робота

  1. Для чого потрібен оператор розгалуження (умовний оператор)?
  2. Які гілки умовного оператора ви знаєте?
  3. Чим повна форма умовного оператора відрізняється від неповної?
  4. Коли потрібні операторні дужки в гілках оператора IF, а коли ні?
  1. Порівняйте два числа, якщо перше більше другого, то виведіть на екран "12". (Тут потрібно використовувати неповну форму умовного оператора)
  2. Порівняйте два числа, якщо перше більше другого, то виведіть на екран "12", а якщо немає, то виведіть на екран "888".
  3. Дано три цілих числа: $ A $, $ B $, $ C $. Перевірити істинність висловлювання: «Число $ A $ знаходиться між числами $ B $ і $ C $» - виведіть "так", якщо істинно і "ні" якщо помилково.

ПРИМІТКА: ця наступна задача базуються на тому, що ми вже вирішували (див. Завдання в кінці уроку).

  • Дано три цілих числа: $ A $, $ B $, $ C $. Перевірити істинність висловлювання: «Число $ A $ і число $ B $ більше 17, а $ C $> 7». - виведіть "так", якщо істинно і "ні" якщо помилково.
  • Користувач вводить два числа, знайдіть з них максимальне. (Тут все просто)
  • Користувач вводить три числа, знайдіть з них максимальне.

    ПРИМІТКА: тут вам знадобляться вкладені if-блоки.

  • Користувач вводить чотири числа, знайдіть з них максимальне.
  • Коля набрав $ k $ балів, Міша $ n $ балів, а Петя $ d $ балів в ході змагань. якщо:
    1. сума балів Колі і Міші більше $ 20 $
    2. або твір балів Петі і Міші менше $ 55 $

    --то тоді вивести в консоль повідомлення про те, що нічия, в іншому випадку вивести повідомлення, що переміг Коля.

    Джерела (що ще почитати)

    Key Words for FKN + antitotal forum (CS VSU):

    Схожі статті