- •Лекции (черновики).
- •Интегрированная среда Turbo Pascal (Borland Pascal)
- •Главное меню Turbo Pascal
- •2. Введение в язык Паскаль. Структура программы на Паскале.
- •3. Вывод сообщений на экран.
- •4. Этапы создания программы.
- •Лекция №4 Переменные, типы. Стандартные типы. Операции. Присваивание.
- •1. Идентификаторы.
- •2. Метки.
- •3. Числа.
- •4. Строки.
- •5. Комментарии.
- •6. Описание констант.
- •7. Типы.
- •8. Пользовательские типы.
- •9. Операции.
- •10. Описание переменных. …
- •11. Оператор присваивания. Операторы языка Паскаль.
- •1. Оператор присваивания.
- •2. Оператор процедуры.
- •3. Оператор перехода.
- •4. Условный оператор.
- •If Выражение then Оператор1 else Оператор2;
- •If Выражение then Оператор;
- •5. Составной оператор.
- •6. Оператор выбора.
- •7. Оператор цикла с предусловием.
- •8. Оператор цикла с постусловием.
- •9. Оператор цикла с параметром (со счётчиком).
- •Массивы.
- •Работа со строками.
- •Работа с файлами.
- •Подпрограммы.
- •Процедуры модуля Graph
- •Функции модуля Graph
- •Вывод точки
- •Цветовая шкала
- •Вывод линии
- •Построение прямоугольников
- •Стандартные стили заполнения
- •Вывод текста
- •Вывод численных значений
- •Множества.
- •Указатели
- •Динамические переменные
- •Указатели на процедуры и функции
- •Динамическая память
- •Адреса и указатели
- •Оъбявление указателей
- •Выделение и освобождение динамической память
- •Использование указателей
- •Пример 6.1
- •Процедуры и функции для работы с динамической памятью
- •Администратор кучи
Работа с файлами.
Для хранения информации полученной в результате работы программ, используют различные внешние запоминающие устройства: гибкие магнитные диски, винчестера, магнитные ленты и другие носители. Использование внешних запоминающих устройств для хранение информации является наиболее надёжным и удобным способом хранения информации.
Физический файл.
Организация хранения информации зависит от конкретного носителя информации, и подробно рассматриваться нами не будет. В общем случае хранение информации организовано в виде именованных областей внешней памяти, называемых файлами. Файл в таком понимании называют физическим файлом.
Логический файл.
Для организации работы с физическими файлами в языках программирования предусмотрены специальные структуры данных - тип данных файл.
Файл в таком понимании называют логическим файлом, так как в этом случае он представляет собой лишь логическую модель хранения информации не зависящую от организации конкретного физического файла.
Тип данных - файл.
Файл, - это потенциально бесконечная последовательность компонент одного и того же типа. Количество компонент в файле заранее не оговаривается. Объявляется тип данных файл в разделе объявления типов с помощью служебного слова file, после которого указывается тип компонент файла (базовый тип). Базовым типом может быть любой тип, кроме типа file.
Type
f = file of integer;
Переменные типа f будут файлами с целочисленными компонентами.
Файловые переменные.
Объявить файловую переменную можно используя объявленный в разделе объявления типов файловый тип, например
Var
as12: f;
В таком случае вы сможете применять эту переменную как параметр процедур или функций. Можно также обявить файловую переменную непосредственно в разделе объявления переменных, но тогда подпрограммы для неё недоступны
Var
as: file of byte;
Работа с файлами.
Для простоты и наглядности файловую переменную можно изобразить как последовательность однотипных компонент хранящуюся на магнитной ленте. В самом начале записывается имя файла, после него компоненты файла, а в самом конце признак конца файла. Считывание или запись информации из файла осуществляется с помощью воображаемой магнитной головки, которую мы в дальнейшем будем называть текущим указателем.
Файл может находится в различных состояниях:
1. файл закрыт;
2. файл открыт для записи;
3. файл открыт для чтения.
Установочные и завершающие операции.
Assign(var f; name: string);
Процедура Assign предназначена для связывания файловой переменной (логического файла) с конкретным файлом на диске (физическим файлом).
f - имя файловой переменной (идентификатор);
name - строка содержащая имя физического файла в операционной системе MS-DOS. Имя файла может содержать путь к файлу (path), например c:\turbo\link\std.dat
При отсутствии пути к имени файла подразумевается файл находящийся в текущем катлоге.
Процедура Assign(ff,'bank.dat') связывает файловую переменную (логический файл) ff с физическим файлом на диске bank.dat. После выполнения этой процедуры файловая переменная ff будет представителем в программе физического файла на диске bank.dat.
Reset(var f);
Процедура Reset предназначена для подготовки к чтению или к записи существующего физического файла, связанного с файловой переменной f. Файл должен обязательно существовать. Если файл не пуст, текущий указатель перемещается к первой компоненте файла. В противном случае текущий указатель перемещается к концу файла. Файл становится открытым для чтения и записи.
Rewrite(var f);
Процедура Rewrite предназначена для создания нового файла, или для подготовки к записи с начала существующего файла (к перезаписи). Текущий указатель перемещается к началу файла. Если файл существует, то его предыдущее содержимое уничтожается. Если файла нет, то он будет создан. Файл становится открытым для записи и закрытым для чтения.
Close(var f);
Закрывает открытый файл. Файл становится закрытым для чтения и закрытым для записи. Ни в коем случае не следует пренебрегать этой операцией. Оставшийся открытым файл, как правило, может вызвать аварийную ситуацию.
Операции ввода-вывода.
Read(f,v1[,v2,...,vn]);
Процедура Read предназначена для чтения значений из файла в программу. f - файловая переменная. Остальные параметры - переменные в которые будет помещаться информация из компонент файла. Тип этих переменных должен совпадать с базовым типом файла. При прочтении компоненты из файла текущий указатель перемещается к следующей компоненте.
Write((f,v1[,v2,..,vn]);
Процедура Write предназначена для записи информации в файл. f - файловая переменная. Остальные параметры - переменные, содержимое которых будет помещено в файл.
Перемещения по файлу.
Все компоненты типизированных файлов проиндексированы начиная с нуля, что позволяет организовать произвольное перемещение по файлу и доступ к любой компоненте такого файла в любой момент времени.
Seek(var f; n: longint);
Перемещает текущий указатель в файле f на позицию номер n.
Truncate(var f);
Усекает файл (обрезает его) на текущей позиции.
FileSize(var f): longint;
Возвращает текущий размер файла (номер последней компоненты).
FilePos(var f): longint;
Возвращает положение текущего указателя в файле.
EoF(var f): boolean;
Функция определения конца файла. Возвращает значение true, если текущий укаатель находится за последней компонентой файла, false в противном случае.
Текстовые файлы.
Кроме описанных выше файлов в Turbo Pascal 7.0 применяется специальный вид файлов предназначенный в основном для работы с текстовой информацией. Этот тип файлов объявляется с помощью служебного слова text, например
Var
t: text;
Работа с текстовыми файлами немного отличается от работы с обычными файлами. Информация в таких файлах хранится построчно. Компонентами текстовых файлов являются строки различной длины, разделённых между собой специальным признаком конца строки. Компоненты текстовых файлов не индексируются, поэтому произвольный доступ к ним невозможен.
Процедуры и функции для работы с текстовыми файлами
Append(var F: Text);
Открывает существующий текстовый файл для добавления в конец информации.
Readln(var F: Text; V1, [V2, V3,... Vn]);
Читает информацию из текстового файла. V1, V2,... Vn - переменные целого, вещественного или строкового типа в которые помещается прочитанная информация.
Writeln(var F: Text; V1, [V2, V3,... Vn]);
Записывает информацию в текстовый файл и вводит в файл признак конца строки. V1, V2,... Vn - переменные целого, вещественного или строкового типа, содержащие информацию помещаемую в файл.
Процедуры Readln и Writeln осуществляют те же действия, что и процедуры Write и Readln, но после операций чтения и записи производят переход к следующей строке текстового файла. Процедура Read переходит к следующей строке только в случае исчерпания текущей строки. Процеду- ра Readln позволяет совершить этот переход не дожидаясь конца строки.
Eoln(var F: Text);
Функция определения конца строки. Возвращает значение true, если текущий укаатель находится за последней компонентой строки, false в противном случае.
SeekEoln(var F: Text): bolean;
Производит поиск конца текущей строки файла. Перемещает указатель к следующему значению в строке. Если достигнут конец строки возвращается true.
SeekEof(var F: Text): boolean;
Производит поиск конца файла. Перемещает указатель к следующему значению. Если достигнут конец файла возвращается true.