Инициализация_цикла в цикле for всегда завершается точкой с запятой, т.е. определяется этим разделителем от последующего выражения – условия, которое также завершается точкой с запятой. Даже при отсутствии инициализации_цикла и выражения – условия в цикле for символы “точка с запятой” всегда присутствует. Список _выражений (в цикле for) – последовательность скалярных выражений, разделенных запятыми.
Прекращение выполнения цикла возможно в следующих случаях:
· Нулевое значение проверяемого выражения_условия;
· Выполнение в теле цикла оператора передачи управления(break, goto, return) за пределы цикла.
Основная форма цикла for имеет следующий вид: for (инициализация; проверка условия; изменение) оператор;
На самом деле в общем виде: for (выражение1; выражение2; выражение3) оператор.
В простейшей форме инициализация используется для присвоения начального значения параметру цикла. Проверка условия – обычно условное выражение, которое определяет, когда цикл должен быть завершен.Приращение обычно используется для изменения параметра цикла каждый раз при повторении цикла. Эти три раздела заголовка цикла должны быть разделены точкой с запятой. Выполнение цикла происходит до тех пор, пока условное выражение истинно. Как только условие становится ложным, начинает выполнятся следующий за циклом for оператор.
|
|
Простейший пример оператора цикла for:
for (i = 0; i < 10; i++) cout<<i<<”\n”;
В результате выполнения этого оператора будут напечатаны в столбик цифры от 0 до 9.Для печати этих цифр в обратном порядке можно использовать следующий оператор:
for (i = 9; i >= 0; i --) cout<<i<<”\n”;
Цикл for похож на аналогичные циклы в других языках программирования, и в тоже время этот оператор в языке С гораздо более гибкий, мощный и применим во многих ситуациях.
В качестве параметра цикла необязательно использовать целочисленный счетчик. Приведем фрагмент программы, выводящей на экран буквы русского алфавита:
Unsigned char ch;
for (ch =’A’; ch <= ‘Я’; ch++) cout<<ch;
Следующий фрагмент программы:
for (ch =’0’; ch! =’N’;) cout<<ch;
будет выполняться до тех пор, пока с клавиатуры не будет введён символ ‘N’. Заметим, что место, где должно быть приращение, пусто. Случайно или намеренно может получиться, так называемый бесконечный цикл.
Приведем три примера таких циклов:
for (;;) cout<<“Бесконечный цикл \n”;
for (i=1; 1; i++) cout<<“Бесконечный цикл \n”;
for (i=10; i>6; i++) cout<<“Бесконечный цикл \n”;
Тем не менее для таких циклов также может быть организован выход. Для этого используется оператор break. Если оператор break встречается в составном операторе цикла, то происходит немедленное прекращение выполнения цикла и начинается выполнение следующего оператора программы.
|
|
#include <iostream.h>
/*Пример1*/
main ()
{
unsigned char ch;
for (;;) {
ch=getchar (); /*Прочитать символ*/
if (ch= =’Q’) break; /*Проверка символа*/
cout<<ch; /*Печать символа*/
}
}
В этой программе будут печататься введенные символы до тех пор, пока не будет введён символ ‘Q’. Возможно, и это синтаксически правильно, наличие пустого оператора (отсутствие оператора) в цикле for. Например:
for (i=0; i<10000; i++);