Что такое файловая переменная
Файловые переменные
С файловыми переменными тесно связаны и сами файлы. Но для чтения, записи и создания файлов нужно определиться с его типом. В Delphi эту тему мы рассмотрим более подробнее. Ведь есть множество таких форматов, которые открыть нелегко (а может даже и невозможно) с помощью посторонних приложений.
Итак, в Паскале, в зависимости от самого файла, переменную можно описать следующим образом:
Функции для обработки файлов:
Функция | Описание | |
Assign(f,s) | Процедура, связывающая файловую переменную f, с полным именем файла s. Образец: | |
Eof(f) | Функция, для проверки достижения конца файла. Образец: | |
Reset(f) | Файл f открыт для чтения и доступен его первый элемент, далее можно выполнять чтение и запись информации из файла. | |
Rewrite(f) | Процедура, которая открывает и очищает файл для новой записи. | |
Close(f) | Закрывает файл. После записи информации в файл его необходимо обязательно закрыть, при чтении закрывать файл не обязательно. | |
Rename(f,s) | Процедура переименования файла, где f – файловая переменная, s – новое имя файла (строковая переменная). | |
Erase(f) | Процедура для удаления файла связанного с переменной f. Для корректного выполнения удаления, файл должен быть закрыт. | |
Append(f) | Процедура для добавления информации в конец файла. | |
Read(f,x1,x2,…,xn) Read(f,x) | Операторы, которые последовательно считывают компонент из файла в указанные переменные. Процедура read не проверяет, достигнут ли конец файла. За этим нужно следить с помощью функции EOF. | |
Write(f,x1,x2,…,xn) Write(f,x) | Оператор последовательно записывающий в файл значения переменных. |
Типы файлов и переменных должны совпадать, кроме текстовых файлов, в них переменные могут быть целого, вещественного, символьного, строкового типа.
В Delphi не раз получается, что открывается сначала один файл, затем другой и в итоге компилятор выдает ошибку. Почему? Дело в том, что после считывания информации из первого файла программист забывает его закрыть. Поэтому, чтобы в будущем не возникало никаких ошибок, давайте будем всегда его закрывать, независимо от того открыт он для чтения или же для записи.
Полный код программы, показывающий запись N действительных чисел в файл:
Полный код программы, иллюстрирующий вывод на экран содержимое файла:
Интересно, что если открыть этот полученный файл вещественного типа с помощью «Блокнот», то будет что-то вроде этого:
А вот если тип файла будет текстовым (FILE OF TEXT), то данные легко отобразятся в «Блокноте». Напомним, что при вещественном типе файла, значения можно вводить только с помощью чисел (в том числе и дробных), а вот если тип файла текстовый – вводить можно любой символ, который есть на клавиатуре.
Попробуйте поэкспериментировать с различными типами файла (real, integer, byte, text, word, longint, single, double, extended).
Задания:
Файлы в Pascal. Понятия файла и файловой переменной. Внешние файлы
Файлы в Pascal.
Файлы в Pascal. |
Введение файлового типа в язык Паскаль вызвано необходимостью обеспечить возможность работы с периферийными (внешними) устройствами ЭВМ, предназначенными для ввода, вывода и хранения данных.
Файл – совокупность данных, записанная во внешней памяти под определенным именем.
Файловый тип переменной – структурированный тип, представляет собой совокупность однотипных элементов, количество которых заранее не определено.
Обработка типизированных файлов.
Переменную файлового типа описывают одним из двух способов:
Тип может быть любым, кроме файлового.
Стандартные процедуры и функции
— связывает файловую переменную f с физическим файлом, полное имя которого задано в строке x. Установленная связь будет действовать до конца работы программы, или до тех пор, пока не будет сделано переназначение.
После связи файловой переменной с дисковым именем файла нужно открыть файл.
открывает для записи файл и очищает его.
закрывает открытый до этого файл с файловой переменной f. EOF(f) возвращает значение TRUE, когда при чтении достигнут конец файла.
позволяет переименовать физический файл на диске, связанный с файловой переменной f. Переименование возможно после закрытия файла.
уничтожает физический файл на диске, который был связан с файловой переменной f. Файл к моменту вызова процедуры Erase должен быть закрыт.
Чтение из текстового файла
Процедуры читают информацию из файла f в переменные. Способ чтения зависит от типа переменных, стоящих в списке. Отличие ReadLn от Read в том, что в нем после прочтения данных пропускаются все оставшиеся символы в данной строке, включая метку конца строки. Если список переменных отсутствует, то процедура ReadLn(f) пропускает строку при чтении текстового файла.
Запись в текстовый файл
Процедуры записывают информацию в текстовый файл. WriteLn от Write отличается тем, что после записи всех значений из переменных записывает еще и метку конца строки (формируется законченная строка файла).
Тема №10: Файлы. Типизированные файлы. Текстовые файлы
ТЕМА №10: ФАЙЛЫ. ТИПИЗИРОВАННЫЕ ФАЙЛЫ. ТЕКСТОВЫЕ ФАЙЛЫ.
Файлы – это поименованная структура данных на техническом носителе, представляющая собой последовательность элементов (записей) одного типа.
Файлы – это массив переменной длины неограниченного размера.
Файл может находиться в составе другой сложной структуры, но не должен входить в другой файл.
Отличие файла от массива:
А) размещение на внешнем носителе;
Б) длина файла не задается;
В) место элемента не определяется индексом.
Для обозначения файла и работе с ним используется файловая переменная (ФП).
Особенности файловой переменной:
Ей нельзя присваивать какие-либо значения
Она не может участвовать в логических операциях
Она не может входить в математические выражения
Объявление файловой переменной
Файл объявляется в разделе описания переменных с указанием типа элементов файла.
Язык программирования Паскаль. Работа с файлами
Файл представляет собой некоторое поименованное место на внешнем носителе (например, на диске). Файл состоит из записей. В структуре файла имеется специальный так называемый указатель записи, который указывает на обрабатываемую в данный момент запись. При обработке указатель автоматически перемещается на следующую запись. Это так называемый последовательный доступ. При необходимости указатель можно установить в любое место файла.
В Паскале существует три типа файловых переменных:
Работа с файловыми переменными в Паскале.
Файл в Паскале является переменной и, следовательно, он, как и другие переменные, должен иметь имя и описываться в разделе описания программы.
Для типизированных файлов:
Где f – имя файловой переменной,
Для текстовых файлов:
Где f – имя файловой переменной,
Text – обозначает, что тип файловой переменной текстовый.
Для нетипизированных файлов:
Где f – имя файловой переменной,
file – обозначает, что тип файловой переменной нетипизированный.
II Ассоциирование файла с файловой переменной.
Где f – имя файловой переменной любого вида, с которой ассоциируется файл с диска, имеющий имя name (параметр name принадлежит типу string ).
Открыть файл можно для чтения, для записи, а также для чтения и записи одновременно. До открытия файл должен быть связан (с помощью процедуры Assign ) с ранее объявленной файловой переменной.
Эта процедура, примененная к текстовому файлу, открывает его только для чтения. Если она применена к типизированному или нетипизированному файлу, то она открывает его как для чтения, так и для записи.
Где f – файловая переменная любого типа.
Эта процедура, примененная к текстовому файлу, открывает его только для записи. Если она применена к типизированному или нетипизированному файлу, то она открывает его как для чтения, так и для записи.
Отличие между процедурами Reset и Rewrite :
если процедуру Reset применить к несуществующему файлу, будет иметь место ошибка; процедура Rewrite в этом случае создаст новый файл;
если процедуру Reset применить к уже существующему файлу, файл будет открыт; процедура Rewrite в этом случае удалит содержимое старого файла и создаст новый файл с тем же именем.
Эту процедуру можно использовать только для открытия текстовых файлов.
Данная процедура предназначена для добавления информации в уже существующий файл – она открывает файл и позиционирует указатель в его конец.
Ввод-вывод для типизированных файлов.
Использование процедуры считывания read для типизированных файлов заключается в считывании одного или нескольких компонентов файла и присвоении значения некоторой переменной.
Формат процедуры считывания из типизированного файла:
Где f – файловая переменная;
v 1, v 2,… vn – имена переменных, которым будут присвоены данные из файла.
Формат процедуры записи в типизированный файл:
Где f – файловая переменная;
v 1, v 2,… vn – имена переменных, значения которых записывается в файл. Они должны быть того же типа, что и компоненты файла.
После записи каждой переменной, указатель текущей позиции файла перемещается к следующему элементу. Если указатель находится в конце файла, то при записи очередного элемента этот элемент дополняет файл.
Ввод-вывод для текстовых файлов.
Текстовый файл представляет собой последовательность строк разной длины, состоящих из символов. Каждая строка текстового файла оканчивается маркером конца строки. К элементам текстового файла возможен только последовательный доступ, начиная с первого.
Формат процедуры считывания из текстового файла:
Где f – файловая переменная;
v 1, v 2,… vn – имена переменных, которым будут присвоены данные из файла.
Как будет выполняться эта строка:
Формат процедуры записи в текстовый файл:
Где f – файловая переменная;
v 1, v 2,… vn – имена переменных, значения которых записывается в файл.
Файл для записи должен быть открыт. Если указатель текущей позиции расположен в начале файла, новая информация записывается поверх старой. Если же указатель находится в конце файла, то новая информация дополняет содержимое файла.
Как будет выполняться этот фрагмент:
процедурой Rewrite ( f ) открывается файловая переменная f ; процедура Write ( f , v 1, v 2) записывает в файл значения переменных v 1, v 2.
Ввод-вывод для нетипизированных файлов.
Нетипизированные файлы отличаются тем, что для них при объявлении не определяется тип компонентов. Это позволяет получать доступ к файлам с любой структурой. При открытии файла (процедурами reset или rewrite ) необходимо только указать размер элементов (записей), которыми будет проводиться обмен с файлом. При этом файл трактуется как последовательность этих записей (т.е. элементов произвольного типа). Вот как выглядит обращение к процедурам reset и rewrite для открытия нетипизированного файла:
Здесь f – файловая переменная, имеющая тип file (что соответствует нетипизированным файлам). Второй параметр (512 и 256) – это размер записей (в байтах), которыми будет производиться считывание из файла или запись в файл данных. Если этот параметр не задан, по умолчанию длина записи считается равной 128 байт.
При определении длины записи следует принять во внимание, что длина файла может оказаться не кратна этой величине. В этом случае последняя запись окажется неполной и несколько последних байтов файла, могут быть не считаны, Чтобы этого не случилось, можно установить длину записи равной единице.
Где f – нетипизированная файловая переменная;
C – выражение или значение, соответствующее количеству записей, которые следует считать из файла;
R – значение, возвращаемое процедурой и соответствующее количеству считанных записей (необязательный параметр).
Где f – нетипизированная файловая переменная;
C – выражение или значение, соответствующее количеству записей, которые следует добавить в файл;
R – значение, возвращаемое процедурой и соответствующее количеству добавленных записей (необязательный параметр).
Где f – файловая переменная;
n – номер элемента в файле.
Данная процедура, будучи применена к открытому файлу, удаляет его содержимое от текущей позиции и до конца.
Где f – файловая переменная.
Определяет длину файла (т.е. число содержащихся в нем элементов). При этом файл должен быть открыт.
Показывает положение указателя текущей позиции в файле. При этом файл должен быть открыт.
Где f – файловая переменная любого типа за исключением Text .
Значение этой функции истина ( true ), когда указатель текущей позиции находится в конце файла, либо если файл пустой, и ложь ( false ), во всех других случаях. Эта функция позволяет «нащупать» конец файла.
F –файловая переменная.
Данная процедура удаляет файл с диска. Процедура отнесена к завершающим, поскольку в конце работы временно созданные файлы часто приходиться удалять.
Итак, при работе с файловыми переменными, возможны следующие операции, которые подробно описаны выше:
II Ассоциирование файла с файловой переменной.
С клавиатуры вводятся пять чисел. Определить все четные числа и записать их в файл.
if a mod 2=0 then write(f,a);
Создать файл file 1, записав в него пять целых чисел, вводимые с клавиатуры. Создайте другой файл file 2, сохранив в нем удвоенное значение чисел из файла file 1.
В конец файла file 2 из предыдущей задачи добавить строку ‘Конец файла’.
Var f2:text; c:string;
Создать типизированный файл и записать в него:
5 одинаковых целых чисел.
Записываемые данные, кроме таблицы Пифагора, вводятся с клавиатуры.
В конец существующего файла с таблицей Пифагора записать фразу «конец таблицы».
Вывести на экран таблицу Пифагора из файла, созданного ранее.
Имеется типизированный файл с целыми числами. Все его четные элементы заменить нулями.
Имеется типизированный файл с числами А1. Переписать все числа из этого файла в конец существующего файла А2.
Урок информатики Работа с Файлами в Pascal
Нажмите на картинку чтобы посмотреть видеоурок по информатике
Теория Урок информатики «Работа с Файлами в Pascal».
Что такое файл?
Файл — это самостоятельная последовательность символов, записанная в постоянную память компьютера. Это определенная выделенная область информации.
Существование файлов не зависит от работы какой-либо программы и они никуда не исчезают даже при включении и выключении компьютера.
Файлы могут хранить в себе различную информацию. Это тексты, программы, вирусы, картинки, интернет страницы
Когда и зачем нужно использовать файлы?
Не всегда нам удобно пользоваться командной строкой при вводе и выводе информации в программе. Например:
Так вот в этих и некоторых других случаях к нам на помощь приходит умение работать с файлами.
Как описать файловые переменные?
В разделе описания следующая запись
говорит о том, что переменные f1 и f2 это текстовые файлы (которые мы можем открыть с помощию блокнота, посмотреть, и при необходимости редактировать).
Как установить связь между файловой переменной и самим фалом?
Для ответа на этот вопрос есть специальная процедура
assign (f,’имя_файла’); — устанавливает связь между файловой переменной и самим файлом
которая помогает нам это сделать. Фактически мы говорим, что переменной f соответствует такое-то имя файла. Например текстовый файл input. txt
Здесь подразумевается, что файл с самой программой находится в той же папке, что и текстовый файл input.txt. Если же он в другой папке, то нам нужно указать относительное расположение этого файла.
«Имя_файла’ — полный путь к указанному файлу, записанный в относительной или абсолютной форме.
Как создать, открыть, сохранить и закрыть файл?
После того как мы установили соответствие файловой переменной и самого файла мы можем начинать выполнять различные операции над этим файлом:
Естественно то, что мы только что перечислили это просто внешняя работа с файлом.
Как использовать или изменить содержимое файла?
Для того что бы делать какие-либо внутренние изменения в самом файле так же существуют команды