Идеи для проектов для практики навыков программирования

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

Числа

Найти число пи до n-й цифры после запятой

Введите число, и программа начнет генерировать число пи. Поставьте определенный предел, до которого программа должна дойти. Реализации:Python №1, Python №2, Haskell, PHP, JavaScript, Go.

Последовательность Фибоначчи

Введите число, и программа сгенерирует последовательность Фибоначчи до этого числа или до N-го числа. Реализации: Python №1, Python №2, Python №3, Bash, Haskell, PHP, JavaScript, Java, Go, Python №4, Python №6.

Разложение на произведение простых чисел

Пользователь вводит число и находит, программа раскладывает на произведение простых чисел с их степенями. Реализации: Python №1, Python №2, Haskell, JavaScript, Java, C++, Python №3.

Следующее простое число

Программа находит простые числа до тех пор, пока пользователь перестанет спрашивать. Реализации: Python №1, Haskell, JavaScript, Java, Go, Python №2.

Калькулятор для ипотеки

Вычислить месячные выплаты фиксированного срока в течение заданных N сроков с заданной процентной ставкой. Реализации: Go.

Обмен-возврат

Пользователь вводит стоимость и количество денег. Программа рассчитывает сдачу и количество мелких монет, необходимых для сдачи. Python, Java, Go.

Перевод из двоичной системы в десятичную и обратно

Реализации: Python.

Калькулятор

Сначала простой с базовыми операциями, потом можно добавить фичи. Реализации: Python, Haskell.

Конвертер температуры, валюты, масс и т.д.

Реализации: Python.

Будильник

Простые часы, которые играют звук после некоторого числа минут или часов или в определенное время. Python, Java.

Расстояние между городами

Вычисляет расстояние между двумя городами и позволяет пользователю выбрать размерность расстояния. Эта программа может потребовать информацию о городах, такую как долготу и широту. Реализации: Haskell, Python.

Валидатор кредитной карты

Берет номер кредитной карты от производителя (Visa, MasterCard, American Express, Discover) и проверяет на правильность номер (разберитесь, как кредитные карты используют контрольную сумму). Реализации: Haskell, Python, Java, Go.

Факториал числа

Решить с помощью циклов и отдельно с помощью рекурсии. n! = n * (n-1) * ... * 1, 0! = 1. Реализации: Haskell, Python, Go.

Алгебра комплексных чисел

Показать сумму, умножение, сопряжение, отрицание в отдельных функциях (разность и деление могут быть сделаны путем использования нескольких уже написанных функций). Реализация: Haskell.

Счастливые числа

Счастливое число определено следующим процессом. Начиная с некоторого положительного целого числа, замените число суммой квадратов его цифр и повторяйте процесс до тех пор, пока число не будет равным одному(на чем все и остановится) или оно будет циклиться бесконечно. Если цикл конечен, то изначальное число называется счастливым. Найдите первые 8 счастливых чисел. Реализации: Python, Haskell, Java, C++.

Названия чисел

Показать как читается число на английском. Вы можете использовать уже существующую реализацию или написать свою, она должна поддерживать значения до одного миллиона или до максимально возможного целого значения в данном языке программирования, если оно меньше миллиона. По желанию: поддержка отрицательных чисел, нуля, чисел с плавающей запятой Реализации: Haskell, Python, Go, C++.

Симуляция подбрасывания монеты

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

Классические алгоритмы

Гипотеза Коллатца

Найдите число шагов, за которые получится единица, используя следующий процесс: берём любое натуральное число n больше единицы. Если оно чётное, то делим его на 2, а если нечётное, то умножаем на 3 и прибавляем 1. Реализации: Python №1, Java, JavaScript, Java №2, Go, Java №3.

Сортировка

Реализовать два типа сортировочных алгоритмов: сортировка слиянием и сортировка простыми обменами. Реализации: C, Python, Go, C++.

Задача ближайшей пары

Задача ближайшей пары точек или задача ближайшей пары -- это задача вычислительной геометрии: дается n точек в метрическом пространстве, найти пару точек, расстояние между которыми наименьшее. Реализации: Python №1, Python №2.

Решето Эратосфена

Решето Эратосфена -- один из самых эффективных способов нахождения всех небольших простых чисел (ниже 10 миллионов). Реализации: Python №1, JavaScript, Python №2, Go, Java, C++.

Графы

Граф из связей

Напишите программу, которая будет создавать граф или сеть из ряда связей между вершинами. Реализация: Python.

Эйлеров путь

Напишите программу, ввод которой будет графом и вывод будет Эйлеров цикл или Эйлеров путь, или запись того, что цикл не возможен. Эйлеров путь начинается от одной из вершин и обходит каждую вершину графа и заканчивается на другой вершине графа. Эйлеров цикл -- это Эйлеров путь, начинающийся и заканчивающийся в одной и той же вершине. Реализация: Python.

Соединенный граф

Напишите программу, ввод которой представляет из себя граф и вывод представляет из себя отчет, в котором указано соединена ли каждая вершина или нет. Реализация: Python.

Алгоритм Дейкстры

Напишите программу, которая будет находить короткий путь в графе, используя его вершины. Реализации: Python.

Структуры данных

Инвертированный индекс

Инвертированный индекс -- это структура данных, используемая для поиска во всем тексте. Дается ряд текстовых файлов, реализуйте программу для создания инвертированного индекса. Также создайте пользовательский интерфейс для поиска, использующего инвертированный индекс, который возвращает список файлов, содержащих выражения или выражения из запроса. Память может содержать поисковой индекс. Реализация: Java.

Текст

Перевернуть строку

Вводится строка, и программа ее переворачивает и распечатывает на экран. Реализации: Python №1, Python №2, Java №1, Haskell, Python №3, Java №2, Go, JavaScript №1, Java №3, Python №4, JavaScript №2.

Поросячья латынь

Это «тайный язык», представляющий собой зашифрованный английский. Чтобы сделать поросяче-латинское слово из английского, нужно первые согласные звуки в слове переместить в конец и прибавить ay (Например: "banana" превращается в anana-bay). Подробнее о правилах читайте в Википедии. Реализации: Python №1, Python №2, Java №1, Java №2, Go, Java №3, Python №3.

Счетчик гласных

Вводится строка, и программа считает количество гласных в тексте. Для усложнения задачи можно генерировать отчет о том, сколько раз какая гласная была найдена. Реализации: Python №1, Python №2, Haskell, Java №1,Go, Java №2, Python №3.

Проверка на палиндром

Программа проверяет на то, что введенная строка является палиндромом (то есть читается слева направо так же, как и справа налево). Реализации:Python №1,Python №2, Java,Haskell,Python №3,Go,Java

Счетчик слов в строке

Посчитать число слов в строке. Для усложнения задачи считать эти строчки и сгенерировать отчет. Реализации: Python №1, Python №2, Java, Haskell.

Текстовый редактор

Приложение в стиле блокнота, способное открыть, редактировать и сохранять текстовые документы. По желанию: добавить подсветку синтаксиса и другие фичи. Реализации: Python, С++/QT.

Генератор RSS ленты

Дается ссыка на ленту RSS/atom, извлечь все посты и распечатать на экран. Реализация: Python.

Стикеры

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

Проверка показателей индексов фондовой биржи

Программа, которая проверяет цены акций фондовой биржи для списка наименований акций, введенных пользователем. Пользователь может указать, насколько часто будут проверяться значения акций фондовой биржи. Если реализация в виде утилиты командной строки, покажите увеличилась ли цена акции или ушла вниз. По желанию: если реализация сделана с использованием графических интерфейсов, программа может показывать зеленую или красную стрелочку в зависимости от того, как изменилась цена акции. Реализации: Python.

Гостевая книга / журнал

Простое приложение, позволяющее людям добавлять комментарии или добавлять записи в журнал. В нем есть возможность добавлять или закрывать комментарии, а также время добавления записи. По желанию: запустите приложение на такой облачной платформе как Google App Engine или Heroku или любой другой(если возможно).

Гороскоп

Программа проверяет ваш гороскоп на разных сайтах, посвященных этому и соединяет все прогнозы воедино для каждого дня. Реализации: Python.

Шифр Винежера / Вернама / Цезаря

Функции для шифрования и расшифровывания сообщения с данными. Затем отправьте их другу. Реализации: Python, Java.

Предложения для любого подарка

Ввести разные подарки для определенных людей. Когда пришло время для того, чтобы вручить подарок, программа сгенерирует произвольный из введенных. По желанию: предложить место, где их можно приобрести (возможно, ссылку на страницу в сервисе Amazon).

Конвертер из языка разметки Markdown в HTML

Переводит текст, отформатированный с помощью Markdown в файл HTML. Реализовать базовые теги такие, как p, strong, em и так далее. По желанию: реализовать все теги из документации к синтаксису Markdown. Реализация: Python.

Инструмент для обработки запросов в виде регулярных выражений

Программа позволяет пользователю вводить текстовую строку и затем в отдельном поле регулярное выражение. После запуска программа должна выдать все подходящие под регулярное выражение строчки или флаг ошибки. Реализация:Python

Сети

Программа FTP

Программа, осуществляющая пересылку файлов туда и обратно из удаленного веб-сервера. Реализация: C.

Монитор трафика

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

Сканер портов

Введите IP адрес и диапазон портов, в которых программа попробует найти открытые порты на данном компьютеров путем соединения с каждым из ним. При успешном соединении программа должна пометить порт как открытый. Реализации: Python №1, Python №2, Python №3, Python №4.

Проверка электронной почты (POP3 / IMAP)

Пользователь вводит различную информацию своего аккаунта, включая веб-сервер и IP, тип протокола (POP3 или IMAP) и приложение будет автоматически проверять почту каждый заданный интервал времени. Реализация: Java.

Инструмент поиска для сетевого протокола Whois

Пользователь вводит IP и адрес хоста и программа просматривает информацию через сетевой протокол Whois и выводит регистрационные данные. Реализация: Python.

Проверка сайта в установленное время

Приложение пробует соединиться с сайтом или сервером периодически с заданным интервалом или просто через некоторое время и проверяет, есть ли неполадки с подключением. Если сайт или сервер не работают, программа оповестит по электронной почте или вышлет уведомление на экран. Реализация: Python.

Классы

Продуктовый инвентарь

Создайте приложение, которое позволяет вести учет инвентаря продуктов. Создайте класс Product, элементами класса будут цена, номер, количество. Затем создайте класс Inventory, ведущий учет различных продуктов и который считает общую стоимость инвентаря. Реализации: Python №1, Ruby, JavaScript, Go, Python №2.

Система бронирования отелей / авиабилетов

Создайте систему резервирования на самолет или комнату в отеле. Программа способна распределить цены по различным секциям в зависимости от отеля или места в самолете. Например, бизнес-класс будет стоить дороже, чем эконом-класс. Комнаты отеля, расположенные в пентхаусе стоят больше. Программа следит за обновлениями того, какие комнаты доступны и когда могут быть забронированы.

Bank Account Manager

Создайте класс Account, который будет абстрактным классом для трех классов CheckingAccount(контокоррентный счет), SavingsAccount (сберегательный вклад) и BusinessAccount (счет, возникающий при создании бизнеса). Управляйте кредитами и дебитами с этих счетов в стиле программы для банкомата. Реализация:Python

Расписание приема врача

Создайте класс Patient и класс Doctor. Пусть доктор может принять несколько пациентов, установите расписание того, как доктор будет принимать 16 пациентов в течение 8 часового рабочего дня.

Менеджер рецептов

Создайте класс Recipe с ингридиентами и вставьте объекты данного типа в менеджер рецептов, которая их распределит по категориям(основные блюда и десерты) или по ингридиентам(курица, говядина и так далее).

Галерея изображений

Создайте абстрактный класс Image и затем класс, производный от него для каждого типа изображений. Вставьте их в программу, которая будет отображать изображения в стиле галереи.

Площадь и периметр фигуры

Создайте абстрактный класс Shape и затем создайте производные классы, такие как бриллиант, прямоугольник, круг, треугольник и так далее. Затем происходит перекрытие имен функций, ищущих площадь и периметр для каждого типа фигуры. Реализации: Java, Python.

Цветочный магазин с возможностью заказа

Создайте приложение для цветочного магазина, которое работает с цветами, как объектами и использует их в объекте букет, который потом будет продан. Программа следит за количеством объектов и когда вам может понадобиться заказать больше.

Создание древа семьи

Напишите класс Person, в котором будет элемент имя, дата рождения и, если есть, смерти. Программа позволяет пользователям создавать классы Person и помещать их в семейное древо. Программа печатает древо на экран. Реализация: C++.

Поточность

Создание индикатора процесса загрузки

Создайте индикатор состояния для приложений, которые могут отслеживать процесс загрузки. Индикатор состояния должен находиться в отдельной ветке и сообщаться с главной веткой с помощью делегатов. Реализации: Go.

Программа для массового создания эскизов для предварительного просмотра изображений

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

Веб

Индексатор веб-страницы

Создайте приложение, которое соединяется с веб-сайтом, забирает оттуда все ссылки или изображения и сохраняет их в качестве списка. *По желанию: Организуйте проиндексированную информацию, удалите дублирующиеся данные. Залейте результаты в индекс-файл. * Реализации: Python.

Веб-браузер с вкладками

Создайте небольшой веб-браузер, который сможет просматривать материалы сети в разных вкладках, позволяющих просматривать несколько веб-страниц одновременно. Для упрощения задачи не думайте об исполняемом Javascript и другом коде с клиентской стороны.

Доска для рисования онлайн

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

Получить атомное время из интернет-часов

Эта программа будет получить сведения об атомном международном времени из интернета. Используйте любые атомные часы, которые найдёте в поиске Google. Реализации: Go, Java.

Получить текущие данные о погоде

Получите актуальные погодные данные по почтовому индексу. По желанию: Попробуйте определить местоположение пользователя автоматически. Реализация: Python.

Авто-логин и автоматические действия по таймеру

Создайте приложение, которое входит на определённый веб-сайт в запланированное время, производит определённое действие и выходит из аккаунта. Это может быть полезно для проверки почтового клиента, постинга контента или для получения информации и сохранения её на компьютере.

Генератор электронных открыток

Создайте сайт, позволяющий пользователям создавать собственные небольшие электронные открытки и посылать их другим. Не используйте Flash. Используйте галерею изображений и, возможно, вдохновляющие цитаты и девизы.

Система контент-менеджмента

Создайте собственную систему управления контентом (CMS) наподобие Joomla, Drupal, PHP Nuke и т.д. Начните с малого. По желанию: Разрешите добавление модулей/аддонов.

Доска объявлений (Форум)

Создайте форум, на котором вы и ваши друзья смогут писать сообщения, администрировать и делиться мыслями и идеями.

CAPTCHA-генератор

Когда-нибудь видели изображения с цифрами и буквами, которые нужно ввести в форму регистрации на каком-нибудь онлайн-сервисе? Это нужно для фильтрации автоматической регистрации ботами и предотвращения спама. Попробуйте создать собственную капчу для онлайн-форм.

Файлы

Создание викторины

Сделайте приложение, которое рандомно берет различные вопросы из файла и соединяет их вместе, создавая викторину для студентов. Затем приложение должно сравнивать ответы с правильными вариантами.

Файловый проводник

Создайте собственный небольшой файловый проводник для Windows. Добавьте ту функциональность, которую вам не хватало в обычном проводнике Windows или в Finder на Mac OS.

Утилита для сортировки Excel/CSV файлов

Читает записи в файле, сортирует их и записывает их обратно в файл. Позволяет выбрать различные варианты сортировки и сортировку по конкретному полю. Реализация: Python.

Создайте Zip-архиватор

Пользователь добавляет файлы из различных директорий, а программа архивирует их в zip-файл. По желанию: применить Примените современные алгоритмы сжатия. Начните с кода Хаффмана. Реализация: Java.

Генератор PDF файлов

Приложение, которое может читать текстовый файл, файл HTML или какой-либо другой файл и генерировать из него PDF. Отлично подходит для онлайн конвертеров, где пользователь загружает файл и программа возвращает PDF файл По желанию: запустить приложение в облачных сервисах, таких как Google App Engine или Heroku, если возможно.

Программа для теггирования Mp3

Изменяет и добавляет ID3v1-теги в MP3-файлы. Можете попробовать добавить обложку альбома в хедер MP3-файла, или другие ID3v2-теги.

Менеджер кода

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

Базы данных

Анализатор SQL-запросов

Утилита, в которую пользователь может ввести запрос и исполнить его в локальной базе данных, чтобы найти способы повысить эффективность запроса.

Инструмент удалённого соединения с SQL-сервером

Утилита, которая может выполнять запросы на удалённые сервера с локального компьютера посредством сети интернет. Утилита должна воспринимать удалённый хост, имя и пароль пользователя, выполнить запрос и вернуть результаты. Реализация: Python.

Генератор отчётов

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

Планировщик событий и календарь

Сделайте приложение, которое позволит пользователю заносить дату и время события, а также кое-какие заметки в календарь. Пользователь должен иметь возможность просмотреть календарь или найти определенное событие. По желанию: добавить возможность создавать повторяющиеся события (каждый день, неделю, месяц, год и т.д.)

Домашняя бухгалтерия

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

Адресная книга

Содержит контакты, включая номера, адреса электронной почты и небольшие заметки о них. Реализация: Python.

Программа для отслеживания ТВ-серий

Не хотите пропустить любимый сериал? Нет записывающего устройства или хотите найти серию и записать её позднее? Создайте приложение, которое будет осуществлять поиск по сайтам телевизионных передач, определять названия/время/каналы и добавлять их в базу данных. База данных/веб-сайт затем могут посылать вам email-уведомления о начале сериала и о канале трансляции. Реализация: Python.

Система планирования путешествий

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

Графика и мультимедиа

Слайд-шоу

Создайте приложение, которое показывает картинки в формате слайд-шоу. По желанию: добавьте эффекты, например, различные переходы (в виде звезды, круга, жалюзи и т.д.)

Проигрыватель онлайн-видео

Попробуйте создать собственный проигрыватель онлайн-видеороликов.

Mp3 Плеер

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

Проигрыватель онлайн-музыки

Попробуйте создать собственный проигрыватель онлайн-музыкальных треков. Реализация: PHP.

Приложение для создания ватермарков

Хотите защитить авторские права на некоторые изображения? Добавьте своё лого или текст на изображение, чтобы никто не мог украсть графику с вашего сайта. Создайте программу, накладывающую ватермарк на изображение. *По желанию: Используйте многопоточность для одновременной обработки нескольких изображений. * Реализация: Python.

Черепашья графика

Стандартный проект, в котором вы создаёте плоскость из квадратов 20х20. С помощью различных команд вы управляете черепахой, которая рисует линию на плоскости. Вы можете двигать её вперёд, назад, двигать влево и вправо, поднимать и опускать перо и т.д. Подробную информацию ищите в Google по запросу “черепашья графика”. По желанию: добавьте в программу возможность считывать список команд из файла

Безопасность

Шифр Цезаря

Реализуйте шифр Цезаря, как шифрование, так и дешифрование. Ключом является целое число от 1 до 25. Этот ключ сдвигает буквы алфавита (от A до Z). При шифровании каждая буква алфавита заменяется буквой, находящейся на выбранное количество позиций дальше (алфавит закольцовывается). Таким образом, при использовании ключа 2 “HI” становится “JK”, а при использовании ключа 20 “HI” превращается в “BC”. Это простое моноалфавитное шифрование легко взламывается, поскольку злоумышленник, у которого на руках есть зашифрованное послание, может использовать частотный анализ, или просто попробовать все 25 ключей. Реализации: Python №1, Python №2, Java.

Другие статьи по теме

Изучаем алгоритмы и структуры данных правильно

Источники

МЕРОПРИЯТИЯ

Комментарии

ВАКАНСИИ

Добавить вакансию

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