Главная страница

Visual Basic .NET для чайников - У. Вонг. Visual Basic .NET для чайников - У. Диалектикамосква СанктПетербург Киев


Скачать 7.1 Mb.
НазваниеДиалектикамосква СанктПетербург Киев
АнкорVisual Basic .NET для чайников - У. Вонг.pdf
Дата29.05.2018
Размер7.1 Mb.
Формат файлаpdf
Имя файлаVisual Basic .NET для чайников - У. Вонг.pdf
ТипКнига
#19767
КатегорияИнформатика. Вычислительная техника
страница25 из 30
1   ...   22   23   24   25   26   27   28   29   30
Глава 27. Общие процедуры
269

Обратите внимание, что этот код имеет пять составляющих:
ключевое слово Public (или Private);
ключевое слово Sub;
название процедуры (ее имя);
|
пара круглых скобок ( ) ;
ключевые слова
Sub.
Слово P u b l i c указывает на тот факт, что процедура является глобальной. Если вы со- хранили общую процедуру в файле модуля, вызывать ее может любая другая общая процеду- ра или процедура обработки событий, сохраненная в файле модуля или в файле формы.
Если вы хотите ограничить область видимости процедуры теми процедурами, которые сохранены в том же файле, наберите вместо слова P u b l i c ключевое слово P r i v a t e :
P r i v a t e Sub
Инструкции
End Sub
Если вы сохраняете общую процедуру в файле формы, вызывать ее могут только те процедуры, которые сохранены в этом же файле. Следовательно, процедуры, со- храненные в файле формы, не могут быть глобальными.
Ключевое слово Sub идентифицирует данный фрагмент кода как процедуру (если вместо слова Sub набрать слово F u n c t i o n ,
создана общая функция, которая описывается в главе 29). Имя процедуры является тем словом, которое используют другие общие процедуры и процедуры обработки событий для ее вызова. Вызов определенной процедуры означает, что к ней обращаются со словами: "Эй! Уважаемая, теперь твоя что-то
Пара круглых скобок называется списком аргументов (он будет подробно рассмотрен в главе 28). Простейшие общие процедуры имеют пустые списки аргументов, о чем свидетель- ствует пустая пара круглых скобок.
Коды общей процедуры заканчиваются словами End Sub.
Создать и сохранить общую процедуру можно:
i во-первых, в файле формы (т.е. в том же файле, где хранится информация об объек- тах пользовательского интерфейса, таких как кнопки, раскрывающиеся меню и т.п.);
во-вторых, в файле модулей.
Сохраняя коды общих процедур в отдельных файлах, вы можете создать целую библиотеку полезных процедур, которые затем будут использованы в других соз- даваемых вами программах Visual Basic оптимальным вариантом является сохранение всех общих процедур в отдельных файлах модулей, а всех процедур обработки в файлах форм. В таком случае все относя- щиеся к работе пользовательского интерфейса, будут отделены от кодов, выпол- няющих вычисления и обработку данных.
Сохранение общих процедур в файле формы
Сохраняя общие процедуры в файле формы, вы рискуете сделать коды своей про- граммы сложными для понимания, а также для внесения в них изменений. Эта проблема становится особенно актуальной в больших программах.
270 Часть VI. Создание подпрограмм

При необходимости создать и сохранить общую процедуру в файле формы, вы должны выполнить такие действия.
1. Чтобы открыть окно кодов, в окне Solution Explorer щелкните на названии
файла формы и нажмите клавишу , выберите команду
или
щелкните на значке View Code.
2. Прокрутите окно кодов таким образом, чтобы увидеть блок с надписью
Windows Form Designer generated code (рис. 27.4).
3. Щелкните прямо под надписью Windows Form Designer g e n e r a t e d code и наберите код общей процедуры.
tfttdow
Solution
*
Public
End Sub sender As e
As
=
"
Seedy
27.4.
общей процедуры можно набрать прямо под надписью
Form
Designer generated code
Создание и сохранение общих процедур в файлах модулей
Если вы еще не создали файл модуля, вернитесь, в начало этой главы, к разделу такое файлы модулей". Здесь вы найдете описание последовательности дей- ствий, отвечающих за создание файла модуля.
Далее вам необходимо создать и сохранить общую процедуру в файле модуля.
1. Выберите команду
Explorer или нажмите комбинацию кла-
виш .
Откроется окно Solution Explorer.
2. Дважды щелкните на имени файла модуля, в котором хотите создать общую
процедуру.
Глава 27. Общие процедуры
271

Visual Basic откроет в окне кодов пустой файл модуля,
будет вы- глядеть образом (вместо слова должно отображаться дей- название файла):
Module
3. Наберите коды процедуры в любом месте между строками
и End
При создании глобальных общих процедур, которые могут быть вызваны любым кодом вашей программы, используйте ключевое слово P u b l i c . Если нужно соз- дать общую процедуру, вызывать которую смогут только процедуры, сохраненные в этом же файле, наберите вместо P u b l i c ключевое слово P r i v a t e .
В отличие от процедур обработки событий, имена которых состоят из названия соответ- объекта и названия события, общие процедуры могут быть названы любыми име- которые, впрочем, должны:
не более чем из сорока символов;
начинаться с буквы и включать только буквы, цифры и символы подчеркивания ( _ );
не совпадать с зарезервированными в Visual Basic ключевыми словами как End, Sub и
Процедурам рекомендуется давать такие которые будут как-то описывать выпол- няемые ими например:
Коды названных такими именами процедур будут выглядеть так:
b_. :.c
{ )
( )
Вызов
Каждая общая процедура содержит в себе одну, несколько или множество инструкций.
процедуре чтобы были выполнены сохраненные в другой проце- она пытать другую процедуру, воспользовавшись ее именем.
Часть VI. Создание подпрограмм

Вызвать для выполнения другую процедуру можно двумя способами. Во-первых, можно
просто указать имя этой процедуры:
{>
А во-вгорых, можно набрать ключевое слово C a l l и уже после него указать имя нужной
процедуры:
C a l l
Для Visual Basic
совершенно безразлично, каким образом вы будете вызывать
другие процедуры, но чтобы коды были более понятными, выберите для себя ка-
кой-то один способ и придерживайтесь его постоянно.
Набрать лишь название процедуры проще, но если вы используете ключевое слово
C a l l , то впоследствии будет легче найти в программе те коды, которые вызывают
процедуры, сохраненные в других файлах.
Рассмотрим такой пример. Допустим, вы создали такую общую процедуру:
P u b l i c Sub
("Your computer w i l l blow up in 3
,
End
Единственное, что способна делать данная процедура, — это отображать на экране диало-
говое окно, показанное на рис. 27.5.
Чтобы запустить эту процедуру из другого места программы (например, из какой-нибудь
процедуры обработки
достаточно набрать ее имя:
P u b l i c
()
()
End
Тот же результат можно получить путем ввода перед названием процедуры ключевого
слова
P u b l i c Sub
)
Call
End Sub will up 3
27.5. Диалоговое окно, открываемое
при вызове процедуры
rning ()
Оба последних кода
такому коду:
Public
("Your w i l l blow up in 3 seconds!
,
End Sub
Глава 27. Общие процедуры
273

В рассмотренном выше примере вызываемая процедура довольно проста, но в дей- ствительности почти все процедуры включают по две, три и более инструкций.
Понятно, что имеет смысл набрать все эти инструкции по одному разу (создав от- дельную общую процедуру) и вызывать их лишь при необходимости, указывая только имя процедуры.
Тест на проверку полученных вами знаний
Для создаются общие процедуры?
а. Для того чтобы программа побольше кодов и ее можно было
- роже б. Многие программисты занимаются желая создать видимость выполнения работы. '•
в.
же того, чтобы коды программы были проще для пони- мания для внесения них изменений.
2. Как можно вызвать общую процедуру?
а. Открыть программы, найти нужную
- процедуру и нажать б. Надо присвоить процедуре номер,
', .
к компьютеру модем и с другого фона позвонить на этот номер ответит женский голос),,.
•в.
;
а посте него имя процедуры.
274
Часть VI. Создание подпрограмм

Глава 28
Использование аргументов
Передача аргументов процедуре
> Возможные проблемы при передаче аргументов
Досрочный выход из процедуры огда процедура вызывает общую процедуру, она ссылается на ее имя. Если вызов происходит только по имени, управление просто передается вызываемой процедуре,
без какой-либо сопроводительной информации. При этом вызывающая процедура как бы го- ворит вызываемой:
Теперь твоя очередь работать. Начинай!"
Но довольно часто вызываемой процедуре, для того чтобы приступить к работе, нужно иметь дополнительные сведения и инструкции. В частности, ей могут понадобиться специ- фические данные, на основании которых она сможет выполнять какие-то действия или ис- пользовать их для проведения расчетов.
Любая процедура, которая вызывает общую процедуру, может предоставить и необходи- мые для ее работы данные. Эти данные программисты называют аргументами. В таком слу- чае вызывающая процедура говорит вызываемой:
Теперь твоя очередь работать. Возьми нужные тебе данные и начинай!"
него
Аргументы — это данные (числа, строки либо переменные, содержащие в себе числа или строки), которые нужны общей процедуре для выполнения ее работы. Воспользовавшись аргу- ментами, можно создать простую, похожую на шаблон, процедуру, которая заменит собой не- сколько подобных процедур, использующих в своей работе заранее определенные значения.
Рассмотрим в качестве примера две общие процедуры. Одна из них отображает диалого- вое окно с предупреждением:
P u b l i c Sub D i s p l a y C a u t i o n ()
= "Внимание! Это последняя попытка"
End Sub
Вторая отображает диалоговое окно с сообщением:
P u b l i c Sub
"Поздравляем! Отличная попытка"
End Sub
Любую из этих процедур можно вызвать, воспользовавшись одним из двух способов:
или C a l l i
C a l l
Глава 28. Использование аргументов 275

Однако создавать для каждого сообщения отдельную процедуру —- это не лучший вари- ант. Вместо того чтобы писать несколько почти одинаковых процедур, можно написать лишь одну, заменив специфическую информацию аргументом. Например:
P u b l i c Sub
Сообщение As S t r i n g )
= Сообщение
2nd Sub
Такая процедура говорит компьютеру: "Создай текстовую переменную Сообщение и присваивай ей значения, которые будут передавать вызывающие меня процедуры. Каким бы ни было переданное значение, присвой его свойству Text объекта
Чтобы вызвать процедуру, для работы которой нужны дополнительные данные, приведи- те таковые в круглых скобках. Например, чтобы вызвать процедуру Display, наберите в круглых скобках текст, который должен быть отображен на экране:
Это последняя попытка")
Или:
Отличная попытка")
Или:
Call
Это последняя попытка")
Или:
Call
Отличная попытка")
значений
Для вызова процедуры и передачи ей данных (называемых аргументами) предусмотрены два метода:
C a l l
(Аргумент)
Допустим, вами была создана такая общая процедура:
P u b l i c Sub
Сообщение As S t r i n g )
= Сообщение
End Sub
Чтобы вызвать эту процедуру и отобразить на экране сообщение "Внимание! Это послед- няя попытка", можно набрать один из двух кодов:
Это последняя попытка")
.
C a l l
Это последняя попытка")
Не имеет значение, какой из этих вариантов когда будет использоваться, но лучше оста- новиться на каком-то одном из них и применять его постоянно.
Теперь проследим за пошаговым выполнением вызываемой процедуры
1. Код, посредством которого процедура вызывается, говорит компьютеру: "Найди процедуру, именуемую Display, и передай ей текстовое значение Внимание !
Это последняя попытка". В данном случае строка Внимание ! Это по- следняя попытка является аргументом.
276 Часть VI. Создание подпрограмм

