Курсовые работы по Программированию и и Прикладной информатике

Курсовые работы по Программированию и и Прикладной информатике Кабинет автора

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«Тульский государственный университет»

Кафедра «Инструментальные и метрологические системы»

ВВЕДЕНИЕ

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

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

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

1 Описание целей

1) Описываются переменные и константы

2) Выбор начальных координат случайным образом

3) Прорисовка начального положения

4) Генерация на поле яблок случайным образом

5) Проверка: не появилось ли яблоко на черве

6) Управление «Змейкой» с клавиатуры

7) Проверка: не укусила ли змейка сама себя, если укусила, то выводиться информационное окно

8) Проверка: не съела ли змейка яблоко, если съела, то наращиваем ей хвост

9) Перерисовка «Змейки»

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

1) «Змейка», которая может двигаться в ограниченной плоскости.

2) Пользователь, который должен управлять данной «Змейкой».

3) «Змейка» должна увеличиваться в размерах при соприкосновении с фруктом

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

5) Погибать при столкновении со своим увеличивающимся хвостом.

6) При выходе за границы «Змейка» будет перемещена в противоположную сторону, в которую она зашла.

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

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

Для выполнения поставленной цели необходимо решить следующие задачи:

— провести анализ предметной области;

— изучить доступные средства программирования;

— изучить существующие аналоги приложения;

— разработать компоненты приложения.

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

Для выполнения работы был использован аналитический метод исследования и также метод моделирования.

Как выбрать интересную тему курсовой работы по программированию. Актуальность темы курсового проекта по программированию, рекомендации экспертов, примеры тем курсовых работ.

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

Темы курсовых работ по программированию охватывают различные направления деятельности человека. Дело в том, что в условиях непрерывного изменения информационных и бизнес процессов разработка и внедрение программных продуктов просто необходимы. В качестве объекта исследования рекомендуется выбрать некоторую организацию, предприятия или общество, а в качестве предмета исследования – программный продукт, способный снизить трудовые и финансовые затраты или увеличить прибыль хозяйствующего субъекта.

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

Наиболее актуальные темы курсовых по программированию можно привести в следующей таблице.

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

3 Описание функций

Функция разброски яблок.

1. Процесс int x, y, I;

2. Заводится цикл while, в котором задаем координаты объекта – фрукта.

x = rand() % 56 + 3;

y = rand() % 19 + 3;

3. Проверяется объект- фрукт, попало ли оно на объект – змейку.

4. Если объект – фрукт пресекся с объектом – змейка.

5. Если объект – фрукт не пресекся с объектом – змейка, то запоминается позиция объект – фрукт.

6. Переносится курсор в последнею успешную позицию.

7. Присваивается цвет объекту – фрукту.

8. Присваивается изображение объекту – фрукт

Функция старта змейки ее координат и скорость.

1. Задается точки – размер объекта – змейка.

2. После создания позиция запоминается.

3. Задается скорость передвижения объекта – змейка.

4. Выполняется рисунок объекта — фрукт.

Функция для выполнения рисунков и движений объектам.

1. Вводятся координаты головы объекта – змейка.

2. Вводятся координаты хвоста объекта – змейка.

3. Проверяется следующая точка по направлению объекта – змейка.

4. Проверяется объект – змейка и объект – стена, не пересек ли объект – змейка с объектом – стена.

— При соприкосновении с объектом – стена выводится сообщение «GAME OVER» и производится выход, как видно на рисунке 2.

— При не соприкосновении с объектом – стена игра продолжается.

5. Выполняется проверка объекта – змейка не соприкоснулся он сам собой.

— При соприкосновении выводиться сообщении «GAME OVER» и производится выход, как видно на рисунке 3.

— При не соприкосновении игра продолжается.

6. При поедании объекта – фрукт производиться перекомпиляция объекта – змейка путем увеличения ее длины на одну точку.

7. Появляется новый массив, больший на одну единицу.

8. После съедания объекта – фрукт, закрашивается в цвет объекта – змейка.

9. Происходит закрашивание хвоста объекта – змейка в зеленый цвет.

10. Производиться закрашивание головы объекта – змейка в белый цвет.

Функции управления экранными объектами.

1. Goto X Y () – это функция размещения объекта по координатам х и у.

2. Move (Game &g) – это функция отвечает за движение и прорисовку объектов.

3. PlusJabloko (Game &g) – это функция, отвечающая за случайный разброс фруктов по полю.

4. skorostGame (Game &g) – это функция, отвечающая за старт объекта – змейка, а также её координат и скорости.

