§ 5. Оператор цикла
5.3. Оператор цикла с параметром
Для записи оператора цикла с параметром используется команда for. Формат команды: for (<Блок1>; <Блок2>; <Блок3>){ тело цикла; } Для организации работы такого цикла необходимо описать три операции:
Если в теле цикла for должен выполниться один оператор, тогда фигурные скобки можно опустить. В записи цикла for можно опустить один или несколько блоков, но нельзя опускать точку с запятой, разделяющую три составляющие цикла (пример 5.3). Наиболее распространен частный случай записи цикла for, который близок к записи аналогичного цикла на языке Pascal: for (счетчик = значение; счетчик < значение; шаг цикла) { тело цикла; } Счетчик цикла (параметр цикла) — переменная, в которой хранится количество проходов данного цикла. В отличие от Pascal, параметр цикла может быть вещественным и изменяться с любым значением шага цикла (пример 5.4). Переменные, определенные в заголовке цикла for или в его теле, имеют специальный тип области видимости: область видимости цикла. Такие переменные существуют только внутри цикла и недоступны за его пределами. Пример 5.5. Написать программу для вывода таблицы умножения на заданное число x. Этапы выполнения задания I. Исходные данные: x (введенное число). II. Результат: 9 строк вида . III. Алгоритм решения задачи. 1. Ввод исходных значений. VI. Описание переменных: x, a, c – int. Пример 5.6. Написать программу, которая выведет все двузначные числа в виде таблицы так, чтобы в каждой строке этой таблицы располагались числа одного десятка. Этапы выполнения задания I. Результат программы не зависит от исходных данных. II. Таблица с числами. III. Алгоритм решения задачи. 1. Для вывода такой таблицы можно использовать два вложенных цикла. Первый будет определять количество десятков в числе, а второй — количество единиц. IV. Описание переменных: i, j – int. Все циклы, которые есть в С++, взаимозаменяемы. Выбор того или другого цикла часто определяется тем, какой из циклов проще и быстрее позволит решить поставленную задачу. |
Пример 5.3. Различные варианты записи заголовка цикла for:
Если блок проверки условия оставить пустым, то условие всегда будет считаться истинным, и цикл будет выполняться бесконечно. Поэтому он должен будет прерван каким-либо другим способом. В последнем примере в заголовке цикла объявлены две переменные, которые по-разному меняют свои значения на каждой итерации цикла. Последний раз цикл выполнится для значений i = 14, j = 29. Пример 5.4. Различные варианты записи заголовка цикла for с параметром:
В заголовке цикла присутствует блок3, в который можно вписывать действия, проходящие на каждой итерации. Поэтому в некоторых случаях цикл for может быть записан без команд тела цикла. В качестве примера рассмотрим несколько вариантов вычисления суммы первых 10 натуральных чисел. Вариант 1
Вариант 2
Вариант 3
В первых двух вариантах, если после цикла записать команду cout << s; получим значение s = 55. Поскольку команды, находящиеся в блоке3, выполняются после выполнения тела цикла, то во втором варианте необходима лишняя итерация. В третьем варианте вывести значение переменной s не получится, поскольку ее область видимости ограничена циклом и ее значение за пределами цикла недоступно. Пример 5.5. V. Программа:
VI. Тестирование. Пример 5.6. VI. Программа:
VI. Тестирование. |