Изучая цикл for, мы говорили, что если известно число повторений каких-либо действий, то можно сократить программу, используя оператор цикла for. А что делать, если количество повторений не известно. А такое бывает довольно часто.
Например:
вспомнив перевод числа из десятичной системы счисения в любую другую, нам необходимо делить число (а затем результат деления) на основание системы счисления, пока в ответе мы не получим ноль. Сколько раз мы поделим не известно. А программ, реализщующих такой алгоритм достаточно много.
Как же это реализовывается?
Для таких случаем в программировании существует оператор цикла с условием.
В языке программировании Си, оператор цикла с условием начинается со слова while и имеет следующую конструкцию.
while (<условие>){
тело цикла
}
Как нам уже известно:
- условие - это выражение, результатом которого может быть либо истина либо ложь (как в условном операторе)
- тело цикла - это команды, которые необходимо повторить
- фигурные скобки можно опустить, если тело цикла состоит из одного только оператора
Как работает оператор:
1. Сначала программа вычисляет условие, стоящее в скобках после слова while. Если условие выполнятся (истинно), то программа выполняет оператор(ы), содержащийся в теле цикла.
2. Как и в цикле for, если тело цикла содержит только один оператора, то фигурные скобки, выделяющие тело цикла, можно опустить.
3. После того, как завыршено выполнение тела цикла, программа возвращается на проверку условия и заново его проверяет.
4. Эти действия (проверка условия - выполнение тела цикла) повторяются до тех пор, пока условие не станет ложным.
5. Если при первом выполнении данного оператора, условие сразу не выполняется (ложно), то программа ни разу не выполнит тело цикла.
Анализируя работу данного оператора, должно стать ясным, что в теле цикла должен находиться оператор, который влияет на условие.
Например, цикл может увеличивать значение переменной, используемой в условии.
Пример программы, которую мы назовем
"Молчаливый счет"
Заставим программу вместо нас считать, например, до 10.
Программа должна выводить фразу, "Start" и "Finish", и между этими действиями выводить на экран числа, которые считаются.
Например так,
Start
1 2 3 4 5 6 7 8 9 10
Finish
Программа, с использованием цикла while, будет выглядеть следующим образом.
#include<iostream>
using namespace std;
main()
{
int i;
cout << "Start\n";
i=1;
while(i<=10)
{
cout << i <<" ";
i++; //Оператор, который влияет на изменение переменной в условии
}
cout << "\nFinish";
}
В данной программе мы присваиваем значение переменной i=1 - начало отсчета
Далее, пока у нас значение переменной i не больше (то есть меньше либо равно) нужного нам значения, мы
1 - выводим на экран значение переменной i
2 - увеличиваем значение переменной i на 1 - данный оператор, влияет на значение условия, стоящего в скобках. Переменная i увеличивается, то есть в какой-то момент условие i<=10 станет ложным. Это произойдет, когда i станет равно 11. В этом случае тело цикла выполняться уже не будет, и программа будет выполнять следующий после цикла оператор, т.е.
cout << "\nFinish";