- •Содержание
- •Введение
- •1 Рабочая программа по дисциплине «информатика»
- •Раздел 2. Алгоритмизация и программирование
- •2 Основы алгоритмизации
- •2.1 Основные этапы подготовки и решения задачи на компьютере
- •2.2 Постановка задачи. Разработка математической модели
- •2.3 Алгоритм и его свойства
- •2.4 Форма записи алгоритма на естественном языке
- •2.5 Графическая форма записи алгоритма
- •2.6 Типовые вычислительные процессы и структуры алгоритмов
- •2.6.1 Линейный вычислительный процесс
- •2.6.2 Разветвляющийся вычислительный процесс
- •2.6.3 Циклический вычислительный процесс
- •2.6.4 Алгоритмы обработки одномерных информационных массивов
- •2.6.5 Алгоритмы обработки двумерных информационных массивов
- •3 Язык программирования vba
- •3.1 Элементы языка
- •3.2 Программирование алгоритмов линейной структуры
- •3.3 Программирование алгоритмов разветвленной структуры
- •3.4 Программирование алгоритмов циклической структуры
- •3.5 Организация программ обработки одномерных массивов
- •3.6 Организация программ обработки двумерных массивов
- •4 Контрольная работа и методические указания по её выполнению
- •4.1 Выбор варианта
- •4.2 Задание 1. Варианты задач
- •4.3 Задание 2. Варианты задач
- •4.4 Задание 3. Теоретический вопрос
- •4.5 Методические указания по выполнению контрольной работы
- •4.5.1 Пример выполнения задания 1
- •4.5.2 Пример выполнения задания 2
- •4.5.3 Пример выполнения задания 3
- •Вопросы для подготовки к экзамену
- •Программирование алгоритмов циклической структуры.
- •Литература
- •Указатель
- •650992, Г. Кемерово, пр. Кузнецкий, 39. Тел. 25-75-00.
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
…………………………