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

ПОЛЕЗНОЕ


КАТЕГОРИИ







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





4.3.2. Создание и использование процедур
пользователей

 

Ранее мы познакомились со «встроенными» (т.е. готовыми к употреблению) процедурами (например, Sqrt()), которые в VB являются методами класса. Мы также познакомились с процедурами обработки событий, которые являются частью пользовательского интерфейса и которые выполняются, только если происходит некоторое событие. В отличие от «встроенных процедур», эти процедуры разрабатывает программист (разработчик проекта).

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

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

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



Процедуры, которые будут рассмотрены ниже, не относятся ни к встроенным процедурам, ни к процедурам обработки событий – это общие процедуры.

 

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

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

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

В общем случае процедуры являются способом объединения набора связанных между собой элементов программного кода для выполнением конкретной задачи (алгоритма). В VBимеются два основных типа процедур:

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

2)Процедуры типа Sub – процедура–подпрограмма илипроцедура-Sub вызываются из процедур со­бытий или других процедур по имени. Они могут получать входные параметры и возвращать выходные параметры, значения которых получены в результате работы процедуры. Однако, в отличие отпроцедуры-Function, процедуры-Sub не возвращают значения, свя­занного с их именами.

 

Процедуры-Functionи процедуры-Subдолжны быть предварительно определены (описаны) в коде программы формы до их вызова.

Использование процедур общего назначения предоставляет следующие преимущества:

· позволяет связать часто используемую группу операторов программ кода со знакомым именем;

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

· делает программный код более простым и легко читаемым, так как, разделенный на небольшие части он, легче воспринимается, чем оформленный в виде одного большого фрагмента;

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

· позволяет повторно использовать процедуры в других проектах и решениях (можно легко встроить процедуры из стандартного модуля в другие программные проекты);

· расширяет язык VB (процедуры часто могут выполнять задачи, которые не могут быть выполнены отдельными операторами VB).

 

Описание процедуры-Function– это группа операторов, расположенных между ключевыми словами Function и End Function. Операторы в процедуре-Function выполняют осмысленную работу – в соответствии с заданным алгоритмом. Они используются только тогда, когда результатом выполнения процедуры является значение, какой-либо одной величины числового, строкового или логического типа. Чтобы выполнить (вызвать) – функцию, необходимо поместить в любое допустимое выражение программного кода имя этой функции и все требуемые для нее фактические параметры.

Аргументы (формальные параметры) процедуры-Function– это переменные, используемые для работы функции, и они должны быть заключены в круглые скобки после имени и разделены запятыми. В целом использование процедуры-Functionв точности совпадает с использованием встроенных функций. Функции, объявленные (описанные) в модуле формы, по умолчанию являются открытыми в пределах данной формы. В результате они могут использоваться (вызываться) из лю­бой процедуры события проекта или из другой процедуры модуля формы.

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

 

FunctionИмяФункции (ФормальныеПараметры) As ТипВозЗначенияОператорыФункции … Returnзначение или ИмяФункции = значение … End Function

Здесь важными являются следующие синтаксические элементы: ИмяФункции это уникальное имя создаваемой функции;

· ТипВозЗначения это тип значения, возвращаемого функцией, то есть тип величины, которая является результатом работы функции;

· ФормальныеПараметры (аргументы) это список необязательных аргументов, разделенных запятыми и используемых в данной функции. Каждый аргумент дол­жен быть объявлен с указанием конкретного типа данных и типа возвращаемого значения. По умолчанию VB добавляет к каждому аргументу ключевое слово ByVal, которое указывает на то, что в функцию через данный аргу­мент передается копия значения фактического параметра, и все изменения значения этого ар­гумента не будут возвращены в вызывающую процедуру – передача параметров по значению;

ОператорыФункции это блок операторов, который выполняет работу функции;

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

 

Процедуры-Subпохожи на процедуры-Function, за исключе­нием того, что процедура-Sub не возвращает значения, связанного с ее именем.

Базовый синтаксис описания процедуры Sub имеет вид:

 

SubИмяПроцедуры (ФормальныеПараметры) … ОператорыПроцедуры … End Sub

 

Отметим следующие синтаксические элементы:

· ИмяПроцедуры– это имя создаваемой процедуры-Sub.

· Формальные параметры (аргументы)– это список необязательных аргументов, разделенных запятыми, если их больше одного. Причем каждый аргумент должен быть объявлен с указанием конкретного типа данных и типа возвращаемого значения. Формальные параметры в процедуре-Subмогут быть как входные так и выходные. По умолчанию VS добавляет к каждому ар­гументу ключевое слово ByVal, которое указывает на то, что в процедуру-подпрограмму через данный аргумент передается копия значения, и все изме­нения значения этого аргумента не будут возвращены в вызывающий код. Кроме параметров типа ByValв процедуре-Subмогут параметры типа ByRef.

· ОператорыПроцедуры– это блок операторов, который выполняет работу процедуры по заданному алгоритму.

 

При вызове процедуры-Sub количество и типы аргументов, переда­ваемых в процедуру (они называются фактическими параметрами), должны совпадать с количеством и типом аргумен­тов, указанных при объявлении (описании) процедуры (это формальные параметры), и вся группа аргументов должна быть заключена в круглые скобки. Таким образом, количество и типы соответствующих друг другу формальных и фактических параметров должны совпадать. Если переменные, передава­емые в процедуру-Sub, изменяют свое значение при ее выполнении, то значения этих переменных не возвращаются в вызываемую процедуру, если эти аргу­менты не объявлены с помощью ключевого слова ByRef. По умолчанию процедуры-Sub в модуле объявляются как открытые, так что они могут вызываться лю­бой процедурой проекта.

 

 

4.3.3. Передача параметров по значению (ByVal)
и по ссылке (ByRef)

 

Итак, каждой процедуре присваивается уникальное название – имя процедуры. Кроме того, для процедуры четко устанавливается перечень входных и выходных аргументов (входных и выходных параметров). Прежде чем определять процедуру, необходимо четко представить, чтопроцедура делает, что она должна получать (что у нее на входе) и какие результаты возвращать (что на выходе). Параметры, перечисляемые в скобках при описании процедуры, называются формальнымипараметрами (перед такими параметрами обязательно ставится клю­чевое слово ByVal или ByRef (тип вызова данного параметра) и после имени параметра указывается его тип значений данного параметра). Параметры, которые указываются при вызове процедуры, называются фактическими. Передача параметров в процедуру из вызывающей процедуры может осуществляться двумя способами: по значению (By Value) или по ссылке (By Reference). Обычно по значению передаются входные параметры, а по ссылке – выходные.

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

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

При выборе способа передачи параметра (по ссылке или по значению) решающий критерий – должен ли параметр изменять свое значение в процедуре.

Вот некоторые рекомендации о том, когда следует использовать ByVal, а когда - ByRef:

· используйте ByVal тогда, когда требуется, чтобы процедура не изме­няла передаваемую в нее через аргумент переменную;

· используйте ByRef тогда, когда требуется позволить процедуре из­менять передаваемую в нее переменную;

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

 

Однако так как при передаче по значению происходит копирование объекта, данные большого объема (например, структуры или многомерные массивы) более эффективно передавать по ссылке.

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

 

 

4.3.4. Средства программирования алгоритмов
линейной структуры и процедуры ввода
и вывода

 

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

 

    P1, P2, Pn – выражения, операторы, процедуры  

 

Рис. 4.3.4-1. Схема алгоритма линейной структуры

 

Такая структура может быть составлена из совокупности программных блоков «Пуск/останов», «Ввод/вывод», а также блоков «Процесс» (рис. В.3-2). Cхема алгоритма линейной структуры приведена на рис. 4.3.4-1.

Обычно для ввода информации в программном коде проекта программист может использовать объект текстового поля формы TextBox и его свойство Text.

Поскольку технология современного программирования предполагает максимальное использование процедур при разработке программных проектов, в своих работах для ввода исходных данных, например, типа Double можно использовать следующую процедуру-Function:

 

'процедура-Function ввода данных типа Double 'из текстового поля TextBox Function vvodDbl1(ByVal T As TextBox) As Double Return (Val(T.Text)) End Function

 

Вызов (обращение) такой процедуры, например, для ввода значения переменной x1 типа Double из текстового поля TextBox1формы можно осуществлять следующим образом:

 

Dim x1 As Double x1 = vvodDbl1(TextBox1)

 

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

Функция InputBox( )вызывает окно InputBox,которое состоит из четырех элементов (рис. 4.3.4-2):

Окно ввода – это стандартное диалоговое окно, которое появляется на экране в результате вызова функции InputBox(). Значение функции
InputBox() – строка, которую ввёл пользователь. Поэтому, если программе надо получить число, то введённая строка должна быть преобразована в число при помощи соответствующей функции преобразования. Стандартное окно InputBox для ввода представлено на рис. 4.3.4-2.

 

 

 

Рис.4.3.4-2. Стандартное окно для ввода данных

 

Синтаксис функции InputBox() ввода данных выглядит так:

 

Переменная = InputBox ("Приглашение", "Заголовок")

 

Где,

· Приглашение – это любой текст, который должен находиться в Окне ввода. Его назначение – служить подсказкой пользователю, какую информацию он должен ввести в специальное поле ввода, находящееся в этом окне;

· Заголовокэто надпись в строке заголовка Окна ввода.

 

Например,

 

Name = InputBox("Введите, пожалуйста, первое число", "Ввод числа")

 

Вывод в окно сообщения(рис. 4.3.4-3)можно осуществить с помощью функции MsgBox(). Она позволяет поместить в окно с сообщением один из стандартных значков, например, "Внимание", задать количество и тип командных кнопок и определить, какую из кнопок нажал пользователь.

Синтаксис функции MsgBox() выглядит так:

 

В = MsgBox ("Сообщение", НомерКнопки, "Заголовок")

 

Где,

· Сообщение – представляет собой текст, который будет отображен на экране;

· НомерКнопки – указывает тип отображаемых кнопок, тип используемой пиктограммы;

· Заголовок – это надпись в строке заголовка Окна вывода.

 

Возможные установки для НомерКнопки представлены в табл. 4.3.4-1.

 

Таблица 4.3.4-1

Константа Описание
MsgBoxStyle.Ok Отображает только кнопку Ок
MsgBoxStyle.OkCancel Отображает кнопки Ок и Отмена
MsgBoxStyle.AbortRetryIgnore Отображает кнопки Стоп,Повтор,Пропустить
MsgBoxStyle.YesNoCancel Отображает кнопки Да, Нет, Отмена
MsgBoxStyle.YesNo Отображает кнопки Да, Нет
MsgBoxStyle.RetryCancel Отображает кнопки Повтор и Отмена
MsgBoxStyle.Critical Отображает запрещающую пиктограмму
MsgBoxStyle.Question Отображает предупреждающую пиктограмму (знак вопроса на белом фоне)
MsgBoxStyle.Exclamation Отображает предупреждающую пиктограмму (знак вопроса в красном треугольнике)
MsgBoxStyle.Information Отображает информационную пиктограмму

 

Рис.4.3.4-3. Форма для ввода и вывода данных

 









Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2018 zdamsam.ru Размещенные материалы защищены законодательством РФ.