Помощь студентам дистанционного обучения: тесты, экзамены, сессия
Помощь с обучением
Оставляй заявку - сессия под ключ, тесты, практика, ВКР
Скоро защита?

Разработка программного продукта для решения прикладных задач

Автор статьи
Валерия
Валерия
Наши авторы
Эксперт по сдаче вступительных испытаний в ВУЗах
Введение 5 Глава 1. Анализ заданий курсовой работы 7 1.1. Исходные данные к заданиям курсовой работы 7 1.2. Анализ методических указаний, входных и выходных данных к заданиям курсовой работы 10 1.3. Выбор и обоснование необходимых библиотек и среды разработки 15 Глава 2. Разработка программного продукта для решения прикладных задач 18 2.1. Разработка программного продукта для работы с наборами данных 18 2.1.1. Построение алгоритма решения задания без графического интерфейса 18 2.1.2. Разработка программной реализации 18 2.1.3. Тестирование и отладка 18 2.2. Разработка аналитической системы. Приложение для обслуживания клиентов банка 19 2.2.1. Построение алгоритма решения задания с графическим интерфейсом 19 2.2.2. Разработка программной реализации 20 2.2.3. Тестирование и отладка 21 2.3. Разработка экспертной системы. Приложение «Калькулятор» 23 2.3.1. Построение алгоритма решения задания с графическим интерфейсом 23 2.3.2. Проектирование стандартного функционала 24 2.3.3. Проектирование расширенного функционала 25 2.3.4. Разработка программной реализации 25 2.3.5. Индивидуальное задание реализации дополнительных функций 28 2.3.6. Тестирование и отладка 29 2.4. Разработка логико-аналитической системы. Приложение «Ханойские башни» 31 2.4.1. Построение алгоритма решения задания с графическим интерфейсом 31 2.4.2. Разработка программной реализации 32 2.4.3. Тестирование и отладка 33 Выводы 36 Литература 37 ПРИЛОЖЕНИЕ А 38

Введение

С развитием информационных технологий и телекоммуникаций, жизнь становится все более мобильной и информативной, новые технологии прочно входят в различные отрасли хозяйствования, сферы жизни и несут новые нормы в них. В связи с реформированием экономики, с взятием курса на инновационное развитие экономики, всё чаще и чаще в повседневной работе в большинстве предприятий и организаций используют различные средства информационно вычислительной техники и соответственно программного обеспечения. Реализация корпоративных программ на языке Python становится частым решением в больших компаниях. Это интерпретируемый, объектно-ориентированный высокоуровневый язык программирования с динамической семантикой. Встроенные высокоуровневые структуры данных в сочетании с динамической типизацией и связыванием делают язык привлекательным для быстрой разработки приложений (RAD, Rapid Application Development). Кроме того, его можно использовать в качестве сценарного языка для связи программных компонентов. Актуальное состояние проводимых исследований достаточно активно развивается и хорошо изучено. Поставленные задачи предполагают работу со структурами данных и алгоритмами в языка Python. Проблематика исследований заключается в изучении синтаксических особенностей языка, использовании процедурных и других парадигм программирования. Работе усложнена решением задач с визуализацией итоговых результатов, а также самостоятельной разработкой калькулятора с расширенным набором математических функций. Объектом исследование выступаем методология программирования на языке Python с учетом синтаксических, и семантических особенностей языка, а также все предметные области поставленных задач. Предметом исследования являются конкретно поставленные задачи в ходе которых необходимо применить практические навыки решения математических задач. Теоретическая база в основном описывает синтаксис языка Python, он прост в изучении, в нем придается особое значение читаемости кода, а это сокращает затраты на сопровождение программных продуктов. Python поддерживает модули и пакеты, поощряя модульность и повторное использование кода. Интерпретатор Python и большая стандартная библиотека доступны бесплатно в виде исходных и исполняемых кодов для всех основных платформ и могут свободно распространяться. Цель курсовой работы — изучение теоретических и практических основ построения и организации функционирования программных комплексов, их программного обеспечения и способов эффективного применения современных высокоуровневых методов программирования. Задачами курсовой работы является: 1) Получение теоретических и практических навыков решения прикладных информационных задач с использованием методик программирования высокого уровня; 2) Разработка индивидуальных программных продуктов (структурной и функциональной схем программного обеспечения, структур данных, алгоритмов и реализующих их программ, стратегии тестирования и тестовых данных).

Глава 1. Анализ заданий курсовой работы

1.1. Исходные данные к заданиям курсовой работы

Поставленные задачи разделяются на классы: 1) С визуализацией решения и интерактивным исправлением (графический интерфейс); 2) Без графического интерфейса. Всего поставлено 4 задания: 1) Формулировка задания №1. Во внешнем файле resourse_1.txt дан текст. Необходимо вывести все слова, встречающиеся в тексте, по одному на каждую строку, через пробел указав количество повторений. Слова должны быть отсортированы по убыванию их количества появления в тексте, а при одинаковой частоте появления — в лексикографическом порядке. Вывод должен осуществляться в текстовый файл result_1.txt. При необходимости можно продублировать вывод в консоль. Задание подразумевает работу с одномерными массивами и работой со строками в языке Python. После того, как будет создан словарь слов, необходимо отсортировать его по частоте встречаемости слова. Алгоритм задания будет устойчив к абзацным отступам в текстовом файле и учитывать знаки пунктуации. 2) Формулировка задания №2. Некоторый банк хочет внедрить систему управления счетами клиентов, поддерживающую следующие операции: – Пополнение счета клиента. – Снятие денег со счета. – Запрос остатка средств на счете. – Перевод денег между счетами клиентов. – Начисление процентов всем клиентам. Для выполнения этого задания необходимо создать реляционную базу данных с уникальными атрибутами и полями, а также добавить возможность вносить изменения в целостность системы. Задание требует навыков работы с текстовыми данным и их обработкой. 3) Формулировка задания №3. Разработать калькулятор со стандартным и расширенным функционалом. Стандартный функционал: – Арифметические действия + — * /. – Возможность ввода отрицательного числа – Возведение в степень. – Извлечение квадратного корня. – Работа с памятью, состоящей из одной ячейки. – Должна быть кнопка сброса и кнопка «=» (равно). Расширенный функционал: – Наличие кнопки/меню перехода в расширенный режим – Возможность работы с несколькими ячейками памяти. Количество ячеек памяти выбирается согласно методическим указаниям. – Отображение последовательности математических операций и цифр в n-строчном «дисплее», с возможностью «прокрутки». Количество строк «дисплея» калькулятора выбирается согласно методическим указаниям. – Реализация «инженерных» функций расширенного режима. Конкретный перечень функций выбирается согласно методическим указаниям. 4) Формулировка задания №4. Модифицированная задача о Ханойских башнях: Существует 8 шпинделей, пронумерованных от 8 до 1 слева направо. На каждом шпинделе надеты диски, в количестве, равном соответствующей цифре из ID студента. Все диски имеют разные диаметры. Диаметр диска равен M * 10 + N, где М – номер шпинделя, на котором надет диск, а N – это номер диска на шпинделе, считая сверху вниз. – Необходимо визуально изобразить предложенную задачу. Диски на шпинделях сделать случайных цветов. На каждом диске отображать цифру, равную его диаметру. Диаметр диска также показывать его фактическим размером в пикселях. – Необходимо вычислить, за какое минимальное количество итераций переместятся все диски на шпиндель номер 1 по следующим правилам: – За одну итерацию можно переместить не более одного диска; – Диски можно класть только с большего на меньший; – Со шпинделя номер 8 можно перекладывать диски только на шпиндели 7 и 6; – Со шпинделя номер 1 можно перекладывать диски только на шпиндели номер 2 и 3; – Со шпинделей от 2 по 7 можно перекладывать диски только на два соседних шпинделя. – Необходимо отобразить начальное и конечное расположение дисков на шпинделях, для этого под изображением Ханойских башен предусмотреть две кнопки «Начало» и «Окончание». При нажатии на нее, в надписи под схемой должен выводится текст «Итерация ХХ», где ХХ – номер итерации (либо 0, либо номер итоговой итерации, соответственно). – Необходимо графически отобразить четыре промежуточные итерации перекладывания дисков. Для этого: – Общее количество итераций признаётся равным 100%; – ID студента делится на 4 двузначных числа, каждое из которых обозначает итерацию, соответствующую этому проценту выполнения общей задачи; – Под изображением Ханойских башен предусмотреть четыре поля для ввода цифр с процентами выполнения. По умолчанию добавить туда числа из п. б); – Под каждым полем для ввода предусмотреть кнопку, при нажатии на которую схема Ханойской башни отображает расположение дисков на соответствующей итерации. Также в надписи под схемой должен выводится текст «Итерация ХХ», где ХХ – номер итерации; – Дать возможность пользователю изменять проценты в полях для ввода цифр, и по нажатию соответствующей кнопки просматривать расположение дисков на данной итерации.