2. Visual Basic находит общую процедуру Display и дает ей указание при- переменной Сообщение передаваемое значение.
3.
процедура Display говорит компьютеру: "Присвой значение перемен- ной Сообщение свойству Text объекта txtReadMe". Поскольку значением пе- ременной Сообщение является
! Это последняя по- пытка, свойству Text объекта txtReadMe будет присвоено это же значение.
Если вызова процедуры вы наберете код
Отличная попытка")
свойству Text объекта txtReadMe будет присвоено значение Поздравляем! Отличная попытка
Таким создавая процедуры, использующие для своей работы значения аргумен- тов, вы можете избавиться от необходимости писать по многу подобных процедур, обраба- тывающих заранее определенные данные.
значений
Чтобы создаваемая общая процедура смогла получать внешние данные (значения аргу- ментов), нужно задать для нее список аргументов. По сути, этим списком определяется,
сколько значений и каких типов может принять процедура.
Если создаваемой для работы дополнительные данные не нужны, список аргу- ментов не создастся, о чем свидетельствует пара пустых скобок:
P u b l i c
Самодостаточная ( )
End Sub
Чтобы вызвать такую процедуру, достаточно набрать один из двух кодов:
C a l l Самодостаточная!)
А чтобы создать процедуру с одним аргументом, необходимо набрать такой код:
Число As I n t e g e r )
End Sub
Данная процедура объявляет о создании аргумента, представляемого переменной Число типа
Чтобы вызвать такую процедуру, нужно указать ее имя и значение аргумента:
C a l l
Если при вызове подобной процедуры вы укажете значение не того типа (в нашем случае отличное от типа Inr.eger), Visual Basic воспримет это как ошибку и откажется продолжать выполнение программы.
Аргументы-значения и аргументы-ссылки
Чтобы отдельные общие процедуры не могли повредить или удалить данные, используе- мые другими частями программы, Visual Basic по умолчанию передает процедурам для
Глава 28. Использование аргументов 277
обработки только значения переменных, но не сами переменные. На тот факт, что процедуре будут передаваться только значения, указывает ключевое слово
Если процедуре в качестве аргумента передается значение, создается отдельная копия ис- ходных данных, и процедура работает только с этой копией. Таким образом, как бы процеду- ра не изменяла полученные значения, на исходных данных это никак не отразится и их цело- стность не будет нарушена.
Если при создании списка аргументов вы забудете набрать слово ByVal, Visual
Basic добавит автоматически.
На самом деле у вас есть возможность выбора: передавать процедуре для об- работки только значения переменных или сами переменные. Если процедуре передается значение переменной, она имеет дело лишь с копией исходных данных. Но если передаются сами переменные, процедура получает возмож- ность изменять исходные данные. Во втором случае появляется вероятность возникновения ошибки, поскольку процедура может изменить данные, исполь- зуемые другими частями программы. По умолчанию Visual Basic переда- ет процедуре только копии исходных данных (т.е. только значения перемен- ных). Но если вам это действительно необходимо, можете позволить процеду- рам вносить изменения в исходные данные. Для этого вы должны вместо слова
ByVal набрать ключевое слово
P u b l i c Sub
As I n t e g e r )
End Sub
Объявление сразу нескольких аргументов
Процедура может использовать а своей работе сразу несколько аргументов. Но прежде в списке аргументов необходимо указать их имена и типы получаемых данных. Объявляя аргу- менты, отделяйте их друг от друга запятыми. Ниже приведен код процедуры, которая объяв- ляет, что будет использовать значения сразу трех аргументов, а именно I, S и D:
P u b l i c Sub Yellow(ByVal I As I n t e g e r , _
ByVal S As S t r i n g , ByVal D As Double)
End Sub
Вызвать эту процедуру и передать ей значения 30, Yes и 12 . 9 можно с помощью одного из двух следующих кодов:
"Yes", 12.9)
Call Yellow(30, "Yes", 12.9)
Теоретически никаких ограничений на количество используемых аргументов не сущест- вует, но чем больше вы их создаете, тем сложнее становится процедура и увеличивается ве- роятность того, что впоследствии вы не сможете вспомнить, зачем все эти аргументы нужны и что вообще делает процедура.
278
Часть VI. Создание подпрограмм

