Урок 63. Порядок выполнения программ. Операторы управления

   ⁄ 

 Обновлено 30 мая 2017

  ⁄   

⁄  3

При запуске программы, центральный процессор (ЦП) начинает выполнение кода с верхней части функции main(), выполняет определенное количество стейтментов, а затем завершает работу в самом конце main(). Последовательность стейтментов, которые выполняет ЦП, называется порядком выполнения программы. Большинство программ, которые мы разбирали до сих пор, были линейными, с последовательным выполнением, то есть порядок выполнения у них один и тот же каждый раз: выполняются одни и те же стейтменты, даже если значения, которые вводит пользователь, изменяются.

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

К счастью, в C++ есть операторы управления порядком выполнения, которые позволяют программисту изменить порядок выполнения программы центральным процессором. Сейчас мы кратко рассмотрим их все, а затем, более подробно, обсудим каждый из них в соответствующих уроках этой главы.

Остановка (halt)

Самый простой оператор управления порядком выполнения — это остановка, которая сообщает программе немедленно прекратить выполнение. В C++ остановка осуществляется через использование функции exit(), которая определена в заголовке cstdlib. Функция exit() принимает целочисленный параметр, который возвращает обратно в операционную систему как код выхода.

Например:

Прыжок (jump)

Следующим оператором управления порядком выполнения является прыжок (или переход). Он безоговорочно сообщает компилятору во время выполнения перейти из одного стейтмента к другому – сделать прыжок. Ключевые слова gotobreak и continue являются разными типами прыжков — об их различиях поговорим позже.

Вызовы функций – это тоже в некоторой степени прыжки. Когда выполняется вызов функции, ЦП переходит к началу вызываемой функции. Когда вызываемая функция заканчивается, выполнение возвращается к следующему стейтменту, который находится после вызова функции.

Условные ветвления

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

Здесь есть два возможных пути выполнения. Если результатом выражения будет истина (true), то программа выполнит A, B и D. Если результат выражения будет ложь (false), программа выполнит A, C и D. То есть, либо B, либо С, всё вместе выполняться не будет. Это уже не линейная программа.

Ключевое слово switch также предоставляет механизм для выполнения условного ветвления. Более подробно об операторах if и switch мы поговорим в следующих уроках.

Циклы

Цикл заставляет программу многократно выполнять определенное количество стейтментов до тех пор, пока определенное условие не станет ложным. Например:

Эта программа может выполняться как ABC, ABBC, ABBBC, ABBBBC или даже AC. Опять же, она больше не является линейной — её порядок выполнения зависит от того, сколько раз выполнится цикл (если вообще выполнится).

В C++ есть 3 типа циклов: while, do while и for. C++ 11 добавила поддержку еще одного типа циклов — for each. Мы подробно рассмотрим каждый из них в этой главе, кроме for each, о нем немного позже.

Исключения

Исключения предлагают механизм обработки ошибок, возникающих в функции. Если в функции возникает ошибка, с которой она не может справиться, то она может выполнить исключение. Это заставит ЦП перейти к ближайшему блоку кода, который обрабатывает исключения этого типа.

Обработка исключений — это довольно сложная тема и это единственный тип оператора управления порядком выполнения, который мы не будем рассматривать в этой главе. Исключения обсудим в главе 15.

Итого

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

Как только вы поймете фишку с порядком выполнения, вы перейдете на новый, более качественный уровень. Больше вы не будете ограничены игрушечными программами или простенькими упражнениями — вы сможете писать полноценные программы. Вот именно здесь и начинается всё самое интересное. Погнали!

Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (10 оценок, среднее: 4,80 из 5)
Загрузка...
Поделиться в:
Подписаться на обновления:

Комментариев: 3

  1. Sasha:

    Еще уроки!!

  2. Александр:

    Самый лучший учебник, который пока я встречал. Спасибо

    1. Li4ik:

      Пожалуйста 🙂

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *