- •Одесская национальная академия пищевых технологий
- •Программа дисциплины
- •Глава 1. Алгоритмизация вычислительных процессов Этапы решения инженерных задач на пк
- •1.1. Алгоритм и его свойства
- •Типы алгоритмических структур
- •1.2. Линейные и разветвляющиеся алгоритмы
- •1.3. Простые циклические алгоритмы
- •1.4. Циклические алгоритмы обработки массивов
- •Двумерные массивы
- •А) ввод по строкам в) ввод по столбцам
- •Глава 2. Система программирования Visual Basic for Applications (vba)
- •2.1. Основные положения
- •2.2. Некоторые определения
- •Стандартный модуль (Module)
- •2.3. Запуск и элементы окна редактора vba
- •Глава 3. Пример создания проекта в vba и типы данных
- •3.1. Порядок действий на пк при создании проекта
- •3.2. Элементы языка vba
- •Данные в vba
- •3.3. Описание переменных
- •Глава 4. Выражения в vba и ввод – вывод данных
- •4.1. Выражения в vba
- •4.2. Операторы присваивания и способы ввода данных Оператор присваивания
- •Способы ввода данных
- •Для ввода
- •4.3. Способы вывода данных
- •Глава 5. Организация разветвляющихся программ
- •5.1. Операторы управления goto, if
- •Условный оператор управления if
- •5.3. Оператор выбора Select Case
- •Глава 6. Организация циклических программ в vba
- •6.1. Простые циклические программы с оператором if
- •6.2. Оператор цикла For ... Next
- •6.3. Операторы циклов типа Do (выполнить)
- •Использование операторов Do While и Do Until для организация цикла с защитой входа
- •Использование операторов Do While и Do Until для организация цикла с свободным входом в цикл (с послеусловием) Организация цикла с проверкой условия в конце цикла
- •Глава 7. Массивы данных в vbа
- •7.2. Примеры обработки одномерных массивов
- •Сортировка числовых одномерных массивов
- •Алгоритм сортировки одномерного массива по возрастанию
- •7.3. Двумерный массив
- •Программа
- •Глава 8. Пользовательские процедуры типа Sub и Function в vba
- •8.1. Подпрограммы
- •Вызов подпрограммы процедуры Sub
- •2 Способ.
- •8.3. Подпрограмма - процедура Function
- •Вызов подпрограммы - процедуры Function
- •Глава 9. Решение оптимизационных задач
- •9.1. Обработка электронных таблиц в среде vba
- •9.2. Применение процедуры Поиск решения для решения линейных оптимизационных задач
- •9. 3. Подготовка эт
- •Линейные, разветвляющиеся и циклические алгоритмы
- •Оформление протокола лабораторной работы
- •Контрольные вопросы
- •Алгоритмы обработки одномерных и двумерных массивов
- •Оформление протокола лабораторной работы
- •Задание №1. Создать простейший проект ″Приветствие″ в vba:
- •1. Разработка интерфейса пользователя.
- •Оформление протокола лабораторной работы
- •Контрольные вопросы
- •Линейные программы в vba
- •Пример составления программы для нулевого варианта задания
- •Private Sub CommandButton1_Click() ′ Заголовок процедуры отклика
- •Разработка проектов в vba по разветвляющимся программам
- •Оформление протокола лабораторной работы
- •Контрольные вопросы
- •Циклические программы в vba
- •End Sub ‘ Конец процедуры отклика
- •End Sub ‘ Конец процедуры отклика
- •Оформление протокола лабораторной работы
- •Контрольные вопросы
- •Обработка одномерных массивов в vbа
- •Порядок выполнения задания №1.
- •Пример выполнения лабораторной работы
- •3. Интерфейс на рис. Л7.1. Вывод результата решения по условию нулевого варианта не в окно TextBox1, а в окно отладки Immediate Window.
- •4. Процедура отклика кнопки 1:
- •Результат решения в окне отладки Immediate Window (рис. Л7.3).
- •Оформление протокола лабораторной работы
- •Контрольные вопросы
- •Дайте определение одномерного массива.
- •Обработка двумерных массивов в vbа
- •Порядок выполнения задания №1.
- •Пример выполнения лабораторной работы
- •Оформление протокола лабораторной работы
- •Программная единица
- •Оформление протокола лабораторной работы
- •Контрольные вопросы
- •Обработка эт в среде vbа
- •Оформление протокола лабораторной работы
- •Приложение 1. Обозначения блоков в схемах алгоритмов
- •Литература
- •Содержание
Порядок выполнения задания №1.
Использовать алгоритм лаб. работы №2.
Интерфейс пользователя аналогичен лаб. 7 (рис. Л8.1).
Ввод элементов массива с помощью функции InputBox.
Способ вывода результатов представлен в табл. Л8.1.
Составить программу решения и решить ее на ПК.
Пример выполнения лабораторной работы
Дан двумерный массив A= a(i,j); i =1,2,3, j=1,2,3.
Составить проект для определения суммы элементов главной диагонали. При разработке проекта принимаем:
Ввод данных выполняем с помощью функции InputBox;
Вывод результатов вычислений производим в окно TextBox1;
Алгоритм см. глава 1, рис. 1.14.
2. Таблица свойств объектов
Объект) |
Свойство |
Значение свойства |
Форма 1 |
Caption |
Обработка двумерного массива |
CommandButton1 |
Caption |
Запуск программы |
CommandButton2 |
Caption |
Закрыть проект |
TextBox1 |
Text |
|
Label1 |
Caption |
Результат решения |
Процедура отклика кнопки 1
Private Sub CommandButton1_Click()
Dim a(1 To 3, 1 To 3), s As Single, i, j As Integer
For i = 1 To 3 ' Организация цикла для ввода массива по строкам
For j = 1 To 3
a(i, j) = Val (InputBox(" Введите a(" & i & " , " & j & ")" & "элемент массива "))
Next j ' Конец области действия внутреннего цикла
Next i ' Конец области действия внешнего цикла
s = 0
For i = 1 To 3 ' Организация цикла для обработки массива по строкам
For j = 1 To 3
If i = j Then s = s + a(i, j) ' Выделение элементов главной диагонали
Next j ' Конец области действия внутреннего цикла
Next i ' Конец области действия внешнего цикла
TextBox1.text= s
End Sub
Private Sub CommandButton2_Click()
End
E
Рис.
Л8.1. Результат решения
При вводе по строкам матрицы
1 2 3
1 2 3
1 2 3
Получаем результат
Оформление протокола лабораторной работы
Отчет оформить на рабочем листе 1.
В заголовке лабораторной работы записать ее номер и цель проведения.
Записать условия индивидуальных заданий и порядок выполнения.
На листе 1 записать результаты решения.
Записать проект в личную папку под именем Лаб. 8.
Подготовиться для ответа на контрольные вопросы при защите лабораторной работы.
Контрольные вопросы
Дайте определение двумерного массива.
Как записать имя элемента двумерного массива в VBA?
Объясните смысл описания двумерного массива.
Приведите общую структуру обработки двумерного массива.
Какова структура обработки элементов массива по столбцам?
Какова структура обработки элементов массива по строкам ?
Как ввести элементы двумерного массива?
Как вывести элементы двумерного массива?
Как обрабатывать нечетные строки двумерного массива?
Как обрабатывать четные строки двумерного массива?
Приведите общую структуру обработки двумерного массива.
Л а б о р а т о р н а я р а б о т а № 9
Пользовательские процедуры в VBA
Цель работы: создание проектов на VBА с использованием пользовательских процедур (подпрограмм) Function и Sub. При подготовке к работе изучить теоретический материал (с.34 – 36 ).
Задание №1. Создать проект с использованием пользовательских процедур. Данные для выполнения приведены в табл. Л9.1. В колонке Тип применяются обозначения: F - применение процедуры Function, S - применение процедуры Sub. Параметрам, указанным в задании значения присвоить самостоятельно.
Таблица Л9.1 — Варианты для задания №1
№ вар. |
Вычислить |
Вычисление в подпрограмме |
Тип п/п |
0 |
|
Значение суммы Значение произведения |
F S |
1 |
х=(к! + m!)/L! k, m, L - целые переменные |
факториала |
F S |
2 |
х=(к! + m!)/(r! + z!) k, m, r, z - целые переменные |
факториала |
F S |
3 |
где xi -элементы массива |
значения суммы |
F S |
4 |
yi - элементы массива |
значения суммы |
F S |
5 |
; b,d - вещественные переменные |
|
F S |
6 |
; b,d,c- вещественные переменные |
|
F S |
7 |
а=к!/m!; b=a/n! k,m,n -целые переменные |
факториала |
F S |
8 |
а=к!/r!; b=n! k,r,n -целые переменные |
факториала |
F S |
9 |
а,b,c - вещественные перемен. |
максимум |
F S |
10 |
а,b,c - вещественные перемен. |
минимум |
F S |
11 |
z=p(1) + p(t) + p(s) - p(t-s) a,b,c,t,s - вещественные переменные |
p(x)= ax2 + bx + c |
F S |
12 |
к=p(1) + p(t) + p2(s) t,s - вещественные переменные |
p(x)= 2x2 + x |
F S |
13 |
u= max(f(1-2s), f(s-t)) + f(3c) s,t,c - вещественные переменные |
|
F S |
14 |
u=min(f(1- s), f(s-t)) + f(c) s,t,c - вещественные переменные |
|
F S |
15 |
x,y,z - вещественные переменные |
минимум |
F S |
16 |
x,y,z - вещественные переменные |
максимум |
F S |
17 |
xi, yj - элементы одномерных массивов |
значение суммы |
F S |
18 |
xi, yj - элементы одномерных массивов |
значение произведения |
F S |
19 |
s,t - вещественные переменные |
|
F S |
20 |
s,t - вещественные переменные |
|
F S |
21 |
x=(2k!+m!)/(L!-n!) k, m, L, n - целые переменные |
факториал |
F S |
22 |
x=(k!+3m!)/(2L!) k, m, L - целые переменные |
факториал |
F S |
23 |
a=min(x + y + z, x·y·z) + min(x, y·z); b=a/min(x·y, x·z); x,y,z- вещественные переменные |
минимум |
F S |
24 |
a=max(x+y, x·y·z) + max(x, y·z); b=a/max(x·y, x·z); x,y,z- вещественные переменные |
максимум |
F S |
25 |
xi, yk - элементы одномерных массивов |
вычисление суммы |
F S |
26 |
xi, yk - элементы одномерных массивов |
вычисление суммы вычисл. произведения |
F S |
27 |
xi, yk -элементы одномерных массивов |
вычисление произведения |
F S |
28 |
xi, yk -элементы одномерных массивов |
вычисление произведения |
F S |
29 |
t, b - вещественные переменные |
|
F S |
30 |
t, b - вещественные переменные |
|
F S |
Пример выполнения нулевого варианта. Условие задания. Составить программу вычисления
где xi , yi - элементы одномерных массивов вещественного типа. Вначале значение сумм вычислим в подпрограмме типа Function, а затем в подпрограмме типа Sub. Примем количество элементов массива Х( n=3), а массива У ( m=4). При разработке проекта принимаем:
1. Интерфейс пользователя (рис. Л9.1):
Ввод массивов выполняем в цикле с помощью функции InputBox;
Вывод результатов вычислений в подпрограмме типа Function производим в поле TextBox1, а типа Sub в поле TextBox2.
Рис.
Л9.1. Интерфейс пользователя
Рис.
Л9.2. Работа проекта
Таблица Л9.2 - Таблица свойств элементов
Объект |
Свойство |
Значение свойства |
Форма 1 |
Caption |
Обработка массивов Группа Фамилия |
CommandButton1 |
Caption |
Запуск проекта |
CommandButton2 |
Caption |
Закрыть проект |
Label1 |
Caption |
Результат п/п Function |
Label2 |
Caption |
Результат п/п Sub |
TextBox1 |
Text |
|
TextBox2 |
Text |
|
Составляем программную единицу, состоящую из основной программы и д
Рис. 9.3. Окно кода с подпрограммами
Function Sum1(x, n) As Single
где имя п/п - Sum1; x, n – формальные входные параметры;
Sub Sum2 (y, m, s) где имя п/п - Sum2; y,m – формальные входные параметры ; s – формальный выходной параметр.