ÐÑпÑÑк 5 - РоÑÑийÑкий гоÑÑдаÑÑÑвеннÑй пÑоÑеÑÑионалÑно ...
ÐÑпÑÑк 5 - РоÑÑийÑкий гоÑÑдаÑÑÑвеннÑй пÑоÑеÑÑионалÑно ...
ÐÑпÑÑк 5 - РоÑÑийÑкий гоÑÑдаÑÑÑвеннÑй пÑоÑеÑÑионалÑно ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
d := (d + 1) mod 7;<br />
end<br />
end;<br />
writeln('black friday<br />
in XX century = ', black);<br />
end.<br />
Замечание 1. Такое решение ученики 9–11-х классов<br />
воспринимают с трудом. Но если методически правильно<br />
выстроить систему заданий, то задачи подобного типа<br />
школьники смогут решать или по крайней мере смогут по<br />
тексту программы понять, как решается задача.<br />
В чем трудность приведенного решения? Что<br />
смущает, останавливает школьников при разборе<br />
такого способа решения?<br />
1) отсутствие навыков работы с операцией mod;<br />
непонимание сути этой операции;<br />
2) построение формулы перехода от 13-го числа<br />
одного месяца к 13-му числу следующего месяца;<br />
формула, реализованная через оператор case, дает<br />
сразу день недели, на который приходится 13-е число<br />
(связка “день недели — день месяца” многих путает).<br />
Ставим перед собой две методических цели:<br />
• в принципе научить школьников решать подобные<br />
задачи;<br />
• научить школьников использовать операцию<br />
mod так, чтобы построить эффективный алгоритм.<br />
Будем использовать методический прием, который<br />
схематично можно изобразить так:<br />
через массивы<br />
к операции mod<br />
Необычность методического приема состоит в<br />
том, что мы вроде бы через сложные типы данных<br />
(массивы) приходим к использованию “простых”<br />
операций. Но для достижения поставленных целей<br />
хороши любые (законные ☺) методы.<br />
В итоге, для того чтобы научить школьников писать<br />
и, как минимум, читать такие программы, мы<br />
разработали следующую систему задач:<br />
Задача 2. Подсчитать число пятниц, приходящихся<br />
на 13-е числа в 2012 году, если известно, что<br />
1 января 2012 года было воскресенье.<br />
Задача 3. Посчитать, сколько раз в XXI веке<br />
23 февраля приходится на воскресенье. Известно,<br />
что 1 января 2001 года — понедельник.<br />
Задача 4. Посчитать, сколько раз в XXI веке<br />
8 марта приходится на воскресенье. Известно, что<br />
1 января 2001 года — понедельник.<br />
Задача 5. Посчитать, сколько раз в XXI веке<br />
8 марта приходится на будний день. Известно, что<br />
1 января 2001 года — понедельник.<br />
Задача 6. Посчитать, сколько раз в XXI веке<br />
23 февраля приходится на будний день. Известно,<br />
что 1 января 2001 года — понедельник.<br />
Задача 7. Посчитать, сколько раз в 2012 году месяц<br />
начинался с воскресенья (понедельника, вторника,<br />
среды и т.д.). Известно, что 1 января 2012<br />
года пришлось на воскресенье.<br />
Задача 8. Посчитать, в каком году — в 2012-м<br />
или 2013-м — больше месяцев, которые начинаются<br />
с воскресенья (понедельника, вторника,<br />
среды и т.д.). Известно, что 1 января 2012 года —<br />
воскресенье.<br />
Для достижения поставленных целей предлагается<br />
следующий порядок действий:<br />
• сначала решаем Задачу 2 с использованием<br />
массивов;<br />
• затем решаем задачи 3, 4, 5, 6; показываем, что<br />
можно и целесообразнее обойтись без использования<br />
массивов;<br />
• решаем Задачу 1 без массивов.<br />
Подсчет “черных пятниц” с использованием<br />
массивов<br />
Задача 2. Подсчитать число пятниц, приходящихся<br />
на 13-е числа в 2012 году, если известно, что<br />
1 января 2012 года было воскресенье.<br />
Решение с использованием массивов. Задачи, аналогичные<br />
Задаче 2, мы предлагаем школьникам в<br />
теме “Обработка массивов”. Известно, что школьники<br />
практически всегда пытаются решить задачу теми<br />
способами, которые рассматривались на ближайших<br />
уроках. Плохо это или хорошо — это вопрос отдельного<br />
рассмотрения. Мы это примем как факт.<br />
После того как задача предложена школьникам<br />
и они некоторое время подумают над ее решением,<br />
мы приступаем к обсуждению алгоритма. Если<br />
систематизировать высказывания ребят, то общий<br />
алгоритм таков: каким-то способом сделать электронный<br />
календарь на весь год и смотреть, на какие<br />
дни недели приходится очередная пятница.<br />
В результате уточнения получается следующий<br />
укрупненный алгоритм:<br />
1) в отдельном массиве Days будем хранить очередной<br />
месяц года следующим образом: в элементе<br />
Days[i], соответствующем i-му дню месяца, будем<br />
хранить номер дня недели (1 — понедельник, 2 —<br />
вторник и т.д.), на который этот день приходится.<br />
Практически полный аналог календаря;<br />
2) если в Days[13] находится число “5”, то это<br />
“черная пятница”, и мы увеличиваем счетчик “черных<br />
пятниц” на единицу;<br />
3) действия 1 и 2 выполняем для всех месяцев<br />
года.<br />
Школьники уточняют, что программа “должна<br />
знать”, сколько дней в каком месяце.<br />
Так как мы учим школьников выполнять декомпозицию<br />
задачи и писать программу способом “достраивания”<br />
необходимых блоков к уже работающей<br />
программе, то в результате обсуждения получаем<br />
следующее деление на блоки:<br />
1) ввода данных в программе нет;<br />
2) определяем количество дней в очередном месяце;<br />
3) заполняем очередной “лист календаря” (массив<br />
days);<br />
4) распечатываем заполненный “лист календаря”;<br />
5) выполняем подсчет “черных пятниц”;<br />
6) действия 2–5 повторяем для всех 12 месяцев.<br />
25<br />
май 2012 / ИНФОРМАТИКА