1.2. Анализ методических указаний, входных и выходных данных к заданиям курсовой работы

Задание №1. Программа должна быть адаптивна для различного объема текстовых данных. Абзацные отступы не влияют на работу программы. Длинна слов, синтаксические ошибки также не влияют на точность выполнения работы. Входные данные: Текстовый файл resourse_1.txt (5-6 абзацев): Ниже представлен пример содержания текстового файла: hi hi what is your name my name is bond james bond my name is damme van damme claude van damme jean claude van damme В данном случае это короткий пример диалога, который содержит часто повторяющиеся слова. Выходные данные: Текстовый файл result_1.txt: Damme 4 Is 3 Name 3 Van 3 Bond 2 claude 2 hi 2 my 2 james 1 jean 1 what 1 Входные данные будут представлены в виде текста, необходимо преобразовать данные для удобной подачи текстовой обработки. Вывод результатов организован просто в виде отображения найденного соответствия в файле, а также количество его повторений. Задание №2. Первоначально у банка 1 клиент Yurina с суммой 70155002. Клиент(ы) банка идентифицируются именами (уникальная строка, не содержащая пробелов). Такой подход отображает функционирования реляционной базы данных и ее принципа – атомарности всех атрибутов и их уникальности. В отдельном поле должна быть предусмотрена возможность ввода простых команд, которые поддерживают следующие операции: DEPOSIT name sum Зачислить сумму sum на счет клиента name. Если клиента нет, то он создается и на него заводится счет с указанной суммой. WITHDRAW name sum Снять сумму sum со счета клиента name. Если клиента, то счет создается. Баланс при выполнении такой операции у вновь созданного клиента должен быть отрицательный. BALANCE name Узнать остаток средств на счету клиента name. Для каждого запроса BALANCE программа должна вывести остаток на счету данного клиента. Если же у клиента с запрашиваемым именем не открыт счет в банке, выводится сообщение «NO CLIENT». Если пользователь не указал имя клиента – то выводится баланс всех существующих клиентов. TRANSFER name1 name2 sum Перевести сумму sum со счета клиента name1 на счет клиента name2. Если у какого-либо клиента, то он заводится в системе и ему создается счет с переведенной суммой. INCOME p Начислить всем клиентам, у которых открыты счета, p% от суммы счета. Проценты начисляются только клиентам с положительным остатком на счету, если у клиента остаток отрицательный, то его счет не меняется. После начисления процентов сумма на счету остается целой, то есть начисляется только целое число денежных единиц. Дробная часть начисленных процентов отбрасывается. Программа обрабатывает текстовые команды из левого поля только после нажатия кнопки «Calculate». Результат выводится в поле справа. Количество команд, которые может ввести пользователь за один раз – не более 20. При необходимости следует предусмотреть прокрутку в поле. Пользователю допускается вводить «пустые строки» — несколько раз нажимать на кнопку «enter». При нажатии клавиши ввода «enter», фокус не переходит на кнопку «Calculate». Для «очистки» левого и правого полей предусмотрена кнопка «Clear», при этом данные о ранее введенных клиентах не теряются. Входные данные: Команды вводятся пользователем только большими буквами. Сама команда, имя клиента, суммы (числа) разделяются пробелами. Предполагается, что пользователь такой системы грамотный и команды с аргументами вводит без ошибок в рамках их выше сформулированного синтаксиса. Как только для несуществующего ранее клиента проводится операция пополнения (DEPOSIT), снятия (WITHDRAW) или перевода денег (TRANSFER), он вносится в систему, ему заводится счет с указанным балансом. Все дальнейшие операции проводятся только с этим счетом. Сумма на счету может быть, как положительной, так и отрицательной, при этом всегда является целым числом. Анализ входных данных показал, что необходимо добавить функции предобработки данных учитывая регистр и проверку на синтаксические ошибки. Выходные данные: Результат выполнения команд, отображение их в UI окне. Задание №3. Функционал «инженерного» режима работы калькулятора добавляется при нажатии на кнопку перехода в расширенный режим, либо выбора соответствующего пункта меню. Расширенный режим работы определяется внешним видом «цифрового дисплея», количеством ячеек памяти (кнопки M+, M-, MS, MR, MS) и кнопками, отвечающими за дополнительные функции. Количество строк «цифрового дисплея» определяется как последовательная сумма всех цифр ID студента (70155002) и равно 2. Суммирование отдельных цифр числа осуществляется до получения однозначного числа, состоящей из 1-й цифры. Данный процесс реализован с помощью рекурсивной функции. Для данной функции предусмотрена специальная кнопка. Количество ячеек памяти калькулятора определяется как последовательная сумма последних 3-х чисел ID (70155002) и равно 2. Суммирование отдельных цифр числа осуществляется до получения однозначного числа, состоящей из 1-й цифры. Данный процесс также реализован с помощью рекурсивной функции. Дополнительные функции расширенного режима: X3, 10^x, Pi, tanh возведение в куб, возведение десяти в произвольную степень, число Пи, гиперболический тангенс. Программа использует распространенные библиотеки. При намеренном выполнении некорректных операций калькулятор на цифровой дисплей выдает соответствующее сообщение об ошибке. Если же программу останавливает интерпретатор – то проверяемая функция считается не до конца отработанной. Входные данные: С помощью мыши вводятся числа и выполняются арифметические операции, дополнительные функции, некорректные операции (попытка деления на 0). Ошибок при самостоятельно вводе данных не зависят от программной реализации вычисления математических операций. Необходимости добавлять функции предобработки данных нет. Выходные данные: На цифровом дисплее будет отображаться результат, либо сообщение об ошибке при некорректной операции. Задание 4. Основная часть работы над задачей сводится к правильной визуализации полученных результатов, а также оптимальному поиску промежуточных результатов. Так как размер диска должен соответствовать его номеру на шпинделе и номеру самого шпинделя, умноженного на 10, то максимальный диаметр диска может быть 89. Поэтому для правильной визуализации без наложения дисков рекомендуется выдерживать расстояние между шпинделями примерно в 100-120 пикселей (для окна формата 1280х1024). Поскольку диски близких размеров будут отличаться всего на один пиксель, то для контроля на каждом диске необходимо проставить его диаметр в виде цифры. Так как в конце задачи все диски будут находиться на первом шпинделе, а общее количество дисков теоретически может быть равно 72, то рекомендуется сделать толщину одного диска примерно равной 10-12 пикселям, для указанного окна. Если по какому-либо проценту получается дробная итерация, то необходимо её визуализировать как промежуточный этап переноса диска. При этом диск изобразить в воздухе, между тем шпинделем, с которого он снят, и тем, на который он переносится. Номер итерации в таком случае отображать как дробный, с округлением до 3 цифр после нуля. Входные данные: Идентификатор студента (70155002) или промежуточные проценты, вводимые в соответствующие поля над кнопками. Выходные данные: На цифровом дисплее отображается окно с начальным расположением дисков на шпинделях Ханойских башен. Шпиндели пронумерованы, на дисках также обозначены соответствующие диаметры. Под ней отображается шесть кнопок и четыре поля для ввода цифр. В нижней части экрана демонстрируется надпись: «Итерация 0». При нажатии на любую из шести имеющихся кнопок, либо при заполнении поля ввода другими данными и нажатии на кнопку, схема ханойских башен меняется, для отображения соответствующей итерации. Надпись в нижней части экрана также меняется.

