
информатика / Информатика_2 семестр / 2-VBA / VBA-Учебные материалы / VBA-2 Ввод-вывод,лин_процессы
.docОПЕРАТОРЫ ВВОДА И ВЫВОДА ДАННЫХ.
ЛИНЕЙНЫЕ ВЫЧИСЛИТЕЛЬНЫЕ ПРОЦЕССЫ
ОПЕРАТОР ПРИСВАИВАНИЯ LET
Оператор присваивания служит для вычисления значения выражения и присваивания этого значения переменной. При записи программы оператор Let можно опускать.
Формат оператора:
[Let] Имя_переменной = Выражение
Примеры:
A=2.1
SUMMA=X+COS(X)^2
Следует различать оператор присваивания и алгебраическое равенство. Оператор Y = A + B означает для ЭВМ: сложить содержимое ячеек памяти, отведенных для размещения значений переменных А и В, и поместить результат в ячейку памяти, отведенную для значения переменной Y. В программировании широко используется конструкция оператора присваивания типа I = I + 1. К заданному значению переменной I прибавляется 1, и результат помещается в ту же ячейку, заменив бывшую там информацию на новую. С точки зрения математики равенство i=i+1 не имеет смысла.
При присвоении переменным строковых значений их необходимо заключать в кавычки:
T = «Параметр 1»,
а значения типа Дата/Время заключать в символы # («решетка»):
D = #11/29/2008#
ОПЕРАТОРЫ ВВОДА ДАННЫХ
Рассмотрим три основных способа ввода данных.
1. Запись значений переменных непосредственно в тексте программы осуществляется с помощью оператора присваивания.
Имя_переменной = Выражение
Примеры:
A = 3
TOK = 480
Этот способ используется, если исходные данные не изменяются при нескольких исполнениях программы.
2. Ввод данных из ячеек рабочего листа Excel.
Для этого используется инструкция Сells(i, j), которая в данном случае выступает как функция ввода данных. Формат использования:
Имя_переменной = Сells(i, j),
где i, j – порядковые номера соответственно строки и столбца (числовые значения!), на пересечении которых находится ячейка, т. е. адрес ячейки.
При этом следует иметь в виду, что данные на листе Excel уже имеются.
Пример: А = Сells(1, 2)
После выполнения этой команды переменной А присвоится значение, которое хранится в ячейке, находящейся в первой строке (первая цифра) и во втором столбце (вторая цифра), т. е. в ячейке B1 электронной таблицы.
3. Ввод данных непосредственно в ходе выполнения программы, т. е. в диалоговом режиме, выполняется с помощью диалогового окна ввода информации, реализуемого функцией InputBox. Основной формат этой функции:
Имя_переменной = InputBox(“Сообщение” [, “Заголовок”] [, “Значение”]).
В ходе работы программы при выполнении данной команды на экране монитора появляется диалоговое окно с указанным Заголовком, содержащее текст Сообщения, а также поле ввода с указанным Значением:
Выполнение программы приостанавливается в ожидании ввода данных с клавиатуры и нажатия одной из кнопок. После ввода информации и нажатия на кнопку ОК переменной присваивается значение типа String (строковый тип данных), содержащее текст, введенный в поле ввода.
Пример: x = InputBox(“Введите x”, “Ввод исходных данных”, “0.15”)
Имя окна можно опустить (при этом местоположение запятых сохраняется):
x = InputBox("Введите x", , "0.15")
Функция InputBox используется, когда исходные данные меняются при каждом запуске программы, поэтому обычно значение переменной не задается и применяется простейший вариант записи этой функции:
Имя_переменной = InputBox(“Сообщение”)
Пример: d = InputBox(“Введите значение диаметра”)
Если в поле ввода в появившемся диалоговом окне ввести 23, то в переменную d будет записан текст “23”, а не число 23. Текстовая строка “23” представляет собой лишь визуальное отображение числа, но не является числом в буквальном смысле слова, т. е. с ним, как и с любым другим текстом, нельзя производить никаких арифметических действий.
Для преобразования строкового типа данных в числовой тип используется функция Val(Строка), которая возвращает число, содержащееся в Строке, как числовое значение соответствующего типа.
При записи в коде программы
d = Val(InputBox(“Введите значение диаметра”))
и вводе в поле ввода цифр 23 переменной d присвоится число 23.
ОПЕРАТОРЫ ВЫВОДА ДАННЫХ
Рассмотрим три основных способа вывода данных.
1. Вывод в диалоговое окно с помощью команды MsgBox:
MsgBox "Сообщение", , "Заголовок"
В
результате выполнения этой команды на
экране появляется диалоговое окно
Заголовок,
содержащее указанный текст Сообщения.
Выполнение программы приостанавливается
до нажатия пользователем кнопки ОК.
Пример: MsgBox y , , "Результат"
В данном случае в качестве выводимого в окно Результат сообщения задано текущее значение переменной y:
Простейший формат записи оператора MsgBox:
MsgBox "Сообщение"
Обычно сообщение включает в себя не только выводимое значение, но и комментарий, который заключается в кавычки. Для слияния нескольких фрагментов в одну строку в операторе вывода их разделяют знаком &.
Пример: MsgBox “Значение диаметра =” & d
В результате на экране появится следующее диалоговое окно:
2. Вывод данных на лист рабочей книги Excel с использованием инструкции Сells(i, j). В этом случае в отличие от ранее рассмотренного она выступает как команда вывода:
Cells(i, j) = "Сообщение".
В результате этой команды указанное Сообщение помещается в ячейку с адресом, определяемым номером строки i и номером столбца j.
Примеры:
Cells(1, 1) = “x=” ‘Вывод в ячейку A1 текста x=
Cells(1, 2) = x ‘Вывод в ячейку B1 текущего значения переменной x
3. Вывод данных в окно отладки Immediate («Немедленно»). Это окно обычно располагается под окном программного кода. Если этого окна нет, то его можно вывести, нажав Ctrl+G или из главного меню VBA View → Immediate Window.
Для вывода в окно отладки применяется метод Print (печать) объекта Debug (отладчик). Формат записи:
Debug.Print ["Сообщение"]
Пример: Debug.Print “Значение диаметра =” & d
Как видно из этого примера, команда Debug.Print используется аналогично команде MsgBox.
Пустой (т. е. без Сообщения) метод Debug.Print выводит пустую строку.
Помимо знака & в методе Print возможно использование разделителей списка выводимых данных. При этом знак «;» означает вывод очередного значения непосредственно за предыдущим, знак «,» – переход к началу новой зоны печати (окно отладки делится на 5 вертикальных зон по 14 символов каждая). При вводе знак «;» между элементами выводного списка можно опускать, VBA добавит его автоматически.
Запятая или точка с запятой в конце выводного списка в команде Debug.Print подавляет переход на новую строку (следующий Debug.Print начнет печать в той же строке).
Пример: Debug.Print "Результат y="; y;
В любом операторе вывода (MsgBox, Cells, Debug.Print) возможен вывод не только готовых результатов, но и одновременный расчет и вывод:
Примеры:
Debug.Print "s = "; s, " k1+k2 = "; k1 + k2
MsgBox "Если диаметр = " & d & ", то радиус = " & d / 2
Для вывода числового значения в заданном формате в операторах вывода MsgBox, Debug.Print вместо имени переменной следует использовать функцию Format с указанием количества десятичных знаков.
Примеры:
Debug.Print z ‘вывод переменной z обычным образом
Debug.Print Format(z, "#0.00") ‘вывод переменной z с 2-мя десятичными знаками
MsgBox Format(z, "#0.000") ‘вывод переменной z с 3-мя десятичными знаками
В операторе вывода Cells функцию Format использовать не рекомендуется.
ЛИНЕЙНЫЕ ВЫЧИСЛИТЕЛЬНЫЕ ПРОЦЕССЫ
Простейшими являются программы, реализующие алгоритмы линейного вычислительного процесса. Программа в этом случае содержит операторы ввода данных, присваивания и вывода данных. Операторы записываются последовательно друг за другом в естественном порядке их следования и выполняются только один раз.
Общая структура линейной программы:
Option Explicit ‘Запрет использования необъявленных переменных
Sub Имя_процедуры()
‘Объявление констант (Const …)
‘Объявление переменных (Dim …)
‘Тело процедуры:
‘Ввод исходных данных
‘Вычисления
‘Вывод результатов
End Sub
Пример_Л1. Составить ГСА и текст программы для вычисления функции:
где x
= a∙t2
+ 0.2 , a
= 18, t
– произвольное.
ГСА Текст программы:
Option
Explicit
‘Запрет
использования необъявленных переменных
Sub Лин_процесс1() ‘Начало процедуры Лин_процесс1
Const a = 18 ‘Объявление константы a
Dim t As Single ‘Объявление вещественной переменной t
Dim x As Single ‘Объявление вещественной переменной x
Dim y As Single ‘Объявление вещественной переменной y
t = Val(InputBox("Введите t")) ‘Ввод значения t
x = a * t ^2 + 0.2 ‘Расчет x
y = (x ^ 2 + Log(x) - (x + 1) ^ 2) / (x * Sin(x)) ‘Расчет y
MsgBox "Результат y=" & y ‘Вывод y в диалоговое окно
End Sub ‘Конец процедуры
Ниже приведено решение того же примера с использованием других способов ввода и вывода данных.
стр.