5. SetColor (ConsoleColor text, ConsoleColor background) – это функция, отвечающая за изменения цвета текста и объектов.

6. STENA_2 () – это функция, отвечающая за прорисовку объекта – стена, с координатами х и у.

7. ZmejaStart () – это функция, отвечающая за старт игры.

8. Main () – это функция создания основной формы.

Глава 4. Тестирование программы

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

Попробуем вывести змейку за пределы поля, результат мы видим на рисунке 2.

Выводиться сообщение о проигрыше

Теперь попробуем столкновение змейки со своим хвостом, и мы увидим результат на рисунке 3.

Осталось только закончить игру, окончание мы увидим на рисунке 4.

Выводиться сообщение о выигрыше

Сущность языка программирования

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

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

Описание программного языка как правило разделяется на два компонента синтаксис (форма) и семантика (значение). Некоторые языки четко определены при помощи документаций, например, ISO стандарты в случае с языком программирования C, тогда как другие используют декларативные формы, то есть описывается, что представляет собой проблема и ожидаемый результат.

Языки программирования обладают следующими характерными чертами:

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

Абстракция – языки программирования обычно содержат абстракции для обозначения и управления структурой данных и порядком управления.

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

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

Конрад Цузе создал свой высокоуровневый язык Планкалкюль (Plankalkül) в 1943-1945 для своего Z1 компьютера, но язык не был имплементирован.

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

Читайте также:  F.A.Q. (часто задаваемые вопросы)

В ранних 1950-х, Алик Глени разработал Autocode, возможно первый компилируемый язык программирования. В 1954 году вторая итерация данного языка известная как Mark 1 Autocode была разработана для Mark 1 Брукером Р.А. Затем в 1950-х вместе с Университетом Манчестера Брукер разработал Autocode для Ферранти Меркури. Версия для EDSAC 2 была разработана Дугласом Харти из Кембриджского Университета.

В 1954 году командой под лидерством Джона Бакус из IBM был изобретен FORTRAN. Это был первый повсеместно используемый высокоуровневый язык программирования с имплементацией функций. Данный язык все еще используется для написания программ оценки производительности суперкомпьютеров.

Период с 1960 по 1970 годов принес расцвет языков программирования. Большинство современных парадигм программирования появились именно в этот период.

Speakeasy – разработан в 1964 году в ANL Стэнли Кохен, является объектно-ориентированным языком программирования. Использует синтаксис Fortran как свою основу. Данный язык всё еще используется.

Simula – разработан в поздних 1960-х Нигардом и Далем как надстройка Algol 60, был первым языком с поддержкой объектно-ориентированного программирования.

C – компилируемый статически типизированный язык программирования общего назначения, разработанный в 1969—1973 годах сотрудником Bell Labs Деннисом Ритчи как развитие языка B.

Smalltalk – середина 1970-х, предоставил фундаментальный дизайн объектно-ориентированного языка.

Prolog – разработан в 1972 году Колмерауером, Рузелом и Ковальски, является первым логическим языком программирования.

ML – разработан Робином Милнером в 1973 году, разработал статическую типизацию функциональных языков программирования.

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

В 1960-1970-х также проводились дебаты о преимуществах «структурированного программирования», что означает программирование без использования «goto». Большая часть программистов верила в то, что использование «goto» является плохим стилем программирования за исключением некоторых случаев. Причина возникновения подобных дебатов являлось то, что некоторые языки программирования не использовали «goto», что заставляло программистов использовать структурированный подход к программированию.

В 1980-ые вместо создания новых парадигм, все начали более тщательно прорабатывать идеи разработанные в прошлом десятилетие. C++ совместило объектно-ориентированное программирование и системное программирование. США стандартизировали Ada. Многие страны начали инвестировать в пятое поколение языков программирования.

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

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

В 1990-х благодаря росту популярности сети интернет, открылись новые платформы для компьютерных систем. Интернет дал возможность новым языкам таким как JavaScript получить популярность благодаря ранней интеграции с Netscape Navigation браузером. Различные другие языки получили распространение в разработки специальных приложений для веб-серверов, например, PHP.

Более радикальными и инновационными чем RAD языки стали новые сценарные языки. Они имели новый синтаксис и более свободное объединение функций. Сценарные языки стали самыми выдающимися языками для веб разработки.

В настоящее время присутствуют определенные тренды развития языков программирования, такие как:

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

• императивная парадигма – исходный код состоит из команд, которые выполняются последовательно, а результат этих команд может быть записан в память и читаться последующими инструкциями;

• декларативная парадигма – в данном стиле написания исходного кода задаётся спецификация решения задачи, то есть описывается, что представляет собой проблема и ожидаемый результат;

• структурная парадигма – в основе лежит представление программы в виде иерархической структуры блоков;

• функциональная парадигма – противопоставляется императивной парадигме;

• логическая парадигма – основа на автоматическом доказательстве теорем;

• объектно-ориентированная парадигма — основана на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определённого класса, а классы образуют иерархию наследования.

Практически все современные языки программирования в той или иной степень допускают использование различных парадигм, также парадигмы зачастую пересекаются в деталях. По статистике tiobe.com из 5 самых популярных языков программирования 4 являются объектно-ориентированными языками.

Специфика объектно-ориентированной парадигмы программирования

Объектно-ориентрованное программирование является одной из методологий (парадигм) разработки программного обеспечения, в эту методологию входят языки, основанные на концепции «объектов» – условных сущностей, которые объединяют в себе поля (данные) и методы (выполняемые объектом действия).

Достаточно сложно конкретно определить, что такое объектно-ориентированный язык программирования, одним из основных подходов являются 6 принципов Алана Кэя, отца основателя ООП.

Особенностями данных объектно-ориентированных языков использование механизмов, таких как – наследование, инкапсуляция, полиморфизм.

Наследование — Создание нового класса объектов путём добавления новых элементов (методов). Некоторые объектно-ориентированные языки позволяют выполнять множественное наследование, то есть объединять в одном классе возможности нескольких других классов.

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

Полиморфизм – при полиморфизме некоторые части (методы) родительского класса заменяются новыми, реализующими специфические для данного потомка действия. Таким образом, интерфейс классов остаётся прежним, а реализация методов с одинаковым названием и набором параметров различается. В ООП обычно применяется полиморфизм подтипов (называемый при этом просто «полиморфизмом»), нередко в форме позднего связывания.

Абстракция – для выделения в моделируемом предмете важного для решения конкретной задачи по предмету, в конечном счёте — контекстное понимание предмета, формализуемое в виде класса;

Многие современные языки созданы специально для облегчения объектно-ориентированного программирования. Техники объектно-ориентированного программирования можно использовать и для не-объектно-ориентированного программирования. Такие языки содержат следующий набор элементов:

Некоторые языки также добавляют дополнительные средства, такие как:

Не все языки отвечают принципам ООП в полной мере, существуют гибридные языки объединяющие объективную парадигму с другой парадигмой или даже двумя и более.

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

Python как актуальный язык для написания приложений

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

Язык поддерживает различные методологии, такие как – структурная, обобщенная, объектно-ориентированная, аспектно-ориентированная и. функциональная.

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

Python придерживается определенной философии сформулированной Тимом Петерсом, звучит она так:

Данный текст можно вывести при помощи команды import this.

Python работает почти на всех платформах, начиная от КПК и заканчивая мейнфреймами. Возможности портируемости обеспечиваются поддержкой характерных для каждой платформы технологий, например, для виртуальных машин Java существует версия Python под название Jython, что позволяет выполнять работу в интерпретаторе на любой системе с поддержкой Java.

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

Курсовые работы по Программированию и и Прикладной информатике

Изображение 1 – Стандартная иерархия типов в Python.

Синтаксис языка является четким и последовательным, что упрощает чтение кода человеком. В терминологии с 2018 года в коде при передаче аргументов в функции используются parent (родитель) и child (ребенок).

Набор операторов в Python состоит из:

Блоки в Python выделяются при помощи табуляции, что приучает программистов к более чистому стилю написания кода и сокращает количество строк кода.

Выражения являются полноправными операторами в Python. Синтаксис, состав, приоритет и ассоциативность операций являются стандартными для языков программирования.

Имена могут начинаться с любой латинской буквы, или буквы любого алфавита Unicode начиная с Python 3, любого регистра или подчеркивания, после чего можно указывать и цифры, но нельзя использовать ключевые слова. Интерпретатор имеет доступ к трём пространствам имен: локальному, глобальному и встроенному.

Механизм документирования pydoc позволяет вести документацию в начале каждого класса, функции и модуля по средству вставки строки документации – docstring.

Для использования символов, не входящих в ASCII необходимо указывать кодировку исходного кода в начале модуля.

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

Также Python обладает богатой стандартной библиотекой с поддержкой многих сетевых протоколов и форматами Интернета, набор модулей для работы с операционной системой, модули для работы с текстовыми кодировками, регулярными выражениями, криптографическими протоколами, архивами, мультимедийными форматами, и другие. Помимо стандартной библиотеки существует огромное множество различных библиотек доступных к установке.

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

Анализ существующих решений

Существует огромное множество калькуляторов, написанных как профессиональными разработчиками, так и начинающими программистами для изучения того или иного языка программирования. Рассмотрим более подробно калькулятор, написанный профессиональными программистами из штата Канзас США под названием Moffsoft FreeCalc (Изображение 2).

Курсовые работы по Программированию и и Прикладной информатике

Изображение 2 – Окно Windows калькулятора «Moffsoft FreeCalc».

При запуске приложение имеет стандартные элементы окна Windows, экранные кнопки закрыть, развернуть и свернуть в верхнем правом углу, строка заголовка содержит название приложения и иконку. Строка меню содержит кнопки File, Edit, View, Options, Help. File позволяет сохранить или распечатать результаты вычислений. Edit позволяет копировать и вставлять готовые выражения, а также сбросить размер окна приложения. View позволяет изменить внешний вид кнопок приложения. Options позволяет изменить цветовую схему, сделать приложение всегда поверх других окон. Help выводит помощь по работе в приложение, а также позволяет перейти на сайт разработчика. В рабочей области расположено поле ввода значений, ниже данного поля расположены кнопки для ввода значений выражений и выбора операторов, таких как сложение, вычитание, умножение, деление, возведение в квадрат, нахождения процента числа, при помощи мыши. В левом нижнем углу расположена строка состояния приложения.

Читайте также:  «Темы семейного права в дипломных работах и ​​темы курсовых работ, проводимых кафедрой «Математические методы и информационные технологии в менеджменте»

Размер окна калькулятора можно изменять при помощи перетягивания визуального индикатора в правом нижнем углу экрана. При вытягивании окна в ширину станет доступен лог выполненных действий (изображение 3).

Курсовые работы по Программированию и и Прикладной информатике

Изображение 3 – Лог действий в «Moffsoft FreeCalc».

Также имеется возможность изменения цветовой схемы приложения (Изображение 4).

Курсовые работы по Программированию и и Прикладной информатике

Изображение 4 – Измененная цветовая схема «Moffsoft FreeCalc».

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

Рассмотрим другой калькулятор, разработанный компанией MicroInvention под названием CrossGL Surface Calculator (Изображение 5).

Курсовые работы по Программированию и и Прикладной информатике

Изображение 5 – Окно Windows калькулятора «CrossGL Surface Calculator».

При запуске приложение выглядит как настольный калькулятор, отсутствуют какие-либо классические элементы окна Windows, при наведении курсора в правый нижний угол окна приложения, появляется интерактивный элемент (изображение 6), позволяющий изменить размер окна. Кнопки приложения для работы с функциями и вводом значений работают аналогично Moffsoft FreeCalc.

Курсовые работы по Программированию и и Прикладной информатике

Изображение 5 – Интерактивный элемент изменения размера окна приложения «CrossGL Surface Calculator».

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

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

Составление требований к приложению

Каждое приложение должно соответствовать определенным требованиям, которые обоснованы задачами, выполняемыми приложением.

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

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

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

Должны присутствовать экранные кнопки для закрытия и сворачивания приложения.

Приложение должно иметь свое имя и уникальную иконку.

После составления требования можно приступать к написанию приложения.

Шаги написания приложения

Прежде чем приступить к написанию приложения, необходимо определить какая среда разработки, окружение и библиотеки будут использованы при написании приложения. Средой разработки является – PyCharm, окружением – Conda, также будут использоваться стандартная библиотека Python 3.7 вместе с tkinter и ttkthemes для работы с графическим интерфейсом.

Первым шагом необходимо создать проект (изображение 6) который будет являться основой для работы в PyCharm.

Курсовые работы по Программированию и и Прикладной информатике

Изображение 6 – Окно создания проекта в PyCharm.

После создания проекта в папке проекта необходимо создать файл с расширение .py в котором и будет записан весь код. В данном случае это будет файл calculator.py (Изображение 7).

Курсовые работы по Программированию и и Прикладной информатике

Изображение 7 – Создание файла с расширением .py.

После создания файла приступим непосредственно к разработке, в первую очередь необходимо импортировать и настроить библиотеки tkinter и ttkthemes для создания “черновика” графического интерфейса приложения. Tkinter является встроенной библиотекой, для установки ttkthemes нужно использовать команду pip install ttkthemes в терминале Python

Далее используя операторы from и import импортируем библиотеки в текущий проект (изображение 8).

Курсовые работы по Программированию и и Прикладной информатике

