OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Суббота, 20 Апрель, 2024 08:06

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 197 ]  На страницу 1, 2, 3, 4, 5 ... 10  След.
Автор Сообщение
 Заголовок сообщения: Об одной задаче из ЕГЭ
СообщениеДобавлено: Среда, 23 Май, 2007 10:52 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
Задача.
Опишите на русском языке или одном из языков программирования алгоритм подсчета числа элементов равных максимальному в числовом массиве из 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;

Как вы думаете, стоит ли такая экономия на спичках оценки в два раза выше? Я понимаю, если бы речь шла о файлах.


Последний раз редактировалось Trurl Среда, 23 Май, 2007 12:01, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 23 Май, 2007 11:05 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Первый вариант даст ответ на единицу меньше правильного в случае, если a[0] = Max(a). Кроме того, в первом цикле там лишняя итерация.

В целом, если речь идет об олимпиадном или учебном задании, то дело в принципе, в алгоритме. А второй алгоритм более оптимален. А насчет того, оценивать ли его в два раза выше, то это от задач конкурса зависит и от общего числа подобных заданий.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 23 Май, 2007 12:14 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
Александр Ильин писал(а):
Первый вариант даст ответ на единицу меньше правильного в случае, если a[0] = Max(a). Кроме того, в первом цикле там лишняя итерация.

Ну, это просто я ошибся, когда с бейсика переписывал. Исправил, дабы не смущать.

Цитата:
В целом, если речь идет об олимпиадном или учебном задании, то дело в принципе, в алгоритме. А второй алгоритм более оптимален.

Да, вот как раз о принципе. Второй алгоритм быстрее, можно даже выгадать несколько микросекунд, но зато он хуже структуирован.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Об одной задаче из ЕГЭ
СообщениеДобавлено: Среда, 23 Май, 2007 12:57 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1030
Trurl писал(а):
Я понимаю, если бы речь шла о файлах.
И совершенно напрасно, по-моему. Весь массив умещается в одном буфере в 128 байт.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 23 Май, 2007 13:22 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Trurl писал(а):
Да, вот как раз о принципе. Второй алгоритм быстрее, можно даже выгадать несколько микросекунд, но зато он хуже структуирован.

Хм. О структуре я не подумал... Инерция мышления, однако.

Нужно определиться с критериями оценки, а это извечная проблема контролирующего образования (наряду с вопросом "а судьи кто?"). Как известно, множество правильно решающих задачу алгоритмов различается по потреблению ресурсов разного типа. Одни используют больше процессорного времени, другие больше памяти или еще чего-нибудь. Вы добавляете критерий структурированности алгоритма, что предполагает еще один ресурс - время на понимание алгоритма, например, с целью его поддержки и сопровождения. Это, конечно, очень важная характеристика, поскольку большую часть времени программист не пишет, а читает. (Однако, замечу в скобках, что эта характеристика является и наиболее субъективной.)

Подбор критериев напрямую зависит от образовательных задач. Чему мы хотим научить, какие алгоритмы изготавливать: быстрые, компактные или понятные. Как отразить этот трехкоординатный вектор на одномерную балльную шкалу? Только явно сформулировав в задании приоритетное направление. При такой формулировке задачи, которая была приведена, и при условии, что контекст ЕГЭ не устанавливает общего идеологического направления ("русский программист пишет быстрые программы!" и т. п.), оба варианта заслуживают одинаковой положительной оценки, поскольку поставленную задачу - выполняют. И вопрос о том, про файлы речь или про числа в памяти, соответственно, ни при чем: четко написано, что "числовой массив".

С контекстом ЕГЭ я не знаком, но если брать отдельно взятое задание, то в нем нехватает критериев для оценки, отличной от "0 баллов за невыполненное задание либо 1 балл за выполенное".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 23 Май, 2007 13:48 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1030
Александр Ильин писал(а):
Хм. О структуре я не подумал... Инерция мышления, однако.
Вы как будто оправдываетесь. Не стоит. Тем более критерии оценки были ясно заданы ею самой.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 23 Май, 2007 17:06 

Зарегистрирован: Понедельник, 14 Май, 2007 19:33
Сообщения: 4
Сильно ли вы удивитесь, если узнаете, что по критериям оценки задачи C2 любое из двух предложенных решений должно оцениваться в 2 балла?

В задаче C2 любой верно работающий алгоритм оценивается максимальным баллов вне зависимости от его эффективности.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 23 Май, 2007 17:25 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
dk писал(а):
Сильно ли вы удивитесь, если узнаете, что по критериям оценки задачи C2 любое из двух предложенных решений должно оцениваться в 2 балла?

Я спрошу: "А что такое "С2"?"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 23 Май, 2007 17:37 

Зарегистрирован: Понедельник, 14 Май, 2007 19:33
Сообщения: 4
С2 - это вторая задача части "C" ЕГЭ по информатике.
Приведенная задача как раз задача такого типа, которые даются на позиции C2.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 24 Май, 2007 08:37 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
dk писал(а):
Сильно ли вы удивитесь, если узнаете, что по критериям оценки задачи C2 любое из двух предложенных решений должно оцениваться в 2 балла?

Сильно удивлятся можно только в первые дни знакомства с нашей системой образования. :)
Но, как выяснилось, эта задача - С3 из позапрошлогоднего демо варианта и там черным по белому написано

Цитата:
Предложен правильный алгоритм, использующий однократный проход по массиву 2

