Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Теоретические и практические вопросы дисциплины «Информатика». Учебное пособие
.pdf
91
?Обсуждение программы:
1-4
- записана начальнaя строка процедуры и шапка программы;
5
- для накопления положительных чисел одна из ячеек памяти
компьютера, например, sss обнуляется. Как правило, это
делают в обязательном порядке перед накоплением суммы.
6
- использованы функции InputBox и Val для ввода чисел с
клавиатуры. Информация, введенная в текстовое поле окна,
преобразуется в число и хранится в ячейке а.
7
- в ячейке sss накапливается сумма. Для накопления суммы
использован оператор Let.
8
- осуществляется вывод накопленной промежуточной суммы
в окно Windows. Обратите внимание на то, что сумма
выводится с подсказкой.
9
- оператор GoTo передает управление на метку m1, которая
находится в строке 6
Обсуждение программы:
После запуска процедуры на выполнение на листе Excel
появляется окно для ввода информации с подсказкой: «Введите
положительное число». Пользователь набирает положительное число
и нажимает на кнопку OK. Введенное в текстовое поле число, с
помощью функции Val преобразуется в число, складывается с
содержимым сумматора и полученная сумма снова записывается в
сумматор. Накопленная сумма выводится в окне, который имеет
заголовок «Вывод суммы». Сумма чисел выводится с подсказкой
"sss=". После начатия на кнопку OK, оператор Goto передает
управление в строку 6 и снова появляется окно ввода информации.
В результате создана з а м к н у т а я , бесконечно
выполняющаяся программа. Остановить работу такой программы
можно только с помощью клавиш Ctrl+Pause(Break) – а в а р и й н ая
о с та н о в к а п р о г р а м м ы .
Оператор GoTo считается устаревшим оператором.
Современные программы любой сложности можно составить без
использования этого оператора. Программирование без

92
использования оператора GoTo называется с т р у к т у р н ы м
п р о г р а м м и р о в а н и е м .
Организация ввода данных из ячеек листа Excel
Для ввода данных из ячеек листа Excel используется следующая
инструкция:
переменная =Worksheets("имя_листа").Range("ячейка").Value
где переменная – имя переменной, в которой будет храниться число,
предварительно записанное в ячейку Excel; имя листа – имя листа
Excel в ячейке которой записано числовое значение переменной;
ячейка – адрес или имя ячейки, где хранится числовое значение.
Нередко в задаче используется несколько переменных, которым
необходимо задать значения, записанные в клетках листа Excel.
Для сокращения повторяющихся записей часто используют оператор
With, который имеет следующую структуру:
With
Элемент1
Элемент2
… … …
End With
Например, для ввода трех переменных a, b, c с листа Задача_1
из ячеек с адресами A1, B1, C1 можно использовать следующую
инструкцию:
With Worksheets ("Задача_1")
a = .Range("A1").Value
b = .Range("B1").Value
c = .Range("C1").Value
End With
Аналогичную конструкцию можно использовать, если ячейкам
листа Excel присвоить имена. При присвоении имени необходимо
помнить, что имя должно начинаться с буквы, не совпадать с адресами
ячеек или с именем функции. Перед именем допускается ставить знак
подчеркивания или знак «\ ».
Например, для ввода трех переменных a, b, c с листа Задача_1
из ячеек с именами _A, _B, _C можно использовать следующую
инструкцию:

93
With Worksheets ("Задача_1")
a
arc
x
xx
Y
2
sin
)cos(
31,0
lg
2
3
25
Public Sub Omega ()
1
pi = 4 * Atn(1) ' Вычисление числа пи
2
a = Worksheets("Prog20"). Range("b9").Value
3
x = Worksheets("Prog20"). Range("b8").Value
4
' Вычисление выражения:
5
y = Abs((x ^ 5 - 0.31 * x ^ (2 / 3)) / (Cos(x) ^ 2))
6
p=pi/(2 * a):d = Atn(p/Sqr(1 - p ^ 2)): y=Log(y)/Log(10)+d
7
MsgBox "y="&y, , "Вывод значения"
8
End Sub
9
a = .Range("_A").Value
b = .Range("_B").Value
c = .Range("_C").Value
End With
Задача 20. Вычислить значение переменной y:
где x = 1,5; a = 3,2
Исходные данные ввести из клеток листа Microsoft Excel.
Шапку программы расположить на листе Microsoft Excel.
Реализация программы на VBA.
После загрузки Microsoft Excel переименуем Лист1 в лист
Prog20. Введем в ячейку b8 значение переменной x, в ячейку b9
значение переменной a. Создадим модуль и запишем процедуру Sub с
именем Omega. После ввода кода программы, процедура имеет
следующий вид:

94
Обсуждение программы:
Код программы записан в строки 2-8.
Во второй строке вычисляется значение константы π. В третьей
строке с помощью инструкции Worksheets вводится переменная а,
предварительная записанная в ячейку b9 листа Prog20. В четвертой
строке аналогичным образом вводится переменная х, предварительно
записанная в ячейку b8. В пятой строке записан оператор Rem с
подсказкой.
В шестой строке вычисляется модуль сложной функции.
В седьмой строке записано три оператора присваивания: первый
оператор вычисляет аргумент функции arcsin и записывает полученное
значение в ячейку р; второй оператор присваивания вычисляет
значение функции arcsin. Поскольку такая тригонометрическая
функция отсутствует на VBA, ее необходимо заменить простейшими
функциями, которые имеются на VBA (табл. 1); третий оператор
присваивания вычисляет десятичный логарифм и объединяет
вычисленные части выражения. Окончательный результат
записывается в ячейку y. В восьмой строке полученный результат
выводится на лист Excel в окно Windows.
Перед запуском программы необходимо в соответствующие
клетки таблицы Excel записать числовые значения х и а и
соответствующим образом оформить программу:

95
После запуска программы на выполнение, числа, введенные в
ячейки Excel B8 и B9, присваиваются соответствующим переменным x
и a VBA, затем вычисляется значение функции. Результат − число
3,6703 выводится в окне Windows.
3.6 Процедуры функции
Кроме процедур типа Sub существуют процедуры типа Function.
Формат процедуры-функции:
{Public/Private} Function имя_функции ( [список_аргументов] )
[имя_функции = выражение]
End Function
где имя функции – это имя процедуры функции. Имя_функции
задается по тем же правилам, что и имя переменной (идентификатора);
список_аргументов – список переменных, от которых зависит
функция. Список аргументов не является обязательным элементом и
его можно не писать, однако обязательным элементом являются
круглые скобки; выражение − это совокупность констант,
переменных, функций, соединенных знаками арифметических
действий.
Результат выражения обязательно присваивается имени
функции.
Пример процедуры типа Function:
Public Function Slon(x)
Slon = sin(x)
End Function
Для получения результатов вычисления с использованием
процедуры функции необходимо создать модуль, записать в него
процедуру тапа Sub и затем вызвать процедуру-функцию.
Задача 21. Вычислить площадь круга для значений радиуса 3, 13, 20.
Для вычисления площади круга использовать процедуру-функцию.
Реализация программы на VBA.
Процедура типа Sub:

96
Public Sub m1()
1
´ Программа для вычисления площади круга
2
´ Название файла программы: S_KRUG. xls
3
´ Разработчик программы–студ. гр.4901 Сидоров А.И.
4
´ Дата разработки программы− 8.09.01
5
´ Условные обозначения:
6
´R − радиус круга (м)
7
´S − площадь круга кв. м.
8
r = 2
9
y = Rf(r) ‘ вызов процедуры
10
MsgBox y
11
End Sub
12
Процедура типа Function:
Public Function Rf(r)
13
Rf = 3.14 * r ^ 2
14
End Function
15
Обсуждение программы:
Программа состоит из процедуры типа Sub (строки 1-12). Шапка
программы записана в строках 2-8. В cтроках 7-8 описаны единицы
физических величин, от которых зависит результат решения
поставленной задачи. В строке 9 задан радиус круга. В строке 10
происходит обращение к процедуре-функции с именем Rf, и
вычисленное в процедуре-функции значение функции присваивается
переменной y. В строке 11 осуществляется вывод результата в oкно
Windows.
Процедура типа Function состоит из трех строк:
В 13 строке объявлена процедура типа Function с именем Rf.
В 14 строке записано выражение для вычисления площади
круга. Результат выражения присваивается имени функции, т.е. Rf. В
15 строке записан конец процедуры Function.
При запуске основной процедуры формальный параметр (r)
принимает конкретное значение, управление передается в процедуру
Function, и полученный результат передается в основную программу.

97
3.7 Разветвляющиеся вычислительные процессы
Разветвляющиеся вычислительные процессы реализуются с
помощью оператора if, который может быть записан в двух формах:
линейной и блочной. Линейная форма оператора if имеет множество
недостатков и в данном учебном пособии не рассматривается.
Оператор If...Then ...Else
(If...Then ... Else − если...тогда... иначе)
Формат оператора (блочная форма):
If условное выражение_1 Then
[группа операторов_1 ]
Elseif условное выражение_2 Then
[группа операторов_2 ]
Elseif условное выражение_3 Then
[группа операторов_3 ]
..... ...... ...... .... …… …… …
Else
[ группа операторов_ N ]
End If
Назначение оператора: выполнение определенной группы
операторов в зависимости от значения условного выражения. Если
значение условного выражения_1 − True (Истина), выполняется
группа операторов_1, и затем передача управления происходит к
оператору, расположенному за ключевыми словами Еnd If. Если
значение условного выражения_1 False (Ложь), то проверяется
условное выражение_2. Если значение условного выражения_2 True,
выполняется группа операторов_2, и затем передача управления
происходит к оператору, расположенному за ключевыми словами Еnd
If. Если значение условного выражения_2 False, то проверяется
условное выражение_3 и т.д.
Если все проверяемые условные выражения имеют значения
False, то выполняется группа операторов_N, расположенная за словом
Else.
Следует помнить, что ключевое слово ElseIf в блочной форме
оператора пишется слитно. Число ElseIf зависит только от требований
программы.

98
Предполагается, что все условные выражения являются
0,
0,
2
xеслиx
xеслиx
y
Public Sub Analiz ()
1
x=Worksheets("Prog22").Range("B5").Value
2
If x<=0 Тhen
3
y = x^2
4
Else
5
y = Sqr(x)
6
Еnd If
7
Worksheets("Prog22").Range("B6").Value = y
8
End Sub
9
простыми, т.е. содержат только один знак отношения.
Задача 22. Вычислить значение переменной y, зависящей от
условий для х=25.
Программная реализация на VBA:
На листе с именем Prog22 записываем шапку программы.
Значение аргумента вводится в ячейку B5, вывод значения функции
будем осуществлять в ячейку B6:
Создадим процедуру типа Sub и запишем в нее код программы:
Обсуждение программы.
После запуска процедуры на выполнение она начинает
выполняться. Первая и девятая строка созданы автоматически. Во
второй строке значение заданной переменной х, введенное в ячейку B5
листа "Prog22", присваивается переменной х.

99
В строке 3 значение х сравнивается с нулем. Если число х
Not
(НЕ) операция л о г ич е с к о г о о т р и ц а н и я (инверсии)
аргумента. Изменяет значение аргумента на
противоположное.
And
(И) операция логического умножения двух аргументов.
Результат операции True, если оба аргумента истинны, и
False во всех остальных случаях;
Or
(ИЛИ) операция логического сложения двух аргументов.
Результат операции False, если оба аргумента ложны, и True
во всех остальных случаях.
A
B
Not A
Not B
A And B
A Or B
T
1
T
1
F
0
F
0
T
1
T
1
T
1
F
0
F
0
T
1
F
0
T
1
F
0
T
1
T
1
F
0
F
0
T
1
F
0
F
0
T
1
T
1
F
0
F
0
отрицательное или равно нулю, то выполняется строка 4, а затем
управление передается в строку 8. Если число х положительное, то
выполняется строка 6, а затем управление передается в строку 8.
В строке 8 вычисленное значение y выводится в ячейку B6
листа "Prog22".
Для решения задач со сложными условиями необходимо
познакомится с логическими функциями Not, And, Or (табл. 2).
Таблица 2. Основные логические операции
В табл. 3 приведены значения условных выражений А и В и
результаты, полученные с использованием логических операций.
Таблица 3. Результаты выполнения логических операций
(Т
− True; F0 − False)
1

100
Задача 23. Составить замкнутую программу для вычисления тангенса
Public Sub tangens()
1
′ Программа для вычисления тангенса
2
′ Программист − студент гр. 6123-41 Петрова Р.А.
3
′ Дата разработки программы − 21.10.13
4
′ Имя файла программы Log_3.xls
5
Const pi=3.14159
6
m1: u=Val(InputBox(″Значение угла в градусах″, ″Окно
ввода″))
7
If Not(u = 90) Then
8
y = Tan(u*pi/180) : MsgBox y,,″Окно вывода″
9
Else
10
MsgBox ″Неверный ввод. Повторите ввод″,,″Окно вывода″
11
End If
12
Goto m1
13
End Sub
14
любого угла, заданного из интервала [0;900], исключив вычисления
для угла 90
0
.
Программная реализация на VBA.
Обсуждение программы.
Строки 1 и 14 начало и конец процедуры. Строки 1-5 − шапка
программы. В строке 6 вычисляется значение поименованной
константы π. Инструкция в строке 7 создает окно Windows,
приостанавливает вычисления и позволяет ввести угол в градусах.
Значение угла присваивается переменной u. В строке 8 записана первая
строчка оператора If и использована логическая функция Not. В строке
9 вычисляется значение тангенса заданного угла, который
предварительно пересчитывается в радианную форму. С помощью
инструкции MsgBox выводится значение сложной функции. В строке 10
и 12 записаны ключевые слова оператора If. В строке 11 инструкцией
MsgBox выводится сообщение «Неверный ввод. Повторите ввод». В
строке 13 записан оператор безусловного перехода, который передает
управление на строку с меткой m1, т.е. в строку 7.
Работа программы.
После запуска процедуры появляется окно Windows, в которое
вводится значение угла (в градусах), например 450. В строке 8 условие
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
