Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Sub-процедуры





Глава 7 Процедуры и функции

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

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

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

В Visual Basic имеются несколько типов процедур:

  • Sub-процедуры — не возвращают значение.
  • Function-процедуры (функции-процедуры или просто функции) — возвращают значение.
  • Property-процедуры (процедуры свойств) — задают свойства и устанавливают ссылки на объекты.

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

Sub-процедуры

Sub-процедура — блок кода, который выполняется при вызове процедуры из программного кода или как реакция на появление некоторого события. Деление кода в модуле на Sub-процедуры делает код более понятным и легким для сопровождения.

Синтаксис Sub-процедуры:

Синтаксис

[Private|Public][Static]Sub procedurename ([ arguments ])

[ statements ]

End Sub

Согласно этому синтаксису можно написать очень простую Sub -процедуру:

Private Sub Form_Load()

End Sub

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

Для примера, конечно, следует рассмотреть более полезную процедуру, чем та, которая содержит только заголовок и ключевые слова End Sub. В листинге 7.1 содержится код процедуры, которая формирует из входной переменной xL (тип Long) значение, в котором используются цифры из xL, взятые в обратном порядке. Обычно такие процедуры используются для формирования текстового описания чисел, что часто применяется в документах, связанных с денежными суммами.

Листинг 7.1. Создание и использование Sub-процедуры

1 Sub int_int(xL As Long, xR As Long)

2 'формирование числа xR из цифр числа xL,

3 'взятых в обратном порядке

5 Dim i As Integer, lenx As Integer

6 Dim xrem As Long, xS As String, deli As Long

8 lenx = Len(Trim(Str(xL))) 'количество цифр в xL

9 xrem = xL 'начальное значение остатка

11 For i = 1 To lenx

12 deli = 10 ^ (lenx - i) 'текущий делитель

13 xS = Trim(Str(xrem \ deli)) & xS

14 xrem = xrem Mod deli 'остаток от деления

15 Next

17 xR = Val(xS)

18 End Sub

В строке 1 описывается заголовок процедуры, в котором используются два аргумента: xL и xR. Первый аргумент содержит входное значение — число, быть может, из нескольких цифр. Второй аргумент используется в качестве выходного значения, например, если значение входного аргумента 3456, то значение выходного — 6543. В строках 5–6 описываются рабочие переменные процедуры, которые занимают память только на время работы процедуры. В строке 8 переменной lenx присваивается значение, равное количеству цифр значения аргумента xL: сначала функция Str возвращает строку из цифр аргумента xL, далее функция Trim отсекает от результирующей строки начальные и конечные пробелы, и, наконец, функция Len возвращает длину строки.

Алгоритм процедуры, реализованный операторами строк 9–15, заключается в следующем. В строке 9 переменной xrem присваивается значение входного[1] аргумента xL. В цикле For определяется значение переменной deli как число 10, возведенное в степень, равную количеству цифр текущего значения переменной xrem (строка 12). В строке 13 результат деления xrem на deli без остатка преобразуется в строчный символ и прибавляется слева к строчной переменной xS. В строке 14 производится подготовка к делению без остатка для следующей итерации — в переменную xrem заносится результат от деления по модулю предыдущего значения xrem на deli.

В строке 17 выходному аргументу xR присваивается результат преобразования строчной переменной xS в число, а следующий фрагмент кода вызывает процедуру int_int. Результатом работы этого кода будет присваивание переменной xxS значения 6543.

Dim xxS As Long

xxS = 0

Call int_int(3456, xxS)

Date: 2015-09-02; view: 352; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию