Задачи здесь, разной сложности, ну, например, такая шутка:
«Все, внимание!!! Всякий кто решит данную задачу за 45
минут, получит годовую 5 не только по информатике, но и по математике.
Записываем:
Доказать, что для любых не нулевых значений переменных
a, b, c : integer не существует решения следующего уравнения, при n >
2.
an + bn = cn
- Что ты хочешь сказать, Вова?
… ... ...
- Хорошо, Вова, - молодец! За знание классики + 5.
- А почему не годовая?
- Но, ты же не привел доказательства...»
Часто у «продвинутых» учеников возникает вопрос:
- А чё мы должны учить этот древний, никому не нужный Pascal?
Ну, давайте, сравним простейший код:
C++
|
Pascal
|
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
cout << <Hello, world!< << endl;
system(pause);
return 0;
}
|
begin
Writeln('Hello, World!');
end.
|
И дело не в том, что текст на C длиннее.
Учащийся должен понимать, что и как, делает программа.
Если объяснение программы на Паскале займет 2 минуты и
можно идти дальше, то в случае С, вы убьете 45 минут на объяснение
совершенно не нужной начинающему информации, и совершенно запутаете
школьников, т.е - если вам надобно вызвать у учащихся отвращение к
программированию то начинайте учить их с С++ или C#.
А после Паскаля, любой си образный язык пойдет «влегкую».
Объясните любопытному, что все процедурные языки,
близнецы братья (но Паскаль проще!!!). Для профессионального
программиста не составляет большой проблемы перейти с PHP на Java.
Но, как-то, расскажите, что есть не только процедурные языки. Например, о языке Prolog, или такие вкусности как Форт (англ. Forth) или Эйфория.
Но вернемся к нашим баранам (я не имел ввиду учащихся),
как уже сказано, задачи разного уровня. Я сознательно не размечаю
сложность, во-первых, это очень субъективно, во-вторых ученик должен
учиться соизмерять свои возможности, и не отчаиваться если сейчас задача
не по силам. Многие задачи не уложатся в один урок, а некоторые, могут
развиваться от "простого к сложному".
Например:
(1)
Двоичный тренажер
а) Программа задумывает случайное число от 0 до 15 и
выдает его в двоичном виде, пользователь должен ввести десятичный(или
шестнадцатеричный) аналог.
Полезно решить эту задачу, сюда входят несколько подзадач:
' преобразование числа в двоичный вид
'' контроль введенных пользователем символов
''' разработка интерфейса программы (внешний вид, реакции на ошибки, поощрительные сообщения и т.п.)
Кроме того, такая программка полезна для игрового запоминания двоично-шестнадцатеричных чисел.
б) Программа должна анализировать время ожидания ответа
пользователя, и выдавать оценку за выполнение, допустим, 20 заданий,
учитывая число ошибок и суммарное время затраченного на ответы.
в) «Случайное число» человек и машина понимают по-разному, например:
2 2 2 2 2 2 2
с точки зрения машины это ряд равновероятных случайных
чисел. Давайте составлять упрощенную, но с точки зрения человека
«случайную» последовательность. Во-первых, отбросим варианты 0 и 1 как
слишком простые (пользователя они будут только раздражать), затем, числа
должны быть случайны, но не должны повторяться, до тех пор, пока не
исчерпаются все цифры из заданного диапазона, а затем все начнется
сначала.
Давайте, я расскажу, как решил эту задачу, во времена оны.
Задаем байтовый массив[размером в заданных диапазон]
начинается цикл 1.
заполняем массив нулями;
цикл 2. задумывание числа
программа задумывает число из заданного диапазона
если в соответствующей ячейке массива 0, то записываем
туда 1 и завершаем цикл 2 задумывания числа, в ином случае повторяем
цикл 2.
Если написать только вышесказанное, то получим
бесконечный цикл!!! (что очень полезно для начинающего программиста)
Посему введем переменную «счетчик успешных попыток задумывания числа» и
при достижении максимального числа возможных вариантов переходим к
началу цикла 1 (т. е. заполнение массива нулями)
Ну, а дальше, как и раньше вывод на экран... ожидание ответа...
Еще один нюанс, со «случайным числом». Если вы запустите
программу несколько раз, то увидите, что задумываются одни и те же
числа!!! Как с этим бороться? Программист, должен знать эту мелочь.
г) Байт изображается двумя шестнадцатеричными числами.
Пусть и программа задумывает по два таких числа (в этом случае
рекомендации пункта в, надо основательно пересмотреть [ну например,
задать два байтовых массива... не-ет не верное решение..., массив будет
один но от 2 до 255...])
Ну, вот так, примерно, решаются задачи, чем дальше в лес....
Не люблю олимпиадные задачи, как правило, они слишком
«академичны», но это естественно, у олимпиады совершенно иные задачи (т.
е. не обучение)
Задачи для школьника должны быть веселы! На экране должно что-то прыгать, бегать, хихикать...
В каждом маленьком ребенке
И мальчишке и девчонке
Есть по двести грамм взрывчатки
Или даже полкило!
Должен он бежать и прыгать
Все хватать, ногами дрыгать
А иначе он взорвется, трах-бабах !
И нет его!
|