
- •Строковый тип данных. Операции над строковыми типами.
- •Файловый тип данных в PascalAbc.Net, классификация файлов. Базовые операции над файлами (связывание с физическим файлом, инициация, переименование, удаление).
- •51.Особенности обработки текстовых файлов. Понятие файлового указателя. Чтение и запись в текстовые файлы.
- •Особенности обработки типизированных и нетипизированных файлов.
- •53.Подпрограммы. Применение подпрограмм при структурном подходе в программировании. Понятие процедур и функций. Область видимости переменных, локальные и глобальные переменные.
- •54.Обмен данными между основной программой и подпрограммой. Входные и выходные параметры. Формальные и фактические параметры. Объявление процедур и функций. Параметры-значения и параметры-переменные.
Особенности обработки типизированных и нетипизированных файлов.
Работа стипизированными файлами
Каждая компонента типизированного файла представляет собой данные определенного типа. Каждая компонента нумеруется, начиная с 0. Так как типизированный файл относится к файлам с произволь-ным доступом, то обращение возможно к любой компоненте по ее номеру.
При открытии типизированного файла на чтение или запись с помощью процедур reset или rewrite файловый указатель уста-навливается в нулевую позицию. Как и в случае текстовых файлов, после выполнения единичной процедуры чтения или записи указатель смещается на следующую позицию.
Процедуры ввода-вывода применяются к типизированным фай-лам аналогично применению к текстовым, но с одним замечанием: тип считываемых или записываемых переменных должен совпадать с файловым типом. Если тип совпадать не будет, это приведет к ошибке трансляции программы. Процедура writeln к типизированным фай-лам не применяется.
Попытка считать несуществующие компоненты типизированно-го файла также приведет к ошибке трансляции. Программист обязан отслеживать количество компонент в файле, либо проверять положе-ние файлового указателя с помощью функции eof.
Для работы с типизированными файлами используют следую-щие дополнительные процедуры и функции:
1. filesize(файл_переменная) возвращает количе-ство компонент в типизированном файле. Для Turbo Pascal результат имеет тип longint, для PascalABC.NET тип int64.
2. filepos(файл_переменная) возвращает текущую позицию файлового указателя. Для Turbo Pascal результат имеет тип longint, для PascalABC.NET тип int64.
3. truncate(файл_переменная) все компоненты по-сле текущей удаляются. После выполнения этой процеду-ры файловый указатель помещается в позицию конца файла (функция eof возвращает значение true).
4. seek(файл_переменная,n) перемещает файловый указатель на n компонент.
5. seekeoln(файл_переменная) после текущей по-зиции файлового указателя пропускаются все символы-разделители (пробелы, табуляции). Если при этом достиг-нут конец файла, то
6. seekeof(файл_переменная)
Работа с нетипизированными файлами
Нетипизированные файлы содержат данные различных типов. Программист должен самостоятельно следить за структурой данных в файле данного типа (типом, количеством, порядком следования).
В PascalABC.NET для работы с типизированными файлами ис-пользуются те же процедуры и функции, что и для работы с типизи-рованными: reset, write, read, write. Транслятор самостоятель-но выделяет требуемый объем памяти, необходимый для записи и считывания данных.
В Turbo Pascal программист самостоятельно определяет размер блока данных. Файловый указатель перемещается по блокам данных определенного размера, который задается при открытии файла на чте-ние или запись при помощи соответствующих команд
reset(файл_переменная,размер_буфера); и
rewrite(файл_переменная,размер_буфера);,
где размер_буфера размер блока памяти (в байтах), который считывается или записывается при единичном обращении к файлу. Если размер_буфера не указан, он принимается равным 128 бай-там. Максимальное значение размер_буфера составляет 64 КБ.
Для чтения и записи данных применяются процедуры:
1. Blockread(файл_перем,target,n,result); считывает n или меньшее количество компонент из файла, связанного файл_перем в переменную target. В случае, когда реальное число считанных переменных меньше указанного в параметре n (например, когда при чтении встретился символ конца файла), то в переменную result записывается действительное количе-ство компонент, которые были считаны.
2. Blockwrite(файл_перем,target,n,result); аналогично предыдущей процедуре, только по отношению к записи данных в нетипизированный файл.