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

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

Var f1:text

begin

clrscr;

assign(f1,'file.txt');

reset(f1);

Процедура ввода массива может иметь разную степень универсальности

1) инициализация файлов и ввод длины массива происходит в главной программе;

(как в приведенном ниже примере); а ввод массива – в процедуре;

{вход: f – имя ф.п., n – длина массива; выход: X - массив}

Procedure Input1_mas (var f : text; n : ind; var X : mas);

2) инициализация файлов происходит в главной программе, а ввод длины массива и самого массива – в процедуре;

{вход: f – имя ф.п., выход:n – длина массива; X - массив}

Procedure Input2_mas (var f: text; var n :ind; var X : mas);

3) в главной программе вводятся внешние имена файлов, а инициализация файлов и ввод длины массива и самого массива – в процедуре;

{вход: Namef – внешнее имя файла, выход:n – длина массива; X - массив}

Procedure Input3_mas (Namef : str8; var n : ind; var X : mas);

4) в процедуре выполняются все операции: вводятся внешние имена файлов, инициализация файлов и ввод длины массива и самого массива

{вход: -- , выход:n – длина массива; X - массив}

Procedure Input4_mas (var n : ind; var X : mas);

Так как фактический (реальный) массив определяется внешним именем файла Namef и длиной n массива, то именно этими переменными желательно управлять в главной программе. С этой точки зрения наиболее предпочтителен следующий вариант:

5) в главной программе вводятся внешние имена файлов и длины массива, а инициализация файлов и ввод самого массива – в процедуре;

{вход: Namef – внешнее имя файла, n – длина массива; выход: X - массив}

Procedure Input5_mas (Namef : str8; n : ind; var X : mas);

50. Локализация процедур Паскаля. Внешние процедуры.

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

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

Пример.

var k: integer;

procedure a;

var x, z: real;

begin

{ через x, z обозначены две величины –

локальные переменные для a;

k – глобальная переменная для a }

…………………………………

end;

procedure b;

var x, y: integer;

begin

{ через x, y обозначены две другие величины –

локальные переменные для b;

k – глобальная переменная для b }

…………………………………

end;

begin

{ k – единственная переменная, которую

можно использовать в основной ветке программы }

…………………………………

end.

Стандартная версия языка Паскаль содержит только внутренние процедуры: описание и вызов процедур локализованы в голвном модуле и компиляться вместе с ним. Это обеспечивает необходимую строгость при локализации объектов.

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

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

Unit<name>;

INTERFACE

<interface part>

IMPLEMENTATION

<imp. Part>

Begin

<init part>

End.

Для установления связи программы с модулем Unit следует после заголовка программы добавить предложение Uses<список модулей>.

Program P;

Uses A;

……….

Имя модуля должно совпадать с именем файла, содержащим модуль: A.pas, B.pas…

В интерфейсной части содержатся описания всех глобальных объектов модуля(констанст, типов, переменных, заголовков процедур). Все объекты основной программы и интерф. Части модуля помещаются в общий сегмент даннхы. Макс длина его = 65521 байт.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]