> 1 <

Автор Сообщение

verner

Members


Статус

2 сообщений

Где: Russia
Род занятий:
Возраст:

#7358   2014-04-28 19:13 GMT+3 часа(ов)      
доброго времени суток! в лиспе совсем зеленый, а тут задали такие вот задания:
задания
1) Существует ли в языке Lisp форма, аналогичная оператору GOTO в процедурных языках?
2) В чем различия и сходство понятий «форма» и «функция»?
3) Возможно ли задание форм циклических действий, в которых все действия определяются в заголовке циклической формы? Если да, то приведите примеры.
4) Задан список чисел. Составить программу нахождения суммы, произведения и подсчета количества элементов списка.
5) Задан список чисел. Создать два списка, поместив в первый отрицательные, а во второй – положительные элементы исходного списка.
6) Задан список чисел. Добавить в конец списка новый элемент, при этом не нарушив порядок следования остальных элементов.
7) Квадратная матрица чисел задана списком, в котором каждый элемент представляет собой подсписок, содержащий строку матрицы. Найти сумму, произведение и количество элементов матрицы.
Квадратная матрица чисел задана списком, в котором каждый элемент представляет собой подсписок, содержащий строку матрицы. Найти максимальный, минимальный элементы матрицы.
9) Квадратная матрица чисел задана списком, в котором каждый элемент представляет собой подсписок, содержащий строку матрицы. Найти сумму, произведение и количество диагональных элементов матрицы.
10) Квадратная матрица чисел задана списком, в котором каждый элемент представляет собой подсписок, содержащий строку матрицы. Каждый элемент матрицы разделить на среднее арифметическое значение матрицы.


задачи
1) Дан список целых чисел. Требуется дать описание фрагмента программы, в котором определяется количество нечетных элементов, количество отрицательных четных и количество прочих элементов списка.

2) Дан список символов. Описать фрагмент программы, в котором переменной V присваиваются символы: first, second или third – в зависимости от того, какой символ стоит вначале заданного списка: если e, f или g – то first; a, b или c – то second; во всех остальных случаях – third.

3) Дать описание функции возведения числа в целую степень. Привести пример вызова функции.
4) Задан список чисел. Дать описание функции нахождения суммы элементов списка. Привести пример вызова функции.

5) Дать описание функции возведения числа в целую степень. Привести пример вызова функции. Примечание. При решении использовать форму dotimes.
6) Дать описание функции возведения числа в целую степень. Привести пример вызова функции. Примечание. При решении использовать форму prog.

Препод сам ничерта не знает объяснить не может. Сижу туплю, а спросить не у кого.

skelter

Members


Статус

56 сообщений

Где: ---
Род занятий:
Возраст:

#7360   2014-04-30 19:00 GMT+3 часа(ов)      
У лиспа есть стандарт, который есть онлайн:
http://www.lispworks.com/documentation/lw50/CLHS/Front/Contents.htm
В стандарте следует искать ответы на вопросы.

> 1) Существует ли в языке Lisp форма, аналогичная оператору GOTO в процедурных языках?

Да, go. Метки в лиспе не глобальные, а локальные внутри каждой формы tagbody.

> 2) В чем различия и сходство понятий «форма» и «функция»?

Вопрос типа "чем ворон похож на конторку". Разные вещи.
http://clhs.lisp.se/Body/26_glo_f.htm

function n. 1. an object representing code, which can be called with zero or more arguments, and which produces zero or more values. 2. an object of type function.

function form n. a form that is a list and that has a first element which is the name of a function to be called on arguments which are the result of evaluating subsequent elements of the function form.

form n. 1. any object meant to be evaluated. 2. a symbol, a compound form, or a self-evaluating object. 3. (for an operator, as in ``<<operator>> form'') a compound form having that operator as its first element. ``A quote form is a constant form.''

Грубо говоря, разница как между числами и цифрами. Функция где-то внутри лиспа есть, можно вызывать её и пр. Форма - кусок кода, который вычисляется (evaluate - вычислять). В частности, кусок кода может представлять собой вызов функции, это называется function form, функциональная форма: такая форма - это список, на первом месте стоит имя функции, дальше - аргументы. То есть функциональная форма - это лисповый список (почему в программах скобки? потому что она состоит из списков). А функция - это не список, конечно, функция - это функция. Кроме функциональных форм бывают и всякие другие, когда на первом месте не функция: например, if или do. Функциональные формы вычисляются по одному и тому же правилу: определяется функция, связанная с первым символом, вычисляются по очереди аргументы, потом функция применяется к аргументам. Другие типы форм могут как угодно вычисляться: например, if заведомо вычисляет только одну из then-else веток, а do вычисляет некоторые формы многократно (за счёт чего получается цикл). Чем интересен лисп, что правила вычисления форм может задавать пользователь, то есть можно создавать синтаксис по своему вкусу.

> 3) Возможно ли задание форм циклических действий, в которых все действия определяются в заголовке циклической формы? Если да, то приведите примеры.

Это я вообще не понял, особенно "заголовок циклической формы". Заголовок - это header? Такого в лиспе вообще не бывает. А так-то в лиспе всё возможно.

Задачи могу совместно с вами порешать, или подождите, пока ещё кто решит.
> 1 <


Онлайн :

0 пользователь(ей), 41 гость(ей) :