Изображение 8 – Код импорта библиотек.

Затем задаем параметры для окна приложения используя библиотеку ThemedTk (изображение 9). Где root = окно приложения.

Курсовые работы по Программированию и и Прикладной информатике

Изображение 9 – Код задания параметров для окна приложения.

После задаем параметры размера поля ввода и выведения результата вычислений, где e = поле ввода чисел (изображение 10).

Курсовые работы по Программированию и и Прикладной информатике

Изображение 10 – Код размера поля ввода и выведения результата вычислений.

Далее используя оператор def и button_click делаем возможным выведение результата выражения в поле ввода (изображение 11) STR значений. Также здесь используются объекты e.delete и e.insert которые будут описаны далее.

Курсовые работы по Программированию и и Прикладной информатике

Изображение 11 – Код задания условия поля ввода и выведения результата вычислений.

Далее используя def задаем кнопку очистки поля ввода (изображение 12).

Курсовые работы по Программированию и и Прикладной информатике

Изображение 12 – Код кнопки очистки поля.

Далее используя оператор def и глобальные переменные f_num и math, задаем значения кнопок математических действий плюс, минус, умножить, разделить (изображение 13)

Курсовые работы по Программированию и и Прикладной информатике

Изображение 13 – Код кнопок плюс, минус, умножить, разделить.

Далее используя оператор if и def задаем условия для выведения ответа на экран при нажатии кнопки равно (изображение 14).

Курсовые работы по Программированию и и Прикладной информатике

Изображение 14 – Код кнопки равно.

Далее задаем для каждой кнопки текстовое значение и функцию кнопки которое в последствие будет использовано пользователя для идентификации каждой кнопки (изображение 15)

Курсовые работы по Программированию и и Прикладной информатике

Изображение 15 – Код задания кнопкам текстовых значений.

Далее используя гридовую систему выводим кнопки на экран как графические элементы (изображение 16).

Курсовые работы по Программированию и и Прикладной информатике

Изображение 16 – Код вывода кнопок как графических элементов.

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

Курсовые работы по Программированию и и Прикладной информатике

Изображение 17 – Код создание цикла работы приложения.

После завершения написания кода необходимо сохранить файл .py, затем открыть терминал Python и ввести $ pip install auto-py-to-exe, что позволит установить конвертер из .py в формат .exe. После установки конвертера, используя терминал ввести python -m auto_py_to_exe, данная команда откроет окно Auto Py To Exe, выполнить настройку (изображение 18), по нажатию кнопки Convert to exe программа произведет конвертацию файла в формат .exe и откроет папку с данным файлом (изображение 19).

Курсовые работы по Программированию и и Прикладной информатике

Изображение 18 – Настройка Auto Py to Exe.

Курсовые работы по Программированию и и Прикладной информатике

Изображение 19 – Содержание папки с .exe файлом.

При открытии файла приложение имеет вид, продемонстрированный на изображение 20. Данный файл может быть распространен отдельно и не требует каких-либо предустановленных приложений или интерпретаторов. Также в приложение 1 предоставлена ссылка на Github с полным кодом приложения и .exe файлом для запуска приложения.

Курсовые работы по Программированию и и Прикладной информатике

Изображение 20 – GUI приложения «Калькулятор “МОИ”»

2 Выбор языка программирования

Язык С++ считается в реальное время более все-распространённым и многообещающим языком программирования. К важным свойственным свойствам С++ следует отнести прежде всего сильную помощь объектно-ориентированного подхода к разработке программ и механизма параметризации типов и алгоритмов. Широкий диапазон типов и развитие способности построения пользовательских типов дают возможность правильно отражать особенности предметной области. Развитые схемы преобразования и приведения типов дают возможность гарантировать необходимый компромисс между жесткой типизацией и эффективностью выполнения программ.

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

Наиболее важное понятие языков объектно-ориентированного программирования – это понятие объекта (object). Объект – это логическая единица, которая содержит данные и правила (методы) обработки этих данных. В языке С++ в качестве этих правил обработки выступают функции, т. е. объект в Borland C++ объединяет в себе данные и функции, обрабатывающие эти данные. Одним из самых ключевых понятий языка С++ считается понятие класса. В языке С++ для того, чтобы классифицировать объект, надо сначала классифицировать его форму с помощью ключевого слова. Всякий объект языка С++ содержит однообразные атрибуты и функциональность с другими объектами того же класса. За создание собственных классов и поведения объектов этих классов полную ответственность несет сам разработчик программного обеспечения. Работая в некоторой среде, разработчик программного обеспечения получает доступ к обширным библиотекам стандартных классов. Как правило, объект располагается в некотором уникальном состоянии, определяемом текущими значениями его атрибутов.

