Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отв1 оАиП экзамен.docx
Скачиваний:
1
Добавлен:
27.09.2019
Размер:
79.25 Кб
Скачать

Текстовый вывод на экран

TextMode(Mode:Word);.-Используется для задания одного из возможных текстовых режимов работы адаптера монитора.

TextColor(Color: Byte) Определяет цвет выводимых символов.

TextBackground(Color: Byte); Определяет цвет фона.

ClrScr. Очищает экран

Window (XI,Y1,X2,Y2: Byte); Определяет текстовое окно - область экрана, X1...Y2 - координаты левого верхнего (XI,Y1) и правого нижнего (X2,Y2) углов окна.

GotoXY(X,Y: Byte);. Переводит курсор в нужное место экрана или текущего окна. Здесь X, Y - новые координаты курсора

WhereX и WhereY. С помощью этих функций типа Byte можно определить текущие координаты курсора: WhereX возвращает его горизонтальную, a WhereY - вертикальную координаты.

ClrEOL. Стирает часть строки от текущего положения курсора до правой границы окна (экрана).

DelLine. Уничтожает всю строку с курсором в текущем окне . При этом все строки ниже удаляемой (если они есть) сдвигаются вверх на одну строку.

InsLine. Вставляет строку: строка с курсором и все строки ниже ее сдвигаются вниз на одну строку; строка, вышедшая за нижнюю границу окна (экрана), безвозвратно теряется; текущее положение курсора не меняется.

LowVideo, NormVideo и HighVideo. С помощью этих процедур без параметров можно устанавливать соответственно пониженную, нормальную и повышенную яркость символов.

Программирование звукового генератора

Процедура Sound(F: Word);. Заставляет динамик звучать с нужной частотой. Здесь F - выражение типа Word, определяющее частоту звука в герцах. После обращения к процедуре включается динамик и управление немедленно возвращается в основную программу, в то время как динамик будет звучать впредь до вызова процедуры NoSound.

Процедура No Sound. Выключает динамик. Если он к этому моменту не был включен, вызов процедуры игнорируется.

Процедура Delay(T: Word);. Обеспечивает задержку работы программы на заданный интервал времени. Здесь Т - выражение типа Word, определяющее интервал времени (в миллисекундах), в течение которого задерживается выполнение следующего оператора программы.

31.Стандартные процедуры и функции модуля DOS. Команды DOS.

Процедуры и функции модуля Dos предназначены для обеспечения интерфейса с программами операционной системы. Для подключения модуля достаточно написать uses Dos.

Для выполнения любого программного прерывания служит процедура

Intr (intNO, Regs);

intNO – номер прерывания (Например: $16 – вызов прерывания клавиатуры; $10 – вызов видеопрерывания).

Regs – переменная специального типа Registers содержит значения регистров до и после входа в процедуру обработки данного прерывания. Тип Registers описан в секции Interface модуля Dos и доступен пользовательским программам, если подключен модуль с помощью uses dos;

Команды dos

GetDate(Year,Month,Day, Day of week).-Для считывания даты, установленной в ОС

SetDate(Year, Month, Day).- Изменить значение системной даты

GetTime(Hour, Minute, Second, Sec100)-для считывания системного времени

SetTime(Hour, Minute, Second, Sec100). для установки

DosVersion. Определяет номер текущей версии DOS. Младший байт результата содержит главную часть номера, а старший байт – его дополнительную часть.

GetEnv возвращает по заданному имени строки ее содержимое по правую сторону от знака присваивания.

DiskSize определяет полный объем в байтах заданного по номеру накопителя.

DiskFree возвращает количество незанятого пространства на заданном устройстве..

Процедура Exec служит для выполнения программы. Дополнительно к процедуре введена функция DosExitCode , которая возвращает в программу код завершения подзадачи. 0 – нормальное завершение, 1 – завершение по Ctrl+C.

32.Стандартные процедуры и функции Unit Graph. Методы создания анимации.

ClearDevice очищает экран;

PutPixel(x,y,C) строит точку на экране с координатами (х,у) и цветом С;

Line(х1,у1,х2,у2) строит отрезок с координатами начала и конца;

Rectangle(х1,у1,х2,у2) строит контур прямоугольника, стороны которого параллельны осям;

Bar(х1,у1,х2,у2) строит прямоугольник, закрашенный текущим цветом, стороны которого

