Назначение процедур и их виды


В грамматике обычного языка (украинского, русского, английского и т.д.) логически завершенную мысль оформляют в виде предложения. Предложения собираются в абзацы, а те, в свою очередь, в разделы и т.д. В языках программирования аналогично логически завершенную часть алгоритма представляют в виде процедуры. На основе более мелких процедур строятся более крупные и т.д. вплоть до построения всего приложения. Построение приложений на основе процедур позволяет реализовать в информатике системный подход в решении задач, когда большая задача, основанная на сложном алгоритме, разбивается на подзадачи, а те, в свою очередь - на более мелкие подзадачи и так до тех пор, пока решение каждой из мелких задач не станет абсолютно понятным.

Применение процедур имеет следующие достоинства:

1) улучшает удобство чтения программы;

2) упрощает возможность локального изменения программы при различных модификациях;

3) локализует распределение памяти под переменные, которые используются только в данной процедуре;

4) особенно эффективно применение процедур в тех случаях, когда одна и та же процедура используется в различных частях приложения;

5) позволяет использовать отлаженные процедуры в других приложениях, в том числе и в тех, которые создаются другими программистами.

В зависимости от назначения процедуры подразделяются на процедуры обработки событий и процедуры общего назначения.

При работе в визуальной среде действия по обработке информации вызываются теми или иными событиями (загрузка формы, щелчок на кнопке, изменение значения и т.п.). Эти события приводят в действие соответствующие процедуры обработки событий, в которых описан алгоритм обработки информации.

Часто такое описание бывает достаточно длинным. Для того, чтобы выделить отдельные этапы алгоритма используют процедуры общего назначения. Они непосредственно не связаны с каким-либо событием и создаются в соответствии с логикой выполнения операций обработки информации. Далее более подробно будут рассмотрены процедуры общего назначения.

Описание процедур

При использовании процедур различают их описание и вызов. Описание процедуры представляет собой запись алгоритма, по которому производится обработка данных, и само по себе никаких действий не выполняет. Указанные в описании действия производятся при вызове процедуры.

Описание процедуры общего назначения помещается в секции общих описаний формы (General Declarations) или в стандартном модуле. Вызов же располагается в том месте операторной части кода, где необходимо выполнить указанные в описании процедуры действия.

Если описание процедуры находится в коде формы, то ее можно вызвать только в коде этой же формы. Если же процедура описана с ключевым словом Public в стандартном модуле, то вызвать ее можно в коде любой формы или любом стандартном модуле приложения.

Стандартный модуль представляет собой файл с расширением .bas. В нем могут размещаться описания различных общих объектов, используемых в проекте (константы, переменные, типы данных, процедуры). В проекте может быть несколько стандартных модулей (также как и форм, но в отличие от файла формы они содержат только код). Каждый модуль представляется отдельным значком в окне проекта. Для перехода к коду нужного модуля достаточно дважды щелкнуть на его значке.

Чтобы создать модуль нужно:

1. Выбрать команду Add Module в меню Project или нажать стрелку справа от кнопки «Add Form» (вторая слева на стандартной панели инструментов) и из появившегося списка кнопок выбрать «Module».

2. В появившемся диалоговом окне «Add Module» во вкладке «New» выбрать значок «Module» и щелкнуть на кнопке «Открыть».

В появившееся окно кода можно вносить описание общих объектов, в том числе и процедур.

Имя модулю задается при сохранении проекта (например, если щелкнуть на кнопке «Сохранить» на панели инструментов).

Описание процедуры имеет следующий вид:

 

[Public l Private] [Static] Sub ИмяПроцедуры (СписокФормальныхПараметров)

ОператорыТелаПроцедуры

End Sub

Первая строка называется заголовком процедуры, а последняя – ее окончанием. Между заголовком и окончанием располагается тело процедуры. Оно состоит из операторов, которые указывают, какие действия должна выполнять процедура.

Ключевое слово Public означает, что процедуру можно вызвать в коде любой формы или модуля приложения, а Private – только в той форме или модуле, в котором она описана. По умолчанию подразумевается Public.

Если используется ключевое слово Static, то переменные, которые описаны внутри процедуры, будут сохранять свои значения между последовательными ее вызовами (например, если при каждом вызове процедуры накапливается сумма).

Если процедура не предназначена для обработки событий, то ее имя может быть каким угодно (обычно в имени указывается назначение процедуры, например, Налоги или Сортировка_данных).

В списке формальныхпараметров указываются те величины, от которых зависит описанный в операторной части процедуры процесс (входные параметры) и переменные, в которые помещаются результаты работы процедуры (выходные параметры). Иногда некоторые из них могут совпадать (входные параметры могут быть и выходными).

Формальный параметр представляется именем переменной, после которой может быть указан ее тип. Друг от друга параметры отделяются запятыми.

Пример заголовка процедуры:

 

Public Sub Поиск(sngMaxПотребность As Single, iMax As Integer)

 

Иногда используют процедуры без параметров. В этом случае после имени записывают открывающую и сразу же закрывающую скобки, например, Sub Приветствие( ).

