[Закрыть]
 
popoff.donetsk.ua
Видимо, пустыня для того и существует, чтобы люди радовались деревьям. /П.Коэльо/
Начало | Новости | Статьи | Форум | Опросы | Карта сайта | Обо мне
popoff.donetsk.ua - Форум - Функциональное и логическое программирование - Ответы на некоторые вопросы из тестов

Ответы на некоторые вопросы из тестов

форумы popoff.donetsk.ua
Страницы: [1]
<< Новый  |  Старый >>  |  Ответ не возможен

Внимание! Этот топик устарел. Пожалуйста, создайте новый топик, чтобы задать интересующий Вас вопрос.

Автор Сообщение
Гость Я url://forum.message:2169
Ответы на некоторые вопросы из тестов
Я

Здравствуйте, Юрий Васильевич.
Тут вот в связи с модульными тестами появилась кучка вопросов... было бы неплохо услышать на них ответ:
1. способы задания функции в математике
Ответы:
в виде множ-ва пар;
в виде ряда равенств
очевидны - они приводятся и в лекции Дацун.
В электронных лекциях с сайта приводится также вариант:
в виде таблицы (?)
Какой ответ верен?
Тем более, что в принципе в математике все способы допустимы ;)

2. 8 Лишние этапы программирования с помощью ф-й
каждая ф-я отлаживается через дебагер
ф-я воспринимает входные данные и вырабатывает выходные (?)
Я прав?

3.Запишите тип функции func,вычисляющей значение sin(x)*exp(z).
R X R -> R (?)
Не совсем ясно, в каком виде вводить тип функции - в таком? И правильный ли это ответ?

4. В СФЯ передача аргументов функции в точке её вызова называется
формальная передача аргументов (?)

5. Определите функцию pow3 для нахождения куба x, используя оператор умножения и известную функцию sqr
(pow3 (x) (* x (sqr x)))
Это кому известную? И где её описание? Да и начерта она нужна. когда есть умножение? Ну ладно... ответ-то хоть такой?

6. Объясните задачу «выбор подфункций» в функциональном программировании
а) Чтобы сделать хорошо структурированную функциональную программу, пытаются непрерывно улучшить то, что уже имеется - это вроде похоже на ответ, но вообще-то и Дацун и методичка дают это лишь как рекомендацию, да и не похожа она на это задачу
б) На мой взгляд, задачу как раз более характеризует вторая часть другого ответа:
Подфункция должна быть строгой (или почти строгой) для наглядности и удобочитаемости. Более сложные функции должны быть построены на основе простых подфункций (?)
И что из этого правильный ответ?

7. «Хвостовая рекурсия» - это вид рекурсии...
рылся, рылся в Интернете и вроде больше всего подходит
при котором вызов функции идёт после её тела, или условие завершения стоит после вызова функции

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

Это сообщение было отредактировано гостем, оставившим это сообщение 14.10.07 15:09.
popoff
Yuri
Июл, 2004
Сообщений: 923
popoff url://forum.message:2170

Здравствуйте, Антон!

Хорошим тоном общения в Интернете является представление своей личности. Если Вы общаетесь с преподавателем, то по правилам хорошего тона нужно говорить своё имя и фамилию. И хотя мне не составило труда узнать Ваше имя и фамилию, всё же Вы не должны заставлять меня использовать эвристические методы определения личности собеседника.

1. Способы задания функции в математике: в виде множества пар, в виде ряда равенств, в виде таблицы, в виде правила (формулы).

2. Этапы программирования на СФЯ:
- определение набора базовых функций для данной предметной области
- создание на основе имеющихся базовых функций более сложных
- создание иерархии определений функций на основе ранее созданных
- применение определённых функций к фактическим значениям аргументов

3. Тип функции func(x,z)=sin(x)*exp(z) следует записывать так:
func : R X R -> R

4. В СФЯ передача аргументов функции в точке её вызова называется применением функции к фактическим значениям аргументов. Ответ, который Вы должны были написать на этот вопрос теста такой: «применение», «применением» или «применением функции».

5. Определение функции возведения в куб, если известна функция возведения в квадрат на ЛИСПе:
(defun pow3 (x) (* x (sqr x)))
На СФЯ:
pow3(x)=sqr(x)*x
Как видите, чтобы определить эту функцию, не требуется знать описание функции sqr, а только понимать, что sqr - это возведение в квадрат.

6. Когда говорят о задаче выбора подфункций в функциональном программировании, имеют в виду, что для получения хорошо структурированной эффективной программы необходимо улучшать то, что есть.
Построение более сложных функций на основе более простых относится к этапам программирования на СФЯ, но не к задаче выбора подфункций.
В СФЯ функции не могут быть почти строгими. В СФЯ - только строгие функции.

7.

«Хвостовая рекурсия» - это вид рекурсии...
рылся, рылся в Интернете и вроде больше всего подходит
при котором вызов функции идёт после её тела, или условие завершения стоит после вызова функции