параллельны осям;

Circle(x,y,R) строит окружность с координатами центра и радиусом;

Arc(х,у,A1,A2,R) строит дугу окружности с центом в точке, радиусом R, с начальным и конечным углами А1 и А2, отсчитываемые от горизонтальной оси против часовой стрелки.

Ellipse(х,у,A1,A2,Rx, Ry) строит дугу эллипса; здесь (X,Y) — центр эллипса, Аl,А2 — начальный и конечный углы, отсчитываемые от горизонтальной оси против часовой стрелки, Rx и Ry — горизонтальная и вертикальная полуоси;

OutText(T) выводит текстовую строку Т на экран;

OutTextxy(x,y,T) выводит текстовую строку Т, начиная из точки с координатами;

SetTextStyle(f,d,s) устанавливает тип шрифта f, стиль d и размер символов s.

Константы некоторых типов шрифтов f представлены в таблице.

SetColor(C) устанавливает основной цвет для рисования контуров;

SetBkColor(C) устанавливает цвет фона;

SetFillStyle(P,C) устанавливает образец штриховки Р и цвет С для заливки;

FloodFill(x,y,b) закрашивает замкнутую область с внутренней точкой и ограниченную линией с цветов b.

33.Организация памяти. Статическое и динамическое распредление памяти. Понятие указателя

Статическая память выделяется переменным на всё время выполнения программы. Метод прост и не требует никакой поддержки в ходе выполнения программы, так как адреса переменных в этом случае могут быть определены ещё на этапе компиляции программы.

В языке Turbo Pascal нет явного упоминания о статической памяти, но фактически к ней можно отнести память, в которой размещаются константы и переменные, которые описаны на уровне главной программы.

Динамической называется переменная, память для которой выделяется во время работы программы. У динамической переменной нет имени, - к ней можно обратиться только при помощи специальной переменной, - переменной-указателя.

Переменная-указатель – переменная целого типа – это адрес байта памяти, содержащей другое данное (переменную, константу, адрес другой переменной и т.п.). Любой ссылочный (адресный) тип данных определяет множество значений, которые являются указателями (ссылками) на значения какого-либо другого типа данных. Указатели и динамические переменные позволяют создавать сложные динамические структуры данных, такие как связанные списки и деревья.

Указателю можно присваивать значение указателя того же типа, константу NIL (пустой указатель) или адрес объекта, определенный с помощью стандартных функций модуля System - Addr (ИмяПеременной) (оператора @ИмяПереиенной) и Ptr(СегментнаяЧастьАдреса, Смещение).

34.Динамические структуры данных и их организация с помощью указателей.Стеки, очереди, односвязные и двухсвязные линейные списки и кольца.

Очередью называют структуру данных, для которой определены операции добавления и удаления элементов и элементы которой организованы таким образом, что их удаление будет осуществляться точно в таком же порядке, в каком происходило их добавление.

осуществляется по принципу "первый вошел, первый вышел"

Операции над очередями: Init — создает пустую очередь; Empty — возвращает значение true, если очередь пуста, и false в противном случае; Insert — добавляет элемент в конец очереди; Remove — удаляет элемент из начала очереди

Стек- структура данных, для которой определены операции добавления и удаления элементов и элементы которой организованы таким образом, что их удаление будет осуществляться точно противоположно тому порядку, в каком проводилось добавление.

"последней пошел, первый вышел"

Операции над стеками и их реализация: Init — создает пустой стек; Empty — возвращает значение true, если стек пуст и false в противном случае; Push — добавляет элемент в стек; Pop — удаляет элемент из стека.

Списком будем называть некоторую последовательность элементов, связанных посредством указателей (ссылок).

В списке элементы связаны друг с другом логически. Логический порядок следования элементов списка определяется с помощью указателей. Логический порядок следования элементов списка может не совпадать с физическим порядком их расположения в памяти ЭВМ. Каждый элемент списка (часто называемый узлом) состоит из двух частей. Первая часть содержит непосредственно данные, принадлежащие элементу, и является информационной. Вторая часть содержит указатель и является справочной. Указатель определяет место положения элемента списка, связанного с данным элементом.

Операции над списками: Для перехода к очередному элементу используется указатель на следующий элемент списка. Поиск осуществляется путем последовательного просмотра элементов списка до тех пор, пока искомый элемент не найден или пока не окончен список. Если мы дошли до конца списка, то искомого элемента в списке нет. Операция вставки нового элемента и операция удаления элемента. В отличие от очередей и стеков элемент может быть добавлен в список в любое место и удален с любого места с минимальными затратами. На рисунке показана вставка элемента эл6 и удаление элемента эл4.

35.Динамические структуры данных и их организация с помощью указателей. Бинарные деревья

Бинарное (двоичное) дерево - это упорядоченное дерево, каждая вершина которого имеет не более двух поддеревьев, причем для каждого узла выполняется правило: в левом поддереве содержатся только ключи, имеющие значения, меньшие, чем значение данного узла, а в правом поддереве содержатся только ключи, имеющие значения, большие, чем значение данного узла.

Операции над бинарными деревьями

Бинарное дерево должно реализовывать следующие операции:

1.Инициализация бинарного дерева: текущий указатель устанавливается неопределенным (или нулевым, nil), а количество узлов нулевым.

2.Помещение в бинарное дерево элемента: для нового элемента в бинарном дереве создается соответствующий узел, указатели на потомков которого пусты (поиск позиции для такого узла начинается с корня и проходит согласно правилам, определяющим структуру бинарного дерева).

3.Получение значения текущего элемента

4.Поиск заданного элемента: если искомый элемент находится в дереве, то возвращается указатель на него, в противном случае возвращается nil, сигнализирующий о неуспехе поиска значения

5.Удаление узла из дерева

6.Уничтожение бинарного дерева

36.Алгоритмы генерирования перестановок, множества всех подмножеств, k-элементных подмножеств множества. Перестановка с повторением.

Соединение, каждое из которых содержит n различных элементов, взятых в определенном порядке, называются перестановками из n элементов (n=m).

Пример: a, b, c abc, acb, bac, bca, cab, cba Количество перестановок: n!

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

Для получения всех перестановок с повторениями можно воспользоваться алгоритмом из пункта Перестановка, заменив в нем знаки > на знаки >=.

37.Алгоритмы генерирования сочетаний, размещений, размещений с повторением. Соединения, отличающиеся друг от друга, каждое из которых содержит m элементов, взятых из n элементов, называется сочетанием из n элементов по m (n>m).

Пример: a, b, c ab, ac, bc Количество сочетаний n! / (m! (n-m)!)

Соединения, отличающиеся друг от друга составом элементов или их порядком, каждое из которых содержит m (m<n) элементов, взятых из n различных элементов, размещением из n элементов по m.

Пример: a, b, c ab, ba, ac, ca, bc, cb Количество размещений n! / (n-m)!

Размещение из n элементов, в каждое из которых входит m элементов, причем один и тот же элемент может повторяться в каждом размещении любое число раз, но не более чем m, называются размещениями из n элементов по m с повторением.

Пример: a, b, c aaa, aab, aba, abb, baa, bab, bba, bbb Количество размещений nm

38.Введение в теорию графов. Способы представления ориентированных и неориентированных графов.

Граф – это множество вершин V и множество ребер(дуг) Е. Вершины графа - объекты любой природы; поскольку их должно быть конечное число, то мы будем обозначать их натуральными числами. Ребра (дуги) графа соединяют некоторые из его вершин. Если ребра имеют направление, то граф называется ориентированным (орграфом); в противном случае он неориентированный.

V={1, 2, 3, 4}

Е={(1,2), (1,4), (2,3), (3,1), (4,1), (4,3)}

У орграфа дуга имеет начало и конец.

Дуга, соединяющая вершину с собой, называется петлей (вершина 3 рис.Б имеет петлю)

39.Поиск в графе. Построение остовного дерева графа. Алгоритмы поиска кратчайших путей в графе.

Поиск путей в графе:

-найти путь между начальной и конечной вершиной (эта задача называется задачей поиска пути в лабиринте) – поиск в ширину, поиск в глубину;

-найти минимальный путь между заданными вершинами (алгоритм Дейкстры, алгоритм Флойда);

-найти максимальный путь между заданными вершинами;

-найти цикл Эйлера:

Граф, в котором найдется маршрут, начинающийся и заканчивающийся в одной вершине, и проходящий по всем ребрам графа ровно один раз, называется эйлеровым графом.

Последовательность вершин через которые проходит искомый маршрут, как и сам маршрут, называется эйлеровым циклом.

Теорема: Цикл Эйлера существует тогда и только тогда, когда в нем нет вершин нечетной степени.

-найти цикл Гамильтона:

Граф, в котором найдется маршрут, проходящий через каждую вершину графа в точности один раз, называется гамильтоновым графом.

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

поиск минимального остова:

Остовом (каркасом) графа называется его частичный граф типа дерево.

40.Файлы. Виды файлов. Типизированные файлы.

Файлом называется область памяти жесткого диска, имеющая свое имя.

В них можно хранить достаточно большое количество данных. После каждого элемента автоматически ставится признак конца элемента, а в конце файла ставится признак конца файла.

Паскаль предлагает три вида:

-типизированные файлы,

-текстовые файлы,

-нетипизированные файлы.

Типизированный файл - последовательность элементов одного типа.

Описание файлового типа имеет синтаксис:

file of < тип элементов>;

Type

Student = record

Name, Fam : string;

Bal: integer;

end;

Var

File1 : file of char;

File2 : file of Student;

File3 : file of string;

Файловые переменные имеют специфическое применение. Над ними нельзя выполнять никаких операций (присваивать значение, сравнивать и др.). Их можно использовать только для выполнения операций с файлами (чтения, записи, удаления файла и т.д.). кроме того, через файловую переменную можно получить информацию о конкретном файле (тип, параметры, имя файла и т.д.).

При открытии типизированного файла текущая позиция для работы с ним установлена на начало первой записи, которая имеет номер 0, т.е. номер физической записи на единицу меньше номера логической записи

41. Процедуры и функции для работы с файлами любого типа

Переменные файлового типа используются в программе только в качестве параметра собственных и стандартных процедур и функций. Все фактические действия с файлами основаны на наборе стандартных процедур языка, входящих в состав модулей System и Dos.

assign (МуFilе, 'с:\МуDirectory\Result.dat');здесь приведено полное (с указанием пути) имя пользовательского файла Result.dat.

closе (МуFilе);При выполнении этого оператора закрывается физический файл на диске и фиксируются изменения, связанные с использованием данного

rewrite (МуFilе);Эта процедура создает на диске новый файл, имя которого связано с переменной МуFilе процедурой Аssign. Указатель работы с файлом помещается в начальную позицию.

Подготовку существующего файла для чтения и записи выполняет процедура

reset (МуFilе);Эта процедура ищет уже существующий файл на диске и открывает его для работы, помещая указатель в начальную позицию. Запись в файл производится процедурой

write (МуFilе, var1, var2, ...., varN);Чтение из файла производится аналогичной процедурой:

42.Процедуры и функции для работы с типизированными файлами

Если есть необходимость нарушения последовательной записи или чтения из файла, текущий указатель, может быть изменен процедурой Seek (МуFilе, n)

где n – требуемое положение указателя.

Внимание! Нумерация элементов типизированного файла начинается с нуля.

Поэтому, чтобы обратиться к третьму элементу, нужно записать Seek (МуFilе, 2).

Seek (МуFilе, 0) – устанавливает указатель в начальной позиции (на первый элемент).

Seek (МуFilе, FileSize(МуFilе)) – устанавливает указатель после последнего элемента, то есть на признак конца файла.

Текущую позицию указателя дает функция FilePos (МуFilе).

43.Нетипизированные файлы. Их отличия от типизированных и текстовых. Процедуры blockread и blockwrite.

Нетипизированные файлы – это файлы, поддержка которых осуществляется с максимально возможной скоростью. Введение таких файлов в систему Турбо Паскаль было вызвано стремлением повысить эффективность программ, участвующих в интенсивном обмене с внешними наборами данных.

Для определения в программе нетипизированного файла служит зарезервированное слово file:

Var

MyFile : file;

Отличия:

Для нетипизированных файлов не нужно терять время на преобразование типов и поиск управляющих последовательностей, достаточно считать содержимое файла в определенную область памяти.

Нетипизированный файл является файлом прямого доступа, что говорит о возможности одновременного использования операций чтения и записи.

Второй параметр, предназначенный только для использования с нетипизированными файлами, задает длину записи файла на сеанс работы.

Особенность аппаратной поддержки заключается в том, что при обращении к внешнему устройству минимально возможным объемом для считывания являются 128 байт. После открытия файла с помощью вызовов:

rewrite(MyFile) или reset(MyFile)

все процедуры и функции, обслуживающие файлы прямого доступа, работают с записями длиной 128 байт.

blockread(Var F : file; Var Buf; Kolblocks : word; result : word);

Процедура считывает из файла F определенное число блоков в память, начиная с первого байта переменной Buf.

Параметр Buf представляет любую переменную, которая будет участвовать в обмене данными с дисками. Эту переменную нужно описать в программе так, чтобы ее размер не был меньше размера записи, установленного в параметрах rewrite или reset (как правило, для этих целей используется некоторый массив).

Параметр Kolblocks задает число считываемых блоков, которые должны быть прочитаны за одно обращение к диску.

Параметр result является необязательным и содержит после вызова процедуры число действительно считанных записей.

Использование параметра result подсказывает, что число считанных блоков может быть меньше, чем задано параметром Kolblocks. Если result указан при вызове, то ошибки ввода-вывода в такой ситуации не произойдет. Для отслеживания этой и других ошибок чтения можно использовать опции {$I-}, {$I+} и функцию IOresult.

Кроме того, что переменная F должна быть описана как нетипизированный файл, она должна быть связана с конкретным физическим диском процедурой assign. Файл должен быть открыт процедурой reset.

blockwrite(Var F : file; Var Buf; Kolblocks : word; result : word);

Процедура предназначена для быстрой передачи в файл F определенного числа записей из переменной Buf. Все параметры процедуры blockwrite аналогичны параметрам процедуры blockread. Разница лишь в том, что файл должне быть подготовлен для записи процедурой rewrite. Содержимое переменной Buf целиком помещается в файл, начиная с текущей записи.

Обе процедуры выполняют операции ввода-вывода блоками. Объем блока в байтах определяется по формуле:

Объем = Kolblocks * recSize,

где recSize – размер записи файла, заданный при его открытии. Суммарный объем разового обмена не должен превышать 64 Кбайт. Помимо скорости передачи данных преимущество этих процедур заключается в возможности пользователя самостоятельно определять размер буфера для файловых операций. Эта возможность играет значительную роль в тех задачах, где необходимо жесткое планирование ресурсов. Программист должен позаботиться о том, чтобы длина внутреннего представления переменной Buf была достаточной для размещения всех байт при чтении информации с диска.

Дело в том, что чтение информации из файла в буфер, равно как и запись из буфера в файл, производится без типового контроля. Поэтому несоблюдение указанного условия может привести к порче соседних с буфером данных или к помещению на файл посторонней информации.

Если при чтении указана переменная Buf недостаточной длины или если в процессе записи на диск не окажется нужного свободного пространства, то произойдет следующее. Если последний параметр result в этих вызовах не задан, то возникает ошибка ввода-вывода; если параметр result задан, то ошибка не будет зафиксирована, а после выполнения процедуры его значение не будет совпадать с значением параметра Kolblocks. Последнее обстоятельство можно проверить, сравнив два указанных значения.

После завершения процедуры указатель смещается на result записей.

44.Тeкстовые файлы. Процедуры для работы с текстовыми файлами

При считывании файла в оперативную память машины символы файла преобразуются в тот тип данных, который объявлен в программе. Файлы символьных данных называются текстовыми файлами. Текстовые файлы имеют тип text

Текстовый файл завершается специальным кодом "конец файла" (символ #26). В большинстве случаев знание конкретной кодировки управляющих символов не обязательно ввиду наличия файловых операций, автоматически учитывающих эти символы.

reset(f) - открывает существующий файл на чтение.

readln([f : text],[v1,v2,....vn]) – выполняет процедуру read, затем переходит к следующей строке файла.

rewrite(f) - cоздаёт и открывает новый файл. Файловая переменная должна быть связана с внешним файлом с помощью процедуры assign.

write([f : text],[v1,v2,....vn]) – записывает одно или более значений из одной или более переменных в текстовой файл.

append(f : Тext) – процедура открывает существующий файл для присоединения. Если файл уже открыт, то он сначала закрывается, а затем открывается заново. Текущая позиция устанавливается на конец файла.

45.Доступ к системным ресурсам. Определение переменной как ABSOLUTE. Предопределенные массивы MEM.

В операционной  системе  MS-DOS  доступ к системным функциям осуществляется посредством программных прерываний.  Каждое прерывание позволяет сделать обращение к функциям определенной категории. Тип функции определяется значением регистра АН. Дополнительная  информация  при  необходимости передается через регистры AL, BX,  CX и DX.

Определение переменной как Absolute.

Var идентификатор : тип Absolute сегмент:смещение;

или

Var идентификатор : тип Absolute переменная;

Замечания:

1. Первая форма непосредственно задает адрес (сегмент и смещение) переменной. Оба значения должны быть внутри диапазона $0000..$FFFF (от 0 до 65,535).

2. Вторая форма объявления размещает новую переменную поверх существующей переменной (по тому же самому адресу).

3. Если в списке переменных присутствует слово Absolute, то в данной строке может находиться только одна переменная.

Предопределенные массивы MEM

В Турбо Паскале имеются предварительно объявленные массивы: MEM, MEMW, MEML, PORT и PORTW. Первые три обеспечивают доступ к любому участку оперативной памяти по абсолютному адресу, два других - доступ к портам ввода-вывода.

Компонентами массива MEM являются данные типа BYTE, массива MEMW - типа WORD, массива MEML - типа LONGINT. Обращение к элементам этих массивов, т.е. их индексация, имеет специальный вид: каждый индекс представляет собой абсолютный адрес и состоит из двух выражений типа WORD; первое дает сегментную часть адреса, второе - смещение; выражения разделяются двоеточием

Компонентами массива PORT являются байты (тип BYTE), а массива PORTW - слова (тип WORD). Индексами этих массивов должно быть выражение типа BYTE, указывающее номер нужного порта. Присвоение значения элементу массива PORT или PORTW приведет к записи в порт, упоминание элемента в выражении - к чтению из порта. Компоненты массивов PORT и PORTW нельзя передавать в качестве параметров процедурам или функциям. Эти идентификаторы не употребляются без индексных выражений

46.Прерывания. Обработка прерываний.

Прерывание - это особое состояние вычислительного процесса. В момент прерывания нарушается нормальный порядок выполнения команд программы и управление передается специальной процедуре, которая входит в состав ДОС и называется процедурой обработки прерывания.

Обработка прерываний

При написании процедур обработки прерываний существенными являются два обстоятельства. Во-первых, процедура обработки прерывания не должна искажать работу прерванной программы. Для этого необходимо сначала сохранить регистры центрального процессора, а перед выходом из процедуры - восстановить их. Во-вторых, процедура должна строиться по принципу реентерабельности (повторной входимости): ее работа может быть прервана в любой момент другими прерываниями и ДОС может обратиться к соответствующей функции до завершения обработки предыдущего прерывания.

Процедура обработки прерывания, написанная на Турбо Паскале, должна начинаться стандартной директивой INTERRUPT (прерывание), например:

Procedure IntProc (Flags, CS, IP, AX, BX, CX, DX,

SI, DF, DS, ES, BP : word); inerrupt; 

begin

...

end ;

Формальные параметры в заголовке процедуры должны перечисляться в указанном порядке - через эти параметры все регистры прерванной программы становятся доступны процедуре обработки прерывания. Количество перечисляемых в заголовке процедуры параметров-регистров может быть любым, но не больше 12. Если в списке опущен какой-либо параметр, должны быть опущены также и все предшествующие ему параметры.

47.Структура резидентной программы. Структура exe, com-файлов.

Структура резидентной программы.

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

Вспомогательная часть выполняет следующие действия:

1.) сохраняет векторы "захватываемых" прерываний во внутренних переменных;

2.) устанавливает эти векторы по адресу резидентной части программы;

3.) инициализирует внутренние переменные резидентной части;

4.) завершает работу программы без удаления резидентной части из памяти компьютера.

С того момента как резидентная часть программы находится в ОЗУ, и на нее указывает вектор "захваченного" прерывания, она может быть активизирована путем вызова этого прерывания.

Построение резидентной части может осуществляться по трем схемам выполнения

48. Вызов исполняемых программ. Передача параметров вызываемым программам

Вызов исполняемых программ

Из программы, написанной на Турбо Паскале, можно запустить любую другую готовую к работе программу. Для этого используется процедура ЕХЕС из библиотечного модуля DOS. Формат обращения к процедуре:

ЕХЕС (<имя>,<параметры>)

