Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

ЦИКЛ С ПАРАМЕТРОМ



Формат оператора цикла с параметром:

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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...