Оператор цикла с параметром (for) или пошаговый. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Оператор цикла с параметром (for) или пошаговый.



Оператор for имеет вид (синтаксис):

for( выражение1; условие; выражение2) оператор

Смысл

     
for( начальное значение счетчика условие про­должения цикла изменение счетчика повторяемый оператор (тело цикла)

Любое из выражений в скобках может отсутствовать, однако их разделители “;” обязательны.

Семантика: оператор for выполняется следующим образом:

1. Вычисляется выражение1 (начальное значение счетчика), если оно есть;

2. Вычисляется условие (условие продолжения цикла);

3. Если оно истинно (¹0) или его вообще нет, то

a) Выполняется оператор;

b) Вычисляется выражение2 (новое значение счетчика);

c) Переход к пункту 2.

Иначе - выход из цикла (переход к следующему после for оператору.

Изменение счетчика
Пример 13. Вычислим сумму и произведение чисел от 1 до 8.

p=1; s=0;

for(i=1; i<=8; i=i+1)

{ s=s+i;

p=p*i;

}

То же можно написать короче в ущерб читабельности, воспользовавшись операциями “,”, присваивания и постдекремента:

for(p=1, s=0, i=1; i<=8; s+=i, p*=i++);

В этом примере тело цикла отсутствует, поскольку при вычислении выражения2 изменяются и s, и p, а затем и i.

Пример 14. Напишем оператор задержки продолжения программы до нажатия клавиши “g”.

for(ch=‘A’; ch!= ‘g’;) ch=getch();

В данном примере отсутствует выражение2, поскольку значение переменной ch изменяется в теле цикла.

Вложенные циклы.

В каждом из видов циклов тело цикла может быть тоже оператором цикла. Такие циклы называются вложенными. Важно, чтобы тело внутреннего цикла не выходило за пределы тела внешнего цикла.

Пример 15. Напишем программу печати таблицы умножения.

for(i=1; i<10; i++)   // Для каждой строки i таблицы

{ for(j=1; j<10; j++) // Для каждого столбца j таблицы

                                                     // выводим j*i=произведение j на i

printf(“%d*%d=%2d “,j,i,j*i);

                   // В конце строки (после цикла по j)

cout << '\n';  // переход на новую строку

}

Попытайтесь исправить эту программу так, чтобы обойтись тремя операторами (без cout). Подсказка: использовать условную операцию (?:).

3.3.5 Операторы break и continue.

Иногда требуется прекратить выполнение цикла не по результату проверки условия, а другим способом. Это можно сделать оператором break, который вызывает немедленный выход из самого внутреннего из объемлющих его циклов for, while или do, а также оператора switch.

Пример 16. Приведем программу вычисления суммы неизвестного заранее количества положительных чисел, вводимых с клавиатуры. Признаком окончания расчета является ввод любого отрицательного числа. 1 в условии означает, что цикл бесконечный, т.е. выход возможен только по оператору  break.

summ=0;

While (1)

{ cin >> a;

if (a >= 0)

summ += a;

else

break;

}

Оператор continue тоже прерывает выполнение операторов тела цикла, однако не заканчивает цикл, а вызывает следующий шаг итерации. Для for это изменение счетчика, а для while или do - проверка условия.

Пример 17. Программа вычисляет сумму только тех чисел, вводимых с клавиатуры, которые положительны. Признаком окончания расчета является ввод числа 0.

summ=0;

While (1)

{ cin >> a;

if (a > 0)   // положительное

summ += a;

else if (a < 0) // отрицательное

continue;

else         // введено число 0

break;

}



Поделиться:


Последнее изменение этой страницы: 2020-12-09; просмотров: 66; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.222.239.77 (0.004 с.)