Типовые задачи для обучения программированию

Каждый новичок должен их решить.
3 минуты17839

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

О том, какие образовательные проекты были на моём пути, расскажу далее.

Боец

Тип приложения: игра.

Платформа: Turbo Pascal.

Описание: в 5 классе, после первого знакомства с программированием, любой ученик пытается создать игру. В моём классе настоящим хитом стала игра под жутким названием «Боец». Это текстовая пошаговая аркада, имеющая настольный аналог с бумажками и костями.

Суть игры следующая: вы — боец, вышедший на ринг. За один ход игрок может совершить одно действие: удар левой рукой, правой, ногой или поставить блок. После этого ход переходит противнику.

Далее генерируется случайное число от 2 до 12. Если выпадает меньше 5 — удар не достигает цели, 5−8 — только рукой, 9−11 — засчитывается любой, 12 — критическое попадание. Удар левой рукой оценивается в 1 пункт, правой — 2, ногой 3, критическое попадание прибавляет единицу. Блок нивелирует любые попадания, кроме критического, но по номинальной «цене».

Необходимые навыки: никаких. Знания математики и языка хватит, чтобы устроить небольшое соревнование с друзьями. Научитесь записывать и считывать данные из файла — станет еще интереснее.

Калькулятор

Тип приложения: офисное.

Платформа: Borland Delphi.

Описание: на следующей стадии обучения программированию я и мои одноклассники решили использовать программирование не в развлекательных целях, а для пользы дела. Классический калькулятор никто не создавал, все творили «моды»: у кого-то он решал уравнения 2−3 степени, у кого-то строил графики, некоторые умудрялись адаптировать его под задачи по физике и геометрии.

Необходимые навыки: знакомство с диалоговыми окнами и математикой. Все остальное — игра воображения.

Бильярд

Тип приложения: игра.

Платформа: Borland Delphi.

Описание: в старших классах я загорелся идеей создать собственное приложение с двухмерным бильярдом. Реализация кажется довольно простой до тех пор, пока вы ей не займетесь. Главная проблема — графическое описание физики столкновений. Здесь есть два решения: отрисовывать каждый пиксель смещения, что смертельно для быстродействия, или отрисовывать физику с учетом допусков, количества шаров, их положения и даже цвета.

Необходимые знания: работа с графикой, физика и математика за 8−10 класс, много желания и свободного времени.

Онлайн-анкета

Тип приложения: офисное.

Платформа: Visual Studio, C#.

Описание: мой преподаватель в университете считал, что с помощью кода можно только прошить микроконтроллер и создать диалоговый интерфейс. Поэтому мы постоянно отрабатывали взаимодействие с БД: автозаполнения, автодополнения, протоколы, оптимизации, шифрования и т. д. В общем, к финишу курса каждый из студентов должен был создать онлайн-анкету, которая бы сохраняла введенные данные и генерировала письмо с резюме и портфолио.

Необходимые навыки: работа с файлами и БД. Сложностей здесь мало, зато механически набивать код придется много.

Робот-собеседник

Тип приложения: искусственный интеллект.

Платформа: MATLAB/Simulink.

Описание: в университете также был полугодовой курс по дисциплине «нейронные сети», по итогам которого студенты сдавали какой-нибудь проект. Я отделался примитивной системой перемещения для робота, в то время как большинство сокурсников взялось за создание «умного» собеседника. Те, кто работал с нейронными сетями в MATLAB, понимает, что это проект или для очень амбициозного человека, или для мазохиста. Не знаю, к какому типу относился каждый из сокурсников, но рабочего проекта так никто и не создал.

Необходимые навыки: Во-первых, начните не с нейронных сетей, а с простой комбинаторики. Чатбота создать проще(необходимы лишь навыки работы с БД), да и язык роли не играет. Во-вторых, выберите другую платформу, MATLAB не для этого. Python с PyBrain будут полезнее.

Управление умным домом

Тип приложения: домашнее вспомогательное.

Платформа: Keil uVision для МК, Netbeans для веб-интерфейса.

Описание: еще один университетский преподаватель был одержим умными домами, наверняка его собственный был похож на берлогу сумасшедшего профессора с висящими проводами и кучей диодов. Он довольно быстро сумел заинтересовать нас работой над симбиозом софта и железа. Совместными усилиями к концу семестра на даче у одного из студентов(он же спонсор затеи) появилась система с контролем движения, датчиком температуры и даже автополивом растений. Всё это контролировалось и управлялась через браузер. Система выглядела колхозно, работала с кучей багов, но никто ничего круче на этом курсе не делал ни до ни после нас.

Необходимые навыки: нам потребовалось изучить мануалов всех контроллеров и датчиков, плюс языки веба. Так как времени было в обрез, а совершенную систему делать никто не собирался, данных знаний вкупе со специальным ПО было достаточно.

Если же подходить к делу серьёзно, куда проще купить Raspberry Pi для сбора информации и взаимодействия с клиентом, а остальное реализовать на готовых датчиках.

Какие интересные задачи в школе, университете и на курсах решали вы? Пишите в комментариях.

web_developerсамообразованиеобучение программированиюразработкасамообучение
Нашли ошибку в тексте? Напишите нам.
Спасибо,
что читаете наш блог!