- •Е. А. Сидорова, п. С. Челобанов основы программирования на 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
4. Линейные вычислительные процессы
Простейшими являются программы, реализующие алгоритмы линейного вычислительного процесса. Программа в этом случае содержит операторы ввода данных, присваивания и вывода данных. Операторы записываются последовательно друг за другом в естественном порядке их следования и выполняются только один раз.
Пример
Л1.
Вычислить:
где x = a∙t2 + 0.2 , a = 18, t – произвольное.
Графическая схема алгоритма решения этой задачи представлена на рис. 8. Программа имеет следующий вид:
Option Explicit 'Запрет использования необъявленных переменных
Sub Лин_процесс1() 'Начало процедуры
Rem Раздел описания констант
Const a = 18
Rem
Раздел
описания
переменных
Dim x As Single, t As Single
Dim y As Single
Rem Тело программы или раздел операторов
t = Val(InputBox("Введите t"))
x = a * t ^2 + 0.2
y = (x ^ 2 + Log(x) – (x + 1) ^ 2) / (x * Sin(x))
MsgBox "Результат y=" & y
End Sub
Ниже приведен программный код того же примера с использованием других способов ввода и вывода данных.
5. Разветвляющиеся вычислительные процессы
5.1. Алгоритм разветвляющегося процесса
Большинство задач невозможно реализовать только с помощью линейной структуры, поскольку они обычно содержат различные условия, в зависимости от выполнения которых выбирается то или иное направление решения.
Пример
У1. Необходимо вычислить значение
функции
при любых значениях a
и
b.
На первый взгляд решение этой задачи
можно описать алгоритмом линейной
структуры, но при a·b
= 0 задача не может быть решена, так как
деление на ноль невозможно. Для
корректного решения задачи необходимо
предусмотреть вывод сообщения, если
вычисление y
невозможно. Тогда вычислительный
процесс можно описать следующим образом:
вычислить y, если a·b ≠ 0
в
ывести
сообщение, если a·b
= 0
В
ГСА (рис. 9) решения этой задачи используется
блок «Решение» (проверка условия),
имеющий один вход и два выхода в
зависимости от результата проверки
выполнения условия – «да» и «нет».
В примере это блок 3, в котором проверяется условие a·b <> 0. В зависимости от результата проверки условия возможны два пути продолжения решения задачи. Каждый из этих путей называется ветвью, а алгоритм – разветвляющимся. Как и во всех разветвляющихся алгоритмах, в данной задаче нарушается естественный порядок следования блоков. Так, за блоком 3 могут выполняться блоки 4 и 5, образуя ветвь 1, а может и блок 6, образуя ветвь 2.
Любое изменение естественной (линейной) последовательности выполнения блоков называется переходом. Переходы бывают двух видов: условные и безусловные. Условный переход реализуется с помощью условного оператора If, который имеет блочный и однострочный формат записи, безусловный переход реализуется с помощью оператора GoTo.