Наиболее часто при вызове процедуры и передаче ей данных возникают ошибки двух ти- пов. Во-первых, количество значений, передаваемых процедуре, может не совпадать с коли- чеством объявленных для нее аргументов. Во-вторых, передаваемые данные могут не соот- ветствовать типу объявленных аргументов.
Неверное количество переменных
Создавая процедуру и объявляя список аргументов, вы определяете точное количество значений, которые должны быть переданы процедуре при ее вызове. Если набрать код, вызы- вающий процедуру, и попытаться передать ей другое количество значений (неважно, большее или меньшее), это будет воспринято как ошибка и программа работать не станет. Например:
P u b l i c Sub
Число As I n t e g e r )
End Sub
Чтобы эта процедура работала правильно, ей нужно передать одно значение типа
I n t e g e r . Ни один из приведенных ниже способов вызова процедуры Green не является корректным, поскольку в каждом случае передается ошибочное количество аргументов:
Green ()
G r e e n ( 9 , " S t o p ! " )
"No", 334)
Неправильный тип данных
Вызывая процедуру, не забывайте о том, что передаваемые значения должны соответст- вовать тому типу данных, который был объявлен для аргументов в момент ее создания. Рас- смотрим в качестве примера такую процедуру:
P u b l i c Sub
Строка As S t r i n g )
End Sub
Чтобы вызвать эту процедуру, нужно передать ей в качестве аргумента одно текстовое значение. Приведенные ниже способы вызова процедуры являются ошибочными, поскольку передаваемые значения — это числа, а не строки:
Green(42)
(1)
из
Обычно процедуры выполняются до тех пор, пока не будут выполнены все их инструк- ции. Однако процедура может быть завершена и раньше.
1   ...   22   23   24   25   26   27   28   29   30


написать администратору сайта