Шаг 26.
Циклические конструкции. Цикл while

    На этом шаге мы рассмотрим синтаксис и применение оператора while.

    Цикл while относится к циклам с неизвестным числом повторений. Его общий вид:

     while (<условие или выражение>)
              <тело цикла>;
При входе в цикл проверяется условие или вычисляется выражение. Если его значение отлично от нуля, то есть истинно, то выполняется тело цикла. Процесс продолжается, пока значение конструкции, стоящей после служебного слова while не станет равным 0, то есть ложным.

    Оператором while удобно пользоваться для просмотра всевозможных последовательностей, если заранее известен признак ее завершения. Например, по определению, строка есть последовательность символов типа char, в конце которой находится нулевой символ. В следующем примере приведена программа, подсчитывающая количество символов в строке (длину строки):

#include <iostream.h>
void main()
{
	char *stroka,*s;    //Указатели на массив.
	int len=0; //Начальная длина строки.
	stroka = new char [80];  //Выделение места
                                 //в памяти для размещения массива.
	s = stroka;  //Сохранение значения указателя 
                     //для возврата памяти в кучу. 
        cout << "\nЗадайте строку: ";
	cin >> stroka; //Ввод строки.
	cout << '\n';
	while (*stroka++) len++; //Поиск нулевого символа.
	cout << "\nДлина строки: " << len << '\n';
	delete [] s;  //Уничтожение массива.
}
Текст этой программы можно взять здесь.

    Здесь выход из цикла - равенство нулю того элемента строки, который адресуется указателем stroka. Порядок вычисления выражения, стоящего после служебного слова while, будет следующим: сначала будет выбрано значение указателя stroka, затем оно будет использовано для доступа по адресу, выбранное значение будет значением выражения в скобках и затем значение указателя будет увеличено на 1.

    Часто после служебного слова while располагается проверяемое условие. Пример: составить программу, вычисляющую сумму квадратов первых k натуральных чисел.

#include <iostream.h>
void main()
{
	int s=0,i=0,k;
	cout << "\nЗадайте число: ";
	cin >> k;
	cout << '\n';
	while (i<k)
		  s+=++i*i;
	cout << "\nРезультат: " << s << '\n';
}
Текст этой программы можно взять здесь.

    Особый интерес здесь вызывает конструкция s+=++i*i;. Перепишем ее следующим образом: s=s+(++i*i);. Используя скобки, укажем последовательность выполнения операций: (s = (s + (++ (i*i)))). Таким образом, сначала вычисляется квадрат i, затем значение этого квадрата прибавляется к значению переменной s, после чего значение переменной i увеличивается на 1.

    На следующем шаге мы приведем несколько примеров использования оператора while.


Предыдущий шаг Содержание Следующий шаг