Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Процедурные типы

Вложенные подпрограммы | PROGRAM PROS; | И параметров-строк | Типы в Турбо Паскале | Служебные символы | Строковый тип | Перечислимый тип | Ограниченный тип (диапазон) | Структурированные типы данных. Массивы | Множества |


Читайте также:
  1. Регламент и процедурные кодексы покерных турниров

Применяются в ТП для организации передачи в качестве фактических параметров процедур и функций.

Существует два процедурных типа: тип-процедура и тип-функция. При объявлении процедурных типов используется заголовок процедуры, в кото­ром опускается ее имя, например:

TYPE

Proc1=Procedure(a,b,c:real; var d:real);

Proc2=Procedure(var b1,b2:byte);

Proc3=Procedure;

Func=Function(x:real):real;

Func2=Function(s:string):string;

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

VAR pr: proc1;

f: func;

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

Пример определения параметра-функции:

Function F1(x: real): real; FAR; дальнее описание

Begin

...

end;

Procedure FF(n:byte;F:Func);

Var...;

Begin

...

end;

BEGIN

...

FF(2,F1);... FF(5,F1);

END.

В качестве параметров не могут передаваться рассмотренным спосо­бом стандартные процедуры (функции).

 

Файлы

Файл - именованная область внешней памяти ПК. Файлом может назы­ваться логическое устройство, потенциальный источник или приемник ин­формации.

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

Файлы делятся на типизированные, текстовые, нетипизированные. Определяются файловые типы в блоке TYPE следующим способом:

Type

<имя>=FILE OF <тип>; {типизированный}

<имя>=TEXT; {текстовый}

<имя>=FILE; {нетипизированный}

где <имя> - имя файлового типа (правильный идентификатор);

FILE, OF - зарезервированные слова (файл, из),

TEXT - имя стандартного типа для текстовых файлов;

<тип> - любой тип, кроме файлов.

Например:

TYPE

FIL=file of char; {файл символов}

text30=file of string[30]; {файл строк }

Вид файла определяет способ хранения информации в файле. Переменные файловых типов объявляются в разделе VAR

VAR f: FIL;

ff: text30;

а также

f1: TEXT; {переменная текстового файлового типа}

f2: file of real; {переменная файла вещественных чисел}

f3: file; {переменная для нетипизированного файла}

т. е. сразу можно описывать файловые переменные без объявления типа:

VAR

<имя_переменной>: TEXT;

<имя_переменной>: FILE OF <тип>;

<имя_переменной>: FILE;

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

Любой программе доступны два предварительно объявленных файла со стандартными файловыми переменными: INPUT - для чтения данных с клави­атуры и OUTPUT - для вывода на экран.

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

Связывание выполняется стандартной процедурой ASSIGN:

ASSIGN (<файловая_переменная>,<имя_файла_или_л.у.>);

где <файловая_переменная> - правильный идентификатор, обьявленный как переменная файлового типа; <имя _ файла _ или _ л.у.> - текстовое выражение, содержащее имя файла или логического устройства (заключается в апост­рофы).

Пример. VAR

f,f1, f2:text; {объявление файловых переменных}

Begin

ASSIGN(f, 'nameF.txt'); связывание с файлом nameF.txt

ASSIGN(f1, 'PRN'); связывание с принтером

Если имя файла задается в виде пустой строки

ASSIGN(f2, ''),

то в зависимости от направления обмена данными файловая переменная связывается со стандартным файлом INPUT или OUTPUT.

<Имя_файла> - это любое выражение строкового типа, которое стро­ится по правилам определения имен в MS DOS:

- содержит до 8 разрешенных символов: прописные и строчные ла­тинские буквы, цифры и следующие символы! @ # $ % ^ & () ' ~ - _;

- начинается с любого разрешенного символа;

- за именем может следовать расширение - последовательность до трех разрешенных символов. Расширение, если оно есть отделяется от имени точкой, например: Lab1.pas date.txt.

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

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

Имя диска - это один из символов А: В: С:... Z: А: и В: относят­ся к дисковым накопителям на гибких дискетах, С:, D: и т.д. к жестким и виртуальным дискам. Если имя диска не указано, подразумевается по умолчанию устройство, установленной в операционной системе перед нача­лом работы программы.

Максимальная длина имени вместе с путем - 79 символов, например:

VAR

f1, f2: text;

...

Assign(f1,'d:\V-129\date.txt');

Assign(f2, name.dat); {текущий каталог}

Логические устройства в ТурбоПаскале - это стандартные аппаратные средства (клавиатура, экран дисплея, принтер, коммуникационные каналы ввода-вывода). За каждым логическим устройством закреплено имя, кото­рое связывается с файловой переменной текстового типа:

CON - (консоль) клавиатура (для чтения) или экран дисплея (для записи);

PRN - логическое имя принтера; если принтеров несколько, то дос­туп осуществляется по логическим именам LPT1(синоним PRN), LPT2, LPT3.

Стандартный библиотечный модуль PRINTER, входящий в библиотеку TURBO.TPL, объявляет имя файловой переменной LST и связывает его с ло­гическим устройством LPT1. Например, следующая программы выдает на принтер указанный текст:

Uses Printer;

Begin

Writeln(LST,'печатаемый текст');

End.

AUX - логическое имя коммуникационного канала. Обычно использует­ся для связи с другими компьютерами. Может выполнять и прием, и пере­дачу информации (но не две функции одновременно). Как правило, в соста­ве ПК имеется два канала COM1 (AUX) и COM2.

NUL - логическое имя пустого устройства, используется в отладоч­ном режиме и трактуется как устройство-приемник информации неограни­ченной емкости. При обращении к NUL как к источнику информации выдает­ся признак конца файла (EOF).

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

Следующие процедуры открывают логический файл с файловой перемен­ной <ф.п.>, связанной ранее с уже существующим файлом или логическим устройством:

RESET(<ф.п.>) - для чтения, REWRITE(<ф.п.>) - для записи.

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

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

В таблице 7 сведены общие процедуры и функции для работы с файлами, наиболее применимые на практике.

 

Таблица 7


Дата добавления: 2015-09-05; просмотров: 56 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Program zapis;| Общие процедуры и функции для работы с файлами

mybiblioteka.su - 2015-2024 год. (0.009 сек.)