- •Одесская национальная академия пищевых технологий
- •Программа дисциплины
- •Глава 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. Обозначения блоков в схемах алгоритмов
- •Литература
- •Содержание
Глава 8. Пользовательские процедуры типа Sub и Function в vba
8.1. Подпрограммы
Под процедурой мы понимаем последовательность операций, которую нужно многократно повторять в различных местах приложения. При этом требуемый блок команд записывается в программе только один раз, после чего к нему можно обращаться из любой части программы. С таким блоком мы уже знакомы – это процедура типа Sub обработки события командной кнопки.
Private Sub commandButton_click ()
End Sub
Для выполнения определенных задач разработчиком создаются пользовательские процедуры типа Sub (подпрограммы). Подпрограммы выполняются при помощи специальных операторов обращения к ним. Операторы обращения располагаются в вызывающих процедурах. Структурно это выглядит так:
Подпрограмма
Вызов подпрограммы
Вызывающая
процедура Возврат
После работы подпрограммы осуществляется возврат в основную программу, откуда произошел вызов. Вызывающую процедуру и подпрограмму для учебных целей будем называть программной единицей.
8.2. Процедура типа Sub
Синтаксис процедуры типа Sub
[ Public | Private] [Static] Sub имя [(параметры)]
[операторы внутри процедуры]
End Sub
Public - процедура доступна для всех других процедур модулей проекта. По умолчанию процедура Sub объявлена типа Public.
Private процедура доступна для других процедур только того модуля, в котором она описана.
Static - локальные переменные процедуры сохраняются в промежутках времени между вызовами этой процедуры.
Sub - название процедуры.
имя - имя процедуры Sub устанавливается пользователем и подчиняется правилам образования имен переменных.
параметры – в простейшем случае это имена переменных, значения которых необходимо обрабатывать в процедуре SUB. Их условно можно подразделить на входные и выходные формальные параметры. Например, для заголовка процедуры: Private Sub max (ByVal N, ByVal M, R)
входные параметры N, M будем считать исходными для работы подпрограммы. Выходной параметр R служит для передачи результатов работы подпрограммы при возврате в вызывающую процедуру. По умолчанию все формальные параметры после работы подпрограммы возвращаются на место фактических в вызывающую процедуру. Такой возврат отменятся, если перед формальными параметрами введено ключевое слово ByVal. Формальные параметры могут быть описаны.
Вызов подпрограммы процедуры Sub
1 способ. Вызов выполняется отдельным оператором Call:
Call имя подпрограммы (фактические параметры).
Например:
Call max (a, b, r1)
Фактические параметры также условно делятся на входные и выходные. Например, a, b - входные фактические параметры передаются на место входных формальных параметров N, M . Выходной фактический параметр r1 принимает значения выходного формального параметра R
Sub max(ByVal N, ByVal M, R )
Call max (a, b, r1)
В данном случае говорят, что передача фактических параметров а, b на место формальных N,M происходит по Значению.
Так как при параметре R отсутствует ByVal , то r1 и R имеют одну и ту же ячейку памяти и значение R, как бы передается на место r1 ( в таком случае говорят, что передача параметра происходит по Ссылке).
По умолчанию формальные и фактические параметры должны быть согласованы по количеству, порядку следования и типу. Фактические параметры описываются в вызывающей процедуре.