Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы алгоритмизации и программирование.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
1.73 Mб
Скачать

3.3Операторы для организации цикла.

Эти операторы предназначены для повторения какого-либо оператора несколько раз.

3.3.1Оператор цикла с предусловием (while).

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

while ( условие )

оператор // тело цикла

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

  1. Вычисляется условие.

  2. Если оно истинно (0), то

  1. Выполняется оператор.

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

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

Пример 11. Напечатаем список цифр от одного до 9 через побел.

i=0;

while (i<10)

{ printf(“%d “,i);

i++; // То же, что и i=i+1

}

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

3.3.2Оператор цикла с постусловием (do).

Оператор цикла с постусловием используется редко и имеет вид (синтаксис):

do

оператор // тело цикла

while ( условие );

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

  1. Выполняется оператор.

  2. Вычисляется условное выражение.

  3. Если оно истинно (0), то

Переход к пункту 1.

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

Пример 12. Напечатаем список чисел от 10 до 1 в столбик.

i=10;

do

printf(“%d\n“,i--);

while (i>0);

В отличие от while тело цикла выполнится хотя бы один раз.

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

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

for(

выражение1;

условие ;

выражение2 )

оператор

Смысл

for(

начальное значение счетчика

условие про­должения цикла

изменение счетчика

повторяемый оператор (тело цикла)

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

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

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

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

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

  1. Выполняется оператор;

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

  3. Переход к пункту 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 изменяется в теле цикла.

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

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

Пример 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 ). Подсказка: использовать условную операцию ( ? : ).