Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Формат оператора цикла с параметром:
for (выражение_1; выражение_2; выражение_3)
оператор;
Выражение 1 выполняется только один раз в начале цикла. Обычно оно определяет начальное значение параметра цикла (инициализирует параметр цикла). Выражение 2 - это условие выполнения цикла. Выражение 3 обычно определяет изменение параметра цикла, оператор - тело цикла, которое может быть простым или составным. В последнем случае используются
фигурные скобки.
Алгоритм выполнения цикла for представлен на блок-схеме
Рис – 1
Обратите внимание на то, что после вычисления выражения 3 происходит возврат к вычислению выражения 2 - проверке условия повторения цикла.
С помощью цикла for нахождение N! можно организовать следующим образом:
F=1;
for (i=1; i<=N; i++) F=F*i;
Используя операцию «запятая», можно в выражение 1 внести инициализацию значений сразу нескольких переменных:
for (F=1; i=1, i<=N; i++) F=F*i;
Некоторых элементов в операторе for может не быть, однако разделяющие их точки с запятой обязательно должны присутствовать. В следующем примере инициализирующая часть вынесена из оператора for:
F=1;
i=1;
for (;i<=N; i++) F=F*i;
Ниже показан еще один вариант вычисления N!. В нем на месте тела цикла находится пустой оператор, а вычислительная часть
внесена в выражение 3.
For (F=1,i=1; i<=N; F=F*i,i++);
Этот же оператор можно записать в следующей форме:
For (F=1,i=1; i<=N; F*=i++);
В языке Си оператор for является достаточно универсальным средством для организации циклов. С его помощью можно программировать даже итерационные циклы, что невозможно в Паскале. Вот пример вычисления суммы элементов гармонического ряда, превышающих заданную величину е:
for(n=1,S=0;1.0/n>eps && n<INT_МАХ;n++) S+=1.0/n;
И наконец, эта же самая задача с пустым телом цикла:
for(n=1,S=0;1.0/n>eps && n<INT_МАХ;S+=1.0/n++);
Следующий фрагмент программы на Си++ содержит два вложенных цикла for. В нем запрограммировано получение на экране таблицы умножения.
for(х=2;х<=9;х++)
for(у=2;у<=9;у++)
cout<<"\n"<<х<<"*"<<у<<"="<<х*у;
На экране будет получен следующий результат:
2*2=4 2*3=6
9*8=72 9*9=81
-Оператор continue. Если выполнение очередного шага цикла требуется завершить до того, как будет достигнут конец тела цикла, используется оператор continue. Следующий фрагмент программы обеспечивает вывод на экран всех четных чисел в диапазоне от 1 до 100.
for(i=1; i<=100; i++) { if (i%2) continue; cout<<"t"<<i; }
Для нечетных значений переменной i остаток от деления на 2
будет равен единице, этот результат воспринимается как значение «истина» в условии ветвления, и выполняется оператор continue. Он завершит очередной шаг цикла, выполнение цикла перейдет к следующему шагу.
-Оператор goto. Оператор безусловного перехода goto существует в языке Си, как и во всех других языках программирования высокого уровня. Однако с точки зрения структурного подхода к программированию его использование рекомендуется ограничить. Формат оператора:
goto метка;
Метка представляет собой идентификатор с последующим двоеточием, ставится перед помечаемым оператором.
Одна из ситуаций, в которых использование goto является оправданным - это необходимость «досрочного» выхода из вложенного цикла. Вот пример такой ситуации:
for (...)
{ while (...)
{ for (...)
{... goto exit...}
}
}
exit: cout<<"выход из цикла";
При использовании оператора безусловного перехода необходимо учитывать следующие ограничения:
• нельзя входить внутрь блока извне;
• нельзя входить внутрь условного оператора (if...еlse...);
• нельзя входить внутрь переключателя;
• нельзя входить внутрь цикла.
Дата публикования: 2014-11-02; Прочитано: 311 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!