КАТЕГОРИИ: Архитектура-(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) |
Краткие теоретические сведения. Написание функций пользователя на Лиспе
Написание функций пользователя на Лиспе Лабораторная работа № 2 Цель работы: изучение правил создания и вызова пользовательских функций на Лиспе. Определение функций Функцию можно определить самим и использовать как встроенную. Для определения функции необходимо: 1) дать имя функции; 2) определить параметры функции; 3) определить действия, выполняемые функцией. Для задания новых функций в Лиспе используется специальная форма defun: (defun < имя функции > < параметры > < тело функции >) Имя функции должно являться символом. Параметры представляют собой список аргументов, разделенных пробелами. Пример 1. Написать функцию, складывающую сумму двух чисел. (defun sum (a b) (+ a b)) Ответ интерпретатора: sum В рассмотренном примере: sum – имя функции, a и b – ее параметры, (+ a b) – тело функции. Вызов функции sum для параметров 1 и 2 осуществляется следующим образом: (sum 1 2) Ответ интерпретатора: 3 Пример 2. Вызвать функцию sum для вычисления суммы чисел x и y. (setq x 4) Ответ интерпретатора: 4 (setq y 5) Ответ интерпретатора: 5 (sum x y) Ответ интерпретатора: 9 Передача параметров. Глобальные и локальные переменные В Лиспе передача параметров производится в функцию по значению, т.е. формальный параметр в функции связывается с тем же значением, что и значение фактического параметра. Изменение значения формального параметра не оказывает влияния на значения фактических параметров. После вычисления функции, созданные на это время связи параметров ликвидируются и происходит возврат к тому состоянию, которое было до вызова функции. Параметры функции являются локальными переменными, и имеют значение только внутри функции. Пример 3. (defun f (x) (setq x 'new)) Ответ интерпретатора: f (setq x ‘old) Ответ интерпретатора: old x Ответ интерпретатора: old (f x) Ответ интерпретатора: new Пример 4. (defun double (num) (* num 2) Ответ интерпретатора: double (setq num 5) Ответ интерпретатора: 5 (double 2) Ответ интерпретатора: 4 num Ответ интерпретатора: 5 Свободные переменные Если в теле функции есть переменные, не входящие в число ее формальных параметров - они называются свободными. Значения свободных переменных остается в силе после ее выполнения. Пример 5. (defun f1 (y) (setq x 3)) Ответ интерпретатора: f1 (f1 5) Ответ интерпретатора: 3 x Ответ интерпретатора: 3 Пример выполнения задания Вычислить зависимость на основе функции . Значение переменной x задать при помощи SET или SETQ. Программа на Лиспе приняла вид: (defun cub(a) (* a a a)) Ответ интерпретатора: defun (setq x 1) Ответ интерпретатора: 1 (setq y (/ (+ (cub x) (cub (+ x 1))) (cub (+ 1 (* 2 x) (* x x))))) Ответ интерпретатора: 9/64 y Ответ интерпретатора: 9/64 Варианты заданий Вычислить заданную зависимость на основе функции . Функция должна быть определена с помощью оператора defun.
Пример операции с вещественными числами: (setq x 0.2) Ответ интерпретатора: 0.2 Пример операции вычисления синуса: (sin 1.5) Ответ интерпретатора: 0.997495 Контрольные вопросы 1. Форма defun определения функции пользователя. 2. Передача параметров в функцию. 3. Свободные переменные. 4. По заданию преподавателя написать функцию и вызвать ее для вычисления требуемого выражения.
Дата добавления: 2015-06-28; Просмотров: 364; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |