- •Лабораторна робота № 1. Тема роботи: Побудова графіків функцій в Excel
- •1.1 Теоретичні відомості
- •1.2 Індивідуальні завдання
- •1.3 Контрольні питання
- •Лабораторна робота № 2. Тема роботи: Робота з об’ктами Excel
- •2.1 Об'єкти Excel, їхньої властивості і методи.
- •2.1.1 Об’єкт Range, його властивості та методи
- •2.1.2 Деякі властивості
- •2.1.3 Деякі методи
- •2.2 Приклад виконання лабораторної роботи.
- •2.3 Індивідуальні завдання
- •Лабораторна робота № 3. Тема роботи: Програмування лінійних процесів та розгалужень
- •3.1 Теоретичні відомості
- •If умова then
- •If умова then оператор
- •3.2 Індивідуальні завдання
- •Тема роботи: Оператори циклу
- •4.1.2 Оператори циклу з умовою.
- •4.2 Індивідуальні завдання
- •5.3 Контрольні питання
- •Лабораторна робота № 6. Тема роботи: Одновимірні масиви
- •6.1 Теоретичні відомості
- •6.2 Індивідуальні завдання
- •6.3 Контрольні запитання
- •Лабораторна робота № 7. Тема роботи: Матриці
- •7.1 Теоретичні відомості
- •7.2 Індивідуальні завдання
- •Тема роботи: Функції та процедури
- •Текст програми – функції
- •Текст процедури для виклику функції
- •8.1.2 Процедури користувача
- •8.2 Індивідуальні завдання
- •2) Задано n масивів цілих чисел довжини n. У кожному масиві знайти суми від’ємних та додатних чисел.
- •8.3 Контрольні запитання
- •Література
Тема роботи: Функції та процедури
Мета роботи: одержання практичних навичок програмування і розв’язання задач з використанням функцій та процедур
8.1Теоретичні відомості
8.1.1 Функції користувача
Синтаксис:
Function Ім’я_Функції (список аргументів) AS type
Інструкції
Ім’я_Функції = вираз
End Function
Якщо функція повинна бути доступна для всіх процедур з усіх модулів, то перед нею ставлять слово Public. Якщо поставити слово Private, то функція буде доступною тільки для процедур з того ж самого модуля, в якому функція визначена.
Список аргументів містить імена змінних із зазначенням типу, записані через кому. Ці аргументи називаються формальними параметрами. А type вказує на тип значення, яке набуває функція.
Обов'язковим у тілі функції є оператор, в якому імені функції присвоюється значення. Достроковий вихід із тіла функції здійснює оператор Exit Function.
Виклик функції здійснюється в операторі присвоювання, в правій частині якого записується ім'я функції та фактичні параметри.
Під час виклику функції фактичні параметри підставляються замість формальних, потім виконуються всі оператори тіла функції, і змінній присвоюється обчислене значення. Між формальними і фактичними параметрами встановлюється відповідність за номером в списку параметрів. Повинні виконуватися такі правила:
кількість фактичних параметрів повинна співпадати з кількістю формальних;
тип кожного фактичного параметра повинний збігатися з типом відповідного формального параметра;
фактичним параметром може бути змінна, константа або вираз відповідного типу.
Створена функція автоматично включається до списку функцій Excel у категорію «Определенные пользователем» і може викликатися з будь-якої клітини активної робочої книги. В цьому випадку параметрами можуть бути також і адреси клітин.
Задача 8.1. Написати функцію користувача для обчислення по заданій формулі та процедуру, яка її викликає.
Текст програми – функції
Function Z(x As Single) As Single
Z = (1.4 + 2*x) / (1 + (2.5 + x + x ^ 2) ^ (1/3 ))
End Function
Текст процедури для виклику функції
Sub main ( )
Dim x As Single , y As Single
x = InputBox("Введіть значення Х")
y = Z(x) ‘ Виклик функції
Worksheets("Лист1") . Cells(2, 1) . Value = x
Worksheets("Лист1") . Cells(2, 2) .Value = y
End Sub
8.1.2 Процедури користувача
Синтаксис:
Sub Ім’я_Процедури (список аргументів)
Інструкції
End Sub
Перед процедурою також можна ставити одне зі слів Public або Private в залежності від того, буде процедура доступна для всіх процедур з усіх модулів, або тільки для процедур того ж самого модуля.
Процедури користувача з параметрами дозволяють, на відміну від функцій, обчислювати не одне, а декілька значень. Процедури з параметрами повинні викликатися тільки з інших процедур або функцій, на відміну від процедур без параметрів. Всі методи об'єктів VBA реалізовані у вигляді процедур із параметрами.
Список аргументів крім імен змінних із зазначенням типу містить слова ByVal або ByRef, тобто має вигляд:
ByVal ім’яЗмінної As тип або
ByRef ім’яЗмінної As тип
ByVal – вказує, що аргумент передається за значенням. Це означає, що під час виклику процедури значення фактичного параметра записується на місце формального, і потім використовується в обчисленнях. Будь-які зміни формального параметра, оголошеного за значенням, не спричинять змін фактичного параметра.
ByRef – вказує, що аргумент передається за посиланням (тобто за адресою). Опис ByRef використовується в VBA за замовчанням.
Передача параметра за посиланням означає, що під час виклику замість формального параметру записується адреса фактичного параметру. Це означає роботу з областю пам’яті, відведеної для фактичного параметра. Тому, усі зміни формального параметра спричинять за собою зміни фактичного параметра. Параметри, описані за допомогою ByRef, використовується для передачі обчислених значень із процедури в програму, яка її викликає.
Таким чином, параметри процедури поділяють на дві групи:
вхідні, які використовують для обчислень у процедурі, і передають звичайно за значенням;
вихідні, їхні значення обчислюють у процедурі, щоб передати в програму, яка викликає. Їх передають обов'язково за посиланням.
Виклик процедури здійснюється за допомогою її імені та списку фактичних параметрів, записаних в тому ж порядку, що і формальні (див. задачу 4.2). Якщо параметри завдаються явно, то їхній порядок значення не має.
Для виклику процедури може використовуватись й оператор CALL (список фактичних параметрів). Порядок параметрів важливий.
Задача 8.2 Знайти суму Max елементів масивів Х(n) та Y (n). Мах елементи масивів знайти за допомогою функції. Для введення елементів масива написати процедуру.
Інтерфейс задачі даний на рис. 8.2.
txtN
txM
cmdRes
cmdRes
txtRes
txtRes
Рисунок 8.1 – Форма для приклада 8.2
Код програми
Private Sub cmdRes_Click()
Dim x() As Single, y() As Single
Dim n As Integer, m As Integer
Dim Sum As Single
n = CInt(txtN.Text)
m = CInt(txtM.Text)
ReDim x(n), y(m)
MsgBox „вводим” & m & „-элементов массива X”
Vvod x, n ‘виклик процедури
MsgBox „вводим” & m & „-элементов массива Y”
Vvod y, m ‘виклик процедури
Sum = Max(x, n) + Max(y, m) ‘виклик функції
txtRes.Text = CStr(Sum)
End Sub
‘Процедура для введення елементів масиву
Private Sub Vvod(z()As Single, l As Integer)
Dim I As Integer
For I = 1 To l
Z(i) = CSng(InputBox(“введите” & i & “–й элемент”))
Next i
End Sub
‘Функція для знаходження максимального елементу масиву
Private Function Max(z() As Single, I As Integer) As Single
Dim a As Single, I As Integer
A = z(1)
For i = 2 To l
If z(i) > a Then a = z(i)
Next i
Max = a
End Function
Приклад 8.3
Створити матрицю A(n,3), стовпцями якої є вектори X(n), Y(n), Z(n), помножені на Min елементи відповідного вектора. Інтерфейс задачі даний на рис. 8.3
txtN
txtRes
Scrolbars=3
Multiline=True
cmdRes
Рисунок 8.3 – Форма для приклада 8.3
Код програми
Private Sub cmdRes_Click()
Dim x() As Single, y() As Single,z() As Single
Dim a() As Single, i As Integer, n As Integer
Dim MinX As Single,MinY As Single,MinZ As Single
Dim S As String
n = CInt(txtN.Text)
ReDim x(n), y(n), z(n), a(n,3)
S = “”
MsgBox “вводим” & n & “элементов массива Х”
Vvod x,n
MsgBox “вводим” & n & “элементов массива Y”
Vvod y,n
MsgBox “вводим” & n & “элементов массива Z”
Vvod z,n
MinX = Min(x,n) ’виклик функції
MinY = Min(y,n) ’виклик функції
MinZ = Min(z,n) ’виклик функції
For i = l To n
a(i,1) = x(i)*MinX:a(i,2) = y(i)*MinY
a(i,3) = z(i)*MinZ
S = S & a(i,1) & “ ” & a(i,3) & vbCrLf
Next i
txtRes.Text = S
End Sub
Private Function Min(a() As Single, p As Integer) As Single
Dim I As Integer
Min = a(1)
For i = 2 To p
If a(i) < Min Then Min = a(i)
Next i
End Function
Private Sub Vvod(z() As Single, p As Integer)
Dim i As Integer
For i = 1 To p
z(i) = CSng(InputBox(“введите” & i & “-й элемент”))
Next i
End Sub