1.3. Выбор и обоснование необходимых библиотек и среды разработки

Модуль re — предоставляет полную поддержку выражениям, подобным Perl в Python. Модуль re поднимает исключение re.error, если возникает ошибка при компиляции или использовании регулярного выражения. Класс Counter модуля collections — это подкласс словаря dict для подсчета хеш-объектов (неизменяемых, каких как строки, числа, кортежи и т.д.). Это коллекция, в которой элементы хранятся в виде словарных ключей, а их счетчики хранятся в виде значений словаря. Пакет tkinter содержит несколько модулей, предоставляющих доступ к уже готовым диалоговым окнам. Это окна различных сообщений, выбора по принципу «да-нет», открытия и сохранения файлов и др. Библиотека Math обеспечивает доступ к некоторым популярным математическим функциям и константам, которые можно использовать в коде для более сложных математических вычислений. Модуль random предоставляет функции для генерации случайных чисел, букв, случайного выбора элементов последовательности. Модуль copy — обеспечивает общие операции неглубокого и глубокого копирования. В последних трех заданиях необходимо разработать три программы с графическим интерфейсом. В качестве стандартных и сторонних библиотек для реализации графического интерфейса допускается использовать следующие библиотеки на выбор — Tkinter, wxPython, PyQT, PySimpleGUI. Библиотека Tkinter является стандартной библиотекой языка программирования Python. Данная библиотека функциональна, удобна и проста в использовании. Однако имеет несколько существенных недостатков. Это довольно скудный набор стандартных виджетов, отсутствие графического дизайнера и т.д. Сравнительная характеристика представленных библиотек отображена в таблице 1.1. Таблица 1.1 – Сравнительная характеристика GUI библиотек Исходя из таблицы 1.1 выбирается GUI библиотека Tkinter. Т.к. она является стандартной python библиотекой, проста в использовании и функциональна. Все поставленные задачи данного курсового проекта легко решаемы с помощью данной библиотеки. В качестве IDE разработки выбирается PyCharm бесплатной редакции. Т.к. данная IDE обеспечивает наибольшее удобство разработки.  