1 Программирование задачи

На данном этапе производим написание кода исходной программы, которая будет находиться в приложение А (Исходный код программы «Змейка»), после постановления задач и составления алгоритма решения, используемый алгоритм в итоге будет записан на выбранном языке программирования (C++).

В нашем коде структура и объявление структуры представляет в виде:

struct Zmeja – структура змейки

int PCount; — количество яблок

Любой элемент данных, называемый полем, содержит разное назначение. Одно поле содержит точки, другое количество фруктов. Впрочем, все эти поля связаны между собой, потому что относятся к одному и тому же объекту – змейка. Поскольку в объектах также возможно хранить группы разнотипных данных, то они также содержат структуры. Различие структуры от класса в том, что в структуре нет закрытых и защищенных членов. Все члены структуры не закрыты.

Вообще объявление структуры аналогично объявлению класса, но вместо ключевого слова class пишется ключевое слово Struct:

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

Глава 1. Постановка задач

Предметная область данного проекта – игра «Змейка». Она реализуется с помощью нажатия на клавиши на клавиатуре (передвижение головы змеи и поедание фруктов, при поедании фруктов начисляются баллы и увеличивается длинна змеи).

Читайте также:  Кабинеты знаменитостей. 20 кабинетов Достоевского - Традиции в дизайне и архитектуре — LiveJournal

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

4 Графический интерфейс

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

Так же в данном коде мы использовали цвета (Pink Blue, Green Cyan, Red, Magenta, Brown, LightGray, DarkGray, LightBlue, LightGreen, LightCyan, LightRed, LightMagenta, Yellow, White), для закрашивания экранных объектом разными цветами. В одном объекте могут присутствовать два цвета, внутренний и цвет контура. Ведь по умолчанию интерфейс программы будет белым и черным.

СПИСОК ИСТОЧНИКОВ

Исходный код приложения Калькулятор “МОИ”

from tkinter import *

from tkinter import ttk

from ttkthemes import ThemedTk

root = ThemedTk(theme=’yaru’) # Выбор темы

root.resizable(width=False, height=False) # Блокировка возможности изменения размера

root.title(‘Калькулятор «МОИ»‘) # Названия приложения

e = ttk.Entry(root, width=48,) # Поле ввода чисел

e.grid(row=0, column=0, columnspan=4, padx=4, pady=4)

e.focus_set() #Фокусировка в поле ввода чисел

# Введение цифр в поле

current = e.get()

e.insert(0, str(current) + str(number)) # выводить STR значения чесел

# Комманда для очистки поля

# Кнопка плюс

first_number = e.get()

math = «плюс»

f_num = int(first_number)

# Кнопка минус

math = «минус»

# Кнопка умножить

math = «умножить»

# Кнопка разделить

math = «делить»

# кнопка равно

second_number = e.get()

if math == ‘плюс’:

e.insert(0, f_num + int(second_number))

if math == ‘умножить’:

e.insert(0, f_num * int(second_number))

if math == ‘делить’:

e.insert(0, f_num / int(second_number))

if math == ‘минус’:

e.insert(0, f_num — int(second_number))

# Кнопки с цифрами

button_1 = ttk.Button(root, text=’1′, command=lambda: button_click(1))

button_2 = ttk.Button(root, text=’2′, command=lambda: button_click(2))

button_3 = ttk.Button(root, text=’3′, command=lambda: button_click(3))

button_4 = ttk.Button(root, text=’4′, command=lambda: button_click(4))

button_5 = ttk.Button(root, text=’5′, command=lambda: button_click(5))

button_6 = ttk.Button(root, text=’6′, command=lambda: button_click(6))

button_7 = ttk.Button(root, text=’7′, command=lambda: button_click(7))

button_8 = ttk.Button(root, text=’8′, command=lambda: button_click(8))

button_9 = ttk.Button(root, text=’9′, command=lambda: button_click(9))

button_0 = ttk.Button(root, text=’0′, command=lambda: button_click(0))

# кнопки математических выражений

button_plus = ttk.Button(root, text=’+’, command=button_plus)

button_equal = ttk.Button(root, text=’=’, command=button_equal)

button_multiply = ttk.Button(root, text=’*’, command=button_multiply)

button_minus = ttk.Button(root, text=’-‘, command=button_minus)

button_divide = ttk.Button(root, text=’/’, command=button_divide)

