Программирование алгоритмов линейной структуры 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Программирование алгоритмов линейной структуры



Тексты программ в VBA хранятся в мáкросах. Макрос на языке VBA должен содержать хотя бы одну подпрограмму, которая называется Главной. От всех остальных она отличается тем, что ей передается управление при вызове макроса.

Подпрограммы не могут быть вложенными. Подпрограм­ма начинается оператором заголовка, например:

Sub Задача()

Далее следуют строки, состоящие из операторов. Они составляют тело программы. В одной строке может находиться один или несколько операторов. Один оператор от другого отделяется знаком двоеточия. Один оператор может занимать несколько строк. В этом случае символом продолжения служит последовательность пробел-подчеркивание (_).

Последним оператором в подпрограмме должен быть оператор

End Sub

Оператор - это минимальная конструкция языка, задающая описание некоторого действия.

Оператор, c помощью которого с клавиатуры в режиме диалога присваивается значение переменной величине, называется оператором ввода.

В программе ввод начальных данных производится в диалоговое окно, которое вызываются при помощи стандартной функции VBA InputBox. Синтаксис оператора ввода:

Имя_Переменной = InputBox (“Текст подсказки”, “Заголовок окна”)

Как только в программе встречается оператор ввода, компьютер вызывает диалоговое окно и ждет, когда пользователь введет с клавиатуры соответствующее значение. После нажатия кнопки ОК или клавиши enter, переменная примет соответствующее значение. Выполнение программы продолжается с оператора следующего за оператором ввода. Например:

a = InputBox("Введите значение расстояния a", "Окно ввода")

Результатом вызова функции InputBox является значение, введённое в текстовое поле, которое присваивается переменной а (рис.22).

Рис. 22 Диалоговое окно ввода данных с помощью функции InputBox

Оператор вывода результатов Debug.Print [список_вывода] осуществляет вывод результатов работы программы в окно Immediate.

Вызов этого окна выполняется командой меню Вид /Прямое окно (View/Immediate).

Переменные из списка вывода могут отделяться друг от друга запятой или точкой с запятой, что влияет на форму печати. Если в качестве разделителя используется запятая, то печать позиционированная, при которой строка разбивается на зоны по 14 позиций в каждой зоне. При использовании в качестве разделителя выводного списка точки с запятой числа печатаются подряд через один пробел. Такая форма печати получила название - уплотненная печать.

Например:

Debug.Print A, B - если значение А=0.75, а В=-178, то на экране дисплея эти значения будут выведены в следующем виде: _0,75 _ _ _ _ _ _ _ _ _-178
Debug.Print A; B - если значение А=0.75, а В=-178, то на экране дисплея эти значения будут выведены в следующем виде: _0.75 _-178

Если оператор Debug.Print записан без списка переменных, то при печати будет пропускаться одна пустая строка.

В оператореDebug.Printможно использовать функцию TAB(n). Функция TAB используется как один из элементов в списке вывода оператора Debug.Print. Она обеспечивает вывод следующего за ней элемента в позицию n, номер которой задан как аргумент функции TAB (рис.23). Например:

Debug.Print "Sum="; Tab(15); Sum   - в 0-ую позицию выводится Sum=, а в 15-ую – число

Рис. 23 Результаты позиционированного вывода в окно Immediate

Если аргумент функции TAB меньше текущей позиции строки, то вывод результата осуществляется в следующей строке экрана.

Программа линейной структуры может содержать только операторы ввода, вывода и присваивания.

Оператор присваивания служит для присваивания переменной значения арифметического выражения и имеет вид:

Переменная = Выражение

При выполнении этого оператора вычисляется значение Выражения и присваивается Переменной, при этом тип выражения должен совпадать с типом переменной.Тип выражения определяется типом операндов, входящих в него, и зависит от операций, выполняемых над ними. Например,

X = (Y + Z) / (2 + Z * 10) - 1/3 - вещественный тип

G$=”Москва” - символьный тип

Для записи арифметических выражений используются знаки операций (сложение, умножение, вычитание, деление, возведение в степень), функции, круглые скобки.

Таблица 6 – Встроенные математические функции

Запись на VBA Математическая запись Описание
Abs(x) |x| Модуль
Atn(x) arctg x Арктангенс
Cos(x) cos x Косинус
Exp(x) ex Экспонента
Fix(x)   Отбрасывание дробной части
Int(x)   Наибольшее целое число, не превосходящее х
Sin (x) sin x Синус
Sqr(x)   Квадратный корень
Tan(x) tg x Тангенс
Sgn(x) В зависимости от знака числа возвращается 1, 0 или -1
Log(x) ln x Натуральный логарифм
Rnd(x)   Датчик случайных чисел, аргумент является необязательным. Функция Rnd используется только после инициализации VBA-генератора случайных чисел оператором Randomize
Round (x, n) Округление числа х с точностью до n десятичных знаков

При наличии в выражении нескольких арифметических операций порядок их выполнения определяется правилами приоритета:

1. вычисляются значения в скобках;

2. вычисляются значения функций;

3. возведение в степень;

4. выполняются операции умножения и деления;

5. выполняются операции сложения и вычитания.

Операции выполняются слева направо с учетом их приоритета. Желаемая последовательность операций обеспечивается путем расстановки скобок в соответствующих местах выражения.

В пунктах 2.2 и 2.6.1 были построены математические модели и блок-схемы алгоритмов линейной структуры. Рассмотрим примеры программ, где алгоритм решения является линейным.

Листинг 1. Вычисление расстояния до складских помещений

Sub Пример1()

Dim a, b, c, d, r As Single

a = InputBox("Введите значение расстояния a", "Окно ввода")

b = InputBox("Введите значение расстояния b", "Окно ввода")

c = InputBox("Введите значение расстояния c", "Окно ввода")

d = 2 * ((a * b) ^ 2 + (a * c) ^ 2 + (b * c) ^ 2) - a ^ 4 - b ^ 4 - c ^ 4

r = Round((a * b * c) / Sqr(d), 3)

Debug.Print "Расстояние до складских помещений = "; r; "км"

End Sub

Листинг 2. Вычисление суммы значений двух функций

Sub Пример2()

Dim a, b, c, x, t, p, y, z, s As Single

a = InputBox("Введите значение переменной a", "Окно ввода")

b = InputBox("Введите значение переменной b", "Окно ввода")

c = InputBox("Введите значение переменной c", "Окно ввода")

x = InputBox("Введите значение переменной x", "Окно ввода")

t = a + b

p = c * x

y = (t ^ 3 - Sin(p)) / (a - 3.75)

z = Log(p) - ((t + 3.75) / a) ^ (1 / 3)

s = Round(y + z, 3)

Debug.Print "s = "; s

End Sub

В рассмотренных примерах программа ведет диалог с пользователем, т.е. в ней предусматривается вывод пояснительных сообщений. В противном случае сам программист может через некоторое время забыть, что необходимо вводить и что является результатом.



Поделиться:


Последнее изменение этой страницы: 2017-02-07; просмотров: 113; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.235.154.65 (0.011 с.)