Цикл while в C++


Оператор цикла while или цикл while — цикл, повторяющий одно и то же действие, пока условие продолжения цикла while остаётся истинным.

1
2
3
4
5
6
// форма записи цикла while
while (/*условие продолжения цикла while*/)
{
/*блок операторов*/;
/*управление условием*/;
}

Условие продолжения цикла должно быть истинно true, как только условие стало ложным, выполняется выход из цикла. Также как и в условных операторах выбора, фигурные скобочки могут опускаться в том случае, если тело цикла — это один оператор. Но как правило в цикле выполняется несколько операторов, так как кроме выполнения полезного действия необходимо делать условие цикла while ложным, иначе цикл будет бесконечным, а это, в свою очередь, приведет к зависанию программы.

Рассмотрим применение цикла while на примере движения автомобиля. На псевдокоде, то это будет так:

1
// Пока скорость движения автомобиля меньше 60 км/ч, продолжать наращивать скорость.

Истинным условием цикла, в данном случае, является скорость автомобиля меньше 60 км/ч, а ложным — скорость автомобиля больше или равно 60 км/ч. Повторение цикла будет продолжаться до тех пор пока скорость автомобиля не станет больше или равно 60 км/ч, после наступления этого момента условие цикла станет ложным, и программа выйдет из цикла. Рассмотрим фрагмент кода на C++ с циклом while решающим поставленную задачу.

1
2
3
int speed = 5; // начальная скорость автомобиля
while ( speed < 60 ) // заголовок цикла while
speed += 10; // тело цикла

Для начала в строке 1 была объявлена и инициализирована переменная speed. В строке 2 программа проверяет условие цикла while, 5 < 60 = true. Программа входит в цикл и выполняет оператор в строке 3. Теперь уже speed = 15. Опять выполняется проверка 15 < 60 = true. Условие истинно, значение в переменной изменяется, speed = 25. Таким образом, выполняются последовательные повторения цикла, переменная speed ещё принимает такие значения: 35, 45, 55, 65. Последнее изменение переменной speed приводит к тому, что условие в цикле while становится ложным 65 < 60 = false, и производится выход из цикла while. Таким образом, выполнилось 6 повторений, при этом speed = 65; — с таким значением переменной закончилась работа цикла while. Давайте запрограммируем эту задачу, и убедимся в достоверности всего выше сказанного.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// while.cpp: определяет точку входа для консольного приложения.

#include "stdafx.h"
#include <iostream>
using namespace std;

int main(int argc, char * argv[])
{
     int speed = 5, count = 1;
     while ( speed < 60 )
     {
         speed += 10; // приращение скорости
         cout << count << "-speed = " << speed << endl;
         count++; // подсчёт повторений цикла
     }
     system ("pause");
     return 0;
}

Итак, в строке 14 добавил переменную-счётчик, для подсчёта прохождений цикла. Тело цикла увеличилось, поэтому пришлось поставить фигурные скобочки. Результат работы программы (см. Печать 1).


1-speed = 15
2-speed = 25
3-speed = 35
4-speed = 45
5-speed = 55
6-speed = 65
Для продолжения нажмите любую клавишу . . .

Печать 1 — Цикл while в C++

Как я и говорил, всего 6 повторений цикла и после выхода из цикла while переменная speed = 65.

Для закрепления материала по циклу while разработаем всем известную игру «Отгадай число». На псевдокоде это будет так:

1
// Пока загаданное число не угадано, продолжать угадывать его

Загадывать число будет компьютер, а мы — отгадывать. Используя генератор случайных чисел, компьютер загадает число от 1 до 10, включительно, пока мы не отгадаем число выход из цикла не произойдет.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// ugadai.cpp: определяет точку входа для консольного приложения.

#include "stdafx.h"
#include <iostream>
#include <ctime>
using namespace std;

int main(int argc, char * argv[])
{
     srand (time ( 0 ) );
     int unknown_number = 1 + rand() % 10; // загадываемое число
     int enter_number; // переменная для хранения введённого числа
     cout << "Enter unknown number [1:10] : "; // начинаем отгадывать
     cin >> enter_number;
     while ( enter_number != unknown_number)
     {
      cout << "Enter unknown number [1:10] : ";
      cin >> enter_number; // продолжаем отгадывать
     }
     cout << "You win!!!\n";
     system ("pause");
     return 0;
}

Чтобы войти в цикл необходимо инициализировать переменную enter_number, тогда цикл while начнёт корректную проверку условия, вот для этого перед циклом while мы запрашиваем пользователя ввести число. После того как пользователь ввёл число, начинает работать цикл while, выйти из которого получится только в случае угадывания числа. результат работы программы (см. Печать 2).

Enter unknown number [1:10] :3
Enter unknown number [1:10] :6
Enter unknown number [1:10] :2
You win!!!
Для продолжения нажмите любую клавишу . . .


Печать 2 — Цикл while в C++

Похожие новости

Комментариев 0

Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.