Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




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

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

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

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

 

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

perimetr = 2 * (dlina + shirina)

 

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.




Поделиться с друзьями:


Дата добавления: 2014-12-23; Просмотров: 392; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.