Оператор цикла while
или цикл while
— цикл, повторяющий одно и то же действие, пока условие продолжения цикла while
остаётся истинным.
// форма записи цикла while while (/*условие продолжения цикла while*/) { /*блок операторов*/; /*управление условием*/; }
Условие продолжения цикла должно быть истинно true
, как только условие стало ложным, выполняется выход из цикла. Также как и в условных операторах выбора, фигурные скобочки могут опускаться в том случае, если тело цикла — это один оператор. Но как правило в цикле выполняется несколько операторов, так как кроме выполнения полезного действия необходимо делать условие цикла while
ложным, иначе цикл будет бесконечным, а это, в свою очередь, приведет к зависанию программы.
Рассмотрим применение цикла while
на примере движения автомобиля. На псевдокоде, то это будет так:
// Пока скорость движения автомобиля меньше 60 км/ч, продолжать наращивать скорость.
Истинным условием цикла, в данном случае, является скорость автомобиля меньше 60 км/ч, а ложным — скорость автомобиля больше или равно 60 км/ч. Повторение цикла будет продолжаться до тех пор пока скорость автомобиля не станет больше или равно 60 км/ч, после наступления этого момента условие цикла станет ложным, и программа выйдет из цикла. Рассмотрим фрагмент кода на C++ с циклом while
решающим поставленную задачу.
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
. Давайте запрограммируем эту задачу, и убедимся в достоверности всего выше сказанного.
// 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 — Цикл while в C++
Как я и говорил, всего 6 повторений цикла и после выхода из цикла while
переменная speed = 65
.
Для закрепления материала по циклу while
разработаем всем известную игру «Отгадай число». На псевдокоде это будет так:
// Пока загаданное число не угадано, продолжать угадывать его
Загадывать число будет компьютер, а мы — отгадывать. Используя генератор случайных чисел, компьютер загадает число от 1 до 10, включительно, пока мы не отгадаем число выход из цикла не произойдет.
// ygadai.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).
Рисунок 1 — Цикл while в C++
Я отгадал число с третьей попытки, а Вы, с какой сможете??
Комментарии
Дмитрий Дегтярев
А как сделать так, чтоб при тех же входных данных скорость автомобиля не превышала 60 км.ч, то есть чтоб при выходе мы получили 15, 25 35, 45, 55, 60?
MrSamFeed