В_лр15

advertisement
Лабораторная работа №15 по дисциплине
"Высокоуровневые методы информатики и программирования"
ТЕМА: Работа с файлами.
---СОЗДАНИЕ И ИСПОЛЬЗОВАНИЕ ПАПОК
-----------------------------1. В Вашей папке создайте папку с именем В_лр15, совпадающим с именем файла
с этим заданием, и затем скопируйте файл с заданием в эту папку.
2. При выполнении задания создавайте в папке В_лр15 для каждой программы
папку с именем, по смыслу соответствующим действиям, выполняемым
составляемой программой, и сохраняйте все файлы, имеющие отношение к этой
программе, в этой созданной папке (имена сохраняемых файлов должны
отличаться от имен, присваиваемых по умолчанию, и должны по смыслу
соответствовать действиям, выполняемым составляемой программой).
3. ПРИ ВЫПОЛНЕНИИ СЛЕДУЮЩИХ ЛАБОРАТОРНЫХ РАБОТ ДЕЙСТВУЙТЕ АНАЛОГИЧНО
ПРЕДЫДУЩЕМУ.
ФАЙЛЫ И ИХ ВИДЫ
--------------4. Файл – это именованная последовательность данных, расположенная во внешней
памяти компьютера (на диске, флэшке и т.д.) или связанная с внешним
устройством (обычно клавиатурой или видеомонитором).
Для поиска файла программным путем необходимо знать путь к файлу
(перечень имен вложенных папок, которые нужно последовательно открыть
для поиска файла, обычно начинается с имени диска и заканчивается
именем файла, например: D:\ПЭ-07-01\Иванов\file1.txt).
При поиске файла в текущей папке достаточно указать только имя файла.
5. Различают три вида файлов:
текстовые файлы (определяются типом данных Text или TextFile) – используются
для хранения текстовой информации (обычно в виде строк разной длины);
типизированные файлы (определяются типом данных File of Тип) – используются
для хранения однородной информации, например, только числовых данных
определенного типа;
нетипизированные файлы (определяются типом данных File) – используются
для быстрого доступа к файлу с любыми данными и пересылки данных
с высокой скоростью без потерь времени на преобразования данных.
6. Для работы с файлами необходимо в разделе описаний (объявлений) программы
определить файловую переменную (логический файл) с указанием файлового типа
данных, например:
var f1: text;
//Описание файловой переменной f1 для текстового файла
// Описание файловой переменной для
f2: file of Integer; // f2 f3: file of Real;
// f3 f4: file of String; // f4 f5: file;
типизированного файла
с целочисленным типом данных
с вещественным типом данных
со строковым типом данных
//Описание файловой переменной f5 для нетипизированного файла
ДОСТУП К ФАЙЛАМ
--------------7. В каждый момент времени для программы, работающей с файлом, доступен только
один элемент файла. На этот элемент файла ссылается указатель текущей позиции
файла, который определяет место в файле, откуда происходит чтение или куда
происходит запись данных. Чтение данных из файла и запись данных в файл
вызывают автоматическое перемещение указателя. При чтении данных из файла
указатель может достичь конца файла, если чтение данных не завершится из-за
выполнения какого-либо условия.
8. По способу доступа к элементам файла различаются файлы последовательного
доступа и прямого доступа.
К элементам файлов последовательного доступа доступ выполняется в той же
последовательности, с которой эти элементы записывались в файл. Поиск
элемента файла в этом случае выполняется последовательным перемещением
указателя до искомого элемента. Для файлов последовательного доступа
запрещено совмещение чтения и записи данных. К файлам последовательного
доступа относятся текстовые файлы.
К элементам файлов прямого доступа доступ выполняется по адресу (номеру)
элемента, что существенно ускоряет процесс поиска элемента файла. Для файлов
прямого доступа разрешено совмещение чтения и записи данных. К файлам прямого
доступа относятся типизированные и нетипизированные файлы.
НЕКОТОРЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ
-------------------------------------------------ВНИМАНИЕ! Пропустите п.9 с перечнем процедур и функций для работы с файлами и
переходите к выполнению п.10. После п.9 указывается, с описанием каких
процедур и функций из п.9 следует познакомиться при составлении
очередной программы.
9. Для реализации действий с файлами могут быть использованы следующие процедуры
и функции.
ВНИМАНИЕ! Фраза "функция возвращает" практически всегда используется вместо
фразы "результатом выполнения функции является".
Процедура или функция
с именем и примером
перечня аргументов
Процедура
Append(f)
Описание
Открывает существующий текстовый файл, соответствующий
файловой переменной (логическому файлу) f, для
дозаписи, и ставит указатель в конец файла.
Если файл был ранее открыт с помощью процедуры Reset
или Rewrite, то выполнение процедуры Append закрывает и
повторно открывает файл уже для дозаписи.
Процедура или функция
с именем и примером
перечня аргументов
Процедура
AssignFile(f,file)
Процедура
CloseFile(f)
Функция
Eof(f)
Функция
FileExists(file)
Функция
FileSize(f)
Процедура
Read(f,x1,x2,…xN)
Описание
Ставит в соответствие физическому файлу (возможно, с
путем доступа к нему) file файловую переменную
(логический файл) f и поэтому эта процедура должна
предшествовать другим процедурам и функциям для работы
с файлами.
Имя физического файла file должно быть переменной,
константой или выражением строкового типа.
Дальнейшие операции с файловой переменной f будут
фактически выполняться с физическим файлом file.
Процедуру AssignFile нельзя использовать для открытого
файла. Перед повторным использованием файловой
переменной для другого физического файла необходимо
закрыть открытый файл процедурой CloseFile.
После выполнения процедуры AssignFile связь файловой
переменной с физическим файлом сохраняется до
следующего выполнения этой процедуры с той же файловой
переменной, что дает возможность нового открытия файла
процедурой Reset без повторного использования процедуры
AssignFile даже после закрытия файла.
Закрывает открытый файл, соответствующий файловой
переменной (логическому файлу)f.
Файл должен быть закрыт после завершения его обработки
во избежание потери данных.
При закрытии физический файл обновляется и
автоматически завершается символом конца файла.
Для файла, соответствующего файловой переменной f,
проверяет достижение конца файла (End Of File).
Функция возвращает значение True при достижении конца
файла, в остальных случаях – значение False.
Функция позволяет задать условие выполнения цикла для
считывания данных из файла до достижения конца файла.
При использовании этой функции без параметров
проверяется не достижение конца файла на диске, а ввод
символа конца файла с клавиатуры (например, сочетанием
клавиш Ctrl+Z).
Возвращает True, если физический файл (возможно, с
путем доступа к нему) file существует.
Возвращает количество элементов файла, соответствующего
файловой переменной f. Для пустого файла возвращает 0.
Для перемещения указателя в конец файла можно выполнить
Seek(f,FileSize(f)).
Функция не используется для текстовых файлов.
Считывает из текстового или типизированного файла,
связанного с файловой переменной f (логическим файлом),
начиная с позиции указателя, значения в переменные в
списке вывода x1,x2,...xN.
Для текстового файла это могут быть значения разных
типов (integer, real, boolean, char, string и т.д.),
для типизированного файла тип переменных должен
совпадать с типом данных файла.
Для текстового файла использование только процедуры
Read дает возможность считывания лишь из текущей строки
этого файла.
Для считывания следующих друг за другом в текстовом
файле строк текста или для перехода к следующей строке
следует использовать процедуру Readln.
Процедура или функция
с именем и примером
перечня аргументов
Процедура
Readln(f,x1,x2,...xN)
Процедура
Reset(f)
Процедура
Rewrite(f)
Процедура
Seek(f,N)
Процедура
Write(f,x1,x2,...xN)
Процедура
Writeln(f,x1,x2,...xN)
Описание
Считывает (только из текстового файла) то же что и
процедура Read, но затем пропускает оставшуюся часть
текущей строки и выполняет переход к началу новой
строки.
Процедура Readln(f) без списка вывода выполняет переход
к началу новой строки.
Открывает существующий файл, соответствующий файловой
переменной (логическому файлу) f и ставит указатель на
начало первого элемента файла или, для уже открытого
файла, только ставит указатель на начало первого
элемента файла.
Текстовый файл открывается только для считывания.
Создает и открывает для записи данных физический файл,
соответствующий файловой переменной (логическому файлу)
f. После успешного выполнения этой процедуры физический
файл готов к записи в него данных.
ВНИМАНИЕ! При выполнении процедуры Rewrite, если
физический файл с именем, ранее заданным в процедуре
AssignFile, уже существует, то он заменяется пустым
файлом с тем же именем, в связи с чем для
предотвращения потери информации может потребоваться
предварительное копирование файла.
Для файла, соответствующего файловой переменной f,
перемещает указатель файла к элементу файла с номером N
без чтения или записи (номер начального элемента файла
равен 0).
Для перемещения указателя в конец файла можно выполнить
Seek(f,FileSize(f)).
Процедура не используется для текстовых файлов.
Записывает в текстовый или типизированный файл,
связанный с файловой переменной f (логическим файлом),
начиная с позиции указателя, значения выражений из
списка вывода x1,x2,...xN.
Для текстового файла это могут быть значения разных
типов (integer, real, boolean, char, string и т.д.),
для типизированного файла тип значений должен совпадать
с типом данных файла.
Записывает (только в текстовый файл) то же что и
процедура Write, но затем записывает еще и признак
конца строки.
Процедура Writeln(f) без списка вывода записывает
только признак конца строки.
ПРИМЕРЫ ПРОГРАММ ДЛЯ РАБОТЫ С ФАЙЛОМ ТЕКСТОВОГО ТИПА
---------------------------------------------------10. Здесь представлен фрагмент консольного приложения, записывающий в
находящийся в текущей папке файл File01.txt текст Text in file.
var f: text; //Описание файловой переменной (логического файла) f
begin
AssignFile(f,'File01.txt'); //Соответствие f и физического файла File01.txt
Rewrite(f); //Создание и открытие файла для записи
Writeln(f,'Text in file'); //Запись в файл текста Text in file
Closefile(f); //Закрытие файла
Readln;
end.
11. Здесь представлен фрагмент консольного приложения, считывающий текст из
файла File01.txt, находящегося в текущей папке, и выводящий этот текст на экран.
var f: text; //Описание файловой переменной (логического файла) f
s: string; //Описание строки s
begin
AssignFile(f,'File01.txt'); //Соответствие f и физического файла File01.txt
Reset(f); //Открытие файла
Readln(f,s); //Считывание текста из файла в строку s
Closefile(f); //Закрытие файла
Writeln('Text from file:
',s); //Вывод на экран текста, записанного в файл
Readln;
end.
СОЗДАНИЕ ПРОГРАММ
----------------ПРОГРАММА 15-1
-------------ВНИМАНИЕ! Перед созданием программы познакомьтесь с описанием следующих
процедур и функций применительно к текстовым файлам: AssignFile,
Rewrite, Append, CloseFile, Reset, Write, Writeln, Eof, Read, Readln.
12. Создайте приложение, реализующее
создание в папке с этим проектом текстового файла,
дозапись в этот файл введенных строк текста,
чтение из этого файла всех строк текста.
Для ввода имени файла используйте однострочное текстовое поле,
для расположения введенного и считанного текста
используйте многострочное текстовое поле
(должна быть предусмотрена также очистка этого текстового поля),
для запуска выполняемых действий (создание, дозапись, чтение, очистка)
используйте кнопки.
Для добавления строк в многострочное текстовое поле
можно использовать метод Add,например, Memo1.Lines.Add(s).
Для очистки многострочного текстового поля
можно использовать метод Clear,например, Memo1.Clear.
ПРОГРАММА 15-2
-------------ВНИМАНИЕ! Перед созданием программы познакомьтесь с описанием следующих
процедур применительно к типизированным файлам:
AssignFile, Rewrite, CloseFile, Reset, Write, Seek, Read.
13. Создайте приложение, реализующее
создание в папке с этим проектом типизированного файла
с целочисленным типом данных
(имя файла должно иметь расширение int),
дозапись в этот файл введенных строк с целыми числами
(в каждой строке должно быть одно число),
ввод номера элемента файла, начиная с которого будет происходить чтение
чисел из файла (элементы файла нумеруются с 0);
чтение из файла чисел, начиная с номера введенного элемента,
(каждое из этих чисел в должно быть расположено в отдельной строке).
Для ввода имени файла используйте однострочное текстовое поле,
для расположения введенных и считанных чисел
используйте многострочное текстовое поле
(должна быть предусмотрена также очистка этого текстового поля),
для ввода номера элемента файла используйте компонент TUpDown
(свойство Position) с ассоциированным текстовым полем TEdit
(компонент TUpDown находится на вкладке Win32 окна Tool Palette),
для запуска выполняемых действий (создание, дозапись, чтение, очистка)
используйте кнопки.
Для добавления строк в многострочное текстовое поле
можно использовать метод Add,например, Memo1.Lines.Add(s).
Для очистки многострочного текстового поля
можно использовать метод Clear,например, Memo1.Clear.
ОТЧЕТ О ВЫПОЛНЕНИИ РАБОТЫ
------------------------14. Продемонстрируйте тексты созданных программ, а также их выполнение в среде
программирования и независимо от нее.
_______________________________________________________________________________
Download