Файл: камчатский государственный технический университет.docx
Добавлен: 28.03.2024
Просмотров: 46
Скачиваний: 0
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Для выполнения курсовой работы выделим следующие задачи:
-
Анализ и выбор языка программирования для решение поставленной задачи. -
Составить математическую модель для решения поставленной задачи. -
Провести анализ структур данных с учётом математической модели и особенностей языка программирования. Выбор наиболее подходящего языка для решения поставленной задачи. -
Составить архитектуру ПО. -
Разработать алгоритм решения поставленной задачи. -
Написать код и провести его тестирование. -
Исправить ошибки при тестировании (При их наличии).
2 Анализ и выбор языка программирования
Для решения поставленной задачи рассматривались следующие языки программирования: Python, Java, C++
2.1 Python
Интерпретируемый объектно-ориентированный язык программирования высокого уровня с динамической типизацией, автоматическим управлением памятью и удобными высокоуровневыми структурами данных, такими как словари (хэш-таблицы), списки, кортежи.
Поддерживает классы, модули (которые могут быть объединены в пакеты), обработку исключений, а также многопоточные вычисления. Питон обладает простым и выразительным синтаксисом. Язык поддерживает несколько парадигм программирования: структурное, объектно-ориентированное, функциональное и аспектно-ориентированное.
Стандартная библиотека включает большой набор полезных переносимых функций, начиная от функционала для работы с текстом и заканчивая средствами для написания сетевых приложений. Дополнительные возможности, такие как математическое моделирование, работа с оборудованием, написание веб-приложений или разработка игр, могут реализовываться посредством обширного количества сторонних библиотек, а также интеграцией библиотек, написанных на Си или C++, при этом и сам интерпретатор Python может интегрироваться в проекты, написанные на этих языках. Существует и специализированный репозиторий программного обеспечения, написанного на Python, — PyPi. Данный репозиторий предоставляет средства для простой установки пакетов в операционную систему и стал стандартом де-факто для Python. По состоянию на 2019 год в нём содержалось более 175 тысяч пакетов.
Python стал одним из самых популярных языков, он используется в анализе данных, машинном обучении, DevOps и веб-разработке, а также в других сферах, включая разработку игр. За счёт читабельности, простого синтаксиса и отсутствия необходимости в компиляции язык хорошо подходит для обучения программированию, позволяя концентрироваться на изучении алгоритмов, концептов и парадигм. Отладка же и экспериментирование в значительной степени облегчаются тем фактом, что язык является интерпретируемым.
2.2 Java
Java — строго типизированный объектно-ориентированный язык программирования общего назначения, разработанный компанией Sun Microsystems (в последующем приобретённой компанией Oracle). Разработка ведётся сообществом, организованным через Java Community Process; язык и основные реализующие его технологии распространяются по лицензии GPL. Права на торговую марку принадлежат корпорации Oracle.
Приложения Java обычно транслируются в специальный байт-код, поэтому они могут работать на любой компьютерной архитектуре, для которой существует реализация виртуальной Java-машины. Дата официального выпуска — 23 мая 1995 года. Стабильно занимает высокие места в рейтингах популярности языков программирования (2-е место в рейтингах IEEE Spectrum (2020) и TIOBE (2021).
Программы на Java транслируются в байт-код Java, выполняемый виртуальной машиной Java (JVM) — программой, обрабатывающей байтовый код и передающей инструкции оборудованию как интерпретатор.
Достоинством подобного способа выполнения программ является полная независимость байт-кода от операционной системы и оборудования, что позволяет выполнять Java-приложения на любом устройстве, для которого существует соответствующая виртуальная машина.
Другой важной особенностью технологии Java является гибкая система безопасности, в рамках которой исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером), вызывают немедленное прерывание.
Часто к недостаткам концепции виртуальной машины относят снижение производительности. Ряд усовершенствований несколько увеличил скорость выполнения программ на Java:
-
применение технологии трансляции байт-кода в машинный код непосредственно во время работы программы (JIT-технология) с возможностью сохранения версий класса в машинном коде, -
обширное использование платформенно-ориентированного кода (native-код) в стандартных библиотеках, -
аппаратные средства, обеспечивающие ускоренную обработку байт-кода (например, технология Jazelle, поддерживаемая некоторыми процессорами архитектуры ARM).
2.3 C++
C++ — компилируемый, статически типизированный язык программирования общего назначения.
Поддерживает такие парадигмы программирования, как процедурное программирование
, объектно-ориентированное программирование, обобщённое программирование. Язык имеет богатую стандартную библиотеку, которая включает в себя распространённые контейнеры и алгоритмы, ввод-вывод, регулярные выражения, поддержку многопоточности и другие возможности. C++ сочетает свойства как высокоуровневых, так и низкоуровневых языков. В сравнении с его предшественником — языком C — наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования.
C++ широко используется для разработки программного обеспечения, являясь одним из самых популярных языков программирования. Область его применения включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также игр. Существует множество реализаций языка C++, как бесплатных, так и коммерческих и для различных платформ. Например, на платформе x86 это GCC, Visual C++, Intel C++ Compiler, Embarcadero (Borland) C++ Builder и другие. C++ оказал огромное влияние на другие языки программирования, в первую очередь на Java и C#.
В книге «Дизайн и эволюция C++» Бьёрн Страуструп описывает принципы, которых он придерживался при проектировании C++. Эти принципы объясняют, почему C++ именно такой, какой он есть. Некоторые из них:
-
Получить универсальный язык со статическими типами данных, эффективностью и переносимостью языка C. -
Непосредственно и всесторонне поддерживать множество стилей программирования, в том числе процедурное программирование, абстракцию данных, объектно-ориентированное программирование и обобщённое программирование. -
Дать программисту свободу выбора, даже если это даст ему возможность выбирать неправильно. -
Максимально сохранить совместимость с C, тем самым делая возможным лёгкий переход от программирования на C. -
Избежать разночтений между C и C++: любая конструкция, допустимая в обоих языках, должна в каждом из них обозначать одно и то же и приводить к одному и тому же поведению программы. -
Избегать особенностей, которые зависят от платформы или не являются универсальными. -
«Не платить за то, что не используется» — никакое языковое средство не должно приводить к снижению производительности программ, не использующих его.
3 Обзор принципов структурного программирования
Структурное программирование в 70-х годах появилось, как абсолютно новое и прогрессивное направление в программировании. Такой подход решал проблемы, возникающие в процессе разработки больших программ либо внесении в них изменений.
Основной идеей структурного программирования стал особый подход при создании программного обеспечения, когда каждая программа является особо сложной иерархической структурой блоков. Это могут быть подпрограммы, называемые функциями либо процедурами. Они объединяют в себе повторяющиеся фрагменты.
Согласно структурному программированиюглавная задача разбивается на подзадачи. Любая из них может решаться отдельно. Так программа делится на отдельные модули, выполняемые по мере необходимости. Такой подход используется в языках высокого уровня: C, C++, Pascal, Basic и др.
Таким образом к основным концепциям такого подхода относятся:
модульное программирование;
метод пошагового уточнения «сверху вниз» – основа разработки структуры программы;
использование структурных алгоритмов.
Следуя теореме Дийкстры, любой известный алгоритм реализуется через следование (последовательное исполнение модулей), повторение (цикл), выбор (альтернатива или множественное ветвление).
Соответственно структура любой программы строится из основных базовых конструкций:
– последовательное выполнение – операции исполняются по порядку;
– ветвление – исполняется один из двух либо большего количества вариантов;
– цикл – повторяется одна либо более операции до момента, пока выполняется заданное условие.
В программировании алгоритм представляет собой последовательность простых команд. Это могут быть обращения к другим алгоритмам либо структурные команды. Разработка алгоритмов происходит по методу последовательной детализации (построение идет «сверху вниз»).
Так сначала пишется основная программа, где каждый логически связанный блок заменяет вызов подпрограммы, которая выполняет данный фрагмент (вспомогательный – он реализуется позднее). Сама подпрограмма может содержать блоки, которые логично объединить. Потом, если основная структура программы работает правильно, вместо программ-заглушек ставят реально работающие функции.
Этот метод используется при конструировании особо сложных объектов и дает возможность эффективно организовать параллельную работу программистов над проектом. Вспомогательные алгоритмы создаются, когда приходит момент разбиения большой задачи на более простые. Этот метод является неизменным для любой программы.
4 Составление математической модели
Для определения математической модели введём следующие обозначения:
Price – стоимость покупки.
AnnualInterestRate – процентная ставка.
AnInitialFee – первоначальный взнос.
CreaditTerm – срок кредита.
ProductsQuanitity – количество продукта.
K – количество кредитов.
-
Сумма первоначальных взносов всех клиентов – totalInitialFee= -
Средняя стоимость товаров, проданных в кредит – countAveragePrice = -
Количество товаров, стоимость которых превышает 20000 рублей - countProductsQuantity = -
Вычисление месячного платежа – calculate =
-
Вычисление общей суммы кредита –
5 Выбор структуры данных
Структура данных — это контейнер, который хранит данные в определенном макете. Этот «макет» позволяет структуре данных быть эффективной в некоторых операциях и неэффективной в других.
Существуют линейные и нелинейные структуры. Линейные, элементы образуют последовательность или линейный список, обход узлов линеен. Примеры: Массивы. Связанный список, стеки и очереди. Нелинейные, если обход узлов нелинейный, а данные не последовательны. Пример: граф и деревья
5.1 Массив
Массив – это структура данных с фиксированным и упорядоченным набором однотипных элементов (компонентов). Доступ к какому-либо из элементов массива осуществляется по имени и номеру (индексу) этого элемента. Количество индексов определяет размерность массива. Так, например, чаще всего встречаются одномерные (вектора) и двумерные (матрицы) массивы. Первые имеют один индекс, вторые – два.