HTML [44] |
Visual C++ и MFC [21] |
c++ [78] |
php [19] |
Javascript [15] |
C# [51] |
загрузки [0] |
XNA
[10]
создание игр с помощью xna
|
Главная » Статьи » c++ |
Цикл whileВ 60-х годах исследование Бома и Джакопини показало, что все программы могут быть написаны с использованием всего трех управляющих структур, названных структура следования, структура выбора и структура повторения. Структура следования встроена в С++. Пока не указано иное, компьютер выполняет операторы С++ один за другим в той последовательности, в которой они записаны. Со структурами выбора мы познакомились в прошлый раз. Напомним еще раз. С++ обеспечивает три типа структур выбора альтернатив: структура с единственным выбором if (ЕСЛИ) выполняет некоторое действие, если проверяемое условие истинно, или пропускает его, если ложно; структура с двойным выбором if/else (ЕСЛИ-ИНАЧЕ), выполняет одно действие, если условие истинно и другое действие, если оно ложно; структура с множественным выбором switch (ВЫБОР), выполняет одно из множества действий в зависимости от значения проверяемого выражения. Сегодня, мы познакомимся со структурами повторения. С++ обеспечивает три типа структур повторения (циклов), называемых while (ПОКА), do-while (ЦИКЛ-ПОКА) и for (ЦИКЛ). Любая программа на С++ формируется из такого количества комбинаций каждого типа управляющих структур, которое нужно для осуществления соответствующего алгоритма. А теперь, как и обещано, давайте поближе познакомся со структурами повторения. Структура повторения позволяет программисту определить действие, которое должно повторяться, пока некоторое условие остается истинным. Например, предложение
описывает повторные действия при посещении магазина. Условие "имеются незачеркнутые элементы в моем списке покупок" может быть истинным или ложным. Если оно истинно, то осуществляется действие "Сделать следующую покупку и вычеркнуть ее из списка". Это действие будет повторяться до тех пор, пока условие остается истинным. Оператор (или операторы), записанные в цикле while (ПОКА) составляют тело while, которое может быть отдельным или составным оператором. Очевидно, что когда-нибудь условие станет ложным (когда будет осуществлена и вычеркнута из списка последняя покупка). Начиная с этого момента повторение прерывается и выполняется первое действие, следующее за структурой повторения. Обобщенная форма цикла while: while ( выражение ) оператор; Вначале вычисляется выражение. Если результат отличен от нуля (true), тогда выполняется оператор и управление переходит обратно к началу цикла while. Это приводит к выполнению тела цикла while, а именно оператора, который будет выполняться до тех пор, пока выражение не станет равным нулю (false). Затем управление передается следующему оператору. Таким образом, цикл может выполняться ноль или более раз. Например: /* Пример выводит на экрон 5 строк типа "Строка" + "индекс" + "выводится в цикле", где "индекс" меняется от 0 до 4 */ #include < iostream.h > void main() { int i = 0; /*Объявление и инициализация переменной i*/ cout << "\n Начало цикла"; while (i != 5) /*Проверяется выражение (i != 5), если результат - истина, выполняется операторы тела цикла, в противном случае управление передается оператору, следующему за циклом. */ { cout << "Строка " << i << "выводится в цикле \n"; i++; } cout << "\n Оператор, следующий за циклом"; } Чтобы материал стал более понятным рассмотрим еще такой пример: /*Программа выводит на экран данные таблицы умножения на 2*/ #include < iostream.h > void main() { int i = 0; cout << "Таблица умножения на 2 \n"; while ( i ++ < 10) cout << i << " * 2 = " << i * 2 << '\n'; cout << "\n Все"; } Давайте остановимся на операторе while в данном примере и по шагам посмотрим, как он работает. while ( i ++ < 10) cout << i << " * 2 = " << i * 2 << '\n'; Цикл состоит из двух частей: условие цикла и тело цикла. Обратите внимание на условие цикла - это выражение i++ < 10 . Условие гласит, что тело цикла будет выполняться пока выполняется условие i < 10 . ПОСЛЕ проверки этого условия значение переменной i увеличивается на 1 (об этом говорит оператор i++). Тело цикла состоит всего из одного оператора, а именно: cout << i << " * 2 = " << i * 2 << '\n'; Итак, 1-й шаг цикла 1.1 Значение переменной i равно 0 (так она была проинициализирована). 1.2 Проверка условия i < 10 дает истина (т.к. 0 < 10) 1.3 Значение переменной i увеличивается на 1, теперь i = 1. 1.4 Так как проверка условия цикла дала значение истина управление передается оператору тела цикла, т.е. на экран выводится строка 1 * 2 = 2 1.5 Далее управление передается циклу while 2-й шаг цикла 2.1 Значение переменной i равно 1. 2.2 Результат проверки условия цикла - истина (1 < 10) 2.3 Значение переменной i увеличивается на 1, теперь i = 2. 2.4 Так как проверка условия цикла дала значение истина управление передается оператору тела цикла, т.е. на экран выводится строка 2 * 2 = 4 2.5 Далее управление передается циклу while . . . 9-й шаг цикла 9.1 Значение переменной i равно 8. 9.2 Результат проверки условия цикла - истина (8 < 10) 9.3 Значение переменной i увеличивается на 1, теперь i = 9. 9.4 Так проверка условия цикла дала значение истина управление передается оператору тела цикла, т.е. на экран выводится строка 9 * 2 = 18 9.5 Далее управление передается циклу while 10-й шаг цикла 10.1 Значение переменной i равно 9. 10.2 Результат проверки условия цикла - истина ( 9 < 10) 10.3 Значение переменной i увеличивается на 1, теперь i = 10. 10.4 Так проверка условия цикла дала значение истина управление передается оператору тела цикла, т.е. на экран выводится строка 10 * 2 = 20 10.5 Далее управление передается циклу while 11-й шаг цикла 11.1 Значение переменной i равно 10. 11.2 Результат проверки условия цикла - ложь ( 10 равно 10, а не меньше!) 11.3 Значение переменной i увеличивается на 1, теперь i = 11. 11.4 Так проверка условия цикла дала значение ложь, управление НЕ передается в тело цикла, т.е. выполнение цикла заканчивается, и управление переходит к оператору, следующему за while, т.е. к cout << "\n Все"; В данном примере, мы рассмотрели случай с заранее определенным числом повторений, однако характеру оператора while наиболее соотвествуют ситуации, когда заранее неизвестно, количество повторений цикла. | |
Просмотров: 5447 | Рейтинг: 3.3/3 |
Всего комментариев: 0 | |