
- •Е. А. Сидорова, п. С. Челобанов основы программирования на 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
5.2.1. Однострочный (линейный) оператор If
Линейная форма условного оператора имеет следующий формат:
If Условие Then Операторы_1 [ Else Операторы_2 ],
где Операторы_1 – операторы, исполняющиеся при выполнении Условия,
Операторы_2 – операторы, исполняющиеся при невыполнении Условия.
Примеры: If a < b Then a = b
If s = 2*d Then y = s^2 Else y = 0
Линейной форма оператора называется потому, что условный оператор записывается только в одной строке, без переноса его на другую строку.
Линейный If применяется редко, обычно в тех случаях, если проверяется не более двух условий, и операторы после ключевых слов достаточно кратки.
5.2.2. Блочная форма оператора If
Блочная форма условного оператора применяется, когда после проверки условия необходимо выполнить программные операторы, записанные в нескольких строках (блок операторов).
Самая простая – безальтернативная (усеченная) форма записи, которая применяется тогда, когда в случае истинности условия необходимо выполнить несколько операторов, а при невыполнении условия никаких действий нет:
If Условие Then
'Операторы при выполнении Условия
End If
Например, фрагмент программы для ветви 1 примера У1 (блоки ГСА № 3-5):
IF a * b < > 0 Then
y = 1 / (a * b)
MsgBox "y=" & y
End If
Альтернативная форма оператора If применяется в тех случаях, когда при истинности условия необходимо выполнить один набор операторов, а при невыполнении условия – другой. В этом случае оператор If записывается в следующем виде:
If Условие Then
'Операторы при выполнении Условия
Else
'Операторы при невыполнении Условия
End If
Текст программы для примера У1 с использованием альтернативной формы оператора If можно записать следующим образом:
Sub Пример_У1()
Dim a As Single, b As Single, y As Single
a = Val(InputBox("Введите a ")) 'Ввод a
b = Val(InputBox("Введите b ")) 'Ввод b
If a * b < > 0 Then
'Выполняются вычисления и вывод результата
y = 1 / (a * b) : MsgBox "y=" & y
Else
'Выводится сообщение о том, что знаменатель равен нулю
MsgBox "a · b = 0"
End If
End Sub
Пример У2. Разветвление на три ветви.
Вычислить:
Для
наглядности и контроля работы программы
введем дополнительную переменную nv,
предназначенную для хранения номера
ветви, по которой выполняется расчет
при конкретном значении x.
Графическая схема алгоритма приведена
на рис. 10.
В данном примере при истинности условия 1 (x < 0) выполняются вычисления по первой формуле. Если условие 1 не выполняется, проверяется условие 2 (x = 0), при его истинности выполняются вычисления по второй формуле. Если ни первое, ни второе условия не выполняются, вычисления производятся по третьей формуле. Во всех случаях после расчета осуществляется вывод результата.
Текст программы:
Sub Пример_У2()
Dim x As Single, nv As Byte, y As Single
x = Val(InputBox("Введите x ")) 'Ввод x
If x < 0 Then
nv = 1 : y = Sin(x) 'Ветвь 1
Else
If x = 0 Then
nv = 2 : y = 1 'Ветвь 2
Else
nv = 3 : y = Cos(x) 'Ветвь 3
End If
End If
MsgBox "При x =" & x & " ветвь " & nv & " y =" & y
End Sub
При составлении ГСА и программы следует руководствоваться следующим правилом: количество условных блоков (операторов If) всегда на единицу меньше числа ветвей, на которые расходится вычислительный процесс.
Как видно из примера У2, операторы If могут быть вложенными. На любом уровне вложенности каждый внутренний If должен полностью входить во внешний для него If, например:
If
Условие1
Then
…
Else
…
If
Условие2
Then
…
Else
…
End If
…
End If
Если между внешним Else и внутренним If нет других операторов, то их обычно соединяют в одно слово, а команду End If , соответствующую внутреннему If, исключают. Записанная таким способом программа для примера У2 имеет вид:
Sub Пример_У2_2способ() 'Второй способ
Dim x As Single, nv As Byte, y As Single
x = Val(InputBox("Введите x ")) 'Ввод x
If x < 0 Then
nv = 1 : y = Sin(x) 'Ветвь 1
ElseIf x = 0 Then
nv = 2 : y = 1 'Ветвь 2
Else
nv = 3 : y = Cos(x) 'Ветвь 3
End If
MsgBox "При x =" & x & " ветвь " & nv & " y =" & y
End Sub