Здесь <имя> - выражение типа STRING; имя файла с вызываемой программой; <параметры> - выражение типа STRING; параметры вызова.

Имени запускаемой программы может предшествовать путь к файлу. Параметры передаются запускаемой программе в виде текстовой строки и могут быть проанализированы ею с помощью двух следующих функций.

Передача параметров вызываемым программам.

Функция PARAMCOUNT. Возвращает общее количество параметров вызова программы (значение типа WORD). Обращение: PARAMCOUNT

Параметры вызова обычно следуют в командной строке ДОС сразу за именем вызываемой программы и отделяются от этого имени и друг от друга пробелами, например:

C:\TP\TURBO MYPROG.PAS 

C:\SIAM A:\SYSTEM1.SIA

Здесь MYPROG.PAS и A:\SYSTEM1.SIA - параметры, передаваемые программам TURBO и SIAM.

При вызове программы непосредственно из среды Турбо Паскаля ей можно передать параметры с помощью опции OPTIONS/PARAMETERS (см. прил.1).

Функция PARAMSTR.

Возвращает значение типа STRING, соответствующее нужному параметру вызова. Формат обращения:

PARAMSTR (<D>)

Здесь <D> - выражение типа WORD; порядковый номер параметра.

Заметим, что программе всегда передается параметр, соответствующий N = 0. В этом параметре ДОС сообщает полное имя запущенной программы с указанием диска и каталога, откуда она была загружена.

49.Обект, его свойства. Способы описания. Инкапсуляция. Полиморфизм. Наследование.

Объектно-ориентированное программирование основано на трех важнейших принципах, придающих объектам новые свойства. Этими принципами являются инкапсуляция, наследование и полиморфизм.

Инкапсуляция есть объединение в единое целое данных и алгоритмов обработки этих данных. В рамках ООП данные называются полями объекта, а алгоритмы - объектными методами.

Инкапсуляция позволяет в максимальной степени изолировать объект от внешнего окружения. Она существенно повышает надежность разрабатываемых программ, т.к. локализованные в объекте алгоритмы обмениваются с программой сравнительно небольшими объемами данных, причем количество и тип этих данных обычно тщательно контролируются.

Другим немаловажным следствием инкапсуляции является легкость обмена объектами, переноса их из одной программы в другую.

Наследование есть свойство объектов порождать своих потомков. Объект-потомок автоматически наследует от родителя все поля и методы, может дополнять объекты новыми полями и заменять (перекрывать) методы родителя или дополнять их.

Принцип наследования решает проблему модификации свойств объекта и придает ООП в целом исключительную гибкость. При работе с объектами программист обычно подбирает объект, наиболее близкий по своим свойствам для решения конкретной задачи, и создает одного или нескольких потомков от него, которые «умеют» делать то, что не реализовано в родителе.

Полиморфизм - это свойство родственных объектов (т.е. объектов, имеющих одного общего родителя) решать схожие по смыслу проблемы разными способами. В рамках ООП поведенческие свойства объекта определяются набором входящих в него методов. Изменяя алгоритм того или иного метода в потомках объекта, программист может придавать этим потомкам отсутствующие у родителя специфические свойства. Для изменения метода необходимо перекрыть его в потомке, т.е. объявить в потомке одноименный метод и реализовать в нем нужные действия. В результате в объекте-родителе и объекте-потомке будут действовать два одноименных метода, имеющие разную алгоритмическую основу и, следовательно, придающие объектам разные свойства. Это и называется полиморфизмом объектов.

В Турбо Паскале полиморфизм достигается не только описанным выше механизмом наследования и перекрытия методов родителя, но и их виртуализацией (см. ниже), позволяющей родительским методам обращаться к методам потомков.

50.Конструктор и деструктор. Виртуальные функции.

Новое ключевое слово constructor используется для описания особых методов, которые используются для инициализации объекта после его создания. Конструктор не возвращает никакого значения. В некоторых случаях возникает необходимость в выполнении особых методов и непосредственно перед удалением объекта - для описания таких методов введено ключевое слово destructor. Деструктор не имеет параметров и тоже не возвращает никакого значения. Особое значение конструкторы и деструкторы приобретают при динамическом выделении памяти для объектов и её освобождении с помощью стандартных прцедур new и dispose.

Чтобы метод стал виртуальным достаточно после его заголовка в описании класса записать ключевое слово virtual.