Такие процедуры, как правило, каждый раз выполняют одни и те же действия вне зависимости от значений обрабатываемых данных.

Среди операторов тела процедуры могут находиться операторы, в которых описываются константы, типы и переменные, используемые только в данной процедуре и память под них выделяется только во время выполнения процедуры.

Здесь также может присутствовать оператор Exit Sub, действие которого заключается в завершении работы процедуры.

Главным же в теле процедуры является последовательность операторов, реализующих алгоритм, ради которого создавалась процедура.

Для начала ввода описания процедуры необходимо установить курсор в том месте кода, где оно будет располагаться, и ввести с клавиатуры ключевое слово Sub, имя процедуры и список формальных параметров. После этого автоматически появляется строка окончания процедуры End Sub. Остается только ввести текст тела процедуры.

Вместо ввода заголовка процедуры можно воспользоваться командой ToolsAdd Procedure, которая вызывает диалоговое окно «Add Procedure». В нем достаточно ввести имя процедуры в поле Name и щелкнуть на кнопке «ОК», чтобы в коде появился заголовок процедуры без параметров и ее окончания.

Вызов процедуры

Представленные в описании процедуры действия выполняются при вызове процедуры. Имеется две основные формы оператора вызова процедуры:

1) с ключевым словом Call в виде:

 

Call ИмяПроцедуры [(СписокФактическихПараметров)]

 

2) непосредственным указанием имени процедуры в виде:

 

ИмяПроцедуры [СписокФактическихПараметров]

 

При этом имя процедуры указывается в обоих случаях. За ним следует список фактических параметров, если при описании процедуры были указаны формальные. Но в первом случае список фактических параметров заключается в круглые скобки, а во втором – они отсутствуют.

Фактические параметры должны совпадать по типу с формальными и следовать в том же порядке. По имени они могут не совпадать. Фактические параметры в простейшем случае представляют собой имена переменных, которые описаны либо в той процедуре, где встречается вызов процедуры, либо на более высоком уровне с ключевым словом Public.

Перед вызовом процедуры переменным, которые соответствуют входным фактическим параметрам, присваиваются нужные значения. При вызове процедуры выполняются указанные в описании процедуры действия со значениями, которые заданы во входных параметрах. Результаты же записываются в переменные, которые указаны как выходные фактические параметры.

Механизм работы процедуры рассмотрим на примере расчета прибыли на единицу продаваемого товара, которая вычисляется как разность между ценой и себестоимостью. Код программы приведен ниже.

 

Private Sub cmdВычислить_Click()

Dim curЦена As Currency, _

curСебестоимость As Currency, _

curПрибыль As Currency

curЦена = 25

curСебестоимость = 20

Разность curЦена, curСебестоимость, curПрибыль

txtПрибыль = Format(curПрибыль, "0.00 грн.")

End Sub

Sub Разность(curA As Currency, curB As Currency, curC As Currency)


curC = curA - curB

 


End Sub

 

При щелчке на кнопке «Вычислить» будет выполняться процедура cmdВычислить_Click, которая вызывает в свою очередь процедуру Разность для вычисления прибыли. Полученный результат (5.00 грн.) выводится в текстовое поле txtПрибыль на форме.

Результат зависит от значений фактических параметров curЦена и curПрибыль и порядка, в котором они следуют при вызове процедуры. Если бы порядок изменить, например, вызов процедуры задать в виде:

Разность curСебестоимость, curЦена, curПрибыль

 

то результат был бы иным (- 5.00 грн.).

Функции

В общем случае процедура может иметь несколько выходных параметров. При вызове процедуры Разность, описанной в предыдущем примере, в результате ее выполнения получается одно значение, которое записано в поле памяти переменной curПрибыль. Затем эта переменная используется в функции Format для вывода ее значения на форму. В таких случаях, когда результатом работы процедуры является только одно значение, можно совместить вызов процедуры с использованием результата в каком-либо выражении, если оформить алгоритм в виде функции. Различие между описанием процедуры и функции имеется в заголовке, окончании и операторной части.

В заголовке и окончании вместо ключевого слова Sub необходимо поставить Function, а после списка формальных параметров указывается тип результата. В операторной части функции обязательно должен быть хотя бы один оператор присваивания, в левой части которого стоит имя функции. С помощью этого оператора сообщается результат выполнения функции.

Функция вызывается как операнд в выражении путем указания ее имени и списка фактических параметров, которые заключаются в скобки (если имеются входные параметры). Если входные параметры отсутствуют, то указывается только имя функции.

Рассмотренный в предыдущем пункте пример может быть представлен с помощью функции Разность следующим образом:

 

Private Sub cmdВычислить_Click()

Dim curЦена As Currency, _

curСебестоимость As Currency, _

curЦена = 25

curСебестоимость = 20

txtПрибыль = Format(Разность(curЦена, curСебестоимость), "0.00 грн.")

End Sub

Function Разность(curA As Currency, curB As Currency) As Currency

Разность = curA - curB

End Function



Дата добавления: 2020-10-14; просмотров: 490;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.015 сек.