Вариант 11 Лабораторная работа 03 |
250,00 ₽
Просмотров: 761
|
Тип работы: | Лабораторная работа |
Название предмета: | Современные технологии программирования |
Тема/вариант: | Вариант 11 Лабораторная работа 03 |
Объем работы: | 10 |
ВУЗ: | СибГУТИ |
Дата выполнения: | 2013-08-20 |
Размер файла, тип файла: | 389.3 Kb, , CFG, DOF, DPR, EXE, RES, ~DPR, DCU, DDP, DFM, PAS, ~DDP, ~DFM, ~PAS, DOC |
Прикрепленные файлы: |
Курс 280 Задание на курсовую работу по дисциплине «Современные технологии программирования» 8 семестр (3616 Kb)
|
Тема: Классы Object Pascal, С++
Цель: Сформировать практические навыки: реализации абстрактного типа данных с помощью классов Object Pascal, С++.
Задание
1. В соответствии с приведенной ниже спецификацией реализовать абстрактный тип данных «Процессор простых дробей», используя класс Object Pascal, С++.
2. Протестировать каждую операцию, определенную на типе данных одним из методов тестирования.
3. Протестировать тип данных в целом.
Спецификация типа данных «Процессор простых дробей».
ADT TProc
Данные
Процессор простых дробей (тип TProc) выполняет двухоперандные операции TOprtn = (None, Add, Sub, Mul, Dvd) и однооперандные операции - функции TFunc = (Rev, Sqr). Если операция или функция не может быть выполнена, в поле Error типа String заносится сообщение об ошибке. Левый операнд и результат операции хранится в поле Lop_Res, правый - в поле Rop. Оба поля имеют тип TFrac. Процессор может находиться в состоянии «операция установлена»: поле Operation не равно None (значение типа TOprtn) или в состоянии операция не установлена: поле Operation = None. Значения типа TProc - изменяемые. Они изменяются операциями: Сброс операции (OprtnClear), Выполнить операцию (OprtnRun), Вычислить функцию (FuncRun), Установить операцию (OprtnSet), Установить левый операнд (Lop_Res_Set), Установить правый операнд (Rop_Set), Сброс калькулятора (ReSet).
Операции
Конструктор
Начальные значения: Нет
Процесс: Создаёт объект процессор простых дробей типа TProc. Поля Lop_Res, Rop инициализируются объектами (тип TFrac) со значением 0/1. В поле Error заносится пустая строка. Процессор устанавливается в состояние: «операция не установлена»: (Operation = None).
СбросПроцессора
Вход: Нет.
Предусловия: Нет.
Процесс: Поля объекта процессор простых дробей: Lop_Res, Rop инициализируются объектами (тип TFrac) со значением 0/1. В поле 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.
Выход: Объект типа TFrac.
Постусловия: Состояние процессора не изменяется.
ЗаписатьЛевыйОперанд
Вход: Переменная (Operand) типа TFrac.
Предусловия: Нет.
Процесс Создаёт копию объекта Operand и заносит указатель на него в поле Lop_Res.
Выход: Нет.
Постусловия: Состояние процессора не изменяется.
ЧитатьПравыйОперанд
Вход: Нет.
Предусловия: Нет.
Процесс Создаёт и возвращает копию объекта, указатель на который хранится в Rop.
Выход: Объект типа TFrac.
Постусловия: Состояние процессора не меняется.
ЗаписатьПравыйОперанд
Вход: Переменная (Operand) типа TFrac.
Предусловия: Нет.
Процесс Создаёт копию объекта Operand и заносит указатель на него в поле Rop.
Выход: Нет.
Постусловия: Состояние процессора не изменяется.
ЧитатьСостояние
Вход: Нет.
Предусловия: Нет.
Процесс Копирует и возвращает значение поля Operation.
Выход: Значение поля Operation.
Постусловия: Состояние процессора не изменяется.
ЗаписатьСостояние
Вход: Переменная (Oprtn) типа TOprtn.
Предусловия: Нет.
Процесс Заносит значение Oprtn в поле Operation.
Выход: Нет.
Постусловия: Состояние процессора изменяется на Oprtn.
ЧитатьОшибку
Вход: Нет.
Предусловия: Нет.
Процесс Копирует и возвращает значение поля Error.
Выход: Значение поля Error.
Постусловия: Состояние процессора не изменяется.
СбросОшибки
Вход: Нет.
Предусловия: Нет.
Процесс Очищает поле Error.
Выход: Нет.
Постусловия: Состояние процессора не изменяется.
Рекомендации к выполнению
1. Тип данных TProc реализовать, используя класс Object Pascal, С++.
2. Число храните как поле типа TFrac (см. лаб. Раб. Абстрактный тип данных – простые дроби).
3. Для чтения состояния процессора, полей: «левый операнд-результат» (Lop_Res), «правый операнд» (Rop), «ошибка» ()Error используйте свойство (property).
4. Тип данных реализовать в отдельном модуле UProc.
5. В приведённой ниже таблице показана последовательность изменения состояния процессора при вычислении выражения:
2/1 + 3/1 * (4/1)2
Шаг Вход Метод Rop Lop_Res Operation
0 Create 0/1 0/1 None
1 2 0/1 0/1 None
2 + Lop_Res_Set;
OprtnSet 0/1 2/1 Add
3 3 0/1 2/1 Add
4 * Rop_Set; OprtnRun;
OprtnSet; 3/1 2/1+3/1 Mul
5 4 4/1 2/1+3/1 Mul
6 Sqr Rop_Set;
FuncRun (4/1)^2 2/1+3/1 Mul
7 = OprtnRun (4/1)^2 2/1+3/1* (4/1)^2 Mul
8 C ReSet 0/1 0/1 None
Содержание отчета
1. Задание.
2. Текст программы.
3. Тестовые наборы данных для тестирования типа данных.
Сообщить другу