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

10) Стандартные средства обработки файлов

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

ASSIGN(var f; name:string),  где f – переменная любого файлового типа,  name – полное имя внешнего файла, удовлетворяющее требованиям операционной системы: • имя содержит до восьми разрешенных символов; разрешенные символы - это прописные и строчные латинские буквы, цифры, и символы: ! @ # $ % ^ & ( ) ' ~ - _ • имя начинается с любого разрешенного символа; • за именем может следовать расширение - последовательность до трех разрешенных символов (расширение, если оно есть, отделяется от имени точкой).  Перед именем может указываться так называемый путь к файлу-Пример: “C:\temp\f2.txt” Недопустимо использовать ASSIGN для уже открытого файла. Для этого этот файл нужно закрыть (close). Кроме файла в процедуре ASSIGN можно указать другие устройства.  Если к ПК подключено несколько принтеров, доступ к ним осуществляется по логическим именам LPT1, LPT2 и LPT3 . Имена PRN иLPT1 первоначально - синонимы. Стандартный библиотечный модуль PRINTER, входящий в библиотеку TURBO.TPL, объявляет имя файловой переменной LST и связывает его с логическим устройством LPT1. Это дает возможность использовать простое обращение к принтеру. Например, программа 

Uses Printer;  begin  WriteLn(LST, 'Привет, мир!')  end.  выведет на принтер фразу «Привет, мир!», а все необходимые операции по открытию логического устройства выполнит библиотечный блок PRINTER NUL - логическое имя «пустого» устройства. Это устройство чаще всего используется в отладочном режиме и трактуется как устройство-приемник информации неограниченной емкости. При обращении к NUL как источнику информации выдается признак конца файла EOF. Пример:

ASSIGN (f,’data.txt’); Reset(f); ASSIGN (Input,’Con’); Reset(Input); ASSIGN (Output,’Con’); Rewrite(Output); ASSIGN (Lst, ‘Lpt1’); Rewrite(Lst); где: Con – конс. устройство ввода/вывода. Lpt1 – устройство вывода символов на экран. Далее файл можно открыть на чтение (Reset) или на запись (rewrite).

11) Фактические и формальные параметры и процедур.

Этот оператор является "основным" оператором процедурного программирования. Его синтаксис:

для вызова подпрограмм

<имя подпрограммы>(<фактические параметры>)

для вызова функции

<переменная> = <имя функции>(<фактические параметры>)

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

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

[<тип>]<имя процедуры>(<формальные параметры>) <тело процедуры>

где <тип> - тип возвращаемого функцией результата (отсутствует при вызове подпрограммы), а <формальные параметры> - передаваемые через стек значения переменных. Синтаксис формальных параметров:

<формальные параметры> ::= <тип> <имя>{,<тип> <имя>}*

где <тип> - тип переменной - формального параметра (должен совпадать с типом фактического параметра), <имя> - имя переменной - формального параметра (может отличаться от имени/значенияфактических параметров), остальные знаки - специальные символы РБНФ (не пишутся в образце).

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

Примечание: "Джентльменское соглашение" о последовательности записи формальных параметров следующие:

Сначала идут передаваемые по значению переменные, потом - передаваемые по значению указатели, и в конце - передаваемые по ссылке переменные и указатели;

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

Вызов процедуры на блок-схеме изображается так, как показано на рис.1

Рис. 1  Обозначение вызова процедуры на блок-схеме.

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