Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на C / C++ / Лекции по C++ ОККТ "Сервер" [12].pdf
Скачиваний:
124
Добавлен:
02.05.2014
Размер:
1.04 Mб
Скачать

Одесский колледж компьютерных технологий "СЕРВЕР"

cout<<"\n Нажмите одну из курсорных клавиш: \n"; key = getch(); key = getch ();

switch (key){

case 77 : cout << "стрелка вправо\n"; break; case 75 : cout << "стрелка влево\n"; break; case 72 : cout << "стрелка вверх\n"; break; case 80 : cout << "стрелка вниз\n"; break; default : cout << "He стрелка\n";

}

return 0;

}

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

case 77: case 75: case 72: case 80: cout <<"стрелки"; break;

Оператор switch предпочтительнее оператора if в тех случаях, если в программе требуется разветвить вычисления на количество направлений, большее двух, и выражение, по значению которого производится переход на ту или иную ветвь, является целочисленным. Часто это справедливо даже для двух ветвей, поскольку улучшает наглядность программы.

Операторы цикла

Операторы цикла используются для организации многократно повторяющихся вычислений. Любой цикл состоит из:

тела цикла, то есть тех операторов, которые выполняются несколько раз,

начальных установок,

модификации параметра цикла

проверки условия продолжения выполнения цикла.

Один проход цикла называется итерацией. Проверка условия выполняется на каждой итерации либо до тела цикла (тогда говорят о цикле с предусловием), либо после тела цикла (цикл с постусловием). Разница между ними состоит в том, что тело цикла с постусловием всегда выполняется хотя бы один раз, после чего проверяется, надо ли его выполнять еще раз. Проверка необходимости выполнения цикла с предусловием делается до тела цикла, поэтому возможно, что он не выполнится ни разу.

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

19

Одесский колледж компьютерных технологий "СЕРВЕР"

Начальные установки могут явно не присутствовать в программе, их смысл состоит в том, чтобы до входа в цикл задать значения переменным, которые в нем используются.

Цикл завершается, если условие его продолжения не выполняется. Возможно принудительное завершение как текущей итерации, так и цикла в целом. Для этого служат операторы break/continue, return и goto, о которых вы узнаете чуть позже.

Для удобства, а не по необходимости, в C++ есть три разных опера-

тора цикла —while, do while и for.

Цикл с предусловием (while)

Цикл с предусловием имеет вид:

while ( условие ) { операторы }

While работает так:

1.Программа выполняется, пока дело не дойдет до места, где написано while(){. Это место называется точкой входа в цикл.

2.Проверяется выполнение условия. Затем, если условие, записанное в круглых скобках, истинно, начинают выполняться команды, записанные

вфигурных скобках.

3.Программа будет выполняться до того места, где стоит закрывающая фигурная скобка. Затем программа вернется в то место, куда она дошла

впункте 1, то есть туда, где написано while(){. Снова проверится выполнение условия и т.д.

4.Это будет продолжаться до тех пор, пока условие в круглых скобках не окажется ложным, иными словами, пока записанное там выражение не станет равно нулю.

Если при первой проверке условие равно false, цикл не выполнится

ни разу.

Пример 1. a=3;

while(a<10){a++;}

В этом примере выполняются следующие действия:

1.Переменной A присваивается число 3 (инициализация).

2.Затем начинается цикл while. Выражение в круглых скобках(a<10) проверяется на истинность. Содержимое переменной a (сейчас 3) действительно меньше десяти. Управление передается в начало фигурных скобок while. Здесь а увеличивается на единицу.

3.Управление опять передается в п. 2. Все повторяется без изменений, только переменная а возрастает с каждым проходом цикла.

4.Наконец, наступает момент, когда при сравнении (a<10) содержимое a оказывается больше десяти, а не меньше, то есть условие (a<10) ложно.

20

Одесский колледж компьютерных технологий "СЕРВЕР"

5.Управление передается за закрывающую фигурную скобку цикла.

Распространенный прием программирования — организация бесконечного цикла с заголовком while (true) либо while (1) и принудительным выходом из тела цикла по выполнению какого-либо условия.

В круглых скобках после ключевого слова while можно вводить описание переменной. Областью ее действия является цикл:

while (int x = 0){ ... /* область действия х */ }

Цикл с постусловием (do while)

Цикл с постусловием имеет вид:

do { операторы } while условие ;

Этот цикл отличается от цикла while тем, что начинает работать, не проверяя никаких условий. Условие проверяется в конце цикла. Если оно оказывается истинным, происходит переход в начало цикла. В любом случае,

такой цикл отработает хотя бы один раз.

Цикл с параметром (for)

Цикл с параметром имеет следующий формат:

for ( инициализация; выражение; модификации) { операторы };

Инициализация используется для объявления и присвоения начальных значений величинам, используемым в цикле. В этой части можно записать несколько операторов, разделенных запятой (операцией «последовательное выполнение»), например, так:

for (int i = 0, j = 2; ... int k, m; …

Областью действия переменных, объявленных в части инициализации цикла, является цикл. Инициализация выполняется один раз в начале исполнения цикла.

Выражение определяет условия, при которых цикл работает (они могут быть перечислены через запятую). Если результат выражения истина, то цикл выполняется.

Модификации выполняются после каждой итерации цикла и служат обычно для изменения параметров цикла. В части модификаций можно записать несколько операторов через запятую.

Простой или составной оператор представляет собой тело цикла. Любая из частей оператора for может быть опущена (но точки с запя-

той надо оставить на своих местах!).

21

Одесский колледж компьютерных технологий "СЕРВЕР"

Пример:

For ( n=0; n < 10; n++ ){ cout << n;

}

Такая программа выведет на экран строку:

0123456789

Рассмотрим, как она работает.

1.В момент входа в цикл выполняется инициализация. В переменную n, объявленную где-то раньше, заносится число 0.

2.Затем происходит проверка условия на истинность. Условие (n<10) выполняется, так как n=0.

3.Поскольку условие выполняется, управление передается далее, к операторам, закрепленным за циклом (в фигурных скобках цикла).

4.cout выводит содержимое переменной n (там 0) на экран.

5.Операторы, закрепленные за циклом, закончились - происходит возврат к началу цикла.

6.Теперь происходит модификация. Содержимое n увеличивается на единицу.

7.Далее, обрабатывается условие (n<10). n теперь равно единице, так что оно выполняется.

8.Управление опять передается операторам цикла. На экран выводится содержимое n (там 1).

9.Все это продолжается до тех пор, пока n не станет равно 10. После этого проверится условие (n<10), и оно не выполнится (10 не меньше 10). Произойдет выход из цикла к последующим командам программы.

Пример (оператор, вычисляющий сумму чисел от 1 до 100): for (int i = 1. s = 0: i<=100; i++) s += i:

Любой цикл while может быть приведен к эквивалентному ему циклу for и наоборот по следующей схеме:

for (b1; b2; b3) оператор;

То же самое с циклом while: b1;

while (b2){ оператор; bЗ;}

Часто встречающиеся ошибки при программировании циклов — ис-

пользование в теле цикла неинициализированных переменных и неверная запись условия выхода из цикла.

Чтобы избежать ошибок, рекомендуется:

22