Современные технологии программирования |
Лабораторные работы по теме "Калькулятор комплексных чисел" |
Выполните лабораторные работы с 1 по 6 по теме вашей курсовой работы "Калькулятор комплексных чисел".
Лабораторная работа №1 Тип комплексное число
Лабораторная работа №2 Тип память для комплексных чисел
Лабораторная работа №3 Тип данных процессор комплексных чисел
Лабораторная работа №4 Редактор комплексных чисел
Лабораторная работа №5 Управление калькулятором комплексных чисел
Лабораторная работа №6 Интерфейс калькулятора комплексных чисел
Лабораторная работа №1. Абстрактный тип данных “комплексное число”
Тема: Классы Object Pascal, С++
Цель: Сформировать практические навыки реализации абстрактных типов данных в соответствии с заданной спецификацией с помощью классов Object Pascal, С++. Синтаксис классов: инкапсуляция, простые свойства.
Задание
в соответствии с приведенной ниже спецификацией.
Спецификация типа данных “комплексное число”.
ADT TComplex
Данные Комплексное число TComplex - это неизменяемая пара вещественных чисел, представляющие действительную и мнимую части комплексного числа (a + i*b).
Операции
Операции могут вызываться только объектом комплексное число (тип
TComplex), указатель на который в них передаётся по умолчанию. При описании операций этот объект называется “само число”.
КонструкторЧисло |
|
Начальные значения: |
Пара вещественных чисел (a) и (b). |
Процесс: |
Создаёт комплексное число (тип TComplex) с действительной частью (a) и мнимой (b).Например: КонструкторЧисло (6,3)=6 + i*3КонструкторЧисло (3,0)=3 + i*0КонструкторЧисло (0,0)=0 + i*0 |
КонструкторСтрока |
|
Начальные значения: |
Строка, представляющая комплексное число. |
Процесс: |
Создаёт комплексное число (тип TComplex), представленное строкой f = ’a + i*b’, с действительной частью (a) и комплексной частью (b).Например: КонструкторСтрока (‘6+i*3’) = 6+i*3КонструкторСтрока (‘0+i*3’) = 0+i*3 |
Копировать: |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс |
Создаёт и возвращает собственную копию - комплексное число (тип TComplex) с действительной и мнимой частями такими же как у самого числа. |
Выход: |
Комплексное число (тип TComplex).Например: c = 6+i3, Копировать(c) = 6+i3 |
Постусловия: |
Нет. |
Сложить |
|
Вход: |
Комплексное число d (тип TComplex). |
Предусловия: |
Нет. |
Процесс |
Создаёт и возвращает комплексное число, полученное сложением самого числа q = a1+i*b1 с числом d = a2+i*b2: ((a1+i*b1)+(a2+i*b2)=(a1+a2)+i*(b1+b2)).Например: q = (2 +i*1), d = (2 +i*1), q.Сложить(d) = (4 +i*2). |
Выход: |
Комплексное число (тип TComplex). |
Постусловия: |
Нет. |
Умножить |
|
Вход: |
Комплексное число d (тип TComplex). |
Предусловия: |
Нет. |
Процесс |
Создаёт и возвращает комплексное число, полученное умножением самого числа q = a1+i*b1 на число d = a2+i*b2: ((a1+i*b1)*(a2+i*b2)=(a1*a2 - b1*b2)+i*(a1*b2+ a2*b1)). |
Выход: |
Комплексное число (тип TComplex). |
Постусловия: |
Нет. |
Квадрат |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс |
Создаёт и возвращает комплексное число (тип TComplex), полученное умножением числа на самого себя: ( (a1+i*b1)*(a1+i*b1)=(a1*a1 - b1*b1)+i*(a1*b1+ a1*b1)). |
Выход: |
Комплексное число (тип TComplex). |
Постусловия: |
Нет. |
Обратное |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс |
Создаёт и возвращает комплексное число (тип TComplex), полученное делением единицы на само число 1/( (a1+i*b1) = a1/(a1**2 + b1**2) - i* b1/( a1**2 + b1**2 )). |
Выход: |
Комплексное число (тип TComplex). |
Постусловия: |
Нет. |
Вычесть |
|
Вход: |
Комплексное число d (тип TComplex).. |
Предусловия: |
Нет. |
Процесс |
Создаёт и возвращает комплексное число (тип TComplex), полученное вычитанием d = a2 + i b2 из самого себя q = (a1+i*b1): (a1+i*b1)-(a2+i*b2)=(a1-a2)+i*(b1-b2).Например: q = (2 +i*1), d = (2 +i*1) )q.Вычесть(d) = (0 + i0). |
Выход: |
Комплексное число (тип TComplex). |
Постусловия: |
Нет. |
Делить |
|
Вход: |
Комплексное число (d). |
Предусловия: |
Нет. |
Процесс |
Создаёт и возвращает комплексное число (тип TComplex), полученное делением самого числа (q) на число (d) ( (a1+i*b1)/(a2+i*b2)=(a1*a2 + b1*b2)/(a2**2 + b2**2)+i*(a2*b1 – a1*b2)/(a2**2 + b2**2)). |
Выход: |
Комплексное число (тип TComplex). |
Постусловия: |
Нет. |
Минус |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс |
Создаёт и возвращает комплексное число (тип TComplex), являющееся разностью комплексных чисел z и и самого числа, где z – комплексное число (0+i0). |
Выход: |
Комплексное число (тип TComplex). |
Постусловия: |
Нет. |
Модуль |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс |
Вычисляет и возвращает модуль самого комплексного числа (q). Например:q = (2 +i*1), q. Модуль = Ö (2*2+1*1). q = (i*17), q. Модуль = Ö (0*0+17*17). |
Выход: |
Вещественное число. |
Постусловия: |
Нет. |
УголРад |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс |
Возвращает аргумент fi самого комплексного числа q (в радианах). fi = (arcTg(b/a), a>0; pi/2, a = 0, b > 0; arcTg(b/a) + pi, a < 0; -pi/2, a = 0, b <0 ). Например: q = (1 +i*1), q. УголРад = 0,79. |
Выход: |
Вещественное число. |
Постусловия: |
Нет. |
УголГрад |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс |
Возвращает аргумент самого комплексного числа q (в градусах). Например: q = (1 +i*1), q. Град = 45. |
Выход: |
Вещественное число. |
Постусловия: |
Нет. |
Степень |
|
Вход: |
Целое (n). |
Предусловия: |
Нет. |
Процесс |
Возвращает целую положительную степень n самого комплексного числа q. qn = rn(cos (n*fi)+ i* sin (n*fi)). |
Выход: |
Комплексное число (тип TComplex). |
Постусловия: |
Нет. |
Корень |
|
Вход: |
Целое (n), целое (i). |
Предусловия: |
Нет. |
Процесс |
Возвращает i-ый корень целой положительной степени n самого комплексного числа q. Ö n(q) = Ö n(r)* (cos ((fi + 2*k*pi)/n)+ i* sin ((fi + 2*k*pi)/n)). При этом коофициенту k придается последовательно n значений: k = 0,1,2…, n - 1 и получают n значений корня, т.е. ровно столько, каков показатель корня. |
Выход: |
Комплексное число (тип TComplex). |
Постусловия: |
Нет. |
Равно |
|
Вход: |
Комплексное число (d). |
Предусловия: |
Нет. |
Процесс |
Сравнивает само комплексное число с числом (d). Возвращает значение True, если они - тождественные комплексные числа, и значение False - в противном случае. |
Выход: |
Булевское значение. |
Постусловия: |
Нет. |
НеРавно |
|
Вход: |
Комплексное число (d). |
Предусловия: |
Нет. |
Процесс |
Сравнивает само комплексное число с числом (d). Возвращает значение True, если само число <> d, - значение False - в противном случае. |
Выход: |
Булевское значение. |
Постусловия: |
Нет. |
ВзятьReЧисло |
|
Вход: |
Нет |
Предусловия: |
Нет. |
Процесс |
Возвращает значение действительной части самого комплексного числа в числовом формате. |
Выход: |
Вещественное значение. |
Постусловия: |
Нет. |
ВзятьImЧисло |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс |
Возвращает значение мнимой части самого комплексного числа в числовом формате. |
Выход: |
Вещественное значение. |
Постусловия: |
Нет. |
ВзятьReСтрока |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс |
Возвращает значение вещественной части самого комплексного числа в строковом формате. |
Выход: |
Строка. |
Постусловия: |
Нет. |
ВзятьImСтрока |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс |
Возвращает значение мнимой части самого комплексного числа в строковом формате. |
Выход: |
Строка. |
Постусловия: |
Нет. |
ВзятьКомплексноеСтрока |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс |
Возвращает значение самого комплексного числа в строковом формате. |
Выход: |
Строка. |
Постусловия: |
Нет. |
end TComplex
Рекомендации к выполнению
Содержание отчета
Контрольные вопросы
Лабораторная работа №2. Абстрактный тип данных (ADT) “память для комплексных чисел”
Тема: Классы Object Pascal, С++
Цель: Сформировать практические навыки: реализации абстрактного типа данных с помощью классов Object Pascal, С++
Задание
Спецификация типа данных “память для комплексных чисел”.
ADT TMemory
Данные
Память для комплексных чисел (тип TMemory, в дальнейшем - память) - это память для хранения объекта “комплексное число” (тип TComplex) и значения “состояние памяти”. Объект “память для комплексных чисел” - изменяемый. Он имеет два состояния, обозначаемых значениями: “Включена” (_On), “Выключена” (_Off). Её изменяют операции: Записать (Store), Добавить (Add), Очистить (Clear).
Операции
Конструктор |
|
Начальные значения: |
Нет. |
Процесс: |
Создаёт объект “память” типа TMemory. Создаёт и записывает в поле “комплексное число” объекта “память” (тип TMemory) объект “комплексное число” (тип TComplex) со значением 0 + i*0. Память устанавливается в состояние “Выключена”, в поле “состояние памяти” заносится значение (_Off). |
Записать |
|
Вход: |
(E) – объект “комплексное число” (тип TComplex). |
Предусловия: |
Нет. |
Процесс |
В объект “память” (тип TMemory) в поле “комплексное число” записывается копия (Е). Память устанавливается в состояние “Включена”, в поле “состояние памяти” заносится значение (_On). |
Выход: |
Нет. |
Постусловия: |
Состояние памяти – “Включена” (_On). |
Взять |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс |
Создаёт и возвращает копию объекта хранящегося в объекте “память” (тип TMemory) в поле “комплексное число” (тип TComplex). |
Выход: |
Объект (тип TComplex). |
Постусловия: |
Состояние памяти – “Включена” (_On). |
Добавить |
|
Вход: |
(Е) – комплексное число (объект типа TComplex). |
Предусловия: |
Нет. |
Процесс |
В поле “комплексное число” объекта “память” (тип TMemory) записывается объект “комплексное число” (тип TComplex), полученный в результате сложения числа (Е) и числа, хранящегося в памяти в поле “комплексное число”. |
Выход: |
Нет. |
Постусловия: |
Состояние памяти – “Включена” (_On). |
Очистить |
|
Вход: |
Нет. |
Предусловия: |
Состояние памяти – “Включена” (_On). |
Процесс |
В поле “комплексное число” объекта “память” (тип TMemory) записывается объект “комплексное число” (тип TComplex) со значением 0+i*0. Память устанавливается в состояние “Выключена” (_Off). |
Выход: |
Нет. |
Постусловия: |
Состояние памяти – “Выключена” (_Off). |
ЧитатьСостояниеПамяти |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс |
Копирует и возвращает значение поля “состояние памяти” объекта “память” (тип TMemory) в формате строки. |
Выход: |
Значение поля “состояния памяти” (типа String). |
Постусловия: |
Нет. |
ЧитатьЧисло |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс |
Копирует и возвращает значение поля “комплексное число” объекта “память” (тип TMemory) в формате строки. |
Выход: |
Значение объекта “комплексное число” (тип String). |
Постусловия: |
Нет. |
end
TCMemoryРекомендации к выполнению
Ниже приведены диаграмма классов и состояний для класса память.
Рис. Диаграмма классов Память
Рис. Диаграмма состояния Память
Содержание отчета
Лабораторная работа №3. Абстрактный тип данных:
Процессор комплексных чисел.Тема: Классы Object Pascal, С++
Цель: Сформировать практические навыки: реализации абстрактного типа данных с помощью классов Object Pascal, С++.
Задание
Спецификация типа данных “
Процессор комплексных чисел”.ADT
TProcДанные
Процессор комплексных чисел (тип TProc) выполняет двухоперандные операции TOprtn = (None, Add, Sub, Mul, Dvd) и однооперандные операции - функции TFunc = (Rev, Sqr). Если операция или функция не может быть выполнена, в поле Error типа String заносится сообщение об ошибке. Левый операнд и результат операции хранится в поле Lop_Res, правый - в поле Rop. Оба поля имеют тип TComplex. Процессор может находиться в состоянии “операция установлена”: поле Operation не равно None (значение типа TOprtn) или в состоянии операция не установлена: поле Operation = None. Значения типа TProc - изменяемые. Они изменяются операциями: Сброс операции (OprtnClear), Выполнить операцию (OprtnRun), Вычислить функцию (FuncRun), Установить операцию (OprtnSet), Установить левый операнд (Lop_Res_Set), Установить правый операнд (Rop_Set), Сброс калькулятора (ReSet).
Операции
Конструктор |
|
Начальные значения: |
Нет |
Процесс: |
Создаёт объект процессор простых дробей типа TProc. Поля Lop_Res, Rop инициализируются объектами (тип TComplex) со значением 0+i0. В поле Error заносится пустая строка. Процессор устанавливается в состояние: “операция не установлена”: (Operation = None). |
СбросПроцессора |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс: |
Поля объекта процессор простых дробей: Lop_Res, Rop инициализируются объектами (тип TComplex) со значением 0+i0. В поле Error заносится пустая строка. Процессор устанавливается в состояние: “операция не установлена”: (Operation = None). |
Выход: |
Нет |
Постусловия: |
Состояние процессора – “операция сброшена” (Operation = None). |
СбросОоперации |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс |
Процессор устанавливается в состояние: “операция не установлена”: (Operation = None). |
Выход: |
Нет |
Постусловия: |
Состояние процессора – “операция сброшена” (Operation = None). |
ВыполнитьОперацию |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс |
Вызывает выполнение текущей операции (записанной в поле Operation). Операция (Operation) выполняется над значениями, хранящимися в полях Rop и Lop_Res. Результат сохраняется в поле Lop_Res. Если Operation = None, никакие действия не выполняются. Если операция не может быть выполнена, в поле Error заносится сообщение об ошибке. Состояние объекта не изменяется. |
Выход: |
Нет |
Постусловия: |
Состояние процессора не изменяется. |
ВычислитьФункцию |
|
Вход: |
Вид функции (Func: TFunc). |
Предусловия: |
Нет |
Процесс |
Вызывает выполнение текущей функции (Func). Функция (Func) выполняется над значением, хранящимся в поле Rop. Результат сохраняется в нём же. Если операция не может быть выполнена, в поле Error заносится сообщение об ошибке. Состояние объекта не изменяется. |
Выход: |
Нет |
Постусловия: |
Состояние процессора не меняется. |
ЧитатьЛевыйОперанд |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс |
Создаёт и возвращает копию объекта, указатель на который хранится в Lop_Res. |
Выход: |
Объект типа TComplex. |
Постусловия: |
Состояние процессора не изменяется. |
ЗаписатьЛевыйОперанд |
|
Вход: |
Переменная (Operand) типа TComplex. |
Предусловия: |
Нет. |
Процесс |
Создаёт копию объекта Operand и заносит указатель на него в поле Lop_Res. |
Выход: |
Нет. |
Постусловия: |
Состояние процессора не изменяется. |
ЧитатьПравыйОперанд |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс |
Создаёт и возвращает копию объекта, указатель на который хранится в Rop. |
Выход: |
Объект типа TComplex. |
Постусловия: |
Состояние процессора не меняется. |
ЗаписатьПравыйОперанд |
|
Вход: |
Переменная (Operand) типа TComplex. |
Предусловия: |
Нет. |
Процесс |
Создаёт копию объекта Operand и заносит указатель на него в поле Rop. |
Выход: |
Нет. |
Постусловия: |
Состояние процессора не изменяется. |
ЧитатьСостояние |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс |
Копирует и возвращает значение поля Operation. |
Выход: |
Значение поля Operation. |
Постусловия: |
Состояние процессора не изменяется. |
ЗаписатьСостояние |
|
Вход: |
Переменная (Oprtn) типа TOprtn. |
Предусловия: |
Нет. |
Процесс |
Заносит значение Oprtn в поле Operation. |
Выход: |
Нет. |
Постусловия: |
Состояние процессора изменяется на Oprtn. |
ЧитатьОшибку |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс |
Копирует и возвращает значение поля Error. |
Выход: |
Значение поля Error. |
Постусловия: |
Состояние процессора не изменяется. |
СбросОшибки |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс |
Очищает поле Error. |
Выход: |
Нет. |
Постусловия: |
Состояние процессора не изменяется. |
Рекомендации к выполнению
2 + 3 * 42
Шаг |
Вход |
Метод |
Rop |
Lop_Res |
Operation |
0 |
Конструктор |
0+i0 |
0+i0 |
None |
|
1 |
2 |
0+i0 |
0+i0 |
None |
|
2 |
+ |
Lop_Res_Set; OprtnSet |
0+i0 |
2 |
Add |
3 |
3 |
0+i0 |
2 |
Add |
|
4 |
* |
Rop_Set; OprtnRun; OprtnSet; |
3 |
2+3 |
Mul |
5 |
4 |
4 |
2+3 |
Mul |
|
6 |
Sqr |
Rop_Set; FuncRun |
4^2 |
2+3 |
Mul |
7 |
= |
OprtnRun |
4^2 |
2+3* 4^2 |
Mul |
8 |
C |
ReSet |
0+i0 |
0+i0 |
None |
Содержание отчета
Лабораторная работа №4. Редактор комплексных чисел
Тема: Классы Object Pascal, С++
Цель: Сформировать практические навыки реализации классов средствами объектно-ориентированного программирования Object Pascal, С++.
Задание
На Унифицированном языке моделирования UML (Unified Modeling Language) наш класс можно обозначить следующим образом:
РедакторКомплексныхЧисел |
строка: String |
комплексноеЧислоЕстьНоль: Boolean |
добавитьЗнак: String |
добавитьЦифру(a: Integer): String |
добавитьНоль: String |
забойСимвола: String |
очистить: String |
конструктор |
читатьСтрокаВформатеСтроки: String (метод свойства) |
писатьСтрокаВформатеСтроки(a: String) (метод свойства) |
редактировать(a: Integer): String |
Обязанность: ввод, хранение и редактирование строкового представления комплексных чисел |
Рекомендации к выполнению
Содержание отчета
Контрольные вопросы
Лабораторная работа №5. Управление калькулятором комплексных чисел
Тема: Классы Object Pascal, С++
Цель: Сформировать практические навыки реализации классов средствами объектно-ориентированного программирования Object Pascal, С++.
Задание
На Унифицированном языке моделирования UML (Unified Modeling Language) наш класс можно обозначить следующим образом:
УправлениеКалькуляторомКомплексныхЧисел (тип TCtrl) |
состояниеКалькулятора: TCtrlState |
редактор: TEditor |
процессор: TProc |
память: TMemory |
число: TComplex |
выполнитьКомандуКалькулятора(a: Integer; var b, MState: String): String |
выполнитьКомандуРедактора(a: Integer): String |
выполнитьОперацию(a: Integer): String |
выполнитьФункцию(a: Integer): String |
вычислитьВыражение(a: Integer): String |
установитьНачальноеСостояниеКалькулятора(a: Integer): String |
выполнитьКомандуюПамяти(a: Integer; var MState: String): String |
очиститьПамять(var MState: String): String |
записатьВПамять(var MState: String): String |
считатьИзПамяти(var MState: String): String |
добавитьКЧислуВПамяти(var MState: String): String |
читатьПисатьСостояниеКалькулятора: TCtrlState (свойство, опирающееся на поле) |
выполнитьКомандуБуфераОбмена(a: Integer; var b: String): String |
записатьВБуферОбмена(a: Integer; var b: String): String |
читатьИзБуферОбмена(a: Integer; var b: String): String |
сменитьОснованиеСистемыСчисления(b: integer; var s:String) |
конструктор |
деструктор |
Обязанность: управление выполнением команд калькулятора |
Рекомендации к выполнению
Рекомендации к выполнению
Логика работы объекта “управление калькулятором” класс TCtrl может быть описана с помощью таблицы переходов, которая отражает изменение состояния калькулятора и результат работы объекта под действием команд пользователя. Таблица переходов строится на основе анализа прецедентов (вариантов использования), приведённых в спецификации.
Для построения таблицы переходов необходимо:
Состояние калькулятора: Start (Начальное – после запуска приложения или выполнения команды С) |
|||
Вход (команда пользователя) |
Результирующее состояние |
Действия |
Примечание |
Команды ввода и редактирования |
Editing |
Изменение состояния редактируемой строки. (Вызов редактора). |
|
Операция (Op) |
Start |
Введённая операция становится текущей. |
|
Функция (Fun) |
Start |
Действия отсутствуют. |
|
Error |
|||
Команды памяти |
Start |
Действия отсутствуют. |
|
Команды буфера обмена |
Start |
Действия отсутствуют. |
|
Вычислить (=) |
Start |
Действия отсутствуют. |
|
Новое выражение (С) |
Start |
Действия отсутствуют. |
Состояние калькулятора: Editing (Редактирование) |
|||
Вход (команда пользователя) |
Результирующее состояние |
Действия |
Примечание |
Команды ввода и редактирования |
|||
Операция (Op) |
|
|
|
|
|||
Функция (Fun) |
|
|
|
|
|||
Взять из памяти (MR), (MS),(M+) |
|||
Вставить из буфера обмена, Копировать в буфер обмена |
|||
Вычислить (=) |
|
|
|
|
|||
Новое выражение (С) |
Состояние калькулятора: OpChange (смена операрации) |
|||
Вход (команда пользователя) |
Результирующее состояние |
Действия |
Примечание |
Команды ввода и редактирования |
|||
Операция (Op) |
|||
Функция (Fun) |
|
|
|
|
|||
Взять из памяти (MR) |
|||
Вставить из буфера обмена |
|||
Вычислить (=) |
|
|
|
|
|||
Новое выражение (С) |
Состояние калькулятора: ExpDone (Выражение вычислено) |
|||
Вход (команда пользователя) |
Результирующее состояние |
Действия |
Примечание |
Команды ввода и редактирования |
|||
Операция (Op) |
|||
Функция (Fun) |
|
|
|
|
|||
Взять из памяти (MR) |
|||
Копировать из буфера обмена (MR) |
|||
(MS),(MC),(M+), Вставить в буфер обмена |
|||
Вычислить (=) |
|
|
|
|
|||
Новое выражение (С) |
Состояние калькулятора: FunDone (Функция вычислена),) |
|||
Вход (команда пользователя) |
Результирующее состояние |
Действия |
Примечание |
Команды ввода и редактирования |
|||
Операция (Op) |
|
|
|
|
|||
Функция (Fun) |
|
|
|
|
|||
Взять из памяти (MR) |
|||
Копировать из буфера обмена (MR) |
|||
(MS),(MC),(M+), Вставить в буфер обмена |
|||
Вычислить (=) |
|
|
|
|
|||
Новое выражение (С) |
Состояние калькулятора: ValDone (Значение введено) |
|||
Вход (команда пользователя) |
Результирующее состояние |
Действия |
Примечание |
Команды ввода и редактирования |
|||
Операция (Op) |
|
|
|
|
|||
Функция (Fun) |
|
|
|
|
|||
Взять из памяти (MR) |
|||
Копировать из буфера обмена (MR) |
|||
(MS),(MC),(M+), Вставить в буфер обмена |
|||
Вычислить (=) |
|
|
|
|
|||
Новое выражение (С) |
Диаграмма классов для Управления калькулятором комплексных чисел представлено на рисунке ниже.
Содержание отчета
Контрольные вопросы
Лабораторная работа №6. Интерфейс калькулятора комплексных чисел
Тема: Классы Object Pascal, С++
Цель: Сформировать практические навыки реализации классов средствами объектно-ориентированного программирования Object Pascal, С++.
Задание
На Унифицированном языке моделирования UML (Unified Modeling Language) наш класс можно обозначить следующим образом:
ИнтерфейсКалькулятораКомплексныхЧисел |
строкаКомплексноеЧисло: TStaticText |
состояниеПамяти: TStaticText |
кнопки ввода: TBitButton |
FormCreate(Sender: TObject) |
ButtonClick(Sender: TObject) |
FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState) |
Методы для обработки команд меню |
Обязанность: Обеспечить пользователю возможность управления калькулятором через клавиатуру и командные кнопки для выполнения вычислений |
Рекомендации к выполнению
Содержание отчета
Контрольные вопросы