Этапы разработки программы. Разработка или выбор алгоритма решения поставленной задачи. Оформление документации на программу, страница 31

     Замечание  В область внешней памяти можно поместить данные и извлечь из нее. Эти действия имеют общее название ввода/вывода. Библиотека яз.С поддерживает три уровня ввода/вывода: - потоковый вв/выв;

                                             - вв/выв нижнего уровня;    

- вв/выв для консоли и портов (являются системно                                  зависимым  и различен для MS-DOS, Windows и UNIX)

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

Буферизированный  вв/выв.

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

Преимущество буферизированного вв/выв:

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

22.1 Файлы яз.Pascal

Стандартный Pascal поддерживает 2 категории файлов:

-  типизированные;

-  текстовые;

Типизированный файл – это файл, ориентированный на ранее определенный тип (стандартный или пользовательский)

Текстовый файл – это последовательность символов, разбитая на строки. Каждая строка завершается маркером конца строки, который представляет из себя последовательность из двух символов:

#13 – символ возврата к началу текущей строки;

#10 – символ перевода строки.

Представление строк типа string[10] в текстовом файле:

р

е

з

у

л

ь

т

а

т

#13

#10

в

ы

ч

и

с

л

е

н

и

я

#13

#10

с

у

м

м

ы

#13

#10

Представление строк типа string[10] в типизированном файле:

#9

р

е

з

у

л

ь

т

а

т

#0

#10

в

ы

ч

и

с

л

е

н

и

я

#9

с

у

м

м

ы

#0

#0

#0

#0

#0

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

Синтаксис объявления типизированного файла:

<имя файловой переменной>: file of <тип элементов файла>;

Синтаксис объявления текстового файла:

<имя файловой переменной>: text;

Примеры: var f1: file of char; {файл символов}

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

                        f3: file of integer {файл целых чисел}

type stud = record 

        fio: string;

gr: string[8];

end;

var st: file of stud

f4: text;

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