Современные технологии программирования |
Лабораторные работы по теме "Калькулятор р-ичных чисел" |
Выполните лабораторные работы с 1 по 6 по теме вашей курсовой работы "Калькулятор р-ичных чисел".
Лабораторная работа №1 Тип Р-ичные числа
Лабораторная работа №2 Тип Р-ичная память
Лабораторная работа №3 Тип данных P- ичный процессор
Лабораторная работа №4 Редактор Р-ичных чисел
Лабораторная работа №5 Управление калькулятором р-ичных чисел
Лабораторная работа №6 Интерфейс калькулятора р-ичных чисел
Лабораторная работа №1. Абстрактный тип данных (ADT) p - ичное число
Тема: Классы Object Pascal, С++
Цель: Сформировать практические навыки: реализации абстрактного типа данных с помощью классов Object Pascal, С++.
Задание
Object Pascal,
C++,
в соответствии с приведенной ниже спецификацией.
Спецификация типа данных “р-ичное число”.
ADT TPNumber
ДанныеР-ичное число TPNumber - это действительное число (n) со знаком в системе счисления с основанием (b) (b в диапазоне 2..16), содержащее целую и дробную части. Точность представления числа c (c >= 0). Р-ичные числа изменяемые.
Операции
Операции могут вызываться только объектом р-ичное число (тип TPNumber), указатель на который в них передаётся по умолчанию. При описании операций этот объект называется “само число”.
КонструкторЧисло |
|
Начальные значения: |
Вещественное число (a) во внутреннем формате, система счисления (b), точность представления числа (c) |
Процесс: |
Создаёт p-ичное число: система счисления (b), точность представления (c). В поле (n) созданного числа заносится (a). Например: КонструкторЧисло(a,3,3) = число a в системе счисления 3 с тремя разрядами после троичной точки. КонструкторЧисло (a,3,2) = число a в системе счисления 3 с двумя разрядами после троичной точки. |
КонструкторСтрока |
|
Начальные значения: |
Строковое представление р–ичного числа (a), система счисления (b), точность представления числа (c) |
Процесс: |
Создаёт р-ичное число: система счисления (b), точность представления (c). В поле (n) созданного числа заносится результат преобразования строки (a) в числовое представление. b-ичное число (a) и основание системы счисления (b) представлены в формате строки. Например: КонструкторСтрока(‘20’,’3’,’6’) = 20 в системе счисления 3, точность 6 знаков после запятой. КонструкторСтрока (‘0’,’3’,’8’) = 0 в системе счисления 3, точность 8 знаков после запятой. |
Копировать: |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс: |
Создаёт копию самого числа (тип TPNumber). |
Выход: |
р-ичное число. |
Постусловия: |
Нет. |
Сложить |
|
Вход: |
Р-ичное число d с основанием и точностью такими же, как у самого числа. |
Предусловия: |
Нет. |
Процесс: |
Создаёт и возвращает р-ичное число (тип TPNumber), полученное сложением полей (n) самого числа и числа d. |
Выход: |
р-ичное число. |
Постусловия: |
Нет |
Умножить |
|
Вход: |
Р-ичное число d с основанием и точностью такими же, как у самого числа. |
Предусловия: |
Нет. |
Процесс: |
Создаёт и возвращает р-ичное число (тип TPNumber), полученное умножением полей (n) самого числа и числа d. |
Выход: |
Р-ичное число (тип TPNumber). |
Постусловия: |
Нет. |
Вычесть |
|
Вход: |
Р-ичное число d с основанием и точностью такими же, как у самого числа. |
Предусловия: |
Нет. |
Процесс: |
Создаёт и возвращает р-ичное число (тип TPNumber), полученное вычитанием полей (n) самого числа и числа d. |
Выход: |
Р-ичное число (тип TPNumber). |
Постусловия: |
Нет. |
Делить |
|
Вход: |
Р-ичное число d с основанием и точностью такими же, как у самого числа. |
Предусловия: |
Поле (n) числа (d) не равно 0. |
Процесс: |
Создаёт и возвращает р-ичное число (тип TPNumber), полученное делением полей (n) самого числа на поле (n) числа d. |
Выход: |
Р-ичное число (тип TPNumber). |
Постусловия: |
Нет. |
Обратить |
|
Вход: |
Нет. |
Предусловия: |
Поле (n) самого числа не равно 0. |
Процесс: |
Создаёт р-ичное число, в поле (n) которого заносится значение, полученное как 1/(n) самого числа. |
Выход: |
Р-ичное число (тип TPNumber). |
Постусловия: |
Нет. |
Квадрат |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс: |
Создаёт р-ичное число, в поле (n) которого заносится значение, полученное как квадрат поля (n) самого числа. |
Выход: |
Р-ичное число (тип TPNumber). |
Постусловия: |
Нет. |
ВзятьРЧисло |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс: |
Возвращает значение поля (n) самого числа. |
Выход: |
Вещественное значение. |
Постусловия: |
Нет. |
ВзятьРСтрока |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс: |
Возвращает р-ичное число (q) в формате строки, изображающей значение поля (n) самого числа в системе счисления (b) с точностью (c). |
Выход: |
Строка. |
Постусловия: |
Нет. |
ВзятьОснованиеЧисло |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс: |
Возвращает значение поля (b) самого числа (q). |
Выход: |
Целочисленное значение |
Постусловия: |
Нет. |
ВзятьОснованиеСтрока |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс: |
Возвращает значение поля (b) самого числа в формате строки, изображающей (b) в десятичной системе счисления. |
Выход: |
Строка. |
Постусловия: |
Нет. |
ВзятьТочностьЧисло |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс: |
Возвращает значение поля (c) самого числа . |
Выход: |
Целое значение. |
Постусловия: |
Нет. |
ВзятьТочностьСтрока |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс: |
Возвращает значение поля (c) самого числа в формате строки, изображающей (c) в десятичной системе счисления. |
Выход: |
Строка. |
Постусловия: |
Нет. |
УстановитьОснованиеЧисло |
|
Вход: |
Целое число (newb). |
Предусловия: |
2 <= newb <= 16. |
Процесс: |
Устанавливает в поле (b) самого числа значение (newb). |
Выход: |
Нет. |
Постусловия: |
Нет. |
УстановитьОснованиеСтрока |
|
Вход: |
Строка (bs), изображающая основание (b) p-ичного числа в десятичной системе счисления. |
Предусловия: |
Допустимый диапазон числа, изображаемого строкой (bs) - 2,,16. |
Процесс: |
Устанавливает значение поля (b) самого числа значением, полученным в результате преобразования строки (bs). |
Выход: |
Строка. |
Постусловия: |
Нет. |
УстановитьТочностьЧисло |
|
Вход: |
Целое число (newc). |
Предусловия: |
newc >= 0. |
Процесс: |
Устанавливает в поле (c) самого числа значение (newc). |
Выход: |
Нет. |
Постусловия: |
Нет. |
УстановитьТочностьСтрока |
|
Вход: |
Строка (newc). |
Предусловия: |
Строка (newc) изображает десятичное целое >= 0. |
Процесс: |
Устанавливает в поле (c) самого числа значение, полученное преобразованием строки (newc). |
Выход: |
Нет. |
Постусловия: |
Нет. |
end TPNumber
Рекомендации к выполнению
Содержание отчета
Контрольные вопросы
Лабораторная работа №2. Абстрактный тип данных (ADT) “р-ичная память”
Тема: Классы Object Pascal, С++
Цель: Сформировать практические навыки: реализации абстрактного типа данных с помощью классов Object Pascal, С++.
Задание
Спецификация типа данных “р-ичная память”.
ADT TMemory
Данные
Р-ичная память (тип TMemory, в дальнейшем - память) - это память для хранения объекта “р-ичное число” (тип TPNumber) и значения “состояние памяти”. Объект “р-ичная память” - изменяемый. Он имеет два состояния, обозначаемых значениями: “Включена” (_On), “Выключена” (_Off). Её изменяют операции: Записать (Store), Добавить (Add), Очистить (Clear).
Операции
Конструктор |
|
Начальные значения: |
Основание системы счисления (b), точность представления числа (c). |
Процесс: |
Создаёт объект “память” типа TMemory. Создаёт и записывает в поле “р-ичное число” объекта “память” (тип TMemory) объект “р-ичное число” (тип TPNumber), инициализированный значениями: р-ичное число – 0, основание системы счисления - b, точность представления числа – c. Память устанавливается в состояние “Выключена”, в поле “состояние памяти” заносится значение (_Off). |
Записать |
|
Вход: |
E – объект “р-ичное число” (тип TPNumber). |
Предусловия: |
Нет. |
Процесс: |
В объект “память” (тип TMemory) в поле “р-ичное число” записывается копия объекта Е. Память устанавливается в состояние “Включена”, в поле “состояние памяти” заносится значение (_On). |
Выход: |
Нет. |
Постусловия: |
Состояние памяти – “Включена” (_On). |
Взять |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс: |
Создаёт и возвращает копию объекта хранящегося в объекте “память” (тип TMemory) в поле “р-ичное число” (тип TPNumber). |
Выход: |
Объект типа TPNumber. |
Постусловия: |
Состояние памяти – “Включена” (_On). |
Добавить |
|
Вход: |
Е – р-ичное число (объект типа TPNumber). |
Предусловия: |
Нет. |
Процесс: |
В поле “р-ичное число” объекта “память” (тип TMemory) записывается объект “р-ичное число” (тип TPNumber), полученный в результате сложения числа (Е) и числа, хранящегося в памяти в поле “р-ичное число”. |
Выход: |
Нет. |
Постусловия: |
Состояние памяти – “Включена” (_On). |
Очистить |
Основание системы счисления (b), точность представления числа (c). |
Вход: |
Нет. |
Предусловия: |
Состояние памяти – “Включена” (_On). |
Процесс: |
В поле “р-ичное число” объекта “память” (тип TMemory) записывается объект “р-ичное число” (тип TPNumber), инициализированный значениями: р-ичное число – 0, основание системы счисления - b, точность представления числа – c.. Память устанавливается в состояние “Выключена” (_Off). |
Выход: |
Нет. |
Постусловия: |
Состояние памяти – “Выключена” (_Off). |
ЧитатьСостояниеПамяти |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс: |
Копирует и возвращает значение поля “состояние памяти” объекта “память” (тип TMemory) в формате строки. |
Выход: |
Значение поля “состояния памяти” (типа String). |
Постусловия: |
Нет. |
ЧитатьЧисло |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс: |
Копирует и возвращает значение поля “р-ичное число” объекта “память” (тип TMemory) в формате строки. |
Выход: |
Значение объекта “р-ичное число” (тип String). |
Постусловия: |
Нет. |
end
TCMemoryРекомендации к выполнению
Ниже приведены диаграммы классов и состояний для класса память.
Рис. Диаграмма классов Память.
Рис. Диаграмма состояния Память
Содержание отчета
Лабораторная работа №3. Абстрактный тип данных: P-ичный процессор.
Тема: Классы Object Pascal, С++
Цель: Сформировать практические навыки: реализации абстрактного типа данных с помощью классов Object Pasca, С++.
Задание
Спецификация типа данных “P-ичный процессор”.
ADT TProc
Данные
P-ичный процессор (тип TProc) выполняет двухоперандные операции TOprtn = (None, Add, Sub, Mul, Dvd) и однооперандные операции - функции TFunc = (Rev, Sqr). Если операция или функция не может быть выполнена, в поле Error типа String заносится сообщение об ошибке. Левый операнд и результат операции хранится в поле Lop_Res, правый - в поле Rop. Оба поля имеют тип TPNumber. Процессор может находиться в состоянии “операция установлена”: поле Operation не равно None (значение типа TOprtn) или в состоянии операция не установлена: поле Operation = None. Значения типа TProc - изменяемые. Они изменяются операциями: Сброс операции (OprtnClear), Выполнить операцию (OprtnRun), Вычислить функцию (FuncRun), Установить операцию (OprtnSet), Установить левый операнд (Lop_Res_Set), Установить правый операнд (Rop_Set), Сброс калькулятора (ReSet).
Операции
Конструктор |
|
Начальные значения: |
система счисления (b), точность представления числа (c) |
Процесс: |
Создаёт объект p-ичный процессор типа TProc. Поля Lop_Res, Rop инициализируются объектами (тип TPNumber) со значением 0 в системе счисления (b), с точность представления числа (c). В поле Error заносится пустая строка. Процессор устанавливается в состояние: “операция не установлена”: (Operation = None). |
СбросПроцессора |
|
Вход: |
система счисления (b), точность представления числа (c) |
Предусловия: |
Нет. |
Процесс: |
Поля объекта p-ичный процессор: Lop_Res, Rop инициализируются объектами (тип TPNumber) со значением 0 в системе счисления (b), с точность представления числа (c). В поле 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. |
Выход: |
Объект типа TPNumber. |
Постусловия: |
Состояние процессора не изменяется. |
ЗаписатьЛевыйОперанд |
|
Вход: |
Переменная (Operand) типа TPNumber. |
Предусловия: |
Нет. |
Процесс: |
Создаёт копию объекта Operand и заносит указатель на него в поле Lop_Res. |
Выход: |
Нет. |
Постусловия: |
Состояние процессора не изменяется. |
ЧитатьПравыйОперанд |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс: |
Создаёт и возвращает копию объекта, указатель на который хранится в Rop. |
Выход: |
Объект типа TPNumber. |
Постусловия: |
Состояние процессора не меняется. |
ЗаписатьПравыйОперанд |
|
Вход: |
Переменная (Operand) типа TPNumber. |
Предусловия: |
Нет. |
Процесс: |
Создаёт копию объекта Operand и заносит указатель на него в поле Rop. |
Выход: |
Нет. |
Постусловия: |
Состояние процессора не изменяется. |
ЧитатьСостояние |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс: |
Копирует и возвращает значение поля Operation. |
Выход: |
Значение поля Operation. |
Постусловия: |
Состояние процессора не изменяется. |
ЗаписатьСостояние |
|
Вход: |
Переменная (Oprtn) типа TOprtn. |
Предусловия: |
Нет. |
Процесс: |
Заносит значение Oprtn в поле Operation. |
Выход: |
Нет. |
Постусловия: |
Состояние процессора изменяется на Oprtn. |
ЧитатьОшибку |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс: |
Копирует и возвращает значение поля Error. |
Выход: |
Значение поля Error. |
Постусловия: |
Состояние процессора не изменяется. |
СбросОшибки |
|
Вход: |
Нет. |
Предусловия: |
Нет. |
Процесс: |
Очищает поле Error. |
Выход: |
Нет. |
Постусловия: |
Состояние процессора не изменяется. |
Рекомендации к выполнению
2 + 3 * 42
Шаг |
Вход |
Метод |
Rop |
Lop_Res |
Operation |
0 |
Конструктор |
0 |
0 |
None |
|
1 |
2 |
0 |
0 |
None |
|
2 |
+ |
Lop_Res_Set; OprtnSet |
0 |
2 |
Add |
3 |
3 |
0 |
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 |
0 |
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 |
число: TPNumber |
выполнитьКомандуКалькулятора(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) |
FormKeyPress(Sender: TObject; var Key: Char) |
TrackBar1Change(Sender: TObject) |
SetButtns(p: LongInt) |
Обязанность: Обеспечить пользователю возможность управления калькулятором через клавиатуру и командные кнопки для выполнения вычислений |
Рекомендации к выполнению
Содержание отчета
Контрольные вопросы