Дана категорія операторів застосовується відносно рідко До їх числа належать: «break», «continue», «goto» і «return» Вважається, що занадто часте використання операторів переходів погіршує читаність програми і утрудняє її модифікацію Але, все ж, бувають моменти, коли без операторів, які організовують переходи, – «як без води»

Оператор «break» (у перекладі з англ «Переривати»)

Цей старий знайомий вже зустрічався при вивченні оператора «switch» на Рис 622, б, в Саме він організовував достроковий вихід з процедури множинного порівняння «кейсів»

Оператор «break» поодинці даремний Його треба вводити всередину тіла одного з чотирьох операторів: «switch», «while», «do-while», «for» За допомогою оператора «break» достроково переривається виконання основного циклу і пропускаються залишилися команди, після чого управління передається вниз до найпершого оператору після закриває фігурної дужки

Якщо оператор «break» знаходиться всередині декількох вкладених один в одного циклів, то його дія поширюється лише на внутрішній цикл, тобто на той, в якому він міститься Саме через цього нюансу у програмістів виникають труднощі і помилки при отлаживания великих за обсягом лістингів

Цікаве спостереження Оператор «break» є абсолютно прозорим по відношенню до операторів вибору «if» і «if-else» Він безперешкодно «проходить» крізь їх фігурні дужки, що треба враховувати на практиці

Оператор «continue» (у перекладі з англ «Продовжувати»)

Сфера застосування оператора «continue» менше, ніж у оператора «break» Він работаетлішь з трьома циклами: «while», «do-while», «for» і є прозорим для операторів «if», «if-else» Головне розходження між «continue» і «break» полягає в тому, що замість дострокового завершення циклу здійснюється дострокове завершення поточної ітерації з пропуском команд, що залишилися Це більш мяке умова, що не приводить відразу до закінчення циклу (Мал 626, а, б)

Рис 626 Порівняння циклів «for»: а) з оператором «continue» б) з оператором «break» Оператор «goto» (у перекладі з англ «Перейти до»)

Оператор «goto» складається з двох частин – ключового слова «goto» і мітки Імена міток утворюються за тими ж правилами, що й імена змінних Наприклад, при виконанні оператора «goto metka» управління передається на той оператор, на початку якого зліва вказано ключове слово «metka:» Воно може перебувати влюбом, самому несподіваному місці програми При цьому не звертається увага ні на вкладені цикли, ні на умови перевірки, ні на незавершені обчислення Перехід проводиться безпосередньо в будь-який рядок програми, причому без затримок у часі і без закінчення поточних операцій

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

Щоб уникнути плутанини, розроблені стандартні прийоми, які дозволяють замінити всі без винятку конструкції «goto» звязками звичайних Сператоров Конкретні приклади наведені в [6-6] Родоначальники мови Сі, БКерніган і ДРітчі, теж закликають застосовувати оператор «goto» якомога рідше або не застосовувати його зовсім [6-7]

Існує лише один окремий випадок, коли оператор «goto» корисний – це швидкий вихід з багаторазово вкладених циклів при виявленні будь-яких аварійних або позаштатних ситуацій Оператор «break» тут пасує, оскільки дає можливість виходу тільки з самого внутрішнього циклу, а от оператор «goto» – з будь-якого, в тому числі з нескінченного

На Рис 627, а, б показані каркаси програм, що моделюють безумовні переходи вгору і вниз У якому б глибокому циклі не перебувала оператор «goto», управління буде сразуже передано на мітку «sl:» (імя вибирається довільно) Якщо мітка вказує на перший оператор програми, то відбудеться «мякий» скидання MK У цьому випадку розробнику треба передбачити початкову ініціалізацію всіх без винятку використовуваних в програмі регістрів спеціальних функцій і чітку установку всіх задіяних за схемою ліній портів

Рис 627 Форма запису оператора «goto»: а) з переходом вгору б) з переходом вниз

У мові Basic теж існує оператор «GO ТО», причому застосовується він настільки часто, що листинги програм аж рясніють прямими переходами У мові Сі, навпаки, від «goto» намагаються позбуватися різними способами Очевидно, що любителям Basic доведеться адаптуватися до такого стилю програмування

Оператор «return» (у перекладі з англ «Повертатися»)

Цей оператор кілька відокремлений від своїх родичів, оскільки застосовується без обмежень Його роль – організація коректного виходу з функцій Саме про них і піде мова далі

Джерело: Рюмік, С М, 1000 і одна мікроконтролерна схема Вип 2 / С М Рюмік – М: ЛР Додека-ХХ1, 2011 – 400 с: Ил + CD – (Серія «Програмовані системи»)