Добавлен: 28.06.2023
Просмотров: 53
Скачиваний: 2
ВВЕДЕНИЕ
В рамках курсовой работы решается задача разработки программного продукта, работающего в операционной системе Windows, и выполняющего проверку является ли задаваемый пользователем двумерный массив целых чисел «Магическим квадратом». «Магическим квадратом» называется квадрат, у которого суммы по всем строкам и столбцам, а также суммы по двум диагоналям совпадают.
Исходя из постановки задачи курсовой работы, требуется разработать алгоритм проверки исходных данных на корректность (принадлежность к группе целых чисел, а также проверка, что исходный двумерный массив является квадратом), а также разработать алгоритм проверки соответствия заданного двумерного массива целых числе определению «Магический квадрат».
Для решения задачи был выбран язык программирования Object Pascal и среда программирования Delphi фирмы Borland Enterprise, так как она наиболее широкие возможности для программирования приложений под операционные системы семейства Windows. Среда программирования Delphi является средством быстрой разработки приложений (Rapid Application Development – RAD). Такие среды программирования часто называют визуальными средами разработки: вид рабочих и диалоговых окон во время проектирования, программирования и выполнения программы является одинаковым. В Delphi входят множество библиотек визуальных компонентов, необходимых для профессиональной разработки программных продуктов для операционной системы Windows с минимальными затратами на написание программного кода.
Компилятор Delphi производит небольшие по размерам и высокоэффективные по скорости исполняемые модули. Это означает, что требования к клиентским компьютерам существенно снижаются.
Преимущества Delphi по сравнению с аналогичными программными продуктами:
- быстрота разработки приложения (RAD);
- высокая производительность разработанного приложения;
- низкие требования разработанного приложения к ресурсам компьютера;
- наращиваемость за счет встраивания новых компонент и инструментов в среду Delphi;
- возможность разработки новых компонентов и инструментов собственными средствами Delphi (существующие компоненты и инструменты доступны в исходных кодах);
- удачная проработка иерархии объектов.
Таким образом, среда визуального проектирования Delphi способная взять на себя значительные объемы рутинной работы по подготовке приложений, что увеличивает скорость и качество разработки программ.
Глава 1 Основные аспекты разработки клиентских программ
1.1 Назначение и область применения, технические характеристики
Программа, разрабатываемая в рамках курсовой работы, предназначена для проверки двумерного массива целых чисел, заданного в текстовом файле, на соответствие определению «магический квадрат».
Область применения: учебный процесс. Автоматизация проверки заданий студентов на кафедре математики.
Разработать программу для проверки соответствия задаваемого двумерного массива целых чисел определению «магический квадрат». В магическом квадрате суммы чисел по всем вертикалям, всем горизонталям и двум диагоналям одинаковы.
Входными данными является тестовый файл со значениями ячеек квадрата. При этом столбцы в строке разделяются пробелами, а строки отделяются друг от друга новой строкой. В качестве значений ячеек допускаются целые числа. Программа должна предоставлять возможность как ввода исходных данных вручную в поле ввода, так и загрузку ранее созданных матриц числе из текстового файла.
Выходными данными является сообщение о соответствии входных данных определению магический квадрат, либо сообщение о неправильных входных данных.
Перед проверкой соответствия заданного двумерного массива определению «магический квадрат» необходимо проверить корректность исходных данных:
- проверка, что заданный двумерный массив является непустым квадратом;
- проверка, что в ячейках квадрата записаны целые числа;
Проверка, что заданный двумерный массив является квадратом, осуществляется путем подсчета столбцов в строках исходной матрицы. В каждой строке должно быть одинаковое количество столбцов. Также число столбцов и число строк должно совпадать, а также быть больше нуля.
Проверка, что в ячейках квадрата записаны целые числа, осуществляется способом конвертации значения ячейки в целое число средствами Delphi. В случае возникновения ошибки конвертации считается, что число записано неправильно.
1.2 Описание алгоритма
В программе решаются три независимые друг от друга подзадачи:
- Проверка исходных данных на равное количество строк и столбцов.
- Проверка исходных данных на правильную запись чисел в ячейках матрицы.
- Проверка соответствия исходных данных определению «магический квадрат».
Алгоритм подзадачи проверки исходных данных на равное количество строк и столбцов представлен на рисунке 1. Данные считаются правильными, если после выполнения алгоритма флаг rectOk остался в значении истинно (true). Ключевым моментом алгоритма является разбивка строки на подстроки с помощью встроенной функции Delphi ExactStrings.
Алгоритм проверки исходных данных на правильную запись целых чисел представлен на рисунке 2. Данные считаются правильными, если флаг digitsOk остался в значении истинно (true) после выполнения алгоритма. Ключевым моментом работы алгоритма является преобразование строки в число с помощью функции StrToInt. Если во время преобразования данных не возникло исключительной ситуации (ошибки), то данные считаются правильными и заносятся в массив входных значений M.
Алгоритм проверки соответствия исходных данных определению «магический квадрат» представлен на рис.3. Исходная матрица считается магическим квадратом, если флаг magicOk остался в значении истинно (true) после выполнения алгоритма.
Рис.1 Алгоритм проверки равного количества строк и столбцов у исходных данных.
Рис.2 Алгоритм проверки правильности ввода целых чисел в ячейки.
Рис.3 Алгоритм определения магического квадрата.
1.3 Организация входных и выходных данных
В качестве входных данных рассматривается текстовый файл, в котором записывается двумерный массив целых чисел. Строки разделяются переводом строки, а столбцы – пробелом. Существует возможность редактирования загруженных входных данных непосредственно в программе.
В качестве выходных данных рассматривается сообщение о соответствии исходного двумерного массива определению «магический квадрат». Также в качестве выходных данных могут быть сообщения об ошибках: неравное количество строк и столбцов, пустой входной массив или наличие нечисловых значений в ячейках входной матрицы.
1.4 Выбор состава технических и программных средств
Для решения задачи был выбран язык программирования Object Pascal и среда программирования Delphi фирмы Borland Enterprise, так как она наиболее широкие возможности для программирования приложений под операционные системы семейства Windows. Преимущества Delphi по сравнению с аналогичными программными продуктами:
- быстрота разработки приложения (RAD);
- высокая производительность разработанного приложения;
- низкие требования разработанного приложения к ресурсам компьютера;
Среда разработки Delphi работает на операционных системах начиная от Windows XP, со свободным дисковым пространством от 512 мегабайт и оперативной памятью от 1 Гигабайта.
ГЛАВА 2 Разработка рабочего проекта
2.1 Разработка программы
Для разработки приложения «Магический квадрат» используется среда визуального программирования Delphi. Проект программы содержит 2 окна:
- Form1 – ввод исходных данных и определение магического квадрата;
- Form2 – вывод информации о программе
Окно Form1 «Магический квадрат представлено на рисунке 4.
Рис.4 Окно «Магический квадрат»
Компонент Form1.
Свойства:
Caption – Магический квадрат;
ClientHeight – 408;
ClientWidth – 573;
События – нет;
0 – компонент TButton
Свойства:
Caption – Загрузить из файла;
События:
btn1Click – обработка клика по кнопке;
- – Компонент TButton
Свойства:
Caption – Проверка;
События:
btn2Click – обработка клика по кнопке;
- – Компонент TMemo
Свойства:
Название – mmo1;
3 – компонент TButton
Свойства:
Caption – О программе;
События:
btn3Click – обработка клика по кнопке;
- – невизуальный компонент TOpenDialog
Свойства:
Название: dlgOpen1
Filter: Text files|*.txt;
Окно Form2 “О программе” представлено на рисунке 5.
Компонент Form2.
Свойства:
Caption – О программе;
События – нет;
Рис.5 Окно «О программе»
Окно содержит единственный компонент TLabel:
Свойства:
Caption – содержит текст, представленный на рисунке 5
Align: alClient;
Alignment: taCenter;
Обработчик события btn1Click служит для загрузки содержимого файла в поле ввода.
Обработчик события btn2Click служит для определения магического квадрата по исходным данным, находящимся в поле ввода. Алгоритм проверки корректности данных и определения магического квадрата представлены ранее на рис.1 – 3.
Обработчик события btn3Click служит для отображения окна информации о программе.
Исходные коды с комментариями представлены в разделе 3.3.
2.2 Спецификация программы
Исполняемый файл программы «Магический квадрат» имеет название magicrect.exe и расположен в каталоге magicrect/magicrect.exe.
Таблица 1 - Обозначения
Наименование |
Обозначение |
Примечание |
Sample.txt |
Файл с примером двумерного массива |
|
magicrect.dof |
Файл параметров проекта |
Содержит текущие настройки компилятора и компоновщика |
magicrect.dpr |
Файл проекта |
Связывает все файлы, из которых состоит приложение |
magicrect.dsk |
Файл, содержащий Desktop – настройки проекта |
Содержит информацию об открытых окнах и их размещении |
magicrect.Res |
Файл ресурсов |
Содержит пиктограммы, графические изображения |
Unit1.Pas |
Файл программного модуля для формы № 1 |
Определяет функциональность формы № 1 |
Unit2.Pas |
Файл программного модуля для формы № 2 |
Определяет функциональность формы № 2 |
Unit1.Dfm |
Файл формы № 1 |
Содержит список свойств компонентов формы № 1 |
Unit2.Dfm |
Файл формы № 2 |
Содержит список свойств всех компонентов формы № 2 |
Unit1.Dcu |
Объектный файл для Unit1.Pas |
Откомпилированная версия Unit1.Pas |
Unit2.Dcu |
Объектный файл для Unit2.Pas |
Откомпилированная версия Unit2.Pas |
2.3 Текст программы
Модуль Unit1.pas
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Unit2;
type
TForm1 = class(TForm)
btn1: TButton; {кнопка загрузки}