» » » » W Cat - Задачник по программированию( для школы )

W Cat - Задачник по программированию( для школы )

На нашем литературном портале можно бесплатно читать книгу W Cat - Задачник по программированию( для школы ), W Cat . Жанр: Программирование. Онлайн библиотека дает возможность прочитать весь текст и даже без регистрации и СМС подтверждения на нашем литературном портале bookplaneta.ru.
W Cat - Задачник по программированию( для школы )
Название: Задачник по программированию( для школы )
Автор: W Cat
ISBN: нет данных
Год: неизвестен
Дата добавления: 3 июль 2019
Количество просмотров: 165
Читать онлайн

Задачник по программированию( для школы ) читать книгу онлайн

Задачник по программированию( для школы ) - читать бесплатно онлайн , автор W Cat
Задачи для школьника, должны быть веселы!На наших занятиях, запрещена фраза "мы это не проходили" - если это надо для решения задачи - "пройди", источников море, учитель подскажет.Не получается? Возможно, ты выбрал задачу не по силам, ничего - это тоже опыт, отложи, попробуй следующую. Мало решить задачу, придумай свою...Ученик должен уметь: (поставить задачу + решить задачу + учиться) * n ...
Перейти на страницу:

Задачник по программированию для школы

Листая старую тетрадь...

Да, нравится мне эта песня, но сейчас, не об этом...

Итак, просматривая свои архивы, нашел свой задачник по программированию — ну, почему бы ни поделиться.

На момент написания, для решения задач планировалось использовать Turbo Pascal, время прошло, и эта программа значительно устарела, предлагаю заменить ее на PascalABC.NET – отличная штука, специально создана для обучения программированию, сочетает возможности старого Turbo Pascal и Delphi и много других вкусностей.



Вступление. (которое, можно пропустить)


Задачи здесь, разной сложности, ну, например, такая шутка:

«Все, внимание!!! Всякий кто решит данную задачу за 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...])



Ну, вот так, примерно, решаются задачи, чем дальше в лес....



Не люблю олимпиадные задачи, как правило, они слишком «академичны», но это естественно, у олимпиады совершенно иные задачи (т. е. не обучение)

Задачи для школьника должны быть веселы! На экране должно что-то прыгать, бегать, хихикать...



В каждом маленьком ребенке
И мальчишке и девчонке
Есть по двести грамм взрывчатки
Или даже полкило!

Должен он бежать и прыгать
Все хватать, ногами дрыгать
А иначе он взорвется, трах-бабах !
И нет его!



Веселые задачи


Игры со строками.

Все нижеследующие программы, должны начитаться и продолжаться объяснениями пользователю, что ему следует сделать для продолжения работы программы.

(2)

Написать программу со следующим сценарием:

пользователь вводит строку, нажимает Enter и далее варианты:

а) Буквы падают в низ экрана с начала строки, одна за другой;

б) Буквы падают с конца строки;

в) Буквы падают случайным образом;

г) Буквы падают наискосок;

д) После какого либо вида падения буквы взлетают на свои места.

(3)

Написать программу, печатающую бегущую строку

варианты:

а) бегущая строка с зацикленным текстом;

б) предложение бегает от начала в конец строки и обратно;

в) бегущая строка информация в которую берется из файла.

(4)

Написать программу, в которой пользователь вводит строку, нажимает Enter, а затем строка начинает червяком ползать по всему экрану (не выходя за его пределы).

(5)

Написать программу, которая напечатает строку по следующему сценарию:

а) в середине экрана появляются 2 крайние буквы строки (первая и последняя)

Затем они раздвигаются и в середину записываются две следующие (вторая и предпоследняя) и т.д. в результате строка печатается разъезжаясь из центра.

б) печатаются сначала средние буквы строки (одна или две – в зависимости четное число символов в строке или нет) затем парами печатаются остальные символы.

(6)

Написать программу, в которой строка будет печататься:

а) сверху вниз

б) снизу вверх

в) наискосок

(7)

Написать программу, в которой в середине экрана выводится строка, а затем:

а) буквы по очереди подпрыгивают на 1 или 2 позиции.

б) подпрыгивание с конца строки

г) подпрыгивание случайным образом.

(8)

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

(9)

Написать программу, объединяющую максимальное число вышеперечисленных сценариев.

(10)

Играем в шпионов.

Первый пользователь вводит строку

на следующей строке выводится ее зашифрованный вариант

зашифрованная строка сообщается другому пользователю

и он на другом компьютере ее расшифровывает.

Методы шифровки:

1 - в строке меняется четные и нечетные символы (если длина строки нечетная, она дополняется точкой).

2 - в начале печатается последний символ потом первый затем предпоследний, а потом второй и т.д.

3 - строку делим пополам (если надо дополняем точкой), а потом печатается символ из одной строки затем из другой и т.д.

Перейти на страницу:
Комментариев (0)