- •Одесская национальная академия пищевых технологий
- •Программа дисциплины
- •Глава 1. Алгоритмизация вычислительных процессов Этапы решения инженерных задач на пк
- •1.1. Алгоритм и его свойства
- •Типы алгоритмических структур
- •1.2. Линейные и разветвляющиеся алгоритмы
- •1.3. Простые циклические алгоритмы
- •1.4. Циклические алгоритмы обработки массивов
- •Двумерные массивы
- •А) ввод по строкам в) ввод по столбцам
- •Глава 2. Система программирования Visual Basic for Applications (vba)
- •2.1. Основные положения
- •2.2. Некоторые определения
- •Стандартный модуль (Module)
- •2.3. Запуск и элементы окна редактора vba
- •Глава 3. Пример создания проекта в vba и типы данных
- •3.1. Порядок действий на пк при создании проекта
- •3.2. Элементы языка vba
- •Данные в vba
- •3.3. Описание переменных
- •Глава 4. Выражения в vba и ввод – вывод данных
- •4.1. Выражения в vba
- •4.2. Операторы присваивания и способы ввода данных Оператор присваивания
- •Способы ввода данных
- •Для ввода
- •4.3. Способы вывода данных
- •Глава 5. Организация разветвляющихся программ
- •5.1. Операторы управления goto, if
- •Условный оператор управления if
- •5.3. Оператор выбора Select Case
- •Глава 6. Организация циклических программ в vba
- •6.1. Простые циклические программы с оператором if
- •6.2. Оператор цикла For ... Next
- •6.3. Операторы циклов типа Do (выполнить)
- •Использование операторов Do While и Do Until для организация цикла с защитой входа
- •Использование операторов Do While и Do Until для организация цикла с свободным входом в цикл (с послеусловием) Организация цикла с проверкой условия в конце цикла
- •Глава 7. Массивы данных в vbа
- •7.2. Примеры обработки одномерных массивов
- •Сортировка числовых одномерных массивов
- •Алгоритм сортировки одномерного массива по возрастанию
- •7.3. Двумерный массив
- •Программа
- •Глава 8. Пользовательские процедуры типа Sub и Function в vba
- •8.1. Подпрограммы
- •Вызов подпрограммы процедуры Sub
- •2 Способ.
- •8.3. Подпрограмма - процедура Function
- •Вызов подпрограммы - процедуры Function
- •Глава 9. Решение оптимизационных задач
- •9.1. Обработка электронных таблиц в среде vba
- •9.2. Применение процедуры Поиск решения для решения линейных оптимизационных задач
- •9. 3. Подготовка эт
- •Линейные, разветвляющиеся и циклические алгоритмы
- •Оформление протокола лабораторной работы
- •Контрольные вопросы
- •Алгоритмы обработки одномерных и двумерных массивов
- •Оформление протокола лабораторной работы
- •Задание №1. Создать простейший проект ″Приветствие″ в vba:
- •1. Разработка интерфейса пользователя.
- •Оформление протокола лабораторной работы
- •Контрольные вопросы
- •Линейные программы в vba
- •Пример составления программы для нулевого варианта задания
- •Private Sub CommandButton1_Click() ′ Заголовок процедуры отклика
- •Разработка проектов в vba по разветвляющимся программам
- •Оформление протокола лабораторной работы
- •Контрольные вопросы
- •Циклические программы в vba
- •End Sub ‘ Конец процедуры отклика
- •End Sub ‘ Конец процедуры отклика
- •Оформление протокола лабораторной работы
- •Контрольные вопросы
- •Обработка одномерных массивов в vbа
- •Порядок выполнения задания №1.
- •Пример выполнения лабораторной работы
- •3. Интерфейс на рис. Л7.1. Вывод результата решения по условию нулевого варианта не в окно TextBox1, а в окно отладки Immediate Window.
- •4. Процедура отклика кнопки 1:
- •Результат решения в окне отладки Immediate Window (рис. Л7.3).
- •Оформление протокола лабораторной работы
- •Контрольные вопросы
- •Дайте определение одномерного массива.
- •Обработка двумерных массивов в vbа
- •Порядок выполнения задания №1.
- •Пример выполнения лабораторной работы
- •Оформление протокола лабораторной работы
- •Программная единица
- •Оформление протокола лабораторной работы
- •Контрольные вопросы
- •Обработка эт в среде vbа
- •Оформление протокола лабораторной работы
- •Приложение 1. Обозначения блоков в схемах алгоритмов
- •Литература
- •Содержание
6.2. Оператор цикла For ... Next
П
Рис.
6.1.
Полная
блок -
схема
Синтаксис оператора:
For х = xn to xk [step x ]
Операторы тела цикла
Next [x]
где: x – параметр цикла (переменная);
xn, xk - начальное и конечное значение (арифметические выражения);
step x – шаг изменения х (по умолчанию шаг =1);
Next - конец области действия оператора цикла.
Функционирование оператора определяется из его блок – схемного представления. Полная блок – схема For ... Next (рис. 6.1). Блок — схема с блоком модификации (рис. 6.2). Выход из цикла при x>xk.
Т
Рис.
6.2.
Блок – схема с блоком модификации
Private
Sub CommanButton1_Click Dim
x, y, xn, xk, dx As Single xn=-1:
xk=1: dx=0.2 For
x=xn to xk step dx y=x^2 Debug.Print
“ x= “; x ; “ y=”; y Next
x End
Sub
Рис. 6.3. Блок – схема с защитой входа
6.3. Операторы циклов типа Do (выполнить)
Существуют два оператора Do While (пока) и Do Until (до).
С помощью этих операторов могут быть организованы два типа циклов:
С защитой входа в цикл (с предусловием).
С свободным входом в цикл (с послеусловием)
Использование операторов Do While и Do Until для организация цикла с защитой входа
Синтаксис операторов:
Do While <ЛВ > (ложь) Do Until < ЛВ> (истина)
(истина) ( ложь)
Операторы тела цикла Операторы тела цикла
Loop Loop
Выход из цикла Выход из цикла
где: ЛВ - логическое выражение;
Loop (цикл) - конец области действия Do
Использование операторов Do While и Do Until для организация цикла с свободным входом в цикл (с послеусловием) Организация цикла с проверкой условия в конце цикла
Синтаксис операторов:
Do Do
операторы тела цикла операторы тела цикла
Loop While < ЛВ > (ложь) Loop Until <ЛВ> (истина)
(истина) (ложь)
Выход из цикла Выход из цикла
Пример 6.2. Составить программу вычисления суммы членов ряда с заданной точностью Е= 0.001 и число его членов, если задан общий член ряда an=1/n2. Алгоритм является итерационным, так как неизвестно заранее количество выполняемых циклов (глава 1, рис. 1.6). Процедура отклика командной кнопки с использованием Do While:
Private Sub CommanButton1_Click
Dim e, an, s As Single, n As Integer
e=0.001: n=1: s=0: an=1/n^2
Do While an=>e
s=s+an : n=n+1: an=1/n^2
Loop
MsgBox “ s= “ & s & “n=” & n
End Sub
Пример 6.3. Составить программу вычисления по следующей итерационной формуле yi+1=0,5(yi + x/yi) с заданной точностью Е=0.001, начальным приближением y0=1 и х=25 . В циклическом алгоритме (глава 1, рис. 1.7) выполним замену переменных : Уi обозначим переменной а
Уi+1 обозначим переменной b
Тогда запишем а=уо ; b=0.5(a+x/a); ; a=b; Выводb
Процедура отклика командной кнопки с использованием оператора If:
Private Sub CommandButton1_Click()
Dim e, x, yo, a, b As Single
e = 0.001: yo = 1: x = 25
a = yo
2: b = 0.5 * (a + x / a)
If Abs(b - a) < e Then GoTo 1
a = b
GoTo 2
1: MsgBox " b= " & b
End Sub