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

3.4 Программирование алгоритмов циклической структуры

Цикл - это алгоритмическая структура, при помощи которой реализуется многократное повторение блоков операторов. Операторы, повторяющиеся в цикле, называются телом цикла. Существует два основных вида циклов: цикл со счётчиком и цикл с условием.

1) Цикл со счётчиком используется в том случае, когда количест­во повторов заданного блока операторов известно заранее. Для организации цикла с известным числом повторений используется оператор For... Next. Синтаксис этого оператора таков:

For СчетчикЦикла= НачальноеЗначение То КонечноеЗначение [Step Шаг]

Операторы тела цикла

Next [СчетчикЦикла]

СчетчикЦикла

- числовая переменная, используемая как счетчик повторений цикла;

НачальноеЗначение

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

КонечноеЗначение

- конечное значение счетчика цикла;

Шаг

- приращение счетчика при каждом шаге цикла (если параметр Step не указан, то по умолчанию значение приращения равно 1);

Операторы тела цикла

- операторы, выполнение которых нужно повторить определенное количество раз.

Оператор Next увеличивает значение счетчика (параметра) цикла на заданный шаг и передает управление на продолжение цикла, то есть на оператор For, где анализируется полученное значение счетчика цикла: текущее значение счетчика цикла сравнивается с конечным значением. Если текущее значение параметра цикла больше конечного его значения, то происходит выход из цикла на оператор, следующий за оператором Next.

2) Цикл с условием применяется тогда, когда число по­вторений операторов тела цикла заранее неизвестно. Рассмотрим две разновидности данной конструкции, основанных на операторе цикла с условием Do...While, с предусловием и с постусловием.

Синтаксическая конструкция оператора Do … While:

цикл с предусловием

цикл с постусловием

Do While Условие

Тело цикла

Loop

Do

Тело цикла

Loop While Условие

Do - ключевое слово, обозначающее начало цикла;

While - ключевое слово, указывающее тип цикла;

Условие – логическое выражение, принимающее значение True или False;

Loop - ключевое слово, указывающее на окончание цикла.

В пункте 2.6.3 были построены математические модели и блок-схемы алгоритмов циклической структуры. Рассмотрим примеры программ, где алгоритм решения является циклическим.

Листинг 5. Табулирование функции с постусловием

Sub Пример5()

Dim a, b As Single

Dim h As Single

Dim x, y As Single

a=InputBox("Введите начальное значение аргумента", "Окно ввода")

b=InputBox("Введите конечное значение аргумента", "Окно ввода")

h = InputBox("Введите шаг изменения аргумента", "Окно ввода")

Debug.Print "Аргументы", "Значения"

x = a

Do

y = x * Sin(x) 'здесь f(x)=x*sin(x)

Debug.Print x, y

x = x + h

Loop While x <= b

End Sub

Примечание. В данной программе для того, чтобы заголовки таблицы не выводились при каждом повторе цикла (рис. 24), оператор вывода заголовков Debug.Print "Аргументы", "Значения" записан перед началом работы цикла.

Рис. 24 Результаты работы цикла при а=-5, b=5, h=2

Листинг 6. Табулирование функции с циклом For

Фрагмент программы примера 5 по алгоритму с блоком модификации без описания переменных и оператора ввода исходных данных:

…………………………

Debug.Print "Аргументы", "Значения"

For x = a To b Step h

y = x * Sin(x)

Debug.Print x, y

Next x

………………………………

Листинг 7. Табулирование функции при помощи цикла со счетчиком

Фрагмент программы примера 5 без описания переменных и оператора ввода исходных данных:

…………………………

Debug.Print "Аргументы", "Значения"

x = a

n = Abs((b - a) / h) + 1

For i = 1 To n

y = x * Sin(x)

Debug.Print x, y

x = x + h

Next i

…………………………

Листинг 8. Ежегодное начисление амортизации

Фрагмент программы примера 6 без описания переменных и оператора ввода исходных данных:

…………………………

Debug.Print "Год", "Стоимость оборудования"

For N = 1 To 10

R0 = Round(R0 * (1 - P / 100) + D, 2)

Debug.Print N, R0

Next N

…………………………