(12)
Mad string
Пользователь вводит строку. При нажатии, каждой клавиши, буквы возникают в произвольных местах экрана. По нажатии Enter экран стирается(это, чисто технологический момент и стирание не должно быть заметно), затем буквы опять появляются в случайных местах экрана, а затем они начинают весело прыгать, бегать, перемешиваться но через минуту должны собраться в исходную строку. [это типичный случай, когда задачу надо решать сзади наперед]
Кстати, забавный способ, проверить правильность набора текста, методом слепой печати.
Пятница 13
(13)
Программа должна выдать список из 13 ближайших тринадцатых пятниц, отсчитывая от текущей даты
(14)
Угадай число
Примерный сценарий:
(компьютер) Загадано двух [трех, четырех, пяти] значное число, сколько попыток вам надо для отгадывания?
(пользователь) 8
Попытка №1
50
Больше
Попытка №2
75
Меньше
Попытка №3
58
Поздравляю, вы угадали, затратив 3 попытки!!
Сыграем еще (Да, Нет)?
Да
Целей, при написании такой программы, несколько:
1. сама по себе интересная работа с интерфесом программы;
2. выработка алгоритма угадывания.
3. Как итог - разработка программы с обратной задачей, пользователь задумывает число, а программа отгадывает!!!
"Натуральная" случайность
В задаче №1, я упоминал два вида случайностей «машинную» и «человеческую», давайте вспомним еще одну, пожалуй, главную, - «природную».
Найдите информацию о «нормальном распределении», не хочу пересказывать, то, что вы найдете, но там очень много вкусненького.
Задача – написать программу, которая будет генерировать случайные числа по закону нормального распределения.
Для того, чтобы убедиться в правильности работы, постройте графики используя «машинную» и «природную» случайности. Так, сказано невнятно.
Попробую подробнее...
Вот такая программа:
>uses GraphABC;
>const
> Max = 600;
>var
> Mas : array[0..max] of integer;
> n : integer;
>begin
>for var i:=1 to 200000 do
>begin
> n := Random(Max+1);
> inc(Mas[n]);
> SetPixel(25+n,Window.Height - Mas[n],clRandom);
>end;
>end.
Нарисует график:
Как видите, "машинная" случайность имеет "плоское" распределение. Ваша задача - сделать программу выдающую "нормальное" распределение случайности, это может выглядеть, примерно так:
Как сказал бы Кролик Винни-Пуху "Случайности могут быть разные".
Такие не простые, "простые" числа
1. Выяснить: для чего нужны простые числа, методы их определения. (Уверяю вас, они очень и очень ценны...)
(15)
2. Написать программу для нахождения простых чисел
Счастливый билет
Объясните учащимся, что в древности в автобусах покупали билеты, и на каждом билете был шестизначный номер. И в течении скучной поездки школьники искали счастливые билеты, т. е. сумма первых трех чисел в номере должна быть равна сумме оставшихся (некоторые чудаки съедали их перед экзаменом :).
(16)
Задача: подсчитать число счастливых билетов, в дальнейшем можно выяснить вероятность приобретения «счастья».
Как-то эту задачу на уроке решали двое учеников, и результат получился существенно разный, но был конец урока, и проверять алгоритмы было лень.. А ученики... сейчас, оба, и он и она, профессиональные программисты, и надеюсь, счастливы в браке.
Большинство задач в данном сборнике рассчитано на работу в текстовом режиме. У «знатоков» закономерно возникнет вопрос:
- Зачем нам учиться программировать в устаревшем текстовом режиме.
- Ну, во-первых, мы движемся от простого… далее… сейчас наверно кто-то пишет ПО для утюга или фена, а скоро надо будет писать для зубочистки, это конечно хорошо, программистам есть работа, но учтите, аппаратные возможности таких устройств очень ограничены. Т.е. винды в кастрюлю никто засовывать не станет, и программировать на низком уровне надо будет еще много лет. Освойтесь с основами программирования в Паскале, а дальше Ассемлбер, Java, Си - да мало ли, что еще возникнет.
А, чтобы напомнить возможности текстового режима, смотрите: