Федеральное государственное бюджетное образовательное учреждение высшего образования «Пензенский государственный университет» Кафедра «Информационно-вычислительные системы» ОТЧЕТ о выполнении учебной практики на кафедре ИВС с « 11 » марта 2024 г. по « 7 » апреля 2024 г. Тема: Разработки программы для вывода изображения на экран «Деление прямоугольника». ОТЧЕТ ПРИНЯЛ: ________________________ (оценка) ВЫПОЛНИЛ: студент группы 21ЗВЭ31 «___»______________2024г. ______________Портнов А.Е. ________________________ Руководитель практики от университета ________________________ ______________ст. пр-ль. Терякова Ю.В. (подпись) Руководитель практики от предприятия _____________________________________ (должность) ___________________________________ (подпись) М.П. Пенза, 2024 (ФИО) Оглавление Введение .......................................................................................................................................3 1 Анализ предметной области ....................................................................................................4 2 Техническое задание ................................................................................................................4 2.1 Основание для разработки ....................................................................................................4 2.2 Назначение разработки .........................................................................................................5 2.3 Требования к программе .......................................................................................................5 2.3.1 Требования к функциональным характеристикам ..........................................................5 2.3.2 Требования к надежности ..................................................................................................5 2.3.3 Требования к составу и параметрам технических средств.............................................5 2.3.4 Требования к информационной и программной совместимости ..................................5 2.4 Требования к программной документации .........................................................................6 2.5 Стадии и этапы разработки ..................................................................................................6 2.6 Порядок контроля и приемки ...............................................................................................7 3 Описание программы ...............................................................................................................7 3.1 Общие сведения .....................................................................................................................7 3.2 Алгоритм работы программы ...............................................................................................8 3.3 Описание логической структуры процедуры .....................................................................8 3.4 Тестирование программы .....................................................................................................8 3.5 Применение программы........................................................................................................9 Заключение.................................................................................................................................10 Приложение А. Текст программы…………………………………………………………….11 Приложение B. Результаты тестирования……………………………………………………14 2 Введение В современном мире информационные технологии играют ключевую роль в различных сферах деятельности человека. Одной из таких областей является разработка программного обеспечения, которое позволяет автоматизировать процессы и решать сложные задачи. В рамках данной работы рассматривается задача деления прямоугольника на меньшие прямоугольники с использованием рекурсивного алгоритма. Актуальность темы обусловлена необходимостью разработки эффективных алгоритмов для решения задач, связанных с геометрическими фигурами. Деление прямоугольника на части может быть полезно в различных областях, таких как дизайн, архитектура, моделирование и т. д. Рекурсивный подход к решению этой задачи позволяет упростить код и сделать его более читаемым. 3 1 Анализ предметной области В современном мире информационные технологии играют ключевую роль в различных сферах деятельности человека. Одной из таких областей является разработка программного обеспечения, которое позволяет автоматизировать процессы и решать сложные задачи. В рамках данной работы рассматривается задача деления прямоугольника на меньшие прямоугольники с использованием рекурсивного алгоритма. Актуальность темы обусловлена необходимостью разработки эффективных алгоритмов для решения задач, связанных с геометрическими фигурами. Деление прямоугольника на части может быть полезно в различных областях, таких как дизайн, архитектура, моделирование и т. д. Рекурсивный подход к решению этой задачи позволяет упростить код и сделать его более читаемым. Кроме того, актуальность данной темы подтверждается тем, что она затрагивает фундаментальные принципы программирования, такие как рекурсия, которые являются важными инструментами для создания сложных программ. Разработка эффективных алгоритмов и методов для решения геометрических задач также имеет практическое применение в области компьютерного зрения, где требуется анализ и обработка изображений и видеоданных. 2 Техническое задание 2.1 Основание для разработки Проект на создание «Разработка программы для вывода изображения на экран «Деление прямоугольника»» разрабатывается на основании задания на учебную практику, выданного ст. пр-ль. кафедры ИВС Теряковой Ю.В. 4 2.2 Назначение разработки Программа для вывода «Деление прямоугольника» на экран предназначена для вывода деление прямоугольника на экран. 2.3 Требования к программе 2.3.1 Требования к функциональным характеристикам Программа для вывода изображения на экран «Деление прямоугольника»: – корректный ввод; – корректный вывод; 2.3.2 Требования к надежности Данная программа должна: – обеспечивать ввод значений в соответствии с типами данных; – выдавать запросы на повторный ввод некорректно заданных данных; – в случае отсутствия некоторых исходных данных или неправильных действий со стороны пользователя выдавать соответствующие предупреждения. 2.3.3 Требования к составу и параметрам технических средств Разработка программы для вывода изображения на экран «Деление прямоугольника» должна корректно функционировать на персональных компьютерах со следующими характеристиками: – процессор Intel P4, минимальная тактовая частота 1 ГГц; – объем оперативной памяти не меньше 1 Гбайт. 2.3.4 Требования к информационной и программной совместимости Разработка программы для вывода изображения на экран «Деление прямоугольника» в текстовом редакторе Visual Studio Code. 5 Программное обеспечение должно работать в любой операционной системе. 2.4 Требования к программной документации Программа для вывода изображения на экран «Деление прямоугольника» должна сопровождаться пояснительной запиской, включающей следующую программную документацию: – техническое задание; – описание программы; – программу и методику испытаний; – руководство администратора системы; – руководство пользователя. 2.5 Стадии и этапы разработки Стадии и этапы разработки Процедуры ввода данных в список с верификацией приведены в Таблице 1. Таблица 1 – Стадии и этапы разработки процедуры ввода данных в список с верификацией № Срок Стадии разработки Этапы разработки Исполнитель п/п выполнения 1 2 Расчетная часть Графическая часть 1.1 Разработка и утверждение технического задания 1.2 Определение входных и выходных данных 1.3 Разработка алгоритма решения задачи 1.4 Разработка структуры программы Не предусмотрена 6 Портнов А.Е. Портнов А.Е. Портнов А.Е. Портнов А.Е. Портнов А.Е. 3 4 Экспериментальная часть 3.1 Кодирование и отладка программы 3.2 Испытание программы Портнов А.Е. Портнов А.Е. Оформление пояснительной записки Портнов А.Е. 2.6 Порядок контроля и приемки Контроль правильности работы Разработка программы для вывода изображения на экран «Деление прямоугольника» осуществляется на основе выполнения тестовых примеров, учитывающих наиболее вероятные сочетания исходных данных и отражающих правильное выполнение всех функций системы (в том числе некорректный ввод данных и их несоответствие). Правильность работы программы определяется по результатам выполнения тестовых примеров. Приемка работоспособной разработка программы для вывода изображения на экран «Деление прямоугольника» производится после правильного выполнения всех тестовых заданий и при наличии пояснительной записки, включающей полный комплект программной документации. 3 Описание программы 3.1 Общие сведения Разработка программы для вывода изображения на экран «Деление прямоугольника» – это процедура, построения «Деление прямоугольника». Исполняемым файлом системы является Divid_rectangle.html. Программное обеспечение системы написано на языке JavaScript и разработано в текстовом редакторе Visual Studio Code. Система может функционировать в любой среде. Текст программы приведен в приложении А. 7 3.2 Алгоритм работы программы Пользователь вводит размера сторона прямоугольник и размер минимальной стороны после деления, после чего нажимает кнопку «Создать и поделить». Функция помещенная в элемент «generateRectangles», предназначена для проверки введенных пользователем данных, если данные некорректны, она выведет сообщение об ошибке «Пожалуйста, введите корректные положительные значения для ширины, высоты и минимальной стороны», если данные корректны то она запустит функции «clearRectangle()» и «divideRectangle()» Функция clearRectangle() предназначена для очистки основной области от предыдущих результатов. Функция divideRectangle() предназначена для отрисовки и деления полученного прямоугольника. 3.3 Описание логической структуры процедуры Сама функция divideRectangle() обладает простой структурой без циклов. Это линейная последовательность операций отрисовки, вычисления нового состояния при делении прямоугольника и его отображения. Главная часть программы, которая вызывает animate(i), использует рекурсию для создания эффекта анимации деления прямоугольника путем последовательной отрисовки отрезков делящих прямоугольник пополам. 3.4 Тестирование программы Тестирование этой процедуры может требовать внешней проверки визуальной корректности. Однако можно проверить, что процедура работает корректно, запустив приложение с различными прямоугольник и минимальной стороны после деления. 8 значениями сторон 3.5 Применение программы Эта функция может быть использована для визуализации динамических процессов, моделирования которых требует визуального представления их состояния на каждом шаге времени или при изменении параметра. Примеры могут включать создания сложных геометрических узоров или для моделирования архитектурных проектов, где требуется точное деление пространства на более мелкие части, в образовательных целях для демонстрации принципов рекурсии и алгоритмов деления геометрических фигур. 9 Заключение В ходе выполнения учебной практики была разработана программа для вывода изображения на экран «Деление прямоугольника». Программное обеспечение системы написано на языке JavaScript и разработано в текстовом редакторе Visual Studio Code. 10 ТЕКСТ ПРОГРАММЫ Приложение А (обязательное) 11 <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Деление прямоугольника на половины</title> <style> #rectangle { width: 800px; height: 600px; position: relative; margin: 0 auto; } .sub-rectangle { border: 1px solid black; position: absolute; } </style> </head> <body> <div> <label for="width">Ширина прямоугольника:</label> <input type="number" id="width" placeholder="Введите ширину"> </div> <div> <label for="height">Высота прямоугольника:</label> <input type="number" id="height" placeholder="Введите высоту"> </div> <div> <label for="minSide">Минимальная сторона:</label> <input type="number" id="minSide" placeholder="Введите минимальную сторону"> </div> <button id="generateRectangles">Создать и поделить</button> <div id="rectangle"></div> <script> document.getElementById('generateRectangles').addEventListener('click', function() { let width = parseInt(document.getElementById('width').value); let height = parseInt(document.getElementById('height').value); let minSide = parseInt(document.getElementById('minSide').value); if (isNaN(width) || width <= 0 || isNaN(height) || height <= 0 || isNaN(minSide) || minSide <= 0) { alert("Пожалуйста, введите корректные положительные значения для ширины, высоты и минимальной стороны."); } else { clearRectangle(); divideRectangle(0, 0, width, height, minSide); } }); function divideRectangle(x, y, width, height, minSide) { if (width < minSide || height < minSide) { return; } setTimeout(function() { let mainRect = document.getElementById('rectangle'); 12 let newRect = document.createElement('div'); newRect.className = 'sub-rectangle'; newRect.style.left = x + 'px'; newRect.style.top = y + 'px'; newRect.style.width = width + 'px'; newRect.style.height = height + 'px'; mainRect.appendChild(newRect); if (width >= height && width >= 2 * minSide) { divideRectangle(x, y, width / 2, height, minSide); divideRectangle(x + width / 2, y, width / 2, height, minSide); } if (height > width && height >= 2 * minSide) { divideRectangle(x, y, width, height / 2, minSide); divideRectangle(x, y + height / 2, width, height / 2, minSide); } }, 500); } function clearRectangle() { let mainRect = document.getElementById('rectangle'); mainRect.innerHTML = ''; } </script> </body> </html> 13 РЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯ Приложение Б (обязательное) 14 Рисунок Б.1 – Результат проверки 1 тестового пункта Рисунок Б.2 – Результат проверки 2 тестового пункта 15