Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб 4_Структуры повторения.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
249.86 Кб
Скачать

Лабораторная работа 4 Структуры повторения

Структура повторения – это многократное повторение одних и тех же действий для решения задачи. На практике это реализуется либо с помощью рекурсии либо с помощью итерации. Итерация — это повторение одних и тех же действий определенное количество раз. Основным методом итерации является цикл.

Язык C++ предусматривает три типа структур повторения (цикла) в форме операторов for, while и do..while, которые позволяют программам многократно выполнять некоторые действия, пока условие (называемое условием продолжения цикла) остается истинной. Операторы for и while выполняют действие (или группу действий) в своем теле 0 или большее число раз. Оператор do..while по крайней мере один раз выполняет действие в своем теле.

4.1. Оператор цикла while

Оператор while имеет следующий синтаксис:

while (условие)

{

операторы;

}

Сначала проверяется условие, указанное в круглых скобках после ключевого слова while. Если условие истинно (возвращает значение true), то поочередно выполняются заключенные в фигурные скобки операторы, после чего условие проверяется снова. Так будет продолжаться до тех пор, пока условие не станет ложным (значение false): тогда цикл while завершится, а выполнение программы продолжится со следующей строки.

Листинг 4.1 демонстрирует оператор while. Условие, проверяемое в операторе while, может быть таким же сложным, как и любое другое выражение языка C++. Оно может состоять из нескольких выражений, объединенных логическими операторами && (AND — И), | | (OR — ИЛИ) и ! (NOT — HE).

Листинг 4.1. Пример использования оператора while

  1. #include <iostream>

  2. using namespace std;

  3. int main()

  4. {

  5. unsigned short small;

  6. unsigned long large;

  7. const unsigned short MAXSMALL=65535;

  8. cout << "Enter a small number: ";

  9. cin >> small;

  10. cout << "Enter a large number: ";

  11. cin >> large;

  12. cout << "small: " << small << "...";

  13. // при каждой итерации проверять два условия

  14. while (small < large && small < MAXSMALL)

  15. {

  16. // после каждых 5000 строк выводить точку

  17. if (small % 5000 == 0)

  18. cout << ".";

  19. small++;

  20. large-=2;

  21. }

  22. cout << "\nSmall: " << small << " Large: "

  23. << large << endl;

  24. return 0;

  25. }

Результат

Enter a small number: 2

Enter a large number: 100000

small: 2…….

Small: 33335 Large: 33334

Анализ

Это простая игра. Введите два числа. Затем меньшее число (small) начнет увеличиваться на единицу, а большее (large) — уменьшаться на два до тех пор, пока они не "встретятся". Цель игры: угадать число, на котором значения "встретятся".

В строках 9—12 осуществляется ввод значений. В строке 17 проверяются два условия продолжения цикла:

  1. меньшее число меньше большего (small < large);

  2. меньшее число меньше максимально допустимого (small < MAXSMALL).

В строке 20 вычисляется остаток от деления числа small на 5000, причем значение переменной small не изменяется. Если small делится на 5000 без остатка и в результате получается 0, то на экран выводится точка. Затем в строке 23 значение переменной small увеличивается на 1, а в строке 24 значение large уменьшается на 2.

Цикл завершается, когда хотя бы одно из условий перестает выполняться. После этого управление передается в строку 26, следующую за телом цикла.