Глава 2. Разработка программного продукта для решения прикладных задач

2.1. Разработка программного продукта для работы с наборами данных

2.1.1. Построение алгоритма решения задания без графического интерфейса

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

2.1.2. Разработка программной реализации

Данное задание является заданием без графического интерфейса. Для его решения использованы только стандартные библиотеки. Задание реализовано в одном главном модуле приложения exercise_1.py. Исходный код данного модуля отображен в приложении А. Словарем является стандартный класс Counter. import re from collections import Counter # работа студента _______ with open(‘resourse_1.txt’) as infile, \ open(‘result_1.txt’, ‘w’) as out: s = re.sub(r'[^\w\s]’, ‘ ‘, infile.read()).split() words = [*Counter(s).items()] words.sort(key=lambda x: (x[1], x[0]), reverse=True) for w in words: print(*w, file=out)

2.1.3. Тестирование и отладка

Создаем исходный файл ‘resourse_1.txt’, который имеет вид (рисунок 2.1). Рисунок 2.1 – Исходный файл Запускаем программу на выполнение. Проверяем файл с выходными данными ‘result_1.txt’, который имеет вид (рисунок 2.2). Рисунок 2.2 – Файл с выводами Условия задания соблюдены и выполнены в полной мере.

2.2. Разработка аналитической системы. Приложение для обслуживания клиентов банка

2.2.1. Построение алгоритма решения задания с графическим интерфейсом

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

2.2.2. Разработка программной реализации

Для обработки запросов к базе данных были созданы уникальные функции которые отвечают за внесение изменений в базу данных. По запросу пользователя и при вводе команды есть возможность совершения 5 операций. Реализация графической части упрощает работу с программой и помогает ускорить процесс заполнения информации о клиенте в системе. Ниже отображено часть исходного кода выполненного задания относительно обработки команд. Полный исходный код приложения отображен в приложении А. from tkinter import * from tkinter import messagebox as mb def deposit(arg): name, money = arg bank[name] = bank.setdefault(name, 0) + int(money) def withdraw(arg): name, money = arg bank[name] = bank.setdefault(name, 0) — int(money) def balance(arg): name = arg txt2 = lbl_calc.cget(«text») if name in bank: txt2 = txt2 + str(bank[name]) elif name == » «: sum = 0 for ii in bank: sum = sum + bank[ii] txt2 = txt2 + str(sum) else: txt2 = «NO CLIENT» lbl_calc.configure(text=txt2 + «\n») def income(arg): percent = int(arg[0]) for name, balanse in bank.items(): if balanse > 0: bank[name] = bank.get(name) + balanse * percent // 100 def clear_txt(): txt.delete(1.0, END)

2.2.3. Тестирование и отладка

Запускаем программу. Требования по клиентской части были соблюдены и самостоятельно реализованы исходя из интерактивности графической части. Исходное окно имеет вид (рисунок 2.3). Рисунок 2.3 – Исходное окно приложения Ввод тестовых данных (рисунок 2.4). Рисунок 2.4 – Ввод тестовых данных Проведение операции «Calculate» (рисунок 2.5). Рисунок 2.5 – Проведение операции «Calculate» Проведение операции «Clear» (рисунок 2.6). Рисунок 2.6 – Проведение операции «Clear» Требования реализации логико-математических операций, а также графического интерфейса были соблюдены и выполнены в полной мере. Работа на тестовом наборе данных выполнена успешно.

2.3. Разработка экспертной системы. Приложение «Калькулятор» 2.3.1. Построение алгоритма решения задания с графическим интерфейсом

Приложение калькулятор имеет функциональность, заключающуюся в вычислении вводимых выражений. Согласно задаче, необходимо разработать приложение – калькулятор, которое будет иметь два режима: стандартный и расширенный. В расширенном режиме необходимо реализовать: 1) Расширенный дисплей с выводом статистики работы. 2) Возможность дополнительных вычислений. 3) Дополнительные ячейки памяти. Исходные данные: Фамилия – Юрина. ID 70155002. Количество строк расширенного — 2. Дополнительная функциональность: X3, 10^x, Pi, tanh. Количество ячеек памяти – 2. Общий алгоритм работы калькулятора заключается в вычислении введенного выражения. Например: 2+2*2, tanh(0.5)*2 и т.д. Таким образом, алгоритм работы калькулятора в основном состоит из двух составляющих: алгоритма ввода выражения и алгоритма его вычисления. Для ввода выражения использован алгоритм основанный на нажатии кнопок с помощью кнопок мыши на экране монитора. Алгоритм вычисления выражения является стандартным математическим алгоритмом. Алгоритм работы ячеек памяти также является стандартным алгоритмом калькулятора работающего с памятью.

2.3.2. Проектирование стандартного функционала

Как уже упоминалось ранее, для программной реализации данной задачи использован инструмент для создания приложений с графическим интерфейсом tkinter который не содержит графического дизайнера. Общий вид приложения со стандартной функциональностью отображен на рисунке 2.7. Как видно из рисунка функциональност данного приложения полностью стандартна и отвечает требованиям поставленного задания. Рисунок 2.7 – Стандартный интерфейс приложения

2.3.3. Проектирование расширенного функционала

На рисунке 2.8 отображено внешний вид приложения с расширенной функциональность. Как видно из рисунка, расширенный интерфейс имеет дополнительную панель с дополнительными функциями: ячейками памяти и выражениями. Помимо этого, имеется кнопка открытия расширенного дисплея «<>». На дисплее отображается статистика вычисляемых выражений. Дополнительная панель приложения открывается с помощью кнопки «=». Рисунок 2.8 – Расширенный интерфейс приложения

2.3.4. Разработка программной реализации

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

2.3.5. Индивидуальное задание реализации дополнительных функций

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

2.3.6. Тестирование и отладка

Запуск программы и проверка расположения элементов управления в окне (рисунок 2.9). Рисунок 2.9 – Основное окно программы Тестирование на математических операциях, ввод данных производится кликом мыши на соответствующий блок с цифрами либо операциями (рисунок 2.10). Рисунок 2.10 – Тестирование операции ввода тестовых данных. Производим проверку вычислений, для расчета введенных данных, выполняем операцию “=” (рисунок 2.11). Рисунок 2.11 – Результат вычислений Итог выполнения операции суммы 2 числе верный, ошибок в работе и отображении графического интерфейса не замечено. Дальше необходимо протестировать работоспособность расширенного функционала программы, для этого предусмотрена кнопка в верхнем левом углу, она открывает дополнительное окно с новыми функциями. Результат разворачивания расширенного графического интерфейса (рисунок 2.12). Рисунок 2.12 – Дополнительный функционал Данное приложение работает корректно и отвечает условию задания.

2.4. Разработка логико-аналитической системы. Приложение «Ханойские башни» 2.4.1. Построение алгоритма решения задания с графическим интерфейсом

