37) Процедура Sub..End Sub. Заголовок процедуры. Формальные и фактические параметры. Обращение к процедуре. Порядок выполнения.
37) Процедура Sub... End Sub. Заголовок процедуры. Формальные и фактические параметры. Обращение к процедуре. Порядок выполнения. Процедура, создаваемая пользователем, имеет следующий формат: Sub< имя> (< перем1> as< тип1> , < перем2> as< тип2>, …, < перемN> as< типN> ) < тело процедуры> End Sub После ключевого слова Sub записывается имя процедуры. Имя процедуры должно быть уникальным в пределах проекта, также оно не должно совпадать ни с одним из имен переменных.
Для вызова процедуры из основной программы используется ключевое слово Call. Private Sub Button1_Click(ByVal sender As System. Object, ByVal e As System. EventArgs) Handles Button1. Click …………………………………………. Call < имя> (< перем1>, < перем2>, …, < перемN> ) …………………………………………. End Sub
Формальными параметрами называются переменные описанные в заголовке программы и используемые только внутри процедуры (функции). Формальные параметры указывают, с какими параметрами следует обращаться к этой процедуре (функции), т. е. их количество, последовательность, тип. Они задаются в заголовке процедуры (функции) в виде списка параметров, разбитого на группы (секции) однотипных параметров, разделенных ‘, ’. Порядок следования групп (секций) произвольный. Количество параметров может быть любым. Для каждого формального параметра следует указать имя и тип. Имена параметров могут быть любыми, они могут совпадать с глобальными именами программы. Необходимо лишь помнить, что в этом случае параметр основной программы с таким именем становится недоступным для непосредственного использования подпрограммой. Но формальные имена не могут совпадать с локальными переменными!!!!, т. к. они располагаются в одном стековом сегменте памяти.
Фактическими параметрами называются параметры, которые задаются при вызове процедуры (функции). Процедура вызывается по имени: < имя процедуры> {(фактические параметры)}; Правила задания фактических параметров: · Фактические параметры должны совпадать с формальными по количеству, по порядку следования, по типу. · Если формальный параметр – параметр-переменная, то фактический параметр при вызове процедуры задается только идентификатором (вызов по ссылке). · Если формальный параметр – параметр- значение(вызов по значению), то фактический параметр при вызове процедуры задается: идентификатором константой выражением · Для параметров-переменных (вызов по ссылке) должно быть точное совпадение по типу фактических и формальных параметров, а для параметров-значений (вызов по значению) допустима совместимость.
Если в качестве передаваемого параметра выступает одномерный массив, то после его имени, при записи формальных параметров, ставятся пустые круглые скобки. Если массив является многомерным, то в круглых скобках должна быть указана запятая. При передаче массива в момент вызова процедуры или функции в фактических параметра записывается его имя, а скобки после имени не ставятся. Массивы и возвращаемые значения рекомендуется передавать по ссылке. Различия между передачей параметров по ссылке и по значению заключаются в следующем. При передаче переменной по ссылке из основной программы в процедуру или функцию, изменение значения переменной внутри процедуры или функции, приводит к изменению ее значения в основной программе. При передаче переменной по значению, в памяти компьютера для ее выделяется новая ячейка памяти и изменения значений переменной внутри процедуры или функции, не изменяет ее значений в основной программе. При завершении процедуры или функции переменная уничтожается, освобождая выделенную до этого память.
38) Процедура-функция. Описание. Формальные и фактические параметры. Обращение к процедуре-функции. Порядок выполнения. Процедура-функция, в отличие от процедуры общего вида Sub…End Sub имеет возвращающее значение, которое, как правило, присваивается переменной, имеющей имя данной функции: Описание процедуры функции имеет следующий формат: Function< имя> (< перем1> as< тип1> , < перем2> as< тип2>, …, < перемN> as< типN> ) as < тип> < тело процедуры> End Function
Вызов процедуры-функции похож на вызов стандартной математической функции. Private Sub Button1_Click(ByVal sender As System. Object, ByVal e As System. EventArgs)_ Handles Button1. Click …… Z=< имя> (< перем1>, < перем2>, …, < перем3> ) …… End Sub Параметры, указанные в скобках заголовка процедуры, называются формальными. Параметры, указанные в списке оператора вызова процедуры, называются фактическими параметрами. Ключевые слова ByVal и ByRef определяют способ передачи значений параметров. ByVal указывает, что аргумент передается по значению. ByRef указывает, что аргумент передается по ссылке. Параметры, значения которых передаются из программы (другой процедуры) в процедуру, называются параметрами-переменными. Параметры, значения которых передаются из процедуры в программу (другую процедуру), называются параметрами-значениями. Значения параметров-переменных, передаваемых по способу ByVal, не могут изменяться в теле процедуры во время её выполнения, то есть последние значения переменных в программе сохраняются неизменными. Значения параметров, передаваемых по способу ByRef, изменяют значения соответствующих переменных программы.
Если в качестве передаваемого параметра выступает одномерный массив, то после его имени, при записи формальных параметров, ставятся пустые круглые скобки. Если массив является многомерным, то в круглых скобках должна быть указана запятая. При передаче массива в момент вызова процедуры или функции в фактических параметра записывается его имя, а скобки после имени не ставятся. Массивы и возвращаемые значения рекомендуется передавать по ссылке. Различия между передачей параметров по ссылке и по значению заключаются в следующем. При передаче переменной по ссылке из основной программы в процедуру или функцию, изменение значения переменной внутри процедуры или функции, приводит к изменению ее значения в основной программе. При передаче переменной по значению, в памяти компьютера для ее выделяется новая ячейка памяти и изменения значений переменной внутри процедуры или функции, не изменяет ее значений в основной программе. При завершении процедуры или функции переменная уничтожается, освобождая выделенную до этого память.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|