Яфорумы popoff.donetsk.ua

Это, вероятно, Вы нашли в списке неправильных ответов :)
Понятно же, что если вызов функции стоит ПОСЛЕ её тела, то есть вот так:
(defun recursive (x) (* x x))
(recursive 2)
то это не рекурсивная функции.

Понятно также, что если поставить условие завершения рекурсии после вызова функции, то есть примерно как-то так (напишу на Си, чтобы Вам было яснее):

<?code int sum(int n) {   sum(n-1);   if(n<0)     return 0;   else     return n+sum(n-1); } ?>

то функция зависнет. И как Вы там ни крутите, если сначала вызов, потом - условие завершения, то функция ВСЕГДА зависнет.

Правильный ответ такой: Хвостовая рекрусия - это вид рекурсии, при котором на текущей итерации обрабатывается голова списка, а хвост списка передаётся аргументом при рекурсивном вызове.

вот такие сложные вопросы нам задают.

Яфорумы popoff.donetsk.ua

Жалобы на «сложность» вопросов, Антон, Вам не к лицу и выявляют в первую очередь Вашу борьбу за оценку, а вовсе не борьбу за знания и понимание. Борьба за оценку - не достойная цель.

________________________________
Если не будет деревьев — нам нечем будет дышать, если вода загрязнится — нам нечего будет пить.
Гость Фёдоров Антон url://forum.message:2179
Фёдоров Антон

Здравствуйте, Юрий Васильевич.
Во-первых, хочу Вас поздравить с успешной защитой! Мы всей группой рады за Вас.
А во-вторых я хочу извиниться, но очень бы хотелось получить ответы на некоторые вопросы - перерыл уже множество литературы, а ясности как-то нет...
1 Понятие «S-выражение» - это:
a. символьное выражение, состоящее из символов, цифр, специальных символов и заключенное в круглые скобки.[спецсимволы входят в класс символьных атомов]
b. список атомов или атом [V]
d. смесь символьных и числовых атомов в скобках [V]
e. выражение, состоящее из неделимых выражений (атомов), обрамленных в круглые скобки. В свою очередь атом – это символ или число [V]
g. универсальная структура [!!! символьных ???] данных в языке LISP.
h. форма представления данных, которая является одновременно очень простой и общей, и которая определяется как класс S-выражений, образующих область определения функциональных программ. [V]
i. выражение, состоящее из числовых и символьных атомов. Также S-выражение может содержать сами S-выражения, представленных в виде списков. [V]
j. форма представления данных в LISP, образующая область определения функциональных программ
Цитата из конспекта: … ввел спецформу данных для LISP: s-выраж.; эта форма явл. предельно простой и одновременно весьма общей;… Свойства s-выраж.:
 + использование круглых скобок (если изменить их расположение, изменится смысл выраж. и его структура).
 + состоит из атомов, различ. атомы симв. и числовые
S-выраж. может состоять из отдельных атомов или их смеси
Формы s-выраж.:
 + один атом
 + список атомов – это послед. атомов в круглых скобках
 + список с подсписками
Правило построения:
 + атом есть s-выраж.
 + послед. в скобках
По логике все эти ответы похожи на правильные, но не может же это быть так???

2 Арифметические операции в LISP имеют обозначения, соответствующие операциям в арифметике. Это так? На практике известно, что это действительно так - + - сложение и т.д. Но, возможно, здесь есть какой-то подвох?
Ведь тогда верны практически все ответы:
a. Все арифметические действия записываются в префиксной форме. Например, (+ (* 1 2 ) 3), что означает 1*2+3 = 5. Количество аргументов может превышать два.
? b. Арифметические операции в LISP имеют обозначения, соответствующие операциям в арифметике. Например, (+ 1 2 ) возвращает 3, (* 2 2 ) возвращает 4. [ЦК]
c. Арифметические функции в LISP префиксные, аргументы записываются через пробел, без запятой. Например, (+ 2 3 ) возвращает 5.
? d. Арифметические операции в LISP имеют обозначения, соответствующие операциям в арифметике. Они могут применяться к разному количеству аргументов. Например, (+ 1 2 3 ) выдаст 6, (* 2 2 2) возвращает 8. [ЦК]
? f. Встроенные функции LISP, соответствующие арифметическим операциям, обозначаются знаками этих операций. Все эти функции имеют произвольное количество аргументов. Например, (- 40 10 5) возвращает 25, (/ 12 3) возвращает 4.

3 Функция SETQ дает имя (символьное) S-выражению, одновременно блокируя вычисление этого имени: (SETQ имя S-выражение).
Блокируется вычисление и имени или только S-выражения? (имя-то не выполняется)

