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

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
КатегорияИнформатика. Вычислительная техника
страница26 из 30
1   ...   22   23   24   25   26   27   28   29   30
Глава 28. Использование аргументов 279

Чтобы немедленно прервать выполнение какой-либо процедуры, наберите такой код:
Проиллюстрируем это на примере следующей процедуры:
P u b l i c Sub
X = О
Do
X
X + 1
If
= 13) Then
E x i t Sub
End If
Loop U n t i l X = 25
End Sub
Цикл должен был выполнить 25 итераций, по окончании которых переменной
X было бы присвоено значение 2 5. Однако в самом цикле содержится оператор который при достижении переменной X значения 13 прерывает выполнение процедуры по- средством команды E x i t Sub.
280 Часть VI. Создание подпрограмм

Глава 29
Создание функций
Вызов функций
Использование аргументов
Быстрое завершение функций представляют собой миниатюрные которые получают дан- ные, производят вычисления и возвращают результат. В Visual Basic имеется целый набор встроенных функций, обозначаемых разными загадочными именами. К их числу относятся, в частности, функция Sqr (принимает число и возвращает его квадратный корень)
и функция LCase (принимает произвольную строку и возвращает этот же текст, набранный строчными буквами). Четыре из числа наиболее часто используемых функций описаны в табл. 29.1.
Таблица
Наиболее часто используемые функции Visual Basic
Встроенная функция Производимые действия
Abs
Возвращает модуль числа t e Возвращает текущую дату
LCase
> Преобразует символы в символы нижнего регистра
S q r
Возвращает квадратный корень числа
Но Visual Basic не ограничивается использованием только встроенных

вам предоставляется возможность создавать собственные функции. Код обычной функции выглядит так:
P u b l i c F u n c t i o n
As
ИмяФункции = Значение
End F u n c t i o n
Если функция сохраняется в файле модуля, то слово P u b l i c указывает на тот факт, что она может быть вызвана любой общей процедурой или процедурой обработки событий, со- храненной в каком-либо файле этой же программы. (Если сохранить функцию в файле моду- ля, но вместо слова P u b l i c ввести слово P r i v a t e , вызвать ее смогут лишь те процедуры,
которые сохранены в этом же файле.)
Если функция будет сохранена в файле формы, вызывать ее смогут только те об- щие процедуры или процедуры обработки событий, которые сохранены в этом же файле формы.
Ключевое слово F u n c t i o n указывает на то, что подпрограмма является функцией. Вме- сто слова ИмяФункции наберите любое допустимое в Visual Basic имя, но желательно
Глава 29. Создание функций 281
такое, которое будет каким-то образом описывать выполняемые функцией действия. Списо- может быть пустым, а может объявлять некоторое количество аргументов.
Словом ТипДанных определяется, значение какого типа будет возвращаться функцией.
Приведенный выше фрагмент кода может быть набран несколько иначе:
Public Function
As_
ТипДанных
Return Значение
End F u n c t i o n
Этот код отличается от предыдущего тем, что вместо непосредственного присвоения имени функции возвращаемого значения использовано ключевое слово Return. Создавая свою функцию, вы можете выбрать любой из этих способов определения значения, которое должно быть возвращено.
Создание
Создать и сохранить функцию можно:
1 в файле модуля;
в файле формы.
Если вы сохраняете функцию в файле формы, она может быть вызвана и использована только процедурой или функцией, сохраненной в этом же файле. Но если вы создаете и со- храняете функцию в файле модуля, она может быть вызвана любой процедурой или функци- ей, сохраненной в любом файле вашей программы.
Хорошим решением является сохранение всех функций в файлах модулей. В этом случае коды, отвечающие за работу пользовательского интерфейса, не будут смеши- ваться с кодами, выполняющими обработку данных и производящими вычисления.
Создание функции в файле формы
Вот каким образом вы можете создать функцию в файле формы.
1. Чтобы открыть окно
кодов, в окне Solution Explorer щелкните на
названии файла формы, затем нажмите клавишу , выберите команду
или щелкните на значке View Code.
2. Прокрутите окно редактора кодов таким образом, чтобы был виден блок с
надписью Windows
Designer generated code.
3. Щелкните прямо под надписью Windows Form Designer g e n e r a t e d code и наберите код функции.
Создание и сохранение функции в файле модуля
(Если файл модуля еще не создан и вы не знаете, как это сделать, вернитесь к главе 27, к разделу "Что такое файлы модулей".)
Чтобы создать и сохранить функцию в файле модуля, выполните действия перечис- ленные ниже.
1. Выберите команду
Explorer или нажмите комбинацию кла-
виш .
282 Часть VI. Создание подпрограмм

