Среда, 22.01.2025, 19:46
Главная Регистрация RSS поиск
Приветствую Вас, Гость
Меню сайта
Категории раздела
HTML [44]
Visual C++ и MFC [21]
c++ [78]
php [19]
Javascript [15]
C# [51]
загрузки [0]
XNA [10]
создание игр с помощью xna
Наш опрос
Каким языком программирования вы увлекаетесь
Всего ответов: 2420
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Реклама
Главная » Статьи » c++

Цикл while

Цикл 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 наиболее соотвествуют ситуации, когда заранее неизвестно, количество повторений цикла. 

Категория: c++ | Добавил: slava (29.04.2011)
Просмотров: 5447 | Рейтинг: 3.3/3
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]