Составлен правильный алгоритм, не допускающий немедленного обобщения на произвольное число элементов или требующий неоднократного прохода по массиву 1

Задание выполнено неверно 0


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 24 Май, 2007 08:46 

Зарегистрирован: Понедельник, 14 Май, 2007 19:33
Сообщения: 4
Это демо-версия 2005 года.
С 2006 года поменялась спецификация работы, в частности, задачи такого рода оказались на позиции C2. И критерии оценки по этой задаче изменены так, что оптимальности алгоритма не требуется.
Посмотрите демо-версии 2006 и 2007 годов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Об одной задаче из ЕГЭ
СообщениеДобавлено: Суббота, 26 Май, 2007 11:36 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Trurl писал(а):
Задача. ...
Как вы думаете, стоит ли такая экономия на спичках оценки в два раза выше? Я понимаю, если бы речь шла о файлах.


Я бы в данном случае вообще вдвое снижал оценку за оптимизацию, т.к. ухудшается понимабельность.

Я и сортировку массива вставками теперь объясняю с двумя циклами: найти место (тупой лин. поиск), вставить (тупой полный проход). Ну и потом как необязательную оптимизацию -- два цикла в один.

"Преждевременная оптимизация -- корень большинства проблем." (С) 197*


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Об одной задаче из ЕГЭ
СообщениеДобавлено: Понедельник, 28 Май, 2007 13:53 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
info21 писал(а):
...найти место (тупой лин. поиск)...


Я на собеседовании первым делом прошу написать линейный поиск элемента в массиве. Ещё ни один человек не написал его через WHILE. Далее спрашиваю знакомы ли они с работами Дейкстры? Про монитор Хоара спрашивать уже побаиваюсь, даже его быстрой сортировки не знают. Нужно нанять на работу несколько человек, уже два месяца ищем - ни одного подходящего нет. Однажды даже приходил бывший препод - якобы информатику читал в политехе, выяснилось что не информатику, а язык Си, оказался ещё бестолковее иных претендентов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Об одной задаче из ЕГЭ
СообщениеДобавлено: Понедельник, 28 Май, 2007 16:40 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Сергей Губанов писал(а):
info21 писал(а):
...найти место (тупой лин. поиск)...


Я на собеседовании первым делом прошу написать линейный поиск элемента в массиве. Ещё ни один человек не написал его через WHILE. ...


У меня точно такой же опыт: за исключением студентов, пришедших слушать курс во второй раз, никто не пишет. И в СИБИНТЕКе (был случай в филиале) никто не написал...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Об одной задаче из ЕГЭ
СообщениеДобавлено: Понедельник, 28 Май, 2007 18:59 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
info21 писал(а):
У меня точно такой же опыт: за исключением студентов, пришедших слушать курс во второй раз, никто не пишет. И в СИБИНТЕКе (был случай в филиале) никто не написал...


И о чем это говорит? Интересно, ибо я тоже никогда не пишу линейный поиск в последовательности через WHILE.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Об одной задаче из ЕГЭ
СообщениеДобавлено: Понедельник, 28 Май, 2007 21:54 

Зарегистрирован: Среда, 28 Февраль, 2007 00:08
Сообщения: 142
Откуда: Нижний Новгород
Vlad писал(а):
И о чем это говорит? Интересно, ибо я тоже никогда не пишу линейный поиск в последовательности через WHILE.

О вредных привычках, наверное. Поиск через WHILE проще, универсальнее и, частенько, быстрее. :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Об одной задаче из ЕГЭ
СообщениеДобавлено: Вторник, 29 Май, 2007 10:37 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
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

и не надо ничего мудрить.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Об одной задаче из ЕГЭ
СообщениеДобавлено: Вторник, 29 Май, 2007 11:36 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
batyrmastyr писал(а):
О вредных привычках, наверное. Поиск через WHILE проще, универсальнее и, частенько, быстрее. :)


В каком языке? На каком компиляторе? Ужас какой - для "пареподавателя" иметь настолько узкий кругозор и требовать от "обучаемых" того же. И при этом кричать о глубоком кризисе нашего образования.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Об одной задаче из ЕГЭ
СообщениеДобавлено: Вторник, 29 Май, 2007 11:47 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Сергей Губанов писал(а):
Это говорит о том, что испытуемый - типичный "народный ополченец" от программирования.


А обоснования?

Сергей Губанов писал(а):
Поскольку, Вы для поиска использовали 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 - аналог стандартной функции практически любого уважающего себя современного ЯВУ (оберон, к несчастью, такую функцию реализовать не позволяет). И знание этой функции надо требовать на собеседовании, чтобы потом не продираться через горы велосипедных циклов, навернутых только ради поиска элемента в последовательности.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Об одной задаче из ЕГЭ
СообщениеДобавлено: Вторник, 29 Май, 2007 12:06 

Зарегистрирован: Понедельник, 29 Январь, 2007 19:00
Сообщения: 370
Откуда: Украина, Запорожье
Vlad писал(а):
Где find - аналог стандартной функции практически любого уважающего себя современного ЯВУ (оберон, к несчастью, такую функцию реализовать не позволяет). И знание этой функции надо требовать на собеседовании, чтобы потом не продираться через горы велосипедных циклов, навернутых только ради поиска элемента в последовательности.

Простейший цикл
Код:
WHILE (i < LEN(a)) & ~(a[i] = f) DO INC(i) END;
заменять функцией???


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 197 ]  На страницу 1, 2, 3, 4, 5 ... 10  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB