Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Средства языка для работы с числами. (Математические и логические функции).




В языке Лисп как для вызова функций, так и для записи выражения принята единообразная префиксная форма записи, при которой как имя функции или действия, так и сами аргументы записываются внутри скобок:

(f x), (g x y), (h x (g y z)) и т. д.

 

Арифметические действия:

(+ числа) - сложение чисел

(- число числа) - вычитание чисел из числа

(* числа) - умножение чисел

и т. д.

 

_(+ 5 7 4) ð 16

_(- 10 3 4 1) ð 2

_(/ 15 3) ð 5

 

Сравнение чисел:

(= число числа) ð равны (все)

(< число числа) ð меньше (для всех)

(> число числа) ð больше (для всех)

и т. д.

Числовые предикаты:

(ZEROP число) ð проверка на ноль

(MINUSP число) ð проверка на отрицательность

и т. д.

Логические действия:

(NOT объект) ð логическое отрицание

(AND (формы)) ð логическое И

(OR (формы)) ð логическое ИЛИ

 

_(AND (ATOM NIL) (NULL NIL) (EQ NIL NIL)) ð T

_(NOT (NULL NIL)) ð NIL

Кроме приведенных, существует множество других, но не менее полезных функций.

Задание к лабораторной работе.

1. Запишите последовательности вызовов CAR и CDR, выделяющие из приведенных ниже списков символ «а». Упростите эти вызовы с помощью функций C...R.

а) (1 2 3 а 4)

б) (1 2 3 4 а)

в) ((1) (2 3) (а 4))

г) ((1) ((2 3 а) (4)))

д) ((1) ((2 3 а 4)))

е) (1 (2 ((3 4 (5 (6 а))))))

2. Каково значение каждого из следующих выражений:

a) (ATOM (CAR (QUOTE ((1 2) 3 4))));

b) (NULL (CDDR (QUOTE ((5 6) (7 8)))));

c) (EQUAL (CAR (QUOTE ((7)))) (CDR (QUOTE (5 7))));

d) (ZEROP (CADDDR (QUOTE (3 2 1 0))));

3. Проделайте следующие вычисления с помощью интерпретатора Лиспа:

а) 3.234*(45.6+2.43)

б) 55+21.3+1.54*2.5432-32

в) (34-21.5676-43)/(342+32*4.1)

4. Определите значения следующих выражений:

а) ‘(+ 2 (* 3 5))

б) (+ 2 ‘(* 3 5))

в) (+ 2 (’ * 3 5))

г) (+ 2 (* 3 ’5))

д) (quote ‘quote)

е) (quote 6)

 

5.1 Составьте список студентов своей группы

(ФИО ФИО... ФИО)

 

5.2 Для каждого студента

а) с помощью функции LIST составьте следующие списки:

Для самого студента - (дата рождения), (адрес), (средний бал по лекционным занятиям), (средний бал по практическим занятиям), (средний бал по лабораторным работам). Для отца и матери - (ФИО), (дата рождения), (адрес), (место работы).

б) с помощью функций CONS и SETQ объедините полученные списки и присвойте их в виде значений символам, означающим ФИО каждого студента:

ФИО ст. - (((дата рождения ст.) (адрес ст.)((ср. бал(до десятых) по лекционным занятиям) (ср. бал по практическим занятиям) (ср. бал по лабораторным работам))) (((ФИО отца) (дата рождения отца) (адрес) (место работы отца)) ((ФИО матери) (дата рождения матери) (адрес) (место работы матери)))).

 

5.3 Для произвольно выбранных студентов с помощью базовых функций сравните:

а) год рождения;

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

в) выясните, не являются ли они родственниками;

г) выясните, живут ли они с родителями.

 

6.1 Для каждого студента составьте списки свойств

а) оценки по лекциям;

б) оценки по практикам;

в) оценки по лабораторным работам.

6.2 Для произвольно выбранных студентов сравнить свойства.

Вопросы.

1 Перечислите базовые функции.

2 Каковы типы аргументов базовых функций?

3 Какие значения они возвращают?

4 Что такое предикат?

5 Назовите основные отличия предикатов EQ, EQL, EQUAL и =.

6 Назовите отличия функций CONS и LIST.

7 Что такое символ?

8 Различия функций SET, SETQ, SETF?

9 Особенности свойств символов?

 

Лабораторная работа №2.

Тема: Определение функций. Функции ввода-вывода. Вычисления, изменяющие структуру.

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...