УММ. Программа производственной практики технологическая (проектнотехнологическая)
Скачать 2.04 Mb.
|
2.2. Индивидуальное задание на практику В процессе прохождения практики обучающийся должен руководствоваться инди- видуальным заданием, которое получает от руководителя практики от Университета. При прохождении практики в профильной организации, индивидуальное задание должно быть согласовано с руководителем практики от профильной организации. Индивидуальное задание представляет собой планирование работы обучающихся во время практики, направленной на формирование указанных компетенций, выполняемой во внеаудиторное время по заданию и при методическом руководстве преподавателя (Прило- жение 2). В качестве заданий на практику студентам дается четыре задачи. Задания подобраны таким образом, чтобы при выполнении работы студенты могли приобрести практические навыки разработки программных продуктов для решения прикладных задача среднего уровня сложности. Среда разработки PyCharm, язык программирования - Python. Рекомен- дуется использование наиболее распространенных библиотек и модулей стандартной биб- лиотеки. Использование нестандартных библиотек возможно только после согласования с руководителем практики. Формулировки заданий имеют общую и индивидуальную части. Индивидуализация заданий реализуется на основе уникального номера ID студента и его ФИО. После консуль- таций с руководителем практики от Университета выбираются библиотеки и составляются примерные алгоритмы решения каждого задания. Необходимо отметить, что используя воз- можности различных библиотек для Python возможны разные подходы к решению заданий курсовой работы. В процессе выполнения задач по согласованию с руководителем воз- можна конкретизация и уточнение формулировок исходных данных в задачах. Данные кор- ректировки обязательно должны быть отражены в отчете. В процессе выполнения задач практики студенты должны: – Изучить задачи на разработку программного продукта; – Выполнить анализ и составить примерную стратегию решения каждого задания; – Выбрать необходимые библиотеки для реализации предметных областей про- граммного продукта; – Разработать алгоритмы и реализовать их в среде разработки с помощью выбран- ных библиотек 8 – Для отдельных заданий разработать графический интерфейс пользователя сред- ствами библиотек Tkinter, wxPython, PyQT или PySimpleGUI; – Выбрать стратегию тестирования и разработать тесты; – Выполнить тестирование и отладку; – Подробно описать решение каждого задания, форматы входных и выходных фай- лов. – Сформировать отчет по практике, привести листинг программного кода для каж- дого задания. – Сформировать архив исходных текстов программ, входных и результирующих файлов. Задание № 1 Работа с набо- рами данных БЕЗ ГРАФИЧЕСКОГО ИНТЕРФЕЙСА (GUI) формулировка Во внешнем файле resourse_1.txt дан текст. Выведите все слова, встре- чающиеся в тексте, по одному на каждую строку, через пробел укажите количество повторений. Слова должны быть отсортированы по убыва- нию их количества появления в тексте, а при одинаковой частоте появ- ления — в лексикографическом порядке. Вывод должен осуществ- ляться в текстовый файл result_1.txt. При необходимости можно про- дублировать вывод в консоль. Методические указания После того, как вы создадите словарь всех слов, необходимо отсорти- ровать его по частоте встречаемости слова. Желаемого можно добиться, если создать список, элементами которого будут кортежи из двух эле- ментов: частота встречаемости слова и само слово. Например, [(2, 'hi'), (1, 'what'), (3, 'is')] . Тогда стандартная сорти- ровка будет сортировать список кортежей, при этом кортежи сравнива- ются по первому элементу, а если они равны — то по второму. Знаки препинания не должны учитываться. Программу сохранить под именем exercise_1.py Входные дан- ные Преподаватель вводит текст в текстовый файл 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 Выходные данные Выведите ответ на задание № 1 в текстовый файл 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 9 Задание № 2 Разработка экспертной системы С ГРАФИЧЕСКИМ ИНТЕРФЕЙСОМ (GUI) формули- ровка Некоторый банк хочет внедрить систему управления счетами клиентов, поддерживающую следующие операции: 1. Пополнение счета клиента. 2. Снятие денег со счета. 3. Запрос остатка средств на счете. 4. Перевод денег между счетами клиентов. 5. Начисление процентов всем клиентам. Методиче- ские указания Необходимо реализовать такую систему. Первоначально у банка 1 кли- ент. Клиент(ы) банка идентифицируются именами (уникальная строка, не содержащая пробелов). Вам необходимо задать в качестве имени клиента – свою фамилию на английском языке с большой буквы. На вашу фамилию должен быть открыт счет с суммой равной вашему ID. Ivanov 70121903 В отдельном поле должна быть предусмотрена возможность ввода про- стых команд, которые поддерживают следующие операции: DEPOSIT name sum Зачислить сумму sum на счет клиента name. Если клиента нет, то он созда- ется и на него заводится счет с ука- занной суммой. WITHDRAW name sum Снять сумму sum со счета клиента name. Если клиента, то счет созда- ется. Баланс при выполнении такой операции у вновь созданного клиента должен быть отрицательный. BALANCE name Узнать остаток средств на счету кли- ента name. Для каждого запроса BALANCE программа должна выве- сти остаток на счету данного клиента. Если же у клиента с запрашиваемым именем не открыт счет в банке, выво- дится сообщение «NO CLIENT». Если пользователь не указал имя кли- ента – то выводится баланс всех су- ществующих клиентов. TRANSFER name1 name2 sum Перевести сумму sum со счета кли- ента name1 на счет клиента name2. 10 Если у какого-либо клиента, то он за- водится в системе и ему создается счет с переведенной суммой. INCOME p Начислить всем клиентам, у которых открыты счета, p% от суммы счета. Проценты начисляются только кли- ентам с положительным остатком на счету, если у клиента остаток отрица- тельный, то его счет не меняется. По- сле начисления процентов сумма на счету остается целой, то есть начис- ляется только целое число денежных единиц. Дробная часть начисленных процентов отбрасывается. ПРОГРАММА ДОЛЖНА ОБРАБАТЫВАТЬ ТЕКСТОВЫЕ КО- МАНДЫ ИЗ ЛЕВОГО ПОЛЯ ТОЛЬКО ПОСЛЕ НАЖАТИЯ КНОПКИ «Calculate». То есть, пользователь СНАЧАЛА вводит желаемые ко- манды, при этом каждая новая команда вводится с новой строки, а ПО- ТОМ нажимает на кнопку «Calculate». Результат должен быть выведен в поле справа. Количество команд, которые может ввести пользователь за один раз – не более 20. При необходимости следует предусмотреть прокрутку в поле. Пользователю допускается вводить «пустые строки» - несколько раз нажимать на кнопку «enter». При нажатии клавиши ввода «enter», фокус не должен переходить на кнопку «Calculate». Формат и внешний вид окна определяет разработчик. Для «очистки» ле- вого и правого полей можно предусмотреть кнопку «Clear», при этом данные о ранее введенных клиентах не должны быть потеряны. ВАЖНО: 1. Команды вводятся пользователем только большими буквами. Сама команда, имя клиента, суммы (числа) разделяются пробелами. 2. Предполагается, что пользователь такой системы грамотный и ко- манды с аргументами вводит без ошибок в рамках их вышесформули- рованного синтаксиса. 3. Как только для несуществующего ранее клиента проводится опера- ция пополнения (DEPOSIT), снятия (WITHDRAW) или перевода де- нег (TRANSFER), он вносится в систему, ему заводится счет с указан- ным балансом. Все дальнейшие операции проводятся только с этим сче- том. Сумма на счету может быть как положительной, так и отрицатель- ной, при этом всегда является целым числом. Программу сохранить под именем exercise_2.py 11 Входные дан- ные Преподаватель вводит текст в текстовый файл resourse_2.txt (5-6 абза- цев) и сохраняет его. Выходные данные Выведите ответ на задание № 1 в текстовый файл result_2.txt. Damme 4 Is 3 Name 3 Van 3 Bond 2 claude 2 hi 2 my 2 james 1 jean 1 what 1 Задание № 3 Разработка аналитической системы С ГРАФИЧЕСКИМ ИНТЕРФЕЙСОМ (GUI) формулировка Разработать калькулятор со стандартным и расширенным функциона- лом. Стандартный функционал 1. Арифметические действия + - * /. 2. Возможность ввода отрицательного числа 3. Возведение в степень. 4. Извлечение квадратного корня. 5. Работа с памятью, состоящей из одной ячейки. 6. Должна быть кнопка сброса и кнопка «=» (равно). Расширенный функционал 1. Наличие кнопки/меню перехода в расширенный режим 2. Возможность работы с несколькими ячейками памяти. Количе- ство ячеек памяти выбирается согласно методическим указа- ниям. 3. Отображение последовательности математических операций и цифр в n-строчном «дисплее», с возможностью «прокрутки». Количество строк «дисплея» калькулятора выбирается согласно методическим указаниям. 4. Реализация «инженерных» функций расширенного режима. Конкретный перечень функций выбирается согласно методиче- ским указаниям. Методические указания Необходимо разработать программу и GUI для реализации стандарт- ных функций калькулятора. Примерный вид внешнего интерфейса представлен на рисунке. 12 Конкретная компоновка элементов интерфейса, внешний вил, цветовая палитра, максимальное количество отображаемых цифр, число отобра- жаемых строк на «дисплее» калькулятора могут отличаться от пред- ставленного рисунка и должны согласовываться с руководителем кур- совой работы. Функционал «инженерного» режима работы калькулятора добавляется при нажатии на кнопку перехода в расширенный режим, либо выбора соответствующего пункта меню. Расширенный режим работы определяется внешним видом «цифро- вого дисплея», количеством ячеек памяти (кнопки M+, M-, MS, MR, MS) и кнопками, отвечающими за дополнительные функции. Количество строк «цифрового дисплея» должно определяться как последовательная сумма всех цифр ID студента. Суммирование от- дельных цифр числа должно осуществляться до получения однознач- ного числа, состоящей из 1-й цифры. Данный процесс рекомендуется реализовать с помощью рекурсивной функции. Для данной функции должна быть предусмотрена специальная кнопка Например: обучающийся Иванов Иван Иванович, имеет ID 80121986 Сумма всех цифр равна: 13 8+0+1+2+1+9+8+6=35; 3+5=8 Следовательно, «цифровой дисплей» калькулятора должен иметь 8 строк. Если после последовательного суммирования ID получилась цифра «1», например, для ID=82121986: 8+2+1+2+1+9+8+6=37; 3+7=10 1+0=1 В этом случае количество строк «цифрового дисплея» должно быть равно 10. Таким образом, в зависимости от ID число «цифровых строк» дисплея калькулятора может варьироваться от 2-х до 10. Количество ячеек памяти калькулятора должно определяться как по- следовательная сумма последних 3-х чисел ID. Суммирование отдель- ных цифр числа должно осуществляться до получения однозначного числа, состоящей из 1-й цифры. Данный процесс также рекомендуется реализовать с помощью рекурсивной функции. Например: обучающийся Иванов Иван Иванович, имеет ID 80121986 Сумма последних трёх цифр равна: 9+8+6=23; 2+3=5 Следовательно, должно быть предусмотрено 5 ячеек памяти для ра- боты с (M+, M-, MС, MR, MS). 14 Если после последовательного суммирования 3-х цифр ID получилась цифра «1», например, для ID=82121001: 0+0+1=1; В этом случае количество ячеек памяти должно быть равно 2. Таким образом, в зависимости от ID число ячеек памяти (и соответ- ствующих кнопок, реализующий данный функционал) калькулятора может варьироваться от 2-х до 9. Дополнительные функции расширенного режима, которые должны быть реализованы определяются в соответствие с таблицей по первой букве Фамилии обучающегося Первая буква фамилии Наименова- ние функ- ции Описание функции А Pi, sin,tan,exp, n!, Frac Число Пи, синус, тангенс, экспонента, факториал; отсекает целую часть, остав- ляет дробную Б asin, acos, atg, log_xy, n! Арксинус, арккосинус, арктангенс, лога- рифм по основанию, факториал В //, ctg, 10 х , asin, acos Целочисленное деление, котангенс, 10 в степени х, арксинус, арккосинус Г F – E, y √x, lg 10 переключает ввод чисел в экспоненциаль- ном представлении и обратно, y-ый ко- рень числа x, где y обычно является поло- жительным целым числом, десятичный логарифм Д gcd(a, b); tanh, Ln, X 3 Возвращает наибольший общий делитель a и b; гиперболический тангенс, нату- ральный логарифм по основанию «e»; возвести в степень 3 Е hypot(x, y), isqrt(), Sinh, Mod функция вычисляет гипотенузу треуголь- ника c катетами x и y; Возвращает цело- численный квадратный корень аргумента, округлённый вниз; гиперболический си- нус, вычислить остаток от деления одного числа на другое 15 Ж tanh, Ln, X 3 , Frac гиперболический тангенс, натуральный логарифм по основанию «e», возвести в степень 3; отсекает целую часть, остав- ляет дробную З sinh -1 , exp, asin, acos обратный гиперболический синус, экспо- нента, арксинус, арккосинус И Mod, tanh, asin, acos вычислить остаток от деления одного числа на другое, гиперболический тан- генс; арксинус, арккосинус К Ln, X 3 , Dms, sin натуральный логарифм по основанию «e», возвести в степень 3; переводит из де- сятичного вида в формат в градусы, ми- нуты, секунды; синус Л Х 3 , asin, acos Возведение в куб, арксинус, арккосинус М Sinh, Mod, y √x, lg 10 гиперболический синус, вычислить оста- ток от деления одного числа на другое; y- ый корень числа x, где y обычно является положительным целым числом, десятич- ный логарифм Н deg, y √x, lg 10 , sin, cos перевод угла в градусах, минутах и секун- дах в десятичные доли градуса; y-ый ко- рень числа x, где y обычно является поло- жительным целым числом, десятичный логарифм; синус, косинус О Int, Pi, tanh, Ln, X 3 отображает целую часть десятичного числа, число Пи, выдает значение Pi для расчетов; гиперболический тангенс, нату- ральный логарифм по основанию «e», возвести в степень 3 П Inv, sin, cos, tan обратная функция для sin, cos, tan, пере- ключает интерфейс на другие функции; синус; косинус; тангенс Р Dms, sin, cos, tan переводит из десятичного вида в формат в градусы, минуты, секунды; синус; коси- нус; тангенс С Dms, 10^x, Pi, tanh, Ln переводит из десятичного вида в формат в градусы, минуты, секунды; возведение десяти в произвольную степень, число Пи, гиперболический тангенс, натураль- ный логирифм Т F – E, acos, atg, log_xy, n! переключает ввод чисел в экспоненциаль- ном представлении и обратно; арккоси- нус, арктангенс, логорифм по основанию, факториал У Pi, sin,tan,exp, asin, acos Число Пи, синус, тангенс, экспонента, арксинус, арккосинус Ф Mod, tanh, Ln, X 3 , exp, asin, acos вычислить остаток от деления одного числа на другое, гиперболический тан- 16 генс, натуральный логарифм по основа- нию «e», возвести в степень 3, экспо- нента, арксинус, арккосинус Х pow(a, b), n!, F – E, acos функция выполняет возведение числа a в степень b и возвращает затем веществен- ный результат; вычисление факториала; переключает ввод чисел в экспоненциаль- ном представлении и обратно; арккосинус Ц Pi, sin,tan, floor() Число Пи, синус, тангенс; Округляет число до ближайшего целого, но в мень- шую сторону Ч sin, cos, tan, Ln, X 3 синус; косинус; тангенс; натуральный ло- гарифм по основанию «e», возвести в сте- пень 3 Ш Mod, tanh, F – E, acos вычислить остаток от деления одного числа на другое, гиперболический тан- генс, переключает ввод чисел в экспонен- циальном представлении и обратно; арк- косинус Щ F – E, acos, tanh, Ln, X 3 переключает ввод чисел в экспоненциаль- ном представлении и обратно; арккоси- нус; гиперболический тангенс, натураль- ный логарифм по основанию «e», возве- сти в степень 3 Э tanh, Ln, X 3 , log_xy, n! гиперболический тангенс, натуральный логирифм, возведение в куб, логорифм по основанию, факториал Ю X 3 , 10^x, Pi, tanh возведение в куб, возведение десяти в произвольную степень, число Пи, гипер- болический тангенс Я tanh, asin, acos, F – E гиперболический тангенс; арксинус, арк- косинус, переключает ввод чисел в экспо- ненциальном представлении и обратно Примерный внешний вид, реализующий данный функционал может быть следующим: 17 ВАЖНО: 1. Программа должна использовать распространенные библиотеки. Если с согласия руководителя предполагается для реализации допол- нительных функций и отрисовки интерфейса использование сторонних библиотек, то в пояснительной записке к курсовой работе должно быть представлено обоснование и подробное их описания. 2. При разработке программы следует использовать принципы объ- ектно-ориентированного программирования. 3. Калькулятор должен работать и корректно выдавать результат. 4. Размер кнопок, цветовая палитра, расположение и т.п. определяется самостоятельно. Внешний вид калькулятора не оценивается, однако следует придерживаться традиционных компоновок. 5. При намеренном выполнении некорректных операций, например, извлечение квадратного корня из отрицательного числа, калькулятор должен на цифровой дисплей выдавать соответствующее сообщение об ошибке. Если же программу останавливает интерпретатор – то про- веряемая функция считается не до конца отработанной. 18 Программу «Калькулятор» сохранить под именем exercise_3.py Входные дан- ные Преподаватель с помощью мыши вводит числа и выполняет арифме- тические операции. Преподаватель с помощью мыши вводит числа и выбирает заявленные дополнительные функции. Преподаватель вводит намеренно некорректные операции (попытка деления на 0) Выходные дан- ные На цифровом дисплее должен отображаться результат, либо сообще- ние об ошибке при некорректной операции. Проверяется количество строк в «цифровом дисплее» калькулятора и количество ячеек памяти. Задание № 4 Задача о Ха- нойских баш- нях С ГРАФИЧЕСКИМ ИНТЕРФЕЙСОМ (GUI) формулировка Модифицированная задача о Ханойских башнях: Существует 8 шпинделей, пронумерованых от 8 до 1 слева направо. На каждом шпинделе надеты диски, в количестве, равном соответствую- щей цифре из ID студента. Все диски имеют разные диаметры. Диа- метр диска равен M * 10 + N, где М – номер шпинделя, на котором надет диск, а N – это номер диска на шпинделе, считая сверху вниз. 1. Необходимо визуально изобразить предложенную задачу. Диски на шпинделях сделать случайных цветов. На каждом диске отображать цифру, равную его диаметру. Диаметр диска также показывать его фактическим размером в пикселях. 2. Необходимо вычислить, за какое минимальное количество ите- раций переместятся все диски на шпиндель номер 1 по следую- щим правилам: а) За одну итерацию можно переместить не более одного диска б) Диски можно класть только с большего на меньший в) Со шпинделя номер 8 можно перекладывать диски только на шпиндели 7 и 6 г) Со шпинделя номер 1 можно перекладывать диски только на шпиндели номер 2 и 3 д) Со шпинделей от 2 по 7 можно перекладывать диски только на два соседних шпинделя 3. Необходимо отобразить начальное и конечное расположение дисков на шпинделях, для этого под изображением Ханойских башен предусмотреть две кнопки «Начало» и «Окончание». При нажатии на нее, в надписи под схемой должен выводится текст «Итерация ХХ», где ХХ – номер итерации (либо 0, либо номер итоговой итерации, соответственно). 19 4. Необходимо графически отобразить четыре промежуточные итерации перекладывания дисков. Для этого: а) общее количество итераций признаётся равным 100%, б) ID студента делится на 4 двузначных числа, каждое из кото- рых обозначает итерацию, соответствующую этому проценту выполнения общей задачи. в) Под изображением Ханойских башень предусмотреть четыре поля для ввода цифр с процентами выполнения. По-умолчанию добавить туда числа из п. б) г) Под каждым полем для ввода предусмотреть кнопку, при нажатии на которую схема Ханойской башни отображает рас- положение дисков на соответствующей итерации. Также в надписи под схемой должен выводится текст «Итерация ХХ», где ХХ – номер итерации 5. Дать возможность пользователю изменять проценты в полях для ввода цифр, и по нажатию соответствующей кнопки про- сматривать расположение дисков на данной итерации. Методические указания Так как задача алгоритмически достаточно проста, то основная часть работы над задачей студента сводится к правильной визуализации по- лученных результатов, а также оптимальному поиску промежуточных результатов. Схема ханойских башен должна выглядеть примерно та- ким образом: (В данном примере расположение дисков соответствует ID студента 70256421) Так как размер диска должен соответствовать его номеру на шпинделе и номеру самого шпинделя, умноженного на 10, то как нетрудно дога- даться, максимальный диаметр диска может быть 89. Поэтому для пра- вильной визуализации без наложения дисков рекомеднуется выдержи- вать расстояние между шпинделями примерно в 100-120 пикселей (для окна формата 1280х1024). Поскольку диски близких размеров будут отличаться всего на один пиксель, то для контроля на каждом диске необходимо проставить его диамер в виде цифры. Так как в конце задачи все диски будут нахо- диться на первом шпинделе, а общее количество дисков теоретически может быть равно 72, то рекомендуется сделать толщину одного диска примерно равной 10-12 пикселям, для указанного окна. Остальные элементы управления под схемой Ханойской башни реко- мендуется выстраивать в следующем порядке: |