|
[ Главная ] [ Статьи ] [ Для новичков ] [ Примеры ] [ Программы ] [ Microsoft Agent 2.0 ] [ Пособие ] [ Уроки ] [ Разное ] |
Урок № 17. Доводим до умаНа этом уроке мы научимся оформлять программу в виде функций и процедур. Это очень важно. Принцип модульного программирования очень облегчает программирование и отладку. Модульное программирование - означает разделение кода программы на отдельные куски, каждый из которых выполняет чётко определённую задачу. Это особенно важно для сложных программ. Доведём до ума нашу программу, для вычисления корней квадратного уравнения. Как? Очень просто! Давайте оформим некоторые части кода в виде процедур и функций. Например, напишем функцию для вычиления дискриминанта. И напишем процедуру, которая будет выводить полученные значения в метки. Почему именно процедуру? Потому что процедуры пишутся для выполнения некоторой последовательности действий, где не требуется возвращать какое-либо значение. Давайте ещё раз посмотрим на ту часть кода, где происходит проверка значения дискриминанта и вычисление корней уравнения: If
D > 0 Then Заметьте, что в каждом из ветвей оператора If наблюдается присвоения свойству Caption 3-х меток (lblD, lblX1, lblX2). Поэтому логично этот участок оформить в виде процедуры, параметрами которой будут значения для меток. Ну, что ж, приступим? Сначала напишем функцию для вычисления дискриминанта. Чтобы вычислить дискриминант необходимо знать 3 параметра - коэффициенты a, b и с. Функция будет возвращать значение - дискриминант. Чтобы самому не писать заготовку для этой функции, Visual Basic предоставляет возможность для автоматического создания такой заготовки. Для этого выберите в главном меню VB: Tools->Add Procedure... Появится окно, в котором вас попросят указать вид добавляемой процедуры. Отметьте радиокнопку Function. В поле "Name:", укажите имя добавляемой функции. Давайте назовём её, например, как CalcDiscremenant. Не бойтесь давать длинные названия процедурам и функциям! Всё равно, когда вы захотите использовать эту процедуру в коде, вам не придётся полностью набивать на клавиатуре её имя. Но об этом чуть ниже. Итак, нажмите OK и Visual Basic создаст для вас следующую заготовку: Public Function CalcDiscremenant() End Function Теперь модифицируем её так, чтобы функция принимала 3 аргумента (параметра) типа Double, и возвращала значение, которое тоже будет иметь тип Double: Public
Function
CalcDiscremenant(a As Double, _ End Function Осталось добавить код в нашу заготовку. Сделать это не трудно: Public
Function
CalcDiscremenant(a As Double, _ Необходимо подчеркнуть, что в Visual Basic параметры можно передавать двумя способами: по значению и по ссылке. Первый способ передает в процедуру (или функцию) только значение передаваемой переменной. Внутри функции изменить значение такой переменной будет нельзя. Второй способ передаёт в функцию ссылку на передаваемую переменную, и её значение легко может быть изменено в теле функции. По умолчанию, Visual Basic всегда передает параметры по ссылке. В нашем случае параметры a, b и c не изменяются внутри функции. Поэтому можно сделать так, чтобы параметры передавались по значению. Для этого перед именем переменной необходимо поставить ключевое слово ByVal (By Value), вот так: Public
Function
CalcDiscremenant(ByVal a As
Double, _ В принципе, делать это не обязательно, но всё же желательно. Это повышает наглядность. Теперь, любой, кто воспользуется нашей функцией сразу будет знать, что значения передаваемых переменных внутри функции меняться не будут (да и не могут). Теперь у нас есть функция, которая будет принимать 3 коэффициента a, b, c и вычислять дискриминант. Давайте опробуем её в действии. Для этого замените в нашей программе строчку, где вычислялся дискриминант: D = (paramB * paramB) - (4 * paramA * paramC) на строчку: D = CalcDiscremenant(paramA, paramB, paramC) Здесь читатель может возразить - "Как же? Вы же говорили, что имя функции не придётся набирать на клавиатуре!". Так оно и есть! Самый быстрый способ заменить старую строчку на новую такой: (не пользуясь Ctrl+C,Ctrl+V, конечно :) выделите всё, что находится после знака "=". Удалите клавишей Delete. Нажмите Ctrl+J. Visual Basic выдаст вам окно, в котором находятся все доступные на данный момент функции, константы, свойства, перечисления... и т.п., включая пользовательские, т.е. наши ;). Нажмите на клавиатуре всего одну букву "c", и вы увидите нашу, только что созданную функцию!: Теперь нажмите пробел. Всё! Полное имя функции за вас набрал VB. Если после имени функции открыть круглую скобку, то Visual Basic для удобства выдаст вам параметры этой функции: Это очень удобно. Не нужно всегда помнить все параметры всех функций. Достаточно написать имя функции и поставить круглую скобку. Примечание: Если у вас пропала такая всплывающая подсказка (например, вы кликнули в другом месте кода программа), то вернуть её можно, снова поставив открывающую круглую скобку после имени функции. А можно ещё проще - нажать комбинацию клавиш Ctrl + Shift + I. Как видите, программировать на Visual Basic очень просто. Причём, эта простота очень хорошо сочетается с богатыми возможностями самого языка. В результате чего, на VB можно легко написать даже очень мощную программу. Конечно, нашу программу мощной не назовёшь, но ведь это только маленький пример возможностей VB! Творите! Всё в ваших руках! Теперь, можете проверить работоспособность нашей функции. Как видите, всё прекрасно работает. Осталось написать процедуру для вывода результатов в метки. Добавим затоговку так же, как и в предыдущем случае (Tools->Add Procedure). Только на этот раз не будем отмечать радиокнопку Function, а оставим всё как есть (Sub). В качестве имени процедуры можно ввести, ну, скажем WriteResultsInLabels. Чем длиннее название, тем понятнее, чем занимается данная процедура или функция. Нажмём ОК: Public
Sub
WriteResultsInLabels() Сделаем так, чтобы наша процедура принимала 3 параметра - значения, которые необходимо вывести в соответствующие метки: Public
Sub
WriteResultsInLabels (lblDCapt As String,
_ Входные параметры имеют тип String, т.к. передавать в процедуру мы будем именно строки. Для того, чтобы процедура работала, необходимо добавить в неё код: Public
Sub
WriteResultsInLabels (lblDCapt As String,
_ Готово. Можно использовать процедуру. Давайте заменим каждые 3 строчки, где мы выводили значения в метки. Получится нечто подобное: If
D > 0 Then Программа готова. Конечно можно было бы ещё оформить функцию, для проверки правильности введённых в поля (TextBox) значений. Функцию для вычисления корней уравнения и т.д. Дело ваше. Ведь это был всего лишь вводный курс. Я только хотел показать, как можно использовать возможности Visual Basic на примере простой программки - программки для решения квадратных уравнений. Конечно, многое осталось за кадром. Например, использование других компонентов Visual Basic, таких как Timer, PictureBox и многих других, а также дополнительных OCX компонентов, использование API функций Windows, создание ActiveX компонентов, классов и т.д. и т.п. Всего и не перечислишь. Может быть как-нибудь напишу и об этом. А пока, переходим к последнему уроку - компиляции приложения. |
|
|
|
>>>Если у вас есть статья которой нет на сайте
пришлите ее мне--------> Послать статью >>>Если вы хотите задать вопрос пишите--------> Мне нужна помощь |
|
|
|