Откроется окно Solution
2. Дважды щелкните на названии файла модуля, в котором хотите сохранить
создаваемую функцию.
Visual Basic в окне кодов откроет пустой файл модулей, который будет вы- глядеть так, как показано ниже (правда, вместо слова должно отобра- жаться действительное имя файла):
Module Modulel
End Module
3. Наберите коды функции в любом месте
строками Module и End
Module.
Где-нибудь в кодах функции обязательно нужно либо набрать имя функции и сопоставить ему значение или выражение, либо ввести ключевое слово Return, после него набрать зна- чение или выражение. Это значение или значение, вычисляемое выражением, и будет тем ре- зультатом, который должна возвратить функция. Например:
P u b l i c F u n c t i o n
Ярды As S i n g l e ) As_
S i n g l e
Const Коэффициент = 0.9
ЯрлыМетры = Ярды * Коэффициент
End F u n c t i o n
Или, что то же самое:
Public Function
Ярды As Single)
Single
Const Коэффициент = 0.9
Return Ярды Коэффициент
End F u n c t i o n
Если вы не присвоите имени функции никакого значения или не наберете ключевое слово Return, функция не вернет никакого результата, т.е. станет совершенно бесполезной.
Функция в качестве результата может возвращать данные любого типа, в том числе
I n t e g e r , S t r i n g и Boolean. Более подробную информацию об использовании различных типов данных вы можете найти в главе 15.
Существует три основных различия между функциями и процедурами.
Каждая функция производит вычисления и возвращает одно (и только одно)
значение. Процедуры же создаются для решения различных задач и выпол- нения определенных действий.
Где-нибудь в кодах функции должно быть указано значение, которое она возвращает. Для процедуры ничего подобного делать не нужно.
Для каждой функции нужно определить тип данных, которые она возвраща- ет в качестве результата. Для процедуры, опять-таки, этого делать не нужно.
Глава 29. Создание функций 283

вызов
Вызов функции отличается от вызова процедуры. Поскольку каждая функция возвращает
в качестве результата какое-то значение, то чтобы вызвать таковую, нужно присвоить какой-
либо переменной ее имя. Например:
Public Function
Ярды As Single) As_
Single
Const Коэффициент = 0.9
ЯрдыМетры = Ярды * Коэффициент
End Function
Private Sub sender As_
ByVal e As
Handles
Dim Метры As Single
Метры =
=
(Метры)
End Sub
Процедура обработки событий дает компьютеру указание: "Когда пользователь
щелкнет не кнопке
ты должен выполнить ряд действий.
1. Создай переменную Метры, которая будет принимать значения типа S i n g l e .
2. Возьми значение, сохраненное в свойстве Text объекта
преобразуй
к типу S i n g l e и используй в качестве аргумента функции
3. Функция ЯрдыМетры возьмет это значение, умножит его на коэффициент 0,9
и вернет полученное значение как свой результат. Возьми этот результат и
присвой его переменной
4. Значение, сохраненное в переменной Метры, преобразуй к текстовому виду и
присвой его свойству Text объекта
Сравните коды, вызывающие процедуру и функцию. Процедуру можно вызвать так:
либо так:
Чтобы вызвать функцию, нужно возвращаемое ею значение присвоить какой-нибудь пе-
ременной:
=
Если функция возвращает логическое значение, она может быть использована как
условие оператора
или других условных операторов:
Then
' коды BASIC
End I f
284 Часть VI. Создание подпрограмм

Поскольку функции возвращают какое-то одно значение, их можно использовать при вы-
числении математических выражений:
=
+
Например, процедура, вызывающая функцию
может выглядеть так:
P r i v a t e Sub
Метры As S i n g l e , NewValue As Single
=
+ 32) * 4
End
и
значений
Поскольку функция возвращает только одно значение, обязательно нужно указать какой-
то один тип данных, которому это значение будет соответствовать.
Посмотрим еще раз на уже знакомую нам функцию:
Public Function
Ярды As Single) As_
Single
Const Коэффициент = 0.9
Ярды Коэффициент
End Function
Первая строка кодов этой функции заканчивается указанием на тип данных S i n g l e , ко-
торый и будет соответствовать возвращаемому результату. Функции могут возвращать значе-
ния различных типов, среди которых и такие:

Integer;
Long;
Boolean;
Single;
Double;
Decimal;
String.
Неважно, какой именно тип данных возвращается функцией, но тип переменной, которой
присваивается возвращаемое значение, обязательно должен с ним совпадать. Например:
Public Function
Ярды As Single) As_
Ccnst Коэффициент = 0.9
ЯрдыМетры = Ярды * Коэффициент
End Function
P r i v a t e Sub sender As_
ByVal e As
__
Handles
Глава 29. Создание функций 285

Dim Метры As S i n g l e
Метры =
=
(Метры)
End Sub
Функция ЯрдыМетры возвращает значение типа S i n g l e ; переменная Метры, которой присваивается возвращаемое значение, также имеет тип S i n g l e , поэтому такой код является правильным.
Но допустим, что переменная Метры была объявлена как текстовая переменная:
Dim Метры As S t r i n g
В таком случае строка
Метры =
будет содержать ошибку, поскольку тип возвращаемого функцией результата и тип перемен- ной, которой этот результат присваивается, не совпадают.
Тип принимаемых данных
Аргументы — это исходные данные (числа, строки либо переменные, содержащие числа или строки), которые нужны функции для нормальной работы.
При объявлении списка аргументов нужно указать не только их количество и названия, но и значения каких типов данных каждый из них будет представлять.
Каждый аргумент может представлять данные самых разных типов, в том числе и тех, ко- торые возвращают функции (см. выше).
Ниже показана первая строка функции, которая использует в своей работе значения двух аргументов типа I n t e g e r :
P u b l i c F u n c t i o n
As I n t e g e r ,
F2 As I n t e g e r ) As S i n g l e
Итак, при вызове такой функции ей необходимо передать два значения типа I n t e g e r , a возвращаемое значение присвоить переменной типа S i n g l e . Далее представлены процедура несколько раз вызывающая функцию Convert, и комментарии, описы- вающие допущенные ошибки:
P r i v a t e Sub sender As_
ByVal e As
Dim X, Y, Z As I n t e g e r
Dim А, В, С As S t r i n g
Dim L, M, N As S i n g l e
L =
Y)
В этой строке ошибок нет
С =
В)
А и В не I n t e g e r , С не S i n g l e
Z =
N)
М и N не I n t e g e r , Z не S i n g l e
Y =
X)
Y не S i n g l e , "OK" - строка
End Sub
286 Часть VI. Создание подпрограмм

Ошибки при определении значений аргументов
Наиболее часто при вызове функций встречаются ошибки двух типов. Во-первых, количе- ство передаваемых значений не всегда соответствует количеству объявленных аргументов.
Во-вторых, случаются попытки передать значения не тех типов данных, которые были объявлены для аргументов.
Передача неверного числа аргументов
При объявлении списка аргументов определяется обшее количество значений, которые должны быть переданы функции в момент ее вызова. Если при вызове функции вы попытае- тесь передать ей большее или меньшее количество значений, это будет воспринято как ошиб- ка и программа откажется работать. Рассмотрим в качестве примера такую функцию:
P u b l i c F u n c t i o n
Set As S t r i n g ) As S i n g l e
End F u n c t i o n
Для нормальной работы этой функции ей требуется передать одно текстовое значение.
Поэтому ни одна из предпринимаемых ниже попыток вызова функции не будет успешной,
поскольку значение либо не передается вовсе, либо передается более чем одно значение:
X = F l a s h
X =
"Moon")
X =
"M",
12)
Несоответствие типов данных
При вызове функции убедитесь, что ей передаются значения тех же типов, которые были объявлены для ее аргументов. Обратимся еще раз к знакомой нам функции:
P u b l i c F u n c t i o n Flash(ByVal Set As S t r i n g ) As S i n g l e
End F u n c t i o n
При вызове этой функции ей нужно передать одно значение текстового типа. Все пред- принимаемые ниже попытки вызова функции ни к чему не приведут, поскольку передаваемые значения являются числами:
X = F l a s h ( 1 4 . 2 1 3 5 )
X = F l a s h ( l O l )
X =
Обычно функции продолжают свою работу до тех пор, пока не будет выполнена послед- няя инструкция. Однако в случае необходимости выполнение функции можно прервать.
Для этого достаточно набрать такой код:
E x i t F u n c t i o n
Прежде чем команда E x i t F u n c t i o n будет приведена в действие, имени функ- ции должно быть присвоено какое-то значение (т.е. должен быть определен воз- вращаемый функцией результат). В противном случае программа, скорее всего, бу- дет работать некорректно.
Глава 29. Создание функций 287

