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

  Юрій  | 

  Оновл. 7 Вер 2021  | 

 288

При запуску програми, центральний процесор (скор. “ЦП”) починає виконання коду з першого рядка функції 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;

   цикл foreach (додали в C++11).

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

Винятки

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

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

Висновки

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

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

Вперед!

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

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

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

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