- вв/выв для консоли и портов (являются системно зависимым и различен для 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 |
gr: string[8];
end;
var st: file of stud
f4: text;
С каждой файловой переменной связано понятие текущего указателя файла. Текущий указатель можно понимать как скрытую переменную (т.е. неявно описанную вместе с файловой переменной), которая “указывает” на некоторый конкретный элемент файла.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.