Тест на проверку полученных вами знаний
Когда лучше использовать функции, а когда а. Если нужно сделать программу более функциональной, создавайте функции.
Если вам надоели функции, используйте процедуры, и наоборот.
а. Остановитесь на чем-то одном. Напри- мер, функции используйте по пятницам,
а процедуры - по субботам.
г. Процедуры используются для ния определенных задач (скажем, ото- бражения сообщения на экране), в то время как функции предназначены для вычисления одного результата.
2. Какая строка вызывает функцию, а какая процедуру:
Dim А, В, С As S i n g l e
А = 3

С
В)
а. В строке 4 переменной с присваивается значе- ние, возвращаемое функцией Black, а а стро- ке 5 вызывается процедура F l a s h C o l o u r .
б. Первая строка вызывает процедуру, потому что она самая длинная, а последняя строка вызыва- ет функцию, потому что ома не похожа на все остальные.
в. Вы можете выбрать звонок другу.
г. Вы можете выбрать подсказку зала.
288
Часть VI. Создание подпрограмм

Часть VII
Объектно-ориентированное
программирование
это именно то,
что вам быстро и особых усилий создавать надежные и качественные
Секрет заключается в том, что методы позволяют пра-
. вильно организовать а следовательно,
процесс ее написания и поиск возможных ошибок. '
В этой части дается обзор принципов и приемов ' ориентированного достаточный для того,
бы вы их при написании своих грамм. Конечно, сам методов ориентированного программирования того, что вы сразу же станете профессиональным программистом, но ваши шан- сы написать эффективно работающую программу резко ют. А
программу не всегда удается же людям,
на крупные корпорации н правительства.

Глава 30
Так что же это такое - объектно-
ориентированное программирование?
Создание структурированных программ
Объектно-ориентированное программирование как способ решения различных проблем e отставая от новейших тенденций и достижений в области программирования,
Visual Basic предоставляет вам возможность для написания своих самых по- трясающих программ использовать методы объектно-ориентированного программирования.
Конечно, если вы не будете знать, что это такое и "с чем его едят", все эти потенциальные возможности останутся вами не замеченными и не использованными.
Поэтому, прежде чем сказать:
это не нужно, я программировать и так", не по- ленитесь и прочтите следующие главы, чтобы иметь хотя бы общее представление о данном предмете.
Одна из причин, почему было создано такое направление, как объектно-ориентированное программирование, заключается в том, что несмотря на попытки многих учебных заведений подготовить хороших программистов, программирование остается настолько специфической сферой деятельности, что относится скорее к области искусства, чем к науке. Даже если вы закончите вуз и получите диплом специалиста по компьютерным наукам, это еще не означа- ет, что вы сможете программировать лучше, чем какой-нибудь школьник-вундеркинд.
Поэтому, чтобы сделать процесс написания программ более простым и поддающимся обычной человеческой логике, постоянно разрабатываются новые техники и приемы программирования.
Овладев ими, вы сможете программировать на качественно более высоком уровне.
На заре программирования почти никто не утруждал себя составлением каких-либо пла- нов собственных программ. Программисты просто начинали писать коды программ, добавляя в них по мере необходимости все новые и новые команды. Создаваемые программы хотя и работали, но понять их коды было практически невозможно. Со временем эти коды даже ста- ли называть спагетти, поскольку понять в них что к чему было так же сложно, как распутать настоящие спагетти, приготовленные в итальянском ресторане.
Но коды работающих это еще не проблема. Настоящие пробле- мы начинались тогда, когда нужно было модифицировать эти коды, с тем чтобы как-то изме- нить существующую программу или добавить к ней новые возможности. Поскольку структу- ра кодов не имела никакой логики и была в высшей степени запутанной, добавление новых кодов почти всегда сопровождалось появлением множества ошибок, в результате чего про- граммы вовсе выходили из строя.
1   ...   22   23   24   25   26   27   28   29   30


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