- •Оглавление
- •Введение
- •Общие сведения. Пакет программ Turbo Pascal
- •Программная среда Turbo Pascal
- •Меню среды Turbo Pascal
- •Сохранение программы на диске
- •Запуск и отладка программы
- •Лабораторная работа № 1. Программирование алгоритмов линейной структуры
- •Теоретические сведения
- •Основные операторы языка Turbo Pascal
- •Математические операции языка Turbo Pascal
- •Операции отношения
- •Основные математические функции
- •Содержание лабораторной работы
- •Варианты заданий
- •Пример программы на языке Turbo Pascal
- •Контрольные вопросы
- •Лабораторная работа № 2. Программирование алгоритмов разветвленной структуры
- •Теоретические сведения
- •Составной оператор
- •Условный оператор
- •Оператор выбора
- •Метка и оператор безусловного перехода
- •Содержание лабораторной работы
- •Варианты заданий
- •Пример программы на языке Pascal
- •Контрольные вопросы
- •Лабораторная работа № 3. Организация циклов
- •Теоретические сведения
- •Цикл с параметром
- •Цикл с предусловием
- •Цикл с постусловием
- •Содержание лабораторной работы
- •Варианты заданий
- •Пример программы на языке Turbo Pascal
- •Контрольные вопросы
- •Лабораторная работа № 4. Работа с одномерными массивами
- •Теоретические сведения
- •Содержание лабораторной работы
- •Варианты заданий
- •Пример программы на языке Turbo Pascal
- •Контрольные вопросы
- •Лабораторная работа № 5. Работа с двухмерными массивами
- •Теоретические сведения
- •Содержание лабораторной работы
- •Варианты заданий
- •Пример программы на языке Turbo Pascal
- •Контрольные вопросы
- •Лабораторная работа № 6. Процедуры и функции
- •Теоретические сведения
- •Содержание лабораторной работы
- •Варианты заданий
- •Пример программы на языке Turbo Pascal
- •Контрольные вопросы
- •Лабораторная работа № 7. Файлы и их применение в Turbo Pascal
- •Теоретические сведения
- •Типизированные файлы
- •Текстовые файлы
- •Нетипизированные файлы
- •Содержание лабораторной работы
- •Варианты заданий
- •Пример программы на языке Turbo Pascal
- •Контрольные вопросы
- •Рекомендованная литература
Теоретические сведения
В Pascal под файлом понимается именованная область памяти на долгосрочном запоминающем устройстве, например, на жестком диске или дискете. Выделяют три типа файлов: текстовые, типизированные, нетипизированные.
Текстовый файл – содержит строки текста различной длины, чтение или запись осуществляется (как правило) построчно.
Типизированный файл – с точки зрения Turbo Pascal содержит элементы одного типа, единицей обмена информацией является один элемент.
Нетипизированный файл – содержит любые данные, Turbo Pascal никак не интерпретируемые.
Типизированные файлы
Это файл, содержащий компоненты одного конкретного типа. Это могут быть простые или сложные типы данных Turbo Pascal (числа, строки, символы, массивы, записи и т.д.). Объявление типизированного файла выглядит следующим образом:
Type <имя_типа> = file of <тип>;
Var
<имя> : <имя_типа>;
или
Var
<имя> : file of <тип>;
Здесь:
<имя_типа> – имя файлового типа; <тип> – любой тип данных Pascal, кроме файлов; <имя> – имя файловой переменной.
После объявления файловой переменной для работы с файлом необходимо связать ее с реальным файлом на диске. Это выполняется процедурой Assign:
Assign ( <имя>, ’ <путь_к_файлу> ’);
Первый параметр – имя файловой переменной, используемой в дальнейшем для обращения к файлу. Может иметь любой файловый тип. Второй параметр – строка, указывающая на путь и имя файла, с которым Turbo Pascal далее будет оперировать.
Для создания нового файла на диске после выполнения процедуры Assign необходимо открыть файл в режиме записи: ReWrite (<имя>);
Если файл с таким именем не существовал, он создается. Если он существовал, вся информация из этого файла стирается и файл становится пустой. При этом никаких предупреждений не выдается.
Для открытия файла в режиме чтения он должен быть открыть процедурой: Reset(<имя>);
После этого можно выполнять чтение или запись, используя соответствующую файловую переменную:
Read(F, i, j);
Write(F, n);
В первом примере из файла, связанного с переменной F, считывается два значения, во втором – записывается одно.
Для определения позиции указателя – порядкового номера компонента файла, который будет обрабатываться следующей операцией ввода-вывода, применяется функция FilePos. Например:
N := FilePos(F);
Эта функция возвращает переменной N положение указателя относительно начала файла. Самая первая позиция имеет номер 0. Переместить указатель в требуемую позицию можно, используя функцию Seek. Например:
Seek(F, 5);
Seek(F, FilePos(F)-1);
Первый оператор устанавливает позицию указателя в файле после 5 элемента (и перед 6-м). Следующий оператор вызывает смещение указателя файла на 1 элемент назад относительно текущего положения указателя.
Дополнительно для проверки положения указателя есть функция EOF. Эта функция возвращает логическое значение, показывающее, находится ли указатель файла после последнего элемента файла. Чаще всего эта функция применяется в задачах полного перебора элементов файла:
While not EOF(F) do Read(F, i);
Этот оператор считывает элементы файла, пока не доберется до конца файла.
Общее число компонент файла можно определить, вызвав функцию FileSize. Например:
Count := FileSize(F);
Эта функция возвращает целое число, равное количеству компонент в указанном файле.
Для закрытие файла следует воспользоваться следующей процедурой:
Close ( <имя> );
При этом связь файловой переменной, с именем файла установленная процедурой Assign сохраняется.