# Системные кнопки

button_clear = ttk.Button(root, text=’C’, command=button_clear)

# выведение кнопок на экран

button_1.grid(row=3, column=0, ipady=10)

button_2.grid(row=3, column=1, ipady=10)

button_3.grid(row=3, column=2, ipady=10)

button_4.grid(row=2, column=0, ipady=10)

button_5.grid(row=2, column=1, ipady=10)

button_6.grid(row=2, column=2, ipady=10)

button_7.grid(row=1, column=0, ipady=10)

button_8.grid(row=1, column=1, ipady=10)

button_9.grid(row=1, column=2, ipady=10)

button_0.grid(row=4, column=1, ipady=10)

button_clear.grid(row=4, column=0, ipady=10)

button_equal.grid(row=4, column=3, ipady=10)

button_minus.grid(row=2, column=3, ipady=10)

button_plus.grid(row=3, column=3, ipady=10)

button_divide.grid(row=4, column=2, ipady=10)

button_multiply.grid(row=1, column=3, ipady=10)

root.mainloop() # Создание цикла приложения

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. C/C++. Программирование на языке высокого уровня. Павловская Т.А. СПб.: Питер, 2004. – 461 с.

2. Структуры и алгоритмы обработки данных., Учебное пособие для вузов. Лойко В.И. – Краснодар: КубГАУ, 2004. – 261 с.

3. С/С++. Структурное и объектно-ориентированное программирование: Практикум. Павловская Т.А., Щупак. Ю.А – СПб.: Питер, 2011. -352 с.

4. Языки программирования С++, Страуструп Б., Бином, 2011. – 1136 с.

5. Основы алгоритмизации и программирования, Семакин И.Г., Шестаков А.П., – 3-е изд. -М., 2016. – 304 с.

6. С++ экспресс курс: Учебник., Лаптем В.В. – СПб.: Питер, 2004. – 512 с.

7. С++ учебный курс: Учебник., Франка П. – СПб.: Питер, 2005. – 522 с.

Исходный код программы С++ игры «Змейка»

using namespace std;

//HANDLE hStdout, hStdin;

HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);

GotoXY(int X, int Y)

Pink = 0,

Blue = 1,

Green = 2,

Cyan = 3,

Red = 4,

Magenta = 5,

Brown = 6,

LightGray = 7,

DarkGray = 8,

LightBlue = 9,

LightGreen = 10,

LightCyan = 11,

LightRed = 12,

LightMagenta = 13,

Yellow = 14,

White = 15

void SetColor(ConsoleColor text, ConsoleColor background)

int dx, dy,

void PlusJabloko(Game & g)

int i, x, y;

int n = g.gaduka.PCount;

for (i = 0; i < n; i++)

while (i < n);

g.jabloko.X = x;

g.jabloko.Y = y;

void skorostGame(Game & g)

g.gaduka.PCount = 3;

for (int i = 0; i < 3; i++)

g.dx = 1;

g.dy = 0;

g.pause = 100;

GotoXY(10, 15); cout << «Собирай больше фруктов » << endl;

SetColor(LightGreen, Pink); GotoXY(20, 0); cout << «Игра Змейка!!» << endl;

GotoXY(64, 2); cout << «Данные:» << endl;

GotoXY(64, 3); cout << «Фруктов собрано:0» << endl;

GotoXY(64, 4); cout << «Длина змейки:3» << endl;

GotoXY(64, 5); cout << «Скорость:0» << endl;

GotoXY(64, 7); cout << «Управление:» << endl;

GotoXY(64, 8); cout << «Esc:Выход» << endl;

GotoXY(64, 9); cout << «P:Пауза» << endl;

GotoXY(64, 10); cout << «K:Старт» << endl;

GotoXY(64, 13); printf(«%c», 24); cout << «:Вверх» << endl;

GotoXY(64, 14); printf(«%c», 25); cout << «:Вниз» << endl;

GotoXY(64, 15); printf(«%c», 27); cout << «:Влево» << endl;

GotoXY(64, 16); printf(«%c», 26); cout << «:Вправо» << endl;

int m = 0;

for (m = 0; m < 60; m++)

GotoXY(2, 3); cout << «#» << endl;

GotoXY(2, 4); cout << «#» << endl;

GotoXY(2, 5); cout << «#» << endl;

GotoXY(2, 6); cout << «#» << endl;

GotoXY(2, 7); cout << «#» << endl;

GotoXY(2, 8); cout << «#» << endl;

GotoXY(2, 9); cout << «#» << endl;

GotoXY(2, 10); cout << «#» << endl;

