- •Е. А. Сидорова, п. С. Челобанов основы программирования на vba омск 2011
- •1. Понятие и свойства алгоритма
- •1.1. Понятие алгоритма
- •1.2. Свойства и виды алгоритмов
- •1.3. Способы представления алгоритмов
- •2. Язык программирования vba
- •2.1. Языки программирования
- •2.2. Общие сведения о vba
- •2.3. Основные понятия языка программирования
- •2.4. Алфавит vba
- •2.5. Типы данных
- •2.6. Формы записи вещественных чисел в программе
- •2.7. Переменные
- •2.8. Константы
- •2.9. Встроенные функции
- •2.10. Выражения
- •2.11. Редактор Visual Basic
- •2.12. Правила записи и ввода программ на vba
- •2.13. Создание первой программы
- •3. Управление вводом и выводом данных
- •3.1. Оператор присваивания
- •3.2. Операторы ввода данных
- •3.3. Генерирование случайных чисел
- •3.4. Операторы вывода данных
- •4. Линейные вычислительные процессы
- •5. Разветвляющиеся вычислительные процессы
- •5.1. Алгоритм разветвляющегося процесса
- •5.2. Оператор условного перехода If
- •5.2.1. Однострочный (линейный) оператор If
- •If Условие Then Операторы_1 [ Else Операторы_2 ],
- •5.2.2. Блочная форма оператора If
- •5.3. Объединение условий с помощью логических операций
- •5.4. Оператор безусловного перехода GoTo
- •5.5. Оператор выбора Select Case
- •6. Символьные переменные
- •6.1. Общие понятия
- •6.2. Сравнение строк
- •6.3. Строковые функции
- •6.4. Оператор Mid
- •7. Введение в объектно-ориентированное программирование
- •7.1. Основные понятия
- •7.2. Создание пользовательского интерфейса
- •7.3. Установка свойств объектов и определение методов
- •7.4. Составление программного кода
- •7.5. Создание пользовательского приложения с использованием формы
- •7.5.1. Создание формы
- •7.5.2. Разработка программного кода
- •8. Циклические вычислительные процессы
- •8.1. Понятие цикла
- •8.2. Арифметический цикл
- •8.2.1. Цикл с разветвлением
- •8.2.2. Цикл со счетчиком. Вычисление максимума и минимума
- •8.2.3. Вложенные циклы
- •8.3. Вычисление сумм и произведений
- •8.4. Итерационные циклы
- •8.4.1. Операторы цикла Do … Loop
- •9. Модульное программирование.
- •9.1. Понятие процедуры
- •9.2. Параметры процедур – формальные и фактические
- •9.3. Разработка процедур-функций
- •9.4. Разработка процедур-подпрограмм
- •9.5. Срочный выход из процедур и циклов
- •10. Переменные с индексами. Одномерные массивы
- •10.1. Понятие массива
- •10.2. Ввод массива
- •10.2.1. Считывание массива с листа Excel
- •10.2.2. Заполнение массива случайными числами
- •10.3. Вывод массива
- •10.4. Решение задач с использованием массивов
- •644046, Г. Омск, пр. Маркса, 35
8.2.1. Цикл с разветвлением
Пример Ц2. Напечатать квадраты и кубы всех чисел, кратных 3, из диапазона от 10 до 100.
Г
рафическая
схема алгоритма решения задачи приведена
на рис. 20. Для решения задачи организован
цикл (блок 2) с последовательным перебором
всех значений x
от 10 до 100. В теле цикла каждое значение
x
проверяется на кратность числу 3 (блок
3), если условие выполняется, это значение
выводится на экран монитора (блок 4), а
затем в цикле происходит переход к
следующему значению x.
Если условие не выполняется,
т. е. число x
не кратно 3, в цикле сразу происходит
переход к следующему значению x.
Листинг программы:
Sub Пример_Ц2()
Dim x As Byte
For x = 10 To 100
If x Mod 3 = 0 Then
Debug.Print x, x ^ 2, x ^ 3
End If
Next x
End Sub
Пример Ц3. Протабулировать функцию y(x) при b = –4,5, изменяя аргумент x с шагом Δx = 0,2:
Так как общий интервал изменения x не задан, примем его исходя из равенства длин всех трех ветвей: – 1 ≤ x ≤ 7, т. е. x Є [–1, 7].
Г
СА
решения задачи приведена на рис. 21,
программа имеет вид:
Sub Пример_Ц3() 'Цикл
'с разветвлением
Const b = –4.5
Dim x As Single, y As Single
For x = 1 To 7 Step 0.2
If x < 3 Then
nv = 1: y = Sqr(x)
ElseIf x <= 5 Then
nv = 2: y = x ^ 2 + b
Else
nv = 3: y = sin(x)^2
End If
Debug.Print nv, x, y
Next x
End Sub
8.2.2. Цикл со счетчиком. Вычисление максимума и минимума
Пример Ц4. Найти максимальное число из произвольных пяти чисел, вводимых с клавиатуры.
При работе программы каждое число поочередно будет записываться в переменную x. Поскольку исходные числа изначально неизвестны и изменяются также с неизвестным шагом, то использовать ту же переменную x в качестве параметра арифметического цикла невозможно. В таких случаях роль параметра цикла выполняет счетчик, в качестве которого в данном примере выступает порядковый номер проверяемого числа. Суть процесса поиска максимума сводится к следующему. Задается отдельная переменная для хранения максимума, например, xmax. Начальное значение этой переменной обычно равно первому из исходных чисел. Затем каждое очередное значение x сравнивается со значением xmax, и если оно окажется больше, то переменной xmax присваивается это значение x. Поскольку в нашем примере исходные числа заранее неизвестны, то в качестве начального значения переменной xmax следует принять минимально возможное из области допустимых значений переменной x (обычно для этого используют большое отрицательное число, например, –1E25).
ГСА решения задачи приведена на рис. 22. Текст программы:
S
ub
Пример_Ц4() 'Поиск_максимума
Dim x As Single, xmax As Single, k As Byte
xmax = –1E25 'Начальное значение максимума
For k = 1 To 5 'Счетчик чисел
x = Val(InputBox("Введите x "))
If x > xmax Then xmax = x
Next k
Debug.Print "xmax=" & xmax
End Sub
При поиске минимального значения в качестве начального минимума следует принимать очень большое число, например, xmin = 1E25, а проверку выполнять следующим образом:
If x < xmin Then xmin = x
Начальные значения минимума и максимума всегда записываются до цикла.
Пример Ц5. В диапазоне от 131 до 467 найти максимальное число, кратное 12.
В схеме алгоритма (рис. 23) для каждого из значений x предусмотрена проверка на кратность числу 12 (блок 4) и для чисел, кратных 12, – поиск максимального из них (блоки 5, 6). Программа имеет вид:
S
ub
Пример_Ц5()
Dim x As Integer, xmax As Integer
xmax = 131
For x = 131 To 467
If x Mod 12 = 0 Then
If x > xmax Then
xmax = x
End If
End If
Next x
Debug.Print "xmax=" & xmax
End Sub
Более кратко тело цикла в примере Ц5 можно записать, применив строковый оператор If и логическую связку And:
If x Mod 12 = 0 And x > xmax Then xmax = x
