OberonCore https://forum.oberoncore.ru/ |
|
Об одной задаче из ЕГЭ https://forum.oberoncore.ru/viewtopic.php?f=7&t=476 |
Страница 1 из 10 |
Автор: | Trurl [ Среда, 23 Май, 2007 10:52 ] |
Заголовок сообщения: | Об одной задаче из ЕГЭ |
Задача. Опишите на русском языке или одном из языков программирования алгоритм подсчета числа элементов равных максимальному в числовом массиве из 30 элементов. Код: CONST N=30;
VAR a: ARRAY N OF INTEGER; Num,Max, i: INTEGER; PROCEDURE OtvetNa1ball; BEGIN Max:=a[0]; FOR i := 0 TO N - 1 DO Max := MAX(a[i],Max) END; Num:=0; FOR i := 0 TO N - 1 DO IF a[i]=Max THEN INC(Num) END END END OtvetNa1ball; PROCEDURE OtvetNa2balla; BEGIN Max:=a[0]; Num:=1; FOR i := 1 TO N - 1 DO IF a[i]>Max THEN Max:=a[i]; Num:=1 ELSIF a[i]=Max THEN Num:=Num+1; END END END OtvetNa2balla; Как вы думаете, стоит ли такая экономия на спичках оценки в два раза выше? Я понимаю, если бы речь шла о файлах. |
Автор: | Александр Ильин [ Среда, 23 Май, 2007 11:05 ] |
Заголовок сообщения: | |
Первый вариант даст ответ на единицу меньше правильного в случае, если a[0] = Max(a). Кроме того, в первом цикле там лишняя итерация. В целом, если речь идет об олимпиадном или учебном задании, то дело в принципе, в алгоритме. А второй алгоритм более оптимален. А насчет того, оценивать ли его в два раза выше, то это от задач конкурса зависит и от общего числа подобных заданий. |
Автор: | Trurl [ Среда, 23 Май, 2007 12:14 ] |
Заголовок сообщения: | |
Александр Ильин писал(а): Первый вариант даст ответ на единицу меньше правильного в случае, если a[0] = Max(a). Кроме того, в первом цикле там лишняя итерация. Ну, это просто я ошибся, когда с бейсика переписывал. Исправил, дабы не смущать. Цитата: В целом, если речь идет об олимпиадном или учебном задании, то дело в принципе, в алгоритме. А второй алгоритм более оптимален.
Да, вот как раз о принципе. Второй алгоритм быстрее, можно даже выгадать несколько микросекунд, но зато он хуже структуирован. |
Автор: | Сергей Оборотов [ Среда, 23 Май, 2007 12:57 ] |
Заголовок сообщения: | Re: Об одной задаче из ЕГЭ |
Trurl писал(а): Я понимаю, если бы речь шла о файлах. И совершенно напрасно, по-моему. Весь массив умещается в одном буфере в 128 байт.
|
Автор: | Александр Ильин [ Среда, 23 Май, 2007 13:22 ] |
Заголовок сообщения: | |
Trurl писал(а): Да, вот как раз о принципе. Второй алгоритм быстрее, можно даже выгадать несколько микросекунд, но зато он хуже структуирован.
Хм. О структуре я не подумал... Инерция мышления, однако. Нужно определиться с критериями оценки, а это извечная проблема контролирующего образования (наряду с вопросом "а судьи кто?"). Как известно, множество правильно решающих задачу алгоритмов различается по потреблению ресурсов разного типа. Одни используют больше процессорного времени, другие больше памяти или еще чего-нибудь. Вы добавляете критерий структурированности алгоритма, что предполагает еще один ресурс - время на понимание алгоритма, например, с целью его поддержки и сопровождения. Это, конечно, очень важная характеристика, поскольку большую часть времени программист не пишет, а читает. (Однако, замечу в скобках, что эта характеристика является и наиболее субъективной.) Подбор критериев напрямую зависит от образовательных задач. Чему мы хотим научить, какие алгоритмы изготавливать: быстрые, компактные или понятные. Как отразить этот трехкоординатный вектор на одномерную балльную шкалу? Только явно сформулировав в задании приоритетное направление. При такой формулировке задачи, которая была приведена, и при условии, что контекст ЕГЭ не устанавливает общего идеологического направления ("русский программист пишет быстрые программы!" и т. п.), оба варианта заслуживают одинаковой положительной оценки, поскольку поставленную задачу - выполняют. И вопрос о том, про файлы речь или про числа в памяти, соответственно, ни при чем: четко написано, что "числовой массив". С контекстом ЕГЭ я не знаком, но если брать отдельно взятое задание, то в нем нехватает критериев для оценки, отличной от "0 баллов за невыполненное задание либо 1 балл за выполенное". |
Автор: | Сергей Оборотов [ Среда, 23 Май, 2007 13:48 ] |
Заголовок сообщения: | |
Александр Ильин писал(а): Хм. О структуре я не подумал... Инерция мышления, однако. Вы как будто оправдываетесь. Не стоит. Тем более критерии оценки были ясно заданы ею самой.
|
Автор: | dk [ Среда, 23 Май, 2007 17:06 ] |
Заголовок сообщения: | |
Сильно ли вы удивитесь, если узнаете, что по критериям оценки задачи C2 любое из двух предложенных решений должно оцениваться в 2 балла? В задаче C2 любой верно работающий алгоритм оценивается максимальным баллов вне зависимости от его эффективности. |
Автор: | Александр Ильин [ Среда, 23 Май, 2007 17:25 ] |
Заголовок сообщения: | |
dk писал(а): Сильно ли вы удивитесь, если узнаете, что по критериям оценки задачи C2 любое из двух предложенных решений должно оцениваться в 2 балла?
Я спрошу: "А что такое "С2"?" |
Автор: | dk [ Среда, 23 Май, 2007 17:37 ] |
Заголовок сообщения: | |
С2 - это вторая задача части "C" ЕГЭ по информатике. Приведенная задача как раз задача такого типа, которые даются на позиции C2. |
Автор: | Trurl [ Четверг, 24 Май, 2007 08:37 ] |
Заголовок сообщения: | |
dk писал(а): Сильно ли вы удивитесь, если узнаете, что по критериям оценки задачи C2 любое из двух предложенных решений должно оцениваться в 2 балла? Сильно удивлятся можно только в первые дни знакомства с нашей системой образования. ![]() Но, как выяснилось, эта задача - С3 из позапрошлогоднего демо варианта и там черным по белому написано Цитата: Предложен правильный алгоритм, использующий однократный проход по массиву 2
Составлен правильный алгоритм, не допускающий немедленного обобщения на произвольное число элементов или требующий неоднократного прохода по массиву 1 Задание выполнено неверно 0 |
Автор: | dk [ Четверг, 24 Май, 2007 08:46 ] |
Заголовок сообщения: | |
Это демо-версия 2005 года. С 2006 года поменялась спецификация работы, в частности, задачи такого рода оказались на позиции C2. И критерии оценки по этой задаче изменены так, что оптимальности алгоритма не требуется. Посмотрите демо-версии 2006 и 2007 годов. |
Автор: | Info21 [ Суббота, 26 Май, 2007 11:36 ] |
Заголовок сообщения: | Re: Об одной задаче из ЕГЭ |
Trurl писал(а): Задача. ...
Как вы думаете, стоит ли такая экономия на спичках оценки в два раза выше? Я понимаю, если бы речь шла о файлах. Я бы в данном случае вообще вдвое снижал оценку за оптимизацию, т.к. ухудшается понимабельность. Я и сортировку массива вставками теперь объясняю с двумя циклами: найти место (тупой лин. поиск), вставить (тупой полный проход). Ну и потом как необязательную оптимизацию -- два цикла в один. "Преждевременная оптимизация -- корень большинства проблем." (С) 197* |
Автор: | Сергей Губанов [ Понедельник, 28 Май, 2007 13:53 ] |
Заголовок сообщения: | Re: Об одной задаче из ЕГЭ |
info21 писал(а): ...найти место (тупой лин. поиск)...
Я на собеседовании первым делом прошу написать линейный поиск элемента в массиве. Ещё ни один человек не написал его через WHILE. Далее спрашиваю знакомы ли они с работами Дейкстры? Про монитор Хоара спрашивать уже побаиваюсь, даже его быстрой сортировки не знают. Нужно нанять на работу несколько человек, уже два месяца ищем - ни одного подходящего нет. Однажды даже приходил бывший препод - якобы информатику читал в политехе, выяснилось что не информатику, а язык Си, оказался ещё бестолковее иных претендентов. |
Автор: | Info21 [ Понедельник, 28 Май, 2007 16:40 ] |
Заголовок сообщения: | Re: Об одной задаче из ЕГЭ |
Сергей Губанов писал(а): info21 писал(а): ...найти место (тупой лин. поиск)... Я на собеседовании первым делом прошу написать линейный поиск элемента в массиве. Ещё ни один человек не написал его через WHILE. ... У меня точно такой же опыт: за исключением студентов, пришедших слушать курс во второй раз, никто не пишет. И в СИБИНТЕКе (был случай в филиале) никто не написал... |
Автор: | Vlad [ Понедельник, 28 Май, 2007 18:59 ] |
Заголовок сообщения: | Re: Об одной задаче из ЕГЭ |
info21 писал(а): У меня точно такой же опыт: за исключением студентов, пришедших слушать курс во второй раз, никто не пишет. И в СИБИНТЕКе (был случай в филиале) никто не написал...
И о чем это говорит? Интересно, ибо я тоже никогда не пишу линейный поиск в последовательности через WHILE. |
Автор: | batyrmastyr [ Понедельник, 28 Май, 2007 21:54 ] |
Заголовок сообщения: | Re: Об одной задаче из ЕГЭ |
Vlad писал(а): И о чем это говорит? Интересно, ибо я тоже никогда не пишу линейный поиск в последовательности через WHILE.
О вредных привычках, наверное. Поиск через WHILE проще, универсальнее и, частенько, быстрее. ![]() |
Автор: | Сергей Губанов [ Вторник, 29 Май, 2007 10:37 ] |
Заголовок сообщения: | Re: Об одной задаче из ЕГЭ |
Vlad писал(а): И о чем это говорит? Интересно, ибо я тоже никогда не пишу линейный поиск в последовательности через WHILE.
Это говорит о том, что испытуемый - типичный "народный ополченец" от программирования. Один мой коллега даже прикалывался по этому поводу. Спрашивает: "Вы английский знаете?". Испытуемый: "Да, очень хорошо". Коллега: "А вот и не знаете! Foreach: 'для' каждого элемента выполнить. While: 'пока' не нашли - искать. Поскольку, Вы для поиска использовали foreach, а не while, значит английского Вы не знаете!". Вот запись алгоритма линейного поиска элемента f в массиве a: Код: i := 0;
WHILE (i < LEN(a)) & ~(a[i] = f) DO INC(i) END; IF i < LEN(a) THEN нашли элемент f, его позиция равна i ELSE не нашли END и не надо ничего мудрить. |
Автор: | Vlad [ Вторник, 29 Май, 2007 11:36 ] |
Заголовок сообщения: | Re: Об одной задаче из ЕГЭ |
batyrmastyr писал(а): О вредных привычках, наверное. Поиск через WHILE проще, универсальнее и, частенько, быстрее.
![]() В каком языке? На каком компиляторе? Ужас какой - для "пареподавателя" иметь настолько узкий кругозор и требовать от "обучаемых" того же. И при этом кричать о глубоком кризисе нашего образования. |
Автор: | Vlad [ Вторник, 29 Май, 2007 11:47 ] |
Заголовок сообщения: | Re: Об одной задаче из ЕГЭ |
Сергей Губанов писал(а): Это говорит о том, что испытуемый - типичный "народный ополченец" от программирования. А обоснования? Сергей Губанов писал(а): Поскольку, Вы для поиска использовали foreach, а не while, значит английского Вы не знаете!". Бред полный. У вас там филологией занимаются или программированием? Сергей Губанов писал(а): Вот запись алгоритма линейного поиска элемента f в массиве a: Код: i := 0; WHILE (i < LEN(a)) & ~(a[i] = f) DO INC(i) END; IF i < LEN(a) THEN нашли элемент f, его позиция равна i ELSE не нашли END и не надо ничего мудрить. Ужас какой. Сравни с таким кодом: Код: i = find(a, f);
Где find - аналог стандартной функции практически любого уважающего себя современного ЯВУ (оберон, к несчастью, такую функцию реализовать не позволяет). И знание этой функции надо требовать на собеседовании, чтобы потом не продираться через горы велосипедных циклов, навернутых только ради поиска элемента в последовательности. |
Автор: | PGR [ Вторник, 29 Май, 2007 12:06 ] |
Заголовок сообщения: | Re: Об одной задаче из ЕГЭ |
Vlad писал(а): Где find - аналог стандартной функции практически любого уважающего себя современного ЯВУ (оберон, к несчастью, такую функцию реализовать не позволяет). И знание этой функции надо требовать на собеседовании, чтобы потом не продираться через горы велосипедных циклов, навернутых только ради поиска элемента в последовательности.
Простейший цикл Код: WHILE (i < LEN(a)) & ~(a[i] = f) DO INC(i) END; заменять функцией???
|
Страница 1 из 10 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |