Современные технологии программирования
Лабораторные работы по теме "Калькулятор р-ичных чисел"
назад

Выполните лабораторные работы с 1 по 6 по теме вашей курсовой работы "Калькулятор р-ичных чисел".

Лабораторная работа №1 Тип Р-ичные числа
Лабораторная работа №2 Тип Р-ичная память
Лабораторная работа №3 Тип данных P- ичный процессор
Лабораторная работа №4 Редактор Р-ичных чисел
Лабораторная работа №5 Управление калькулятором р-ичных чисел
Лабораторная работа №6 Интерфейс калькулятора р-ичных чисел

 

Лабораторная работа №1. Абстрактный тип данных (ADT) p - ичное число

Тема: Классы Object Pascal, С++

Цель: Сформировать практические навыки: реализации абстрактного типа данных с помощью классов Object Pascal, С++.

Задание

  1. Реализовать абстрактный тип данных “р-ичное число”, используя класс
  2. Object Pascal,

    C++,

    в соответствии с приведенной ниже спецификацией.

  3. Протестировать каждую операцию, определенную на типе данных, одним из методов тестирования.

Спецификация типа данных “р-ичное число”.

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

Рекомендации к выполнению

  1. Тип данных реализовать, используя класс

  1. Число храните как поле вещественного типа.
  2. Основание системы счисления храните как поле целочисленного типа.
  3. Для чтения и записи р - ичного числа в вещественном и строковом формате используйте свойства (property).
  4. Тип данных реализовать в отдельном модуле UPNumber.

Содержание отчета

  1. Задание.
  2. Текст программы.
  3. Тестовые наборы данных для тестирования типа данных.

Контрольные вопросы

  1. Что такое инкапсуляция?
  2. Как синтаксически представлено поле в описании класса?
  3. Как синтаксически представлен метод в описании класса?
  4. Как синтаксически представлено простое свойство в описании класса?
  5. Особенности описания методов класса?
  6. Особенности описания и назначение конструктора класса?
  7. Видимость идентификаторов в описании класса?
  8. Особенности вызова методов применительно к объектам класса?

 

Лабораторная работа №2. Абстрактный тип данных (ADT) “р-ичная память”

Тема: Классы Object Pascal, С++

Цель: Сформировать практические навыки: реализации абстрактного типа данных с помощью классов Object Pascal, С++.

Задание

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

  1. Протестировать каждую операцию, определенную на типе данных одним из методов тестирования.

Спецификация типа данных “р-ичная память”.

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

Рекомендации к выполнению

  1. Тип данных реализовать, используя класс Object Pascal, С++.
  2. Число храните в поле типа TPNumber (см. лаб. Раб. Абстрактный тип данных - р-ичные числа).
  3. Для чтения состояния памяти и хранимого значения используйте свойство (property).
  4. Тип данных реализовать в отдельном модуле UMemory.

Ниже приведены диаграммы классов и состояний для класса память.

Рис. Диаграмма классов Память.

Рис. Диаграмма состояния Память

Содержание отчета

  1. Задание.
  2. Текст программы.
  3. Тестовые наборы данных для тестирования типа данных.

 

Лабораторная работа №3. Абстрактный тип данных: P-ичный процессор.

Тема: Классы Object Pascal, С++

Цель: Сформировать практические навыки: реализации абстрактного типа данных с помощью классов Object Pasca, С++.

Задание

  1. В соответствии с приведенной ниже спецификацией реализовать абстрактный тип данных “P-ичный процессор”, используя класс

  1. Протестировать каждую операцию, определенную на типе данных одним из методов тестирования.

Спецификация типа данных “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.

Выход:

Нет.

Постусловия:

Состояние процессора не изменяется.

Рекомендации к выполнению

  1. Тип данных TProc реализовать, используя класс Object Pascal, С++.
  2. Число храните как поле типа TPNumber (см. лаб. Раб. Абстрактный тип данных - Р-ичные числа).
  3. Для чтения состояния процессора, полей: “левый операнд-результат” (Lop_Res), “правый операнд” (Rop), “ошибка” ()Error используйте свойство (property).
  4. Тип данных реализовать в отдельном модуле UProc.
  5. В приведённой ниже таблице показана последовательность изменения состояния процессора при вычислении выражения:

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

 

Содержание отчета

  1. Задание.
  2. Текст программы.
  3. Тестовые наборы данных для тестирования типа данных.

 

Лабораторная работа №4. Редактор р-ичных чисел

Тема: Классы Object Pascal, С++

Цель: Сформировать практические навыки реализации классов средствами объектно-ориентированного программирования Object Pascal, С++.

Задание

  1. Разработать и реализовать класс TEditor “Редактор р-ичных чисел”, используя класс

На Унифицированном языке моделирования UML (Unified Modeling Language) наш класс можно обозначить следующим образом:

РедакторР-ичныхЧисел

строка: String

числоЕстьНоль: Boolean

добавитьЗнак: String

добавитьР-ичную цифру(a: Integer): String

добавитьНоль: String

забойСимвола: String

очистить: String

конструктор

читатьСтрокаВформатеСтроки: String (метод свойства)

писатьСтрокаВформатеСтроки(a: String) (метод свойства)

редактировать(a: Integer): String

Обязанность:

ввод, хранение и редактирование строкового представления р-ичных чисел

  1. Класс должен отвечать за ввод и редактирование строкового представления р-ичных чисел. Значение р-ичного нуля - ‘0,’. Класс должен обеспечивать:

  1. Протестировать каждый метод класса.

Рекомендации к выполнению

  1. В классе TEditor опишите следующие атрибуты:

  1. В классе опишите следующие операции:

  1. Класс реализуйте в отдельном модуле UEditor. В разделе описания констант опишите следующие константы:

Содержание отчета

  1. Задание.
  2. Текст программы.
  3. Тестовые наборы данных для тестирования класса.

Контрольные вопросы

  1. Что такое инкапсуляция?
  2. Как синтаксически представлено поле в описании класса?
  3. Как синтаксически представлен метод в описании класса?
  4. Как синтаксически представлено простое свойство в описании класса?
  5. Особенности описания методов класса?
  6. Особенности описания и назначение конструктора класса?
  7. Видимость идентификаторов в описании класса?
  8. Особенности вызова методов применительно к объектам класса?

 

Лабораторная работа №5. Управление калькулятором р-ичных чисел

Тема: Классы Object Pascal, С++

Цель: Сформировать практические навыки реализации классов средствами объектно-ориентированного программирования Object Pascal, С++.

Задание

  1. Разработать и реализовать класс “Управление калькулятором р-ичных чисел” тип TCtrl, используя класс

На Унифицированном языке моделирования 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)

конструктор

деструктор

Обязанность:

управление выполнением команд калькулятора

  1. Класс должен отвечать за управление выполнением команд калькулятора. Класс должен обеспечивать:

  1. Протестировать каждый метод класса и класс в целом.

Рекомендации к выполнению

  1. Класс TCtrl реализуйте в отдельном модуле UControl.
  2. В модуле опишите перечисляемый тип TCtrlState = (cStart, cEditing, FunDone, cValDone, cExpDone, cOpChange, cError) для обозначения состояний калькулятора: cStart (Начальное), cEditing (Ввод и редактирование), cExpDone (Выражение вычислено), cOpDone (Операция выполнена), cValDone (Значение введено), cOpChange (Операция изменена),. cError (Ошибка).
  3. В классе опишите следующие атрибуты:

  1. Набор основных операций класса определяется набором команд калькулятора, заданных пользователем. Кроме того, в классе будут определены вспомогательные операции, обеспечивающие реализацию основных операций. В классе опишите следующие операции:

Рекомендации к выполнению

Логика работы объекта “управление калькулятором” класс TCtrl может быть описана с помощью таблицы переходов, которая отражает изменение состояния калькулятора и результат работы объекта под действием команд пользователя. Таблица переходов строится на основе анализа прецедентов (вариантов использования), приведённых в спецификации.

Для построения таблицы переходов необходимо:

  1. проанализировать спецификацию, приведённую в задании для калькулятора р-ичных чисел и выделить состояния калькулятора, например: Start (Начальное), Editing (Ввод и редактирование), ExpDone (Выражение вычислено), FunDone (Функция выполнена), ValDone (Значение введено), OpChange (смена операрации), Error (ошибка);
  2. построить таблицу состояний следующего вида:

 

Состояние калькулятора: 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+), Вставить в буфер обмена

     

Вычислить (=)

 

 

 

 

Новое выражение (С)

     

  1. На основе таблицы состояний постройте таблицу переходов для калькулятора.

Диаграмма классов для Управления калькулятором р-ичных чисел представлено на рисунке ниже.

Содержание отчета

  1. Задание.
  2. Текст программы.
  3. Тестовые наборы данных для тестирования класса.

Контрольные вопросы

  1. Что такое инкапсуляция?
  2. Как синтаксически представлено поле в описании класса?
  3. Как синтаксически представлен метод в описании класса?
  4. Как синтаксически представлено простое свойство в описании класса?
  5. Особенности описания методов класса?
  6. Особенности описания и назначение конструктора класса?
  7. Видимость идентификаторов в описании класса?
  8. Особенности вызова методов применительно к объектам класса?

 

Лабораторная работа №6. Интерфейс калькулятора р-ичных чисел

Тема: Классы Object Pascal, С++

Цель: Сформировать практические навыки реализации классов средствами объектно-ориентированного программирования Object Pascal, С++.

Задание

  1. Разработать и реализовать класс “Интерфейс калькулятора р-ичных чисел” тип TClcPnl наследник TForm, используя класс

На Унифицированном языке моделирования 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)

Обязанность:

Обеспечить пользователю возможность управления калькулятором через клавиатуру и командные кнопки для выполнения вычислений

  1. Класс должен отвечать:
    1. за ввод:

    1. отображение:

    1. класс должен обеспечить возможность:

    1. класс должен обеспечить настройки:

  1. Протестировать каждый метод класса.

Рекомендации к выполнению

  1. Класс TClcPnl реализуйте в отдельном модуле UClcPnl.
  2. Панель управления реализуйте как форму.
  3. В классе формы используйте следующие визуальные компоненты:

  1. В классе формы опишите следующие событийные процедуры:

Содержание отчета

  1. Задание.
  2. Текст программы.
  3. Тестовые наборы данных для тестирования класса.

Контрольные вопросы

  1. Что такое инкапсуляция?
  2. Как синтаксически представлено поле в описании класса?
  3. Как синтаксически представлен метод в описании класса?
  4. Как синтаксически представлено простое свойство в описании класса?
  5. Особенности описания методов класса?
  6. Особенности описания и назначение конструктора класса?
  7. Видимость идентификаторов в описании класса?
  8. Особенности вызова методов применительно к объектам класса?

наверх

 


назад