Согласно заданию, приложение Ханойский башни должно создавать 8 шпинделей пронумерованных с 8 до 1 в обратном порядке. Количество дисков на шпинделях должно быть равно соответствующему номеру ID студента слева направо. ID 70155002. Таким образом, число дисков на каждом шпинделе равно 7,0,1,5,5,0,0,2. Необходимо определить минимальное количество итераций для перекладывания всех дисков на первый шпиндель с учетом правил перекладывания. Под вводом данных пользователя понимается ввод данных из GUI интерфейса программы, в том числе ввод итерации (вручную перекладывание диска со шпинделя на шпиндель). После этого полученная информация распознается: был ли это ввод итерации либо нажата кнопка. Проверяет корректность данного перекладывания и происходит перекладывание (выполняется итерация). Если же нажата кнопка, то происходит ее идентификация и с анимацией или без выполняется соответствующее количество итераций программой автоматически.

2.4.2. Разработка программной реализации

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

2.4.3. Тестирование и отладка

Запуск программы и оценка визуализации начальных условий (рисунок 2.13). Рисунок 2.13 – Главная форма приложения Старт программы распределяет кольца по стержням в случайном порядке со случайными весами, необходимо проверить этот шаг операцией “Начало” (рисунок 2.14). Рисунок 2.14 – Начальное распределение Далее необходимо проверить верность выполнения рекурсивного алгоритма, промежуточные шаги программы не выводятся, к визуализации доступен только конечный результат сортировки, для этого нудно нажать кнопку “Окончание” (рисунок 2.15). Рисунок 2.15 – Конечное положение Дополнительным условием задачи был вывод промежуточных результатов итераций в соответствии с индивидуальным номером, в частном случае при нажатии на кнопку пункт 2 “2.%” будет отображен этап решения задачи находящийся на 15% решения. Результат выполнения этого шага (рисунок 2.16). Рисунок 2.16 – Промежуточный этап выполнения итераций Разработанное приложение работает корректно и отвечает всем требованиям задания.

Выводы

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

Литература

1. Мэтиз Э. Изучаем Python. Программирование игр, визуализация данных, веб-приложения / Э. Мэтиз. – СПб.: Питер, 2017. – 496 с. 2. Доусон М. Программируем на Python / М.Доусон. – СПб.: Питер, 2014. – 416 с. 3. Лутц М. Изучаем Python, 4-е издание / М.Лутц. – СПб.: Символ-Плюс, 2011. – 1280 с. 4. Лутц М. Программирование на Python, том I, 4-е издание / М.Лутц. – СПб.: Символ-Плюс, 2011. – 992 с. 5. Лутц М. Программирование на Python, том II, 4-е издание / М.Лутц. – СПб.: Символ-Плюс, 2011. – 992 с. 6. Прохоренок Н.А. Python 3 и PyQt. Разработка приложений / Н. А. Прохоренок. – СПб.: БХВ-Петербург, 2012. – 704 с. 7. Вабищевич П. Н. Численные методы. Вычислительный практикум / Вабищевич. – СПб.: Питер, 2012 – 320 c. 8. Пилгрим М. Погружение в Python 3 / М. Пилгрим. – СПб.: БХВ-Петербург, 2010. – 603 с. 9. Чаплыгин А.Н. Учимся программировать вместе с питоном / А.Н. Чаплыгин. – СПб.: Символ-Плюс, 2010. – 503 с. 10. Шапошникова С. Основы программирования на Python / С. Шапошникова. – СПб.: Питер, 2015. – 426 с.1. 11. Python в примерах [Электронный ресурс]. – Режим доступа: https://www.opennet.ru/docs/RUS/python/python_b.html– (последнее обращение 20.08.2021). 12. Python [Электронный ресурс]. – Режим доступа: https://metanit.com/python/tutorial/1.1.php – (последнее обращение 20.08.2021). 13. Основы Python [Электронный ресурс]. – Режим доступа: https://pythonworld.ru/osnov – (последнее обращение 20.08.2021).

или напишите нам прямо сейчас

Написать в WhatsApp Написать в Telegram

О сайте
Ссылка на первоисточник:
http://rusvine.ru/
Поделитесь в соцсетях:

Оставить комментарий

Inna Petrova 18 минут назад

Нужно пройти преддипломную практику у нескольких предметов написать введение и отчет по практике так де сдать 4 экзамена после практики

Иван, помощь с обучением 25 минут назад

Inna Petrova, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Коля 2 часа назад

Здравствуйте, сколько будет стоить данная работа и как заказать?

Иван, помощь с обучением 2 часа назад

Николай, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Инкогнито 5 часов назад

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

Иван, помощь с обучением 6 часов назад

Здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Василий 12 часов назад

Здравствуйте. ищу экзаменационные билеты с ответами для прохождения вступительного теста по теме Общая социальная психология на магистратуру в Московский институт психоанализа.

Иван, помощь с обучением 12 часов назад

Василий, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Анна Михайловна 1 день назад

Нужно закрыть предмет «Микроэкономика» за сколько времени и за какую цену сделаете?

Иван, помощь с обучением 1 день назад

Анна Михайловна, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Сергей 1 день назад

Здравствуйте. Нужен отчёт о прохождении практики, специальность Государственное и муниципальное управление. Планирую пройти практику в школе там, где работаю.

Иван, помощь с обучением 1 день назад

Сергей, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Инна 1 день назад

Добрый день! Учусь на 2 курсе по специальности земельно-имущественные отношения. Нужен отчет по учебной практике. Подскажите, пожалуйста, стоимость и сроки выполнения?

Иван, помощь с обучением 1 день назад

Инна, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Студент 2 дня назад

Здравствуйте, у меня сегодня начинается сессия, нужно будет ответить на вопросы по русскому и математике за определенное время онлайн. Сможете помочь? И сколько это будет стоить? Колледж КЭСИ, первый курс.

Иван, помощь с обучением 2 дня назад

Здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Ольга 2 дня назад

Требуется сделать практические задания по математике 40.02.01 Право и организация социального обеспечения семестр 2

Иван, помощь с обучением 2 дня назад

Ольга, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Вика 3 дня назад

сдача сессии по следующим предметам: Этика деловых отношений - Калашников В.Г. Управление соц. развитием организации- Пересада А. В. Документационное обеспечение управления - Рафикова В.М. Управление производительностью труда- Фаизова Э. Ф. Кадровый аудит- Рафикова В. М. Персональный брендинг - Фаизова Э. Ф. Эргономика труда- Калашников В. Г.

Иван, помощь с обучением 3 дня назад

Вика, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Игорь Валерьевич 3 дня назад

здравствуйте. помогите пройти итоговый тест по теме Обновление содержания образования: изменения организации и осуществления образовательной деятельности в соответствии с ФГОС НОО

Иван, помощь с обучением 3 дня назад

Игорь Валерьевич, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Вадим 4 дня назад

Пройти 7 тестов в личном кабинете. Сооружения и эксплуатация газонефтипровод и хранилищ

Иван, помощь с обучением 4 дня назад

Вадим, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Кирилл 4 дня назад

Здравствуйте! Нашел у вас на сайте задачу, какая мне необходима, можно узнать стоимость?

Иван, помощь с обучением 4 дня назад

Кирилл, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Oleg 4 дня назад

Требуется пройти задания первый семестр Специальность: 10.02.01 Организация и технология защиты информации. Химия сдана, история тоже. Сколько это будет стоить в комплексе и попредметно и сколько на это понадобится времени?

Иван, помощь с обучением 4 дня назад

Oleg, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Валерия 5 дней назад

ЗДРАВСТВУЙТЕ. СКАЖИТЕ МОЖЕТЕ ЛИ ВЫ ПОМОЧЬ С ВЫПОЛНЕНИЕМ практики и ВКР по банку ВТБ. ответьте пожалуйста если можно побыстрее , а то просто уже вся на нервяке из-за этой учебы. и сколько это будет стоить?

Иван, помощь с обучением 5 дней назад

Валерия, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Инкогнито 5 дней назад

Здравствуйте. Нужны ответы на вопросы для экзамена. Направление - Пожарная безопасность.

Иван, помощь с обучением 5 дней назад

Здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Иван неделю назад

Защита дипломной дистанционно, "Синергия", Направленность (профиль) Информационные системы и технологии, Бакалавр, тема: «Автоматизация приема и анализа заявок технической поддержки

Иван, помощь с обучением неделю назад

Иван, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Дарья неделю назад

Необходимо написать дипломную работу на тему: «Разработка проекта внедрения CRM-системы. + презентацию (слайды) для предзащиты ВКР. Презентация должна быть в формате PDF или формате файлов PowerPoint! Институт ТГУ Росдистант. Предыдущий исполнитель написал ВКР, но работа не прошла по антиплагиату. Предыдущий исполнитель пропал и не отвечает. Есть его работа, которую нужно исправить, либо переписать с нуля.

Иван, помощь с обучением неделю назад

Дарья, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru