Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Теоретические и практические вопросы дисциплины «Информатика». Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
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 условие
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]