Процедуры и функции как модульное программирование
1. Вводные понятия
Алгоритм решения задачи проектируется путем декомпозиции всей задачи в отдельные подзадачи. Обычно подзадачи реализуются в виде подпрограмм.
Подпрограмма — это последовательность операторов, которые определены и записаны только в одном месте программы, однако их можно вызвать для выполнения из одной или нескольких точек программы.
Благодаря подпрограммам VB позволяет структурировать программу, то есть отделить ее функционально независимые части. В подпрограммы выделяется любой функционально законченный фрагмент программы. Стремятся к тому, чтобы программа состояла из большого количества подпрограмм. Каждая подпрограмма должна быть не более 20-30 строк кода.
В языке VB существуют два типа подпрограмм — процедуры и функции. Процедура и функция — это именованная последовательность описаний и операторов.
Подпрограммы подобны и подчинены программе и решают четыре важные задачи, значительно облегчающие программирование:
1) избавляют от необходимости многократно повторять в тексте программы аналогичные фрагменты;
2) улучшают структуру программы, облегчая ее понимание при разборе. Процедуры и функции — инструмент написания структурированных программ. В структурированных программах хорошо прослеживается основной алгоритм, их нетрудно понять, они проще в отладке и менее чувствительны к ошибкам программирования. Писать большие программы без структурирования просто невозможно. Практически во всех языках программирования имеются средства структурирования;
3) повышают устойчивость к ошибкам программирования и непредвиденным последствиям при модификациях;
4) разбивают программу на ряд в известной степени независимых друг от друга частей, что позволяет использовать принцип программирования сверху вниз или снизу вверх.
Каждая подпрограмма определяется уникальным именем.
Процедуры и функции — относительно самостоятельные фрагменты программы, оформленные особым образом и снабженные именем.
Упоминание имени подпрограммы в теле программы называется вызовом подпрограммы.
Под процедурами подразумевают последовательность объявлений и инструкций, объединенных для выполнения.
В зависимости от назначения можно выделить процедуры и функции обработки событий и процедуры общего назначения.
Основной отличительной чертой процедур и функций общего назначения является то, что они не связаны ни с каким событием и их вызов разработчик осуществляет по своему усмотрению.
Процедуры и функции общего назначения относятся к секции (General). Так как процедура не связана ни с одним элементом управления, то поле (Object) окна кода вместо имени объекта содержит строку (General). Используются, как правило, для решения каких-либо общих задач, например расчетов, которые необходимо выполнять в различных местах программы.
2. Объявление процедур и функций общего назначения в vb
Формат определения процедуры следующий:
[Private | Public] Sub <имя процедуры> (список аргументов)
<тело процедуры>
[Exit Sub]
<тело процедуры>
End Sub
Формат определения функции следующий:
[Private | Public ] Function <Имя функции> (список аргументов)
As <тип возвращаемого результата>
<тело функции>
<имя функции> = <возвращаемое значение>
[Exit Function]
End Function
Public.Это ключевое слово применяется, если в главной секции модуля объявляют процедуру или функцию, которая должна быть доступна всем процедурам и функциям всех модулей и форм.
Private. При использовании этого слова процедура или функция доступна всем процедурам и функциям только в пределах того модуля или формы, где она объявлена. Подразумевается по умолчанию.
Exit SubилиExit Function. Эти команды осуществляют досрочный выход из процедуры или соответственно функции.
Если переменная описана в теле подпрограммы, то она является локальной, то есть доступной из подпрограммы, в которой она описана. Переменные с совпадающими именами, описанные в основной программе или других подпрограммах не имеют к ней ничего общего.
Обратим внимание, функция в отличие от процедуры имеет результат, тип которого указывается в заголовке после закрывающей скобки. Значение результата необходимо присвоить идентификатору с именем функции.