Как заставить компьютер что-то делать. Написание первой процедуры

Обновлен: Ноябрь 2007

На этом занятии будет рассказано, как создать процедуру — самодостаточный блок кода, который может быть запущен из других блоков кода. Затем описывается, как создать параметры для процедур.

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

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

Что такое процедура?

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

Процедура запускается или выполняется путем ее вызова в коде. Например, для запуска процедуры PlaySound нужно просто добавить строку кода, содержащую имя процедуры, как показано ниже.

PlaySound()

Вот и все, что нужно! Когда выполнение программы дойдет до этой строки, управление перейдет к процедуре PlaySound, и будет выполнен содержащийся там код. Управление снова будет передано на следующую строку после вызова PlaySound.

Можно вызывать сколько угодно процедур. Процедуры выполняются в том порядке, в котором они вызываются. Например, может существовать также процедура с именем DisplayResults; для ее выполнения после выполнения процедуры PlaySounds вызовите процедуры, как показано ниже.

PlaySounds()

DisplayResults()

Функции и процедуры

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

DisplayResults

Функции отличаются от подпрограмм, поскольку они не только выполняют код, но также возвращают значение. Например, представьте функцию, называемую GetDayOfWeek, возвращающую значение типа Integer, указывающее день недели. Для вызова этой функции сначала следует объявить переменную для хранения возвращаемого значения, а затем присвоить возвращаемое значение этой переменной для последующего использования, как показано ниже.

Dim Today As Integer

Today = GetDayOfWeek

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

Написание процедур

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

Sub MyFirstSub()
End Sub

Ключевое слово Sub сообщает программе, что эта процедура является подпрограммой и не возвращает значение. Дальше пишется имя процедуры (MyFirstSub), пустые скобки указывают, что у этой процедуры нет входных параметров. Наконец, ключевое слово End Sub обозначает конец подпрограммы. Весь код, выполняемый подпрограммой, находится между этими двумя строками.

Объявление функций выглядит похоже, однако, необходимо добавить тип возвращаемого значения (например, Integer, String и т. д.). Например, функция, которая возвращает значение типа Integer, может выглядеть следующим образом.

Function MyFirstFunction() As Integer
End Function

Ключевое слово As Integer указывает, что эта функция возвращает значение типа Integer. Для возвращения значения из функции используйте ключевое слово Return, как показано в следующем примере.

Function GetTheNumberOne() As Integer
    Return 1
End Function

Эта функция возвратит число 1.

Практическое задание

Создание процедур

  1. В меню Файл выберите Создать проект.

  2. В диалоговом окне Создание проекта в области Шаблоны выберите Приложение Windows.

  3. В поле Имя введите MyFirstProcedure и нажмите кнопку ОК.

    Откроется новый проект Windows Forms.

  4. Дважды щелкните форму, чтобы открыть редактор кода.

  5. В редакторе кода найдите строку, в которой записано End Class. Это конец кода раздела, который составляет форму. Непосредственно перед этой строкой добавьте следующую процедуру:

    Function GetTime() As String
      Return CStr(Now)
    End Function
    

    Эта функция использует встроенную функцию Now, чтобы получить текущее время, а затем использует функцию CStr для преобразования значения, возвращенного Now, в удобный для восприятия тип String. Наконец, значение типа String возвращается как результат функции.

  6. Над функцией, добавленной в предыдущем шаге, добавьте следующую Sub.

    Sub DisplayTime()
      MsgBox(GetTime)
    End Sub
    

    Эта процедура вызывает функцию GetTime и отображает возвращаемый ею результат в окне сообщения.

  7. Наконец, добавьте строку в код обработчика событий Form1_Load, которая вызывает процедуру DisplayTime, как показано ниже.

    DisplayTime()
    
  8. Нажмите клавишу F5 для запуска программы.

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

Параметры функций и подпрограмм

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

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

  • Параметры объявляются в объявлении процедуры, а не в отдельных строках кода.

  • Параметры могут использоваться только в процедуре, в которой они объявлены.

Параметры объявляются в объявлении процедуры в скобках, следом за именем процедуры. Ключевое слово As используется для объявления типа, каждому параметру обычно предшествует ключевое слово ByVal. Это ключевое слово будет добавлено Visual Basic автоматически, если его не добавить самостоятельно; и оно имеет еще одну дополнительную функцию, описание которой выходит за рамки этого занятия.

Здесь приведен пример подпрограммы с параметрами.

Sub PlaySound(ByVal SoundFile As String, ByVal Volume As Integer)
  My.Computer.Audio.Play(SoundFile, Volume)
End Sub

Затем необходимо вызвать подпрограмму со значениями параметров, как показано ниже.

PlaySound("Startup.wav", 1)

Параметры для функций можно объявить таким же образом, как и для подпрограмм.

Практическое задание

Создание функции с параметрами

  1. В меню Файл выберите Создать проект.

  2. В диалоговом окне Создание проекта в области Шаблоны выберите Приложение Windows.

  3. В поле Имя введите parameters и нажмите кнопку ОК.

    Откроется новый проект Windows Forms.

  4. С Панели элементов перетащите на форму два элемента управления Надпись.

  5. Из панели элементов перетащите в форму элемент управления Button.

  6. Дважды щелкните элемент управления Button, чтобы открыть редактор кода.

  7. Сразу после строки End Sub обработчика событий Button1_Click добавьте следующую процедуру:

    Function AddTwoNumbers(ByVal N1 As Integer, ByVal N2 As Integer) _
      As Integer
      Return N1 + N2
    End Function
    
  8. В процедуру Button1_Click добавьте следующий код:

    Dim aNumber As Integer = CInt(Textbox1.Text)
    Dim bNumber As Integer = CInt(Textbox2.Text)
    MsgBox(AddTwoNumbers(aNumber, bNumber))
    

    Этот код объявляет два целых числа и преобразует текст в двух текстовых полях к целочисленным значениям. Затем он передает эти значения функции AddTwoNumbers и выводит значение, возвращаемое в окне сообщения.

  9. Нажмите клавишу F5 для запуска программы.

  10. Введите число в каждом текстовом поле и нажмите кнопку. Добавляются два числа, и результат отображается в окне сообщения.

Следующие действия

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

На следующем занятии будет рассказано, как использовать инструкцию For...Next для повторения действий.

Следующее занятие: Повторение действий в программе: использование цикла For... Next

См. также

Задачи

Сравнение. Использование выражений для сравнения значений

Основные понятия

Процедуры в Visual Basic