
- •Министерство образования и науки рф
- •Введение
- •Требования к оформлению отчета*
- •Задания к лабораторным работам.
- •Лабораторная работа 2. Методы численного интегрирования.
- •Указания и требования к выполнению работы.
- •Методы численного интегрирования
- •Лабораторная работа № 3. Расчет реактора смешения для сложной реакции с линейной кинетикой
- •Требования по выполнению работы:
- •Замечания по выполнению работы.
- •Реактор идеального смешения
- •Методы решения систем линейных алгебраических уравнений.
- •Метод Жордана-Гаусса (обращения матриц).
- •Итерационные методы.
- •Лабораторная работа № 4
- •4.1 Обработка экспериментальных данных по парожидкостному равновесию.
- •Обработка экспериментальных данных.
- •38 Метанол-ацетон-гептан
- •43 Метанол-ацетон-циклогексан
- •1. Интерполирование.
- •2. Метод наименьших квадратов
- •4.2. Расчет температуры кипения и точки росы трехкомпонентной смеси.
- •Методы уточнения корней уравнений с одним неизвестным.
- •Расчет производится по следующим
- •Лабораторная работа 5 Расчет реактора идеального вытеснения
- •Требования по выполнению работы:
- •Методы решения обыкновенных дифференциальных уравнений
- •Лабораторная работа № 6 Исследование функции, нахождение ее характерных точек и ее графическое изображение в трехмерных координатах.
- •Содержание
- •Приложение –1 – описание языка турбо паскаль версия № 7.0
- •1. Алфавит языка
- •1.1. Символы, используемые в идентификаторах
- •1.2. Разделители.
- •1.3.2. Знаки операций
- •1.3.3. Зарезервированные слова
- •1.4. Неиспользуемые символы
- •2. Структура программы
- •3. Типы данных
- •3.1. Классификация типов данных
- •3.2. Простые типы данных
- •3.2.3. Символьный тип
- •3.2.4. Перечисляемый тип
- •3.2.6. Вещественные типы
- •4. Выражения
- •4.1. Переменные
- •4.2 .Константы.
- •4.2.1. Целые константы
- •4.2.4. Константные выражения
- •4.2.5. Типизированные константы
- •4.3. Стандартные функции
- •4.3.1. Арифметические функции
- •4.3.2. Функции преобразования типа
- •4.3.3. Функции для величин порядкового типа
- •4.4. Знаки операций
- •4.4.1. Арифметические операции
- •4.4.2. Логические операции
- •4.4.3. Операции с битами информации
- •4.4.4. Операции отношения
- •4.5. Круглые скобки
- •4.6. Порядок вычисления выражений
- •5. Операторы языка
- •5.1. Простые операторы
- •5.1.1. Оператор присваивания
- •5.1.2. Оператор безусловного перехода gото. Использование меток
- •5.1.3. Пустой оператор
- •5.2. Структурированные операторы
- •5.2.1. Составной оператор
- •5.2.2. Условный оператор if
- •5.2.3. Условный оператор саsе
- •5.2.4. Оператор цикла repeat
- •5.2.5. Оператор цикла while
- •5.2.6. Оператор цикла for
- •5.2.7. Использование стандартных процедур Break и Соntinue в операторах циклов repeat, while и for
- •6. Структурированные типы данных
- •6.1. Массив
- •6.2. Строка типа string
- •6.3. Аsciiz-строка
- •6.4. Запись
- •6.5. Множество
- •6.6. Файл
- •7 Динамические структуры — данных
- •7.1. Указатель
- •7.2. Работа с динамической памятью
- •7.3. Работа со структурами данных
- •8. Процедурные типы
- •9. Совместимость и преобразование типов данных
- •10 Процедуры и функции
- •10.1. Процедура
- •10.2. Функция
- •10.3. Формальные и фактические параметры
- •10.3.1 Параметры-значения
- •10.3.2. Параметры-переменные
- •10.3.3. Параметры-константы
- •10.3.4. Параметры без типа
- •10.3.5. Массивы и строки открытого типа
- •10.3.6. Параметры-процедуры и параметры-функции
- •10.4. Процедура еxit
- •10.5. Директивы подпрограмм
- •10.5.1. Директива forward
- •10.5.2. Директивы fаr и near
- •10.5.3. Директива ехтеrnal
- •10.5.4. Директива аssembler
- •Пример. Функция, определяющая максимальное из двух чисел
- •10.5.5. Директива inline
- •10.5.6. Директива interrupt
- •10.6. Рекурсивные процедуры и функции
- •11 Организация ввода-вывода
- •11.1. Стандартные процедуры и функции для всех файлов
- •Функции
- •11.2. Стандартные процедуры и функции для текстовых файлов
- •11.3. Стандартные процедуры и функции для типизированных файлов
- •Осуществляется настройка на элемент файла, с которым связана файловая переменная f. Элемент файла определяется номером №, причем нумерация элементов начинается с нуля.
- •11.4. Стандартные процедуры и функции для файлов без типа
- •11.5. Внешние устройства в качестве файлов
- •12 Объектно-ориентированное программирование в turbo pascal 7.0
- •12.1. Пример использования ооп
- •12.2. Понятие объекта
- •12.2.2. Наследование
- •12.2.3. Полиморфизм
- •12.3. Виртуальные методы
- •13 Модули
- •13.1. Заголовок модуля
- •13.2. Интерфейс модуля
- •13.3. Исполнительная часть модуля
- •13.4. Секция инициализации
- •13.5. Использование модуля в основной программе
- •13.6. Использование идентификаторов элементов модуля
- •14 Стандартные модули
- •14.1 Модуль System
- •Арифметические функции
- •Процедуры работы со строками
- •Функции работы со строками
- •Функции управления вводом-выводом
- •Процедуры управления вводом-выводом
- •Функции управления динамической памятью и адресные функции
- •Include Включение элементов множества
- •14.2. Модуль String
- •14.3. Модуль Сrt
- •C80 с080 Для совместимости с версией 3.0
- •14.4. Модуль Graph
- •14.4. Пример использования подпрограмм модуля Сrарh
12.2.2. Наследование
Если из рассматриваемого примера взять тип tStructure (структура), то структуру текста можно задать ее начальным и конечным элементами и связями между отдельными элементами структуры. Связи между отдельными элементами задаются типом tСоnnection, и было бы нецелесообразно при создании нового типа tStructure заново задавать эти связи. Чтобы этого избежать, в ООП заложено свойство наследования характеристик одного объекта другим. Для этого один из объектов объявляется потомком другого, который, в свою очередь, становится предком этого нового объекта. Потомок наследует все параметры своего предка и его методы, поэтому вторично их описывать нет необходимости, а использовать можно. Это существенно упрощает запись схожих объектов, если установить между ними наследственную связь.
В примере редактора используемые объекты образуют наследственную, структуру, которая изображена на рис. 2. В частности, когда задается тип tStructure, его можно объявить потомком типаtСоnnection(для этого следует после зарезервированного слова оbjесtв круглых скобках указать имя типа-предка):.
tуре
tStructure = оbject(tСоnnection) {tStructure - потомок tСоnnection}
First: Роinter;
LastElem: Pointer;
Constructor Init;
рrосеdure РutFirstElem(FirstEl: Pointer);
рrосеdure РutLastElem(LastЕl: Роinter);
function GetFirstElem: Роinter; I
function GetLastElem: Роinter;
рrосеdure InitElem(var NewPoint: Pointer); virtual;
рrосеdure DispElem(PointDel: Pointer); virtual;
рrосеdure PutConnection(FirstPoint, SecondPoint: Pointer);
рrосеdure NewЕ1(РоintРrеdЕ1 ,РоintNextЕ1: Pointer);
рrосеdure Dе1Е1(РоintDе1: Pointer);
еnd;
В этом типе имеются собственные данные: FirstЕlеm (указатель на первый элемент структуры), LastElem (указатель на последний элемент структуры) и методы: Init (инициализация структуры), РutFirstElem (задание значения указателя на первый элемент), РutLastЕlem (задание значения указателя на последний элемент, GеtFirstЕlеm (получение значения указателя на первый элемент), GetLastElem (получение значения указателя на последний элемент), InitElem (инициализация - создание нового элемента), DispElem (удаление элемента), PutConnection (задание связей между двумя элементами), NewЕl (помещение в структуру нового элемента), DеlЕl (удаление из структуры элемента). Кроме них этот тип наследует от предка tConnection его данные РredЕ1еm и NехtЕlеm и методы PutPredElem, РutNехtЕlеm, DеlРredЕlеm и DеlNехtЕlеm.
В Тигbo Раsсаl непосредственный предок может быть только один. Однако он, в свою очередь, может быть потомком другого типа и т. д. В этом случае потомок наследует характеристики всех своих предков. Так, например, тип tLinе (строка) является потомком типа tStructurе, который, в свою очередь, является потомком типа tConnection. В связи с этим объект типа tLine может использовать параметры и методы в том числе и типа tConnection.
12.2.3. Полиморфизм
В рассматриваемом примере может возникнуть необходимость помещения того или иного символа в элемент строки, строку или весь текст. Для этого можно включить соответствующие методы в типы tЕlLine (элемент строки), tLine(строка) и tТехt (текст). Естественно, что эти действия будут отличаться в зависимости от того, куда помещается символ. Если символ помещается в элемент строки, то необходимо знать только номер позиции, куда следует поместить символ. Если символ помещается в строку, то сначала, исходя их координаты Х в строке, следует определить, в какой конкретно элемент строки (получить указатель на этот элемент) и в какую позицию в этом элементе необходимо поместить символ. Затем, уже можно размещать символ в соответствующем элементе. Если же символ следует поместить в текст, то сначала по координате Y следует определить строку (получить указатель на эту строку), а затем уже выполнить все действия, связанные с размещением символа в строке. Таким образом, следует иметь три разные подпрограммы для трех различных типов. Т.к. все они выполняют, в конце концов, одно и то же действие - размещают символ в соответствующем месте, было бы заманчиво все их назвать одним именем. В языке Паскаль это делать запрещено - все подпрограммы должны иметь уникальные имена. Для ООП в Тurbo Раscal сделано исключение - все эти подпрограммы могут иметь одно и то же имя.
В этой возможности - иметь несколько подпрограмм с одним и тем же именем - и заключается полиморфизм ООП. Вопрос, какая же конкретно подпрограмма будет использоваться в том или ином случае, определяется типом конкретного объекта, использующего эту подпрограмму. Так, если объект типа tТехt, то будет использована подпрограмма, размещающая символ в тексте, если типа tLine, то подпрограмма, размещающая символ в строке, и т.д.
Если обратиться к рассматриваемому примеру, то у всех трех типов, о которых идет речь, имеется метод с именем РutSymb, выполняющий те действия, о которых говорилось выше. Можно заметить, что список формальных параметров у этих методов различен, что вполне допустимо. Это, в частности, позволяет создавать подпрограммы с изменяющимся набором формальных параметров, что недопустимо в стандарте языка Паскаль. В рассматриваемом примере можно наблюдать и другие подпрограммы с одинаковыми именами.