4 Определите последовательность действий программиста при решении задачи выбора подфункций в функциональном программировании
1) определить базовые функции предметной области
2) создать иерархию определения функций
3) применить функции к своим аргументам
4) улучшать функциональную программу путем перераспределения ролей между функциями
(в тесте 4 ответа, но нет ответа Создать функции на основе базовых... тогда ответ такой? Или же верны ответы:
- Повышать эффективность работы программы при различных наборах входных данных
- Убедиться в работоспособности функциональной программы
В принципе выбор подфункций - создание проги (первые три ответа) и улучшение того, что имеем - 4-й ответ...
4.1 Немного модифицированное задание определяет действия программиста при проектировании функциональной программы
Опять же из стандартных только два ответа
определение функции на функциональном языке
Применение функции к различным наборам аргументов
а ответов надо дать 5
Остальные варианты:
Составление таблицы поведения функции при различных значениях аргументов
Рассмотрение всех возможных вариантов поведения фунцкии и определение вида формируемых результатов
Документирование процесса проектирования
Модификация определения функции с целью повышения эффективности ее работы
Хм... к сожалению, такого я не нашел ни в конспекте, ни в электронных вариантах, ни в Интернете...

5 Что такое условие завершения рекурсии?
a. Это условие, при котором рекурсия начинает обратный ход
b. Это условие, при котором прерывается прямой ход рекурсии и начинается формирование результата
d. Это условие, при котором прерываются рекурсивные вызовы
e. Это условие, при котором прерывается прямой ход рекурсии и начинается формирование результата на ее обратном ходе
В принципе, на мой взгляд, все ответы похожи на правильные, но надо дать один ответ, и наиболее верным является, на мой взгляд, a.

6 Является ли eval применяющим функционалом? На этот счет есть разные мнения...
Встроенных применяющих функционалов в ЛИСПе всего два - funcall и apply?

7 Установите соответствие между программой на ЛИСПе и используемыми возможностями
- (defun f (lambda (x) (funcall '+ x x))) – обычная функция, короткая форма
- (defun f (lambda (x) (funcall x '+ x))) – вызов неизвестной функции (?)
- (defun f (lambda (x) (list lambda '(x) (list '+ 'x x)))) – функция высших порядков (выводит в результате функцию)
- (defun f (x) (lambda (x) (funcall '+ x x))) – обычная функция, длинная форма
- (defun f (x) (list funcall x '+ x)) – функционал, с функциональным аргументом (впринципе, это не функционал, но я уже запутался... помогите, пожалуйста)
- Такого не бывает – функционал, без функционального аргумента
На самом деле нигде не описывается, что такое короткая/длинная форма функции :(

8 На каком языке программирования можно написать самый короткий интерпретатор ЛИСПа?
- ЛИСП (?) Слышал, занимает 15 строчек, но самый ли короткий это?
- на функциях высших порядков (в ЛИСП-интерпретаторе используется ФВП eval)
- на СФЯ (ЛИСП как бы СФЯ)
Так?

9 Что такое «функция высших порядков»?
Конспект: Функции высших порядков - это функции, которые используют другие функции в качестве аргументов или возвращает функцию в качестве результата.
a. Функционал, который может возвращать функцию как результат
У Вас на сайте я встретил этот ответ, помеченный как: «Нестандартный правильный ответ», так правильный или нет? :)
b. Функция, которая может возвращать функцию как результат
c. Функция, которая использует в качестве аргумента функции для возврата результата
По сути-то вроде верно...
d. Функция, использующая в качестве возвращаемого результата другую функцию

Ещё раз извиняюсь, что отвлекаю Вас, но если Вам не трудно, очень бы хотелось узнать ответы - уже скорее из спортивного интереса.
Заранее Спасибо!

Это сообщение было отредактировано гостем, оставившим это сообщение 19.10.07 22:51.
Гость Фёдоров Антон url://forum.message:2182
Фёдоров Антон

Вопросы 6-9 уже отпали... Но хотелось бы получить ответы на первые 5 вопросов

Гость Фёдоров Антон url://forum.message:2191
Фёдоров Антон

Здравствуйте, Юрий Васильевич.
Хотелось бы все таки услышать ответы на эти вопросы.
Также хотелось бы Вас спросить о вопросе:

Укажите этапы программирования на языке Пролог:
h. объявление фактов об объектах и отношениях между ними
i. объявление правил об объектах и отношениях между ними
e. формулирование вопросов об объектах и отношениях между ними
- несомненно таков ответ и в таком порядке, НО
в тестах по лекциям я отвечал на ТОЧНО такой же ответ (я проверил), и там высветило 0,6 баллов. Верными оказались также ответы:
b. объявление базовых функций-утверждений (фактов)
d. создание иерархии более сложных функций (правил) на базе имеющихся фактов
Как это понимать? В тестах по лекциям неверные ответы?

Это сообщение было отредактировано гостем, оставившим это сообщение 03.11.07 15:52.

Внимание! Этот топик устарел. Пожалуйста, создайте новый топик, чтобы задать интересующий Вас вопрос.

Страницы: [1]
<< Новый  |  Старый >>  |  Ответ не возможен
Вход
Поиск[?]:
Гинеколог, стоматолог, психотерапевт в Донецке