Лабораторная работа № 8 создание проектов с использованием процедур и функций
Цель: приобрести умения и навыки использования процедур и функций в решении задач.
Задачи: овладеть приемами создания процедур и функций и способами обращения к ним. Получить навыки использования метода функциональной декомпозиции, когда сложная задача разбивается на более простые.
Общие сведения
При использовании процедур различают их описание и вызов. Описание процедуры это запись алгоритма, с помощью которого выполняется обработка данных. Указанные в описании действия выполняются только при вызове процедуры.
Описание процедуры общего назначения находится в секции общих описаний формы (General Declarations) или в стандартном модуле. Вызов размещается в том месте операторной части кода, где необходимо выполнить указанные в описании процедуры действия.
Если описание процедуры содержится в коде формы, то её можно вызвать только в коде этой же формы. Если же процедуру описать с ключевым словом Public в стандартном модуле, то вызвать её можно в коде любой формы или любом стандартном модуле приложения.
Стандартный модуль это файл с расширением .bas. в котором могут размещаться описания разных общих объектов, используемых в проекте (константы, переменные, типы данных, процедуры). Проект может иметь несколько стандартных модулей. В отличии от файла формы, они содержат только код. Каждый модуль представлен отдельным значком в окне проекта. Для перехода к коду нужного модуля достаточно дважды щелкнуть на его значке.
Чтобы создать модуль нужно:
Выбрать команду Add Module в меню Project или нажать стрелку правее от кнопки «Add Form» (вторая левее на стандартной панели инструментов) или из списка кнопок выбрать «Module».
В диалоговом окне Add Module во вкладке New выбрать значок «Module» и нажать на кнопку «Открыть».
В окно кода, которое появилось, можно внести описание общих объектов, в том числе и процедур. Описание процедуры имеет вид:
[Public 1 Private] [Static]
Sub Имя процедуры (Список формальных параметров)
<Операторы тела процедуры>
End Sub
В списке формальных параметров указываются те величины, от которых зависит описанный в операторной части процедуры процесс (входные параметры) и переменные, в которые заносятся результаты работы процедуры (выходные параметры). Иногда параметры могут совпадать - входные параметры могут быть и выходными.
Формальный параметр задается именем переменной, после которой может быть указан ёё тип. Один от другого параметры отделяются запятыми.
Среди операторов тела процедуры могут быть те, которые описывают константы, типы и переменные, использующиеся только в данной процедуре, память для них выделяется только во время выполнения процедуры. Здесь также может быть оператор Exit Sub, который заканчивает роботу процедуры.
Существует две формы оператора вызова процедуры:
С ключевым словом Call:
Call Имя процедуры [(Список фактических параметров)]
При помощи непосредственного указанием имени процедуры в виде:
Имя процедуры [Список фактических параметров]
Фактические и формальные параметры должны совпадать по типу и иметь тот же порядок следования. Имена их могут не совпадать. Фактические параметры в наиболее простом случае это имена переменных, которые описаны в той же процедуре, где содержится её вызов, или на высшем уровне с ключевым словом Public.
В случаях, когда результатом работы процедуры является одно значение, вызов процедуры можно объединить с использованием результата в каком-либо выражении, если оформить алгоритм в виде функции. Расхождение между описанием процедуры и функции содержится в заголовке, окончании и операторной части.
В заголовке и окончании вместо ключевого слова Sub нужно поставить Function, а после списка формальных параметров указать тип результата. В операторной части функции обязательно должен быть хотя бы один оператор присваивания, в левой части которого стоит имя функции. С помощью этого оператора возвращается результат работы функции.
Функция вызывается как операнд в виде указателя её имени и списка фактических параметров, которые берутся в скобки. (при наличии входных параметров). Если входных параметров нет, то указывается только имя функции.
Пример решения задачи.
Рассмотрим использование аппарата процедур и функций на примере решения задачи о начислении комиссионных.
В магазине работает 7 продавцов. Каждый месяц продавцам начисляют комиссионные по следующему правилу:
если продукции продано не меньше, чем на 10000 грив., то комиссионные составляют 2% от стоимости реализованной продукции;
если продукции продано меньше, чем на 10000 грив., то комиссионные составляют 1% от стоимости реализованной продукции;
если стаж работы в фирме не меньше 5 лет, то выплачивается доплата в размере 0.5% от стоимости реализованной продукции.
Получить максимальный размер комиссионных, выплаченных в предыдущем месяце.