Урок №66. Оператори управління потоком виконання програм

  Юрій  | 

  Оновл. 17 Чер 2020  | 

 215

При запуску програми, центральний процесор (ЦП) починає виконання коду з першого рядка функції main(), виконуючи певну кількість стейтментів, а потім завершує виконання при завершенні блоку main(). Послідовність стейтментів, які виконує ЦП, називається порядком виконання програми (або ще “потоком виконання програми“).

Порядок виконання програм

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

Але на практиці це не завжди може бути те, що нам потрібно. Наприклад, якщо ми попросимо користувача зробити вибір між + і /, а користувач введе некоректний символ (наприклад, *), то, в ідеалі, нам потрібно було б попросити його ввести символ ще раз. Але це неможливо в лінійній програмі. Крім того, бувають випадки, коли потрібно виконати щось декілька разів, але кількість цих повторень на даний момент часу ми не знаємо. Наприклад, якби ми хотіли вивести всі цілі числа від 0 до числа, яке введе користувач, то, в лінійній програмі, ми б не змогли це зробити, не знаючи наперед число, яке введе користувач.

На щастя, в C++ є оператори управління порядком виконання програми, які дозволяють програмісту змінити потік виконання програми центральним процесором.

Зупинка

Найпростіший оператор управління порядком виконання програми — це зупинка, яка повідомляє програмі негайно припинити своє виконання. У C++ зупинка здійснюється за допомогою функції exit(), яка визначена в заголовку cstdlib. Функція exit() приймає цілочисельний параметр, який потім повертає назад в операційну систему в якості коду виходу. Наприклад:

Стрибок

Наступним оператором управління порядком виконання програми є стрибок (або ще “перехід“). Він повідомляє компілятору під час виконання програми перейти від одного стейтменту до іншого, тобто виконати стрибок. Ключові слова goto, break і continue є різними типами стрибків, про їх відмінності ми поговоримо трохи пізніше.

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

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

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

Тут є два можливих шляхи виконання програми. Якщо результатом виразу буде true, то програма виконає A, B і D. Якщо ж результатом виразу буде false, то програма виконає A, C і D. Тобто виконуватися буде або B, або С, обидва варіанта виконуватися разом не будуть. Це вже не лінійна програма.

Ключове слово switch також надає механізм для виконання умовного розгалуження. Більш докладно про оператори if і switch ми поговоримо у відповідних уроках.

Цикли

Цикл змушує програму багаторазово виконувати певну кількість стейтментів до тих пір, поки певна умова не стане хибною. Наприклад:

Ця програма може виконуватися як ABC, ABBC, ABBBC, ABBBBC або навіть AC. Знову ж таки, вона більше не є лінійною, її порядок виконання залежить від того, скільки разів виконається цикл (якщо взагалі виконається).

У C++ є 4 типи циклів:

   while;

   do while;

   for;

   for each (додали в C++11).

Ми детально розглянемо кожен з них в цьому розділі, крім for each — про нього трохи пізніше.

Винятки

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

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

Висновки

Використовуючи оператори управління порядком виконання програми, ви можете вплинути на потік виконання програми центральним процесором, а також на те, через що він може бути зупинений. До цього моменту функціонал наших програм був дуже обмежений. Тепер же ж, з операторами керування порядком виконання програм, ми зможемо здійснити величезну кількість різних цікавих речей, наприклад: відображення меню до тих пір, поки користувач не зробить правильний вибір; виведення кожного числа між x і y і багато-багато чого ще.

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

Погнали!

Оцінити статтю:

1 Зірка2 Зірки3 Зірки4 Зірки5 Зірок (4 оцінок, середня: 5,00 з 5)
Loading...

Залишити відповідь

Ваш E-mail не буде опублікований. Обов'язкові поля відмічені *