Циклы. Цикл for.

Иногда необходимо, чтобы программа выполнила одно и то же действие определенное количество раз подряд. Конечно, для этого можно много раз подряд написать одни и те же операторы. Но тогда, текст программы станет слишком большим и неудобным для дальнейшего использования, особенно, если количество повторений исчисляется тысячами, а то и миллионами. Чтобы избежать данной трудности, программисты используют циклы. Одним из таких циклов является цикл for. В общем случае синтаксис цикла for выглядит следующим образом:

for(действие до начала цикла; условие продолжения цикла; действие в конце каждой итерации цикла){

операторы;

}

 Итерация – это один проход цикла.

Частным случаем применения данного цикла является следующая запись:

for(Инициализация; Условие; Приращение) {операторы;}

Инициализация выполняется один раз в начале цикла. Далее на каждом шаге цикла проверяется условие. Если оно верно, выполняются операторы, заключенные в фигурные скобки и приращение (т.е. изменение какой-то переменной). Если оператор только один, то его можно не заключать в фигурные скобки. После этого условие проверяется вновь. Когда значение условия становится ложным, цикл прекращается. Такая запись цикла for применяется, если известно точное количество итераций (повторений) цикла.

Пример:

int i;

for (i=0; i<=100; i++)

   cout<<i<<” ”;

В данном примере i=0 – это инициализация (то есть присваивание переменной i начального значение, в данном случае 0). i<=100 – условие (i должно быть меньше либо равно 100). i++ - приращение, то есть изменение переменной i на определенную величину (оператор ++ увеличивает значение переменной на 1) .

В самом начале происходит присвоение переменной i значение 0. После этого проверяется условие. Поскольку переменная i равна 0, то она явно меньше 100, поэтому выполняется оператор cout<<i<<” ”; , который выводит на экран значение переменной i и пробел – на первом шаге «0 ». После этого значение переменной i увеличивается на 1 (приращение i++) и становится равным 1. После этого снова проверяется условие: 1 меньше 100, поэтому снова выполняется оператор cout, и на экран выводится «1 ». Снова происходит приращение, переменная i теперь равна 2, проверяется условие, выполняется оператор cout и т.д. Цикл повторяется до тех пор, пока переменная i не станет равной 101. После чего цикл прекращается. Поэтом последнее выполнение оператора cout, выведет на экран «100 ».

tc_026

 

Рассмотрим еще один пример использования цикла for.

Скачайте следующую программу, написанную на языке C++, поместите скачанный файл FOR01.CPP в папку C:\TCPP\BIN\.

Запустите DOSBox (Как настроить эту программу можно посмотреть ЗДЕСЬ).

Нажмите клавишу F3. Выберите файл FOR01.CPP и нажмите клавишу Enter.

tc_027

Откроется программа:

tc_028

Рассмотрим эту программу подробно:

#include<iostream.h> - подключаем модуль iostream.h. В этом модуле содержится функция cout, которая используется в этой программе ниже. Она необходима для вывода информации на экран.

#include<conio.h> - подключаем модуль conio.h, содержащий функции clrscr() и getch();

void main(){ - описываем заголовок функции main. Это главная функция. Она должна быть в каждой программе на языке С++. void – это тип функции main. Void – означает, что наша функция ничего не возвращает. Пустые скобки () означают, что у этой функции нет входных параметров. Любая функция начинается c открывающейся фигурной скобки {, а заканчивается закрывающейся фигурной скобкой }.

  clrscr(); - очистка экрана.

  for (int i=32;i<=255;i++){ - цикл for. Начальное значение переменной i равно 32. Цикл будет повторяться, пока i меньше либо равна 255.

    cout<<i<<":"<<char(i)<<"  "; - выводим на экран сначала значение переменной i, затем двоеточие «:», затем с помощью функции char() преобразуем тип переменной i в тип char. Когда оператор cout встречает переменную типа char, он вместо значения этой переменной выводит на экран символ, который соответствует значению этой переменной (каждый символ имеет свой номер в кодовой таблице, например символ с номером 38 – это «&», а символ с номером 84 - это латинская буква T ). После вывода символа, мы выводим пробел « » (в итоге на экран выводится выражение вида «64:@ » -  то есть номер символа, двоеточие, сам символ, пробел).

    if ((i-31)%11==0)

      cout<<"\n";  - сначала от переменной i отнимаем 31, потом от полученного значения получаем остаток от деления на 11. Если остаток равен 0, то переводим курсор на следующую строчку. Это нужно для того, чтобы выводить в каждой строчке по 11 выражений, описанных выше («64:@ »). К примеру, когда значение переменной i станет равным 42, после вычитания 31 получится 11. Остаток от деления 11 на 11 равен 0, поэтому курсор переведется на следующую строчку, и выражение «43:+ » будет выведено на следующей стврочке

  } – конец цикла for.

getch(); - ожидаем нажатия любой клавиши.

} – конец функции main и всей программы.

Чтобы запустить программу, нажимаем комбинацию клавиш Alt+R, выбираем в появившемся меню пункт Run и нажимаем клавишу Enter. Ни в коем случае не нажимайте для запуска программы комбинацию клавиш Ctrl+F9 – это закроет DOSBox!

tc_029

При запуске программа 224 раза (с 32 до 255)  выводит на экран номер символа, двоеточие, символ и пробел по 11 значений в строке:

tc_030

При нажатии на любую клавишу программа закроется.

Почему мы выводим символы с 32-го номера, а не с 0? Дело в том, что символы с номерами от 0 до 31 имеют специальное назначение и их не принято выводить на экран. Например, символ номер 10 переводит курсор на следующую строчку, а номер 13 возвращает курсор в начало строки.