|
|
||
1. Управления потоком выполнения программ |
||
Большинство программ, которые мы рассматривали до этого момента, были линейными с последовательным выполнением, то есть порядок выполнения у них один и тот же каждый раз: выполняются одни и те же стейтменты, даже если значения, которые вводит пользователь, — меняются. Но на практике это не всегда может быть то, что нам нужно. Например, если мы попросим пользователя сделать выбор между + и /, а пользователь введет некорректный символ (например, *), то в идеале нам нужно было бы попросить его ввести символ еще раз. Но это невозможно в линейной программе. Кроме того, бывают случаи, когда нужно выполнить что-то несколько раз, но количество этих повторений наперед неизвестно. Например, если бы мы хотели вывести все целые числа от 0 до числа, которое введет пользователь, то в линейной программе мы бы не смогли это сделать, не зная наперед число, которое введет пользователь. К счастью, в языке C++ есть операторы управления порядком выполнения программы, которые позволяют программисту изменить поток выполнения программы центральным процессором. |
||
Остановка Самый простой оператор управления порядком выполнения программы — это остановка, которая сообщает программе немедленно прекратить свое выполнение. В языке C++ остановка осуществляется с помощью функции еxit(), которая определена в заголовочном файле сstdlib. Функция exit() принимает целочисленный параметр, который затем возвращает обратно в операционную систему в качестве кода выхода. Например: |
||
#include <iostream>
#include <cstdlib> // для функции exit()
int main()
{
std::cout << 5;
exit(0); // завершаем выполнение программы и возвращаем 0 обратно в операционную систему
// Следующие стейтменты никогда не выполнятся
std::cout << 3;
return 0;
}
Прыжок Следующим оператором управления порядком выполнения программы является прыжок (или «переход»). Он безоговорочно сообщает компилятору во время выполнения перейти от одного стейтмента к другому, т.е. выполнить прыжок. Ключевые слова goto, break и continue являются разными типами прыжков, об их различиях мы поговорим несколько позже. Вызовы функций — это тоже, в некоторой степени, прыжки. При выполнении вызова функции, ЦП переходит к началу вызываемой функции. Когда вызываемая функция заканчивается, выполнение возвращается к следующему стейтменту, который находится после вызова этой функции.
|
||
1 |