- •Информатика
- •Введение
- •Алгоритм и программа
- •Интегрированная инструментальная среда turbo pascal 7.0.
- •Начало работы
- •Клавиатура
- •Диалоговые окна
- •Подготовка текста программы Начало работы
- •Ввод текста и внесение изменений в текст программы
- •Компиляция
- •Пробный запуск программы на выполнение
- •Буфер промежуточного хранения
- •Использование справочной системы
- •Сохранение текста программы в файле
- •Отладка программы
- •Завершение работы
- •Алфавит языка
- •Символы, используемые в идентификаторах
- •Разделители
- •Специальные символы
- •Знаки пунктуации
- •Основные типы данных
- •Описание переменных
- •Инструкция присваивания
- •Выражение
- •Тип выражения
- •Выполнение инструкции присваивания
- •Константы
- •Целые константы
- •Вещественные константы
- •Строковые и символьные константы
- •Константные выражения
- •Типизированные константы
- •Стандартные функции
- •Арифметические функции
- •Функции преобразования типа
- •Функции для величин порядкого типа
- •Ввод и вывод информации
- •Инструкции write и writeln
- •Инструкции read и readln
- •Общая структура программы
- •Раздел объявлений и соглашений
- •Заголовок
- •Глобальные директивы компилятора
- •Оператор uses
- •Объявления глобальных меток, констант, типов и переменных
- •Процедуры и функции
- •Заголовок процедуры или функции
- •Объявления локальных меток, констант, типов и переменных
- •Тело процедуры/функции
- •Основной блок программы
- •Управляющие структуры
- •Условие
- •Условный оператор if
- •Условный оператор case
- •Оператор цикла for
- •Оператор цикла repeat
- •Оператор цикла while
- •Оператор безусловного перехода goto
- •Пустой оператор
- •Составной оператор
- •Массивы
- •Объявление массива
- •Некоторые типичные действия с массивами
- •Вывод массива
- •Ввод массива
- •Сортировка массива
- •Сортировка методом прямого выбора
- •Сортировка методом прямого обмена
- •Поиск в массиве
- •Поиск минимального (максимального) элемента массива
- •Операции с матрицами
- •Сложение матриц
- •Транспонирование матрицы
- •Умножение матриц
- •Символы и строки
- •Символы
- •Массив символов
- •Функция length
- •Процедура delete
- •Функция pos
- •Функция copy
- •Процедуры и функции
- •Процедура
- •Функции
- •Параметры-процедуры и параметры-функции.
- •Процедура exit
- •Директивы подпрограмм
- •Директива forward
- •Директивы far и near
- •Директива external
- •Директива assembler
- •Директива inline
- •Директива interupt
- •Рекурсия Понятие рекурсии
- •Пример программы: поиск пути
- •Вывод в файл
- •Объявление файла
- •Назначение файла
- •Инструкции вывода в файл
- •Открытие файла для вывода
- •Ошибки открытия файла
- •Закрытие файла
- •Ввод из файла
- •Открытие файла
- •Чтение из файла
- •Конец файла и конец строки
- •Введение в структурное программирование
- •Рекомендательный библиографический список Основной:
- •Дополнительный:
Вывод в файл
До этого момента наши программы результат своей работы выдавали на экран. Это не всегда удобно. Язык Паскаль позволяет сохранить результаты работы программы в файле на диске компьютера.
Объявление файла
Файл, с точки зрения программы на языке Паскаль, это именованная структура данных, представляющая собой последовательность элементов одного типа. Количество элементов файла практически не ограничено. В первом приближении файл можно рассматривать как массив переменной длины неограниченного размера.
Как и любая переменная программы, файл должен быть объявлен в разделе описания переменных. При объявлении файла указывается тип элементов файла. В общем виде объявление файла выглядит так:
Имя : file of Тип Элементов
Примеры: f : file of Integer { файл целых чисел } ;
sigma : file of Real { файл вещественных чисел } ;
rez : file of Char { файл символов } ;
Файл, копонентами которого являются данные символьного типа (CHAR), называется текстовым. Описание FILE OF CHAR может быть заменено на TEXT, т. е. описание rez : file of char эквивалентно описанию rez : text.
Назначение файла
Объявление файловой переменной задает только тип компонентов файла. Чтобы программа могла выводить данные в файл или читать данные из файла, необходимо указать конкретный файл, т. е. задать имя файла. Имя файла задается вызовом процедуры ASSIGN, связывающей файловую переменную с конкретным файлом. Описание процедуры ASSIGN:
assign ( var f : text ; Имя Файла : string ) ;
Имя файла задается согласно принятым в MS-DOS правилам. Оно может быть полным, т.е. состоять не только непосредственно из имени файла, но и включать путь к файлу.
Примеры:
assign ( f , ‘a:\resultat.txt’ ) ;
assign ( f, ‘e:\students\ivanov\kof.dat’ ) ;
fname := ‘otchet.txt’ ;
assign (f, fname) ;
Инструкции вывода в файл
Непосредственно вывод в текстовый файл осуществляется при помощи инструкции WRITE или WRITELN, у которой список выводимых значений начинается с переменной типа TEXT, идентифицирующей файл для вывода. Например, если переменная f имеет тип TEXT, то инструкция вывода в файл может быть такой:
write ( f , ‘ Корни уравнения ‘, x1, x2 ) ;
Однако для того чтобы инструкция WRITE вывела данные в файл, не достаточно назначить имя файловой переменной. Нужно еще открыть файл для вывода.
Открытие файла для вывода
Перед выводом в файл необходимо открыть файл. Если программа, формирующая выходной файл, уже использовалась, то возможно, что файл с результатами работы программы уже есть на диске. Поэтому программист должен решить, как поступить со старым файлом. Это определяется во время открытия файла.
Возможны следующие режимы (варианты) открытия файла для записи в него данных:
перезапись (запись нового файла поверх существующего или создание нового файла);
добавление в существующий файл.
Чтобы открыть файл в режиме создания нового файла или замены существующего, необходимо вызвать процедуру REWRITE(f), где f файловая переменная типа TEXT.
Чтобы открыть файл в режиме добавления в существующий файл, необходимо вызвать процедуру APPEND(f), где f файловая переменная типа TEXT.
Следующая программа открывает файл в режиме создания нового файла и записывает в него 5 строк.
var
f : text ; { текстовый файл }
i : integer ;
begin
assign (f, ‘test.txt’) ;
rewrite ( f ) ; { открыть в режиме перезаписи }
for i := 1 to 5 do
writeln(f, ‘Строка ‘ , i ) ;
close(f) { закрыть файл }
end.
В результате выполнения программы на диске появляется файл test.txt.
Вот его содержимое:
Строка 1
Строка 2
Строка 3
Строка 4
Строка 5
Следующая программа открывает созданный предыдущей программой файл и записывает в него две строки.
var
f : text ; { текстовый файл }
i : integer ;
begin
assign (f, ‘test.txt’) ;
rewrite ( f ) ; { открыть в режиме перезаписи }
for i := 6 to 7 do
writeln(f, ‘Строка ‘ , i ) ;
close(f) { закрыть файл }
end.
В результате выполнения программы содержимое файла test.txt изменяется.
Его содержимое станет таким:
Строка 6
Строка 7
Следующая программа тоже открывает файл test.txt, но уже в режиме добавления, и записывает в него три строки.
var
f : text ; { текстовый файл }
i : integer ;
begin
assign (f, ‘test.txt’) ;
append ( f ) ; { открыть в режиме добавления }
for i := 8 to 10 do
writeln(f, ‘Строка ‘ , i ) ;
close(f) { закрыть файл }
end.
После выполнения приведенной программы содержимое файла test.txt опять меняется.
Вот его содержимое:
Строка 6
Строка 7
Строка 8
Строка 9
Строка 10