Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Глава 17. Функции. Параметры процедур и функций

Массивы элементов управления | Пользовательский тип данных | Private Type типПерсонаж | Рамка (Frame) | Флажок (CheckBox) | Переключатель(OptionButton) | Slider, ProgressBar | Список (ListBox) и поле со списком (ComboBox) | Знакомство с другими элементами управления | Глава 16. Строки, файлы, обработка ошибок |


Читайте также:
  1. a. Дисметаболические и токсико-метаболические нарушения функций ЦНС
  2. II. Порядок выплаты ежемесячной компенсации на оплату проезда до места проведения процедуры гемодиализа инвалидам, находящимся на постоянном диализном лечении.
  3. VIP-пакет Параметры с 01 апреля 2012 года
  4. X. ПРОЦЕДУРА СУДЕЙСТВА
  5. XI. ПРОЦЕДУРА СУДЕЙСТВА
  6. Абстрактные базовые классы и чисто виртуальные функции.
  7. Административные процедуры как форма реализации компетенции органов внутренних дел.

Процедуры и функции с параметрами - важное средство сделать вашу программу надежнее и понятнее.

Функции. Параметры функций

Мы с вами уже сталкивались со стандартными функциями. Например, выражение 10+Abs(-20) имеет значение 30, так как функция Abs(-20) обозначает абсолютную величину числа -20. Стандартная функция - это некая скрытая программа, которая принимает свои параметры, указанные в скобках, в качестве исходных данных, что-то делает с ними и в результате получает одну величину, которая и является значением функции. Множество других примеров функций вы найдете в 11.1, 16.1 и по всей книге.

Если вам недостаточно стандартных функций, вы можете создавать собственные функции пользователя:

 

Задача: Предположим, вам часто приходится вычислять периметры прямоугольников. Тогда вам было бы удобно иметь функцию вида perimetr(10,4), которая имела бы значение периметра прямоугольника со сторонами 10 и 4. Рассмотрим, как это делается, на примере программы вычисления суммарного периметра трех прямоугольников:

Private Function perimetr(dlina As Integer, shirina As Integer) As Long

perimetr = 2 * (dlina + shirina)

End Function

 

Private Sub Command1_Click()

Debug.Print perimetr(10, 4) + perimetr(20, 30) + perimetr(3, 8)

End Sub

Здесь щелчком по кнопке Command1 мы запускаем вычисление суммы периметров трех прямоугольников: 10*4, 20*30 и 3*8. А для того, чтобы узнать, как вычислять perimetr, компьютер заглядывает в определение функции, выделенное мной полужирным шрифтом.

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

· В заголовке функции после скобок с параметрами должен быть указан тип функции (у нас это Long).

· Внутри определения функции ей хотя бы раз должно быть присвоено какое-нибудь значение, как если бы это была не функция, а обычная переменная (у нас этим занимается оператор perimetr=2*(dlina+shirina)).

Обращение к функции также отличается от обращения к процедуре. Если обращение к процедуре - самостоятельный оператор (Portos, Aramis из 10.2, Рисуем_мой_значок 100, 200, vbBlue из 10.5), то обращение к функции - это обычно составная часть выражения (10+Abs(-20), Debug.Print perimetr(10,4) + perimetr(20, 30)).

 

Рассмотрим другой пример функции:

Задача: Напишите функцию Ответ, которая бы в ответ на вопрос человека "Какое сегодня число?" принимала значение правильной даты, а ответом на любой другой вопрос должно служить "Не знаю".

Вот программа:

Dim q As String

 

Private Function Ответ(Вопрос As String) As String

If Вопрос = "Какое сегодня число?" Then Ответ = Date Else Ответ = "Не знаю"

End Function

 

Private Sub Command1_Click()

q = InputBox("Задайте вопрос")

Debug.Print Ответ(q)

End Sub

Здесь щелчком по кнопке Command1 мы вызываем появление на экране окна InputBox с предложением задать вопрос. Введенный нами вопрос запоминается в переменной q. Следующая строка (Debug.Print Ответ(q)) вызывает к жизни нашу функцию. При этом компьютер, выполняя тело функции, вместо параметра Вопрос работает с переменной q, так как именно она была указана в обращении к функции. Получается очень удобно: когда мы пишем функцию, нам не нужно заботиться о том, какие имена переменных будут использованы при обращении к функции, мы просто даем параметру любое пришедшее в голову имя. И наоборот, когда мы пишем обращение к функции, нам не нужно заботиться о том, какие имена имеют параметры в заголовке функции.

 

Задание 128: Напишите функцию, вычисляющую любое число Фибоначчи. Например, fib(8) - это 8-е число Фибоначчи.

Указание: Если будете использовать массив, то дайте ему имя, отличающееся от имени функции, например, f.


Дата добавления: 2015-11-16; просмотров: 69 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Функция Shell| Локальные переменные

mybiblioteka.su - 2015-2024 год. (0.006 сек.)