Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Матричный калькулятор.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
290.3 Кб
Скачать

3.2.3 Схема алгоритма

Любая функция нажатия функциональной кнопки главного окна использует одну из функций чтения формы и/или одну из функций вывода в форму описанных в файле File1.cpp.

Сначала происходит чтение одной или двух таблиц строк StringGrid с занесением значений из них в соответствующие матрицы.

Затем с помощью методов класса TMatrix данные обрабатываются и выводятся по необходимости в результирующую или одну из рабочих StringGrid.

Рассмотрим на примере функции нажатия кнопки сложения.

  1. Чтение обеих StringGrid с помощью метода ReadForm() с занесением результата в _Mat1 и _Mat2;

  2. Присвоение матрице _Res значения суммы матриц _Mat1 и _Mat2 с помощью метода класса TMatrix MSumm(TMatrix, TMatrix);

  3. Вывод матрицы _Res в форму с помощью функции WriteForm().

3.2.4 Обработка исключений

В программе генерируются исключения с кодом целого типа.

Все они делятся на 6 групп:

Код 1: Несоответствующий выбранной операции размер матрицы (матрица должна быть квадратной);

Код 2: Несоответствующие выбранной операции размеры матриц (матрицы должны иметь одинаковый размер);

Код 3: Недопустимые данные (элементами матриц могут быть только числа);

Код 4: Недопустимые данные (независимое поле Edit должно содержать только числа);

Код 5: Несоответствующие выбранной операции размеры матриц (высота первой матрицы должна соответствовать ширине второй);

Код 10: Внутренняя ошибка класса TMatrix (неправильные индексы). От пользователя не зависит.

При поимке любого исключения вызывается функция ExceptCatch(int ErrorCode), которая выводит соответствующее сообщение об ошибке в форму TErrorBox1 и показывает саму форму.

3.2 Руководство пользователя

Интерфейс любой программы должен отличаться легкой восприимчивостью пользователем.

Если пользователь сможет разобраться в программе без руководства, то работа программиста будет считаться выполненной великолепно. В этой работе тоже были приложены усилия для создания простого, понятного и удобного интерфейса (рис. 2).

Рисунок 2 - Интерфейс программы

В левой части окна (одна над другой) находятся три основные панели.

Каждая из двух верхних представляют собой панель, включающую рабочую таблицу строк (рис. 3а) и два объекта (рис. 3б, в) изменения размера таблицы.

Каждый объект представляет собой числовое поле и две кнопки «+» и «-». Верхний объект изменения размера таблицы (рис. 3б) служит для изменения высоты таблицы, нижний (рис. 3в) – ширины.

а

б

в

Рисунок 3 - Одна из двух верхних панелей

Каждая такая панель представляет собой матрицу.

Для ввода данных необходимо:

  1. Выбрать нужный размер

  2. Выделяя курсором необходимую ячейку ввести значение данной ячейки

а

в

б

Рисунок 4 - Результирующая панель

В левом нижнем углу окна находится результирующая панель.

Она представляет собой панель, включающую результирующую таблицу (рис. 3а) и две кнопки (рис. 4в) для переноса данных из результирующей таблицы в одну из рабочих.

Верхняя кнопка «ТО 1» служит для переноса данных в первую матрицу, нижняя – во вторую.

В правом верхнем углу отображается информация о размерах матрицы (рис. 4б): высоте и ширине.

Панель основных операций

Над матрицами можно выполнять операции сложение, вычитание, умножение с помощью нажатия соответствующей кнопки на панели основных операций (рис. 5).

«*» - умножение матриц (рис. 5а);

«+» - сложение матриц (рис. 5б);

«-» - вычитание матриц (рис. 5в);

«Модуль» - подсчет определителя матрицы (рис. 5г).

в

б

а

г

Рисунок 5 - Панель основных операций

Операции преобразования матрицы

Во время работы матрицу можно преобразовать с помощью нажатия соответствующей кнопки на панели дополнительных операций (рис. 6):

«Е» - инициализация единичной матрицы (рис. 6а);

«0» - инициализация нулевой матрицы (рис. 6д);

«Rand» - инициализация случайной матрицы (рис. 6е);

«Integer» - инициализация матрицы целым из поля «Число» (рис. 6б)

«- Х» - умножение матрицы на –1(рис. 6з);

«Х * С» - умножение матрицы на скаляр (рис. 6в);

«Х ^ C» - возведение матрицы в скалярную степень (последовательное умножение на себя) (рис. 6ж);

«Т» - транспонирование матрицы (рис. 6г).

в

б

а

г

д

ж

е

з

Рисунок 6 - Панели дополнительных операций

Все эти операции производятся над активной матрицей.

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

Для операций умножения на скаляр и возведения в скалярную степень используется целое число.

Это число вводится в числовое поле (рис. 7) находящееся в верхней правой части окна.

Рисунок 7 - Числовое поле

Для очистки всей формы (обнуления всех матриц формы) используется кнопка «С» (рис. 8), находящаяся в правом нижнем углу окна.

Рисунок 8 - Кнопка «обнуления всех матриц формы»

Использование памяти

В данном калькуляторе можно использовать память для хранения одной матрицы.

Все операции с памятью производятся с помощью кнопок на панели памяти (рис. 9) .

Чтобы занести в память матрицу нужно выделить матрицу кликом мыши и нажать кнопку «М». На панели появится индикатор «М».

Чтобы вынести результат из памяти нужно выделить матрицу кликом мыши и нажать кнопку «МR».

Чтобы очистить память необходимо нажать «МС». Индикатор «М» исчезнет.

Рисунок 9 – Кнопки панели памяти

Для получения информации о программе нажмите кнопку «О программе», находящуюся в правом верхнем углу окна.

Рисунок 10 - кнопка «О программе»

Заключение

Данная программа является типичным примером реализации программ использованием объектно-ориентированной технологии программирования созданных для Windows с помощью Borland C++ Builder.

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

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