GotoXY(2, 11); cout << «#» << endl;

GotoXY(2, 12); cout << «#» << endl;

GotoXY(2, 13); cout << «#» << endl;

GotoXY(2, 14); cout << «#» << endl;

GotoXY(2, 15); cout << «#» << endl;

GotoXY(2, 16); cout << «#» << endl;

GotoXY(2, 17); cout << «#» << endl;

GotoXY(2, 18); cout << «#» << endl;

GotoXY(2, 19); cout << «#» << endl;

GotoXY(2, 20); cout << «#» << endl;

GotoXY(2, 21); cout << «#» << endl;

GotoXY(2, 22); cout << «#» << endl;

GotoXY(2, 23); cout << «#» << endl;

GotoXY(61, 3); cout << «#» << endl;

GotoXY(61, 4); cout << «#» << endl;

GotoXY(61, 5); cout << «#» << endl;

GotoXY(61, 6); cout << «#» << endl;

GotoXY(61, 7); cout << «#» << endl;

GotoXY(61, 8); cout << «#» << endl;

GotoXY(61, 9); cout << «#» << endl;

GotoXY(61, 10); cout << «#» << endl;

GotoXY(61, 11); cout << «#» << endl;

GotoXY(61, 12); cout << «#» << endl;

GotoXY(61, 13); cout << «#» << endl;

GotoXY(61, 14); cout << «#» << endl;

GotoXY(61, 15); cout << «#» << endl;

GotoXY(61, 16); cout << «#» << endl;

GotoXY(61, 17); cout << «#» << endl;

GotoXY(61, 18); cout << «#» << endl;

GotoXY(61, 19); cout << «#» << endl;

GotoXY(61, 20); cout << «#» << endl;

GotoXY(61, 21); cout << «#» << endl;

GotoXY(61, 22); cout << «#» << endl;

GotoXY(61, 23); cout << «#» << endl;

int Move(Game & g)

int& n = g.gaduka.PCount;

next.X = head.X + g.dx;

next.Y = head.Y + g.dy;

for (int i = 0; i < n; i++)

if (next.X == g.jabloko.X && next.Y == g.jabloko.Y)

g.gaduka.t = temp;

for (int i = 0; i < n — 1; i++)

hConsole = GetStdHandle(STD_OUTPUT_HANDLE);

int key = 0, count = 0;

bool Pause = false;

while (key != 27)

if (Pause == true)

g.pause -= 1;

GotoXY(64, 3); cout << «Количество фруктов:» << count << endl;

GotoXY(64, 4); cout << «Длинна змейки:» << g.gaduka.PCount << endl;

GotoXY(64, 5); cout << «Скорость:» << g.pause << endl;

GotoXY(64, 10); cout << «S:Старт» << endl;

if (count == 75)

GotoXY(15, 1); cout << «Вы победили» << endl;

GotoXY(15, 6); printf(»
«);

GotoXY(15, 7); printf(»
«);

GotoXY(23, 1); printf(«GAME OVER»);

key = _getch();

Pause = !Pause;

if (key == 72 && g.nap != DOWN)

g.nap = UP;

g.dx = 0;

g.dy = -1;

else if (key == 80 && g.nap != UP)

g.nap = DOWN;

g.dy = 1;

else if (key == 75 && g.nap != RIGHT)

g.nap = LEFT;

g.dx = -1;

else if (key == 77 && g.nap != LEFT)

g.nap = RIGHT;

Рисунок 1. Стартовый вид игры при запуске

Курсовые работы по Программированию и и Прикладной информатике

Рисунок 2. Змейка ударилась об объект — стена

Курсовые работы по Программированию и и Прикладной информатике

Рисунок 3. Голова змейки ударилась об свой же хвост

Курсовые работы по Программированию и и Прикладной информатике

Рисунок 4. Конченый итого после победы в игре

Курсовые работы по Программированию и и Прикладной информатике

ЗАКЛЮЧЕНИЕ

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

В процессе выполнения данного курсового проекта были закреплены познания по применению классов и применению основ объектно-ориентированного программированию.

Конец игры предусмотрен лишь в одном случаи: при поедании 75 фруктов. Также в процессе написания программы были рассмотрены все варианты неправильной работы программы, к примеру: не находиться ли головы змеи на фрукте или не пресекает ли голова змеи заданное игровое поле. Все эти проблемы были выявлены и благополучно устранены.

Также мной были получены новые познания в области написания объектно-ориентированных программ, разработке классов и работе с ними.

Оцените статью
Добавить комментарий