РАБОТА С ФАЙЛАМИ В TURBO PASCAL
Цель работы Овладеть техникой составления программы с использованием файлов, её компиляции и записи на диск под заданным именем.
Задачи работыНаучиться применять основные принципы алгоритмизации и программирования в решении задач, использующих в качестве исходных данных файлы.
Обеспечивающие средства Сборник описаний практических работ, персональный компьютер, конспект лекций.
Задание Составить программы для предложенных заданий, используя файлы, отладить их и сохранить.
Требования к отчету Итоги практической работы представить в виде блок-схемы алгоритма и текста программы, привести значения исходных данных и значения полученных результатов (при необходимости вывести на печать).
Технология работы
1. Ознакомьтесь с теоретическим материалом, необходимым для выполнения работы:
В Паскале понятие файла употребляется в двух смыслах:
· как поименованная информация на внешнем устройстве (внешний файл);
· как переменная файлового типа в Паскаль-программе (внутренний файл).
В программе между этими объектами устанавливается связь. Вследствие этого все, что происходит в процессе выполнения программы с внутренним файлом, дублируется во внешнем файле. С элементами файла можно выполнять только две операции: читать из файла и записывать в файл.
Файловый тип переменной – это структурированный тип, представляющий собой совокупность однотипных элементов, количество которых заранее (до исполнения программы) не определено.
Для работы с файлом при описании переменных необходимо определить переменную файлового типа, которая будет считаться «представителем» этого файла в данной программе. Такая переменная называется также указателем. Структура описания файловой переменной:
Var
<имя файла>: File Of <базовый тип>
В качестве базового типа можно использовать любой тип, за исключением типа File.
Основные операции с файлами
ØУстановочные и завершающие операции
1. assign (f, FileName) – связывает файловую переменную f с конкретным файлом с именем FileName. Данную процедуру необходимо использовать до начала работы с файлом. FileName – выражение строкового типа вида:
Диск: \ имя каталога \ имя подкаталога \ … \ имя файла
Если имя диска и имя каталога не указывать, то берутся текущий диск и текущий каталог.
2. reset (f)– открывает файл f для чтения, т.е. указатель устанавливается на первый элемент файла. Предполагается, что открываемый файл уже существует, в противном случае возникает ошибка.
3. rewrite (f)– открывает файл f для записи (указатель так же, как и в предыдущем случае, устанавливается на первый элемент файла). Допускается, что файл не существует, тогда процедура создает файл с заданным именем. Если же такой файл существует, процедура удаляет из него всю информацию. В обоих случаях в результате вызова данной процедуры файловая переменная указывает на нулевой элемент файла (т.е. файл пуст).
4. close (f)– закрывает файл f для, очищает внутренний буфер, образованный при открытии файла. Теперь указатель f можно связать с другим файлом.
ØОперации ввода-вывода
1. read (f, x1, x2, …)– считывает в переменные x1, x2, … по одному элементу из файла f, начиная с той позиции, на которую установлен указатель. Операция чтения осуществляется следующим образом: значение на которое указывает текущий указатель файла, присваивается переменной x1, указатель перемещается на следующую позицию, то же самое выполняется для переменной x2, и т.д. Данная процедура выполнима только в том случае, если не достигнут конец файла (eof(f)=false).
2. write (f, x1, x2, …)– записывает в файл f значения переменных , начиная с той позиции, на которую указывает файловая переменная. После записи в файл нового элемента, указатель перемещается на следующую позицию. Данная функция выполнима только в том случае, когда достигнут конец файла (eof(f) = true).
ØОперации перемещения по файлу
1. seek (f, N) – функция, позволяющая явно изменить значение текущего указателя, установив его на элемент файла с заданным номером N (N- целочисленное выражение). Данная процедура не выполняет чтения или записи элементов файла, оно лишь перемещает указатель к элементу с номером N. (Первый элемент файла имеет номер 0). Вызов процедуры с аргументами seek (f, filesize(f)) установит указатель на конец файла.
2. filepos (f)– функция, позволяющая определить текущее положение указателя (номер элемента).
3. filesize (f)– функция, позволяющая определить размер (кол-во элементов) файла f.
4. eof (f)– функция, возвращающая логическое значение true, если достигнут конец файла.
ØСпециальные операции
1. erase (f)– удаляет файл, связанный с файловой переменной f.
2. rename (f, NewName)– присваивает файлу, связанному с файловой переменной f, новое имя NewName.
Текстовые файлы
Отдельным типом файлов являются текстовые файлы. Особенность этих файлов заключается в том, что их содержимое рассматривается как последовательность строк переменной длины, разделенных специальными символами, которые называются «конец строки». Символ конца строки при просмотре файла не виден, так же как и символ конца файла. В программе файловая переменная текстового типа описывается следующим образом:
Var < имя файловой переменной >: text;
Каждый символ представлен во внутреннем коде (ASCII) и занимает 1 байт.
Главная особенность текстовых файлов в том, что можно считывать из него и записывать в них элементы типа char, integer, real, string, boolean. Если информация несимвольная, то в процессе чтения или записи происходит ее преобразование из символьной формы во внутреннюю и обратно.
Для работы с текстовыми файлами можно использовать все процедуры и функции, используемые при работе с файлами любых типов, за исключением процедуры seek, функций filepos, filesize. Дело в том, что заранее неизвестно, элементы какого типа находятся в файле.
Для работы с текстовыми файлами определены дополнительные операции.
Функция:
eoln (f)– логическая функция, возвращающая логическое значение true, если достигнут конец строки, и false в противном случае.
Процедуры:
1. append (f)– открытие уже существующего текстового файла f для добавления данных в конец файла;
2. writeln (f)– завершение текущей строки текстового файла при его записи (записывает символ конца строки);
3. writeln (f, x1, x2, …, xn)– запись в файл f значений переменных x1, x2, …, xn; после выполнения операции записи осуществляется переход к новой строке файла;
4. readln (f)– переход к началу следующей строки файла f при его чтении;
5. readln(f, x1, x2, …, xn)– чтение значений n элементов из файла f в переменные x1, x2, …, xn; после выполнения операции чтения осуществляется переход к новой строке файла.
2. Выполните следующие упражнения:
Задания уровня 1
Упражнение 1. Программа, в результате выполнения которой выводятся все четные числа из данного файла int с целочисленными компонентами.
1. Наберите текст программы:
Program rem (input, output);
type v=file of integer;
var int: v; i: integer;
begin reset (int);
While not eof (int) do
Begin
read (int, i);
if i mod 2=0 then writeln (i)
End
End.
2. Запустите программу на выполнение и проверьте её работу:Ctrl-F9
3. Для просмотра результатов выполненной программы необходимо нажать:Alt-F5
4. Сохраните программу на своем диске:<F2> A:\P10PR1
Упражнение 2. Программа, которая формирует типизированный файл из целых чисел, вводимый с клавиатуры. Их количество заранее не известно. Признаком конца ввода является 0. Программа находит: сумму и произведение чисел из файла, разность между предпоследним и вторым по счету числами, наибольшее из чисел.
1. Наберите текст программы:
Program rabf
type file_type=file of integer;
var f: file_type;
sum, mult, r, k1, k2, max: integer;
Begin
writeln ('Введите элементы файла, окончание - 0');
{Запись элементов в файл}
assign (f, 'data.dat'); rewrite (f);
Repeat
readln (r); if r<>0 then write (f, r);
until r=0;
{Вычисление результатов}
seek (f, 0); sum:=0; mult:=1;
read (f, r); max:=r; seek (f, filepos(f)-1);
While not eof (f) do
Begin
read (f, r); sum:=sum+r; mult:=mult*r;
{Поиск максимального элемента}
if max<r then max:=r;
end;
seek (f, 1); read (f, k1); {Чтение второго компонента}
seek (f, filesize (f)-2); read (f, k2); { Чтение предпоследнего компонента}
close (f);
{Вывод результатов}
writeln ('Сумма = ', sum, #10#13'Произведение =', mult);
writeln ('Разность = ', k2-k1, #10#13'Максимум =', max);
End.
2. Запустите программу на выполнение и проверьте её работу:Ctrl-F9
3. Для просмотра результатов выполненной программы необходимо нажать:Alt-F5
4. Сохраните программу на своем диске:<F2> A:\P10PR2
3. Выполнить самостоятельно:
Задания уровня 2
1. Создать три программы:
a)Считывает 10 действительных чисел с клавиатуры и записывает их в файл. Сохранить программу под именем P10PR3
b)Добавляет в этот файл еще 5 чисел. Сохранить программу под именем P10PR4
c)Читает этот файл и выводит числа, содержащиеся в нем на экран. Сохранить программу под именем P10PR5
Задания уровня 3
2. Написать программу, в результате выполнения которой выводятся все числа кратные трем из данного файла int с целочисленными компонентами.Сохранить программу под именем P10PR6
3. Дан файл Input.txt, элементы которого являются целыми числами. Получите в файле Output.txt все элементы файла Input.txt, которые делятся на 3 и не делятся на 7. Сохранить программу под именем P10PR7
4. Окончание работы:
1. Сохранить созданные программы.
2. Подготовить ответы на контрольные вопросы.
3. Показать работу преподавателю.
4. Завершить работу TURBO PASCAL.
Контрольные вопросы:
1. Понятие файла в Паскале.
2. Что называют файловым типом переменной?
3. Какова организация доступа к файлам?
4. Назовите основные типы операций работы с файлами.
5. Перечислите установочные и завершающие операции работы с файлами.
6. Какие операции ввода-вывода существуют для работы с файлами?
7. Назовите операции перемещения по файлу.
8. Перечислите специальные операции для работы с файлами.
9. Особенности работы с текстовыми файлами.
ПРАКТИЧЕСКАЯ РАБОТА №11
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|