что такое eof в паскале

Урок 4. Работа с текстовыми файлами

Урок из серии: «Язык программирования Паскаль«

Для участия в олимпиаде по информатике вы должны уметь работать с текстовыми файлами (считывать и записывать информацию). На олимпиадах, начиная с областных, они используются для ввода и вывода данных. Лучше всего попробовать работать с файлами до того, как Вы пойдете на олимпиаду.

На этом уроке мы рассмотрим, как используются текстовые файлы для ввода и вывода данных в программе на языке Паскаль.

Текстовые файлы – это файлы, содержащие символы, разделенные на строки. Причем в конце каждой строки стоит символ конца строки.

Общая последовательность действий при работе с файлами в языке программирования Паскаль:

Описание переменной файлового типа

С текстовым файлом на диске в программе должна быть связана файловая переменная, которая описывается с указанием стандартного типа Text:

Связь переменной файлового типа с конкретным внешним файлом

Для установления связи между файловой переменной и именем файла, присваиваемого операционной системой, имеется стандартная процедура Assign.

Такое соответствие обозначает, что все операции, выполняемые над переменной F1, будут выполняться над файлом, хранящемся на диске и имеющим имя ‘Int.dat’

Чтение из файла

Под чтением из файла понимается ввод данных из внешнего файла, находящегося на диске, в оперативную память. Данные входного файла становятся доступными программе.

Для чтения файла в программе необходимо выполнить следующие действия:

Открыть файл для чтения:

Процедура Read последовательно считывает все элементы строки:

Процедура Readln – считывает элемент из текущей строки и переходит на следующую строку (независимо от того, достигнут конец строки или нет):

Если не указывать второй параметр, то произойдет переход в начало следующей строки без ввода данных:

Закрытие файла

Общий вид оператора:

Общая форма чтения файла имеет вид:

Многоточием отмечено наличие других операторов в программе.

Признак конца файла

Так как, по определению, число элементов файла не задается заранее, то в языке Паскаль введена логическая функция Eof() для определения признака конца файла.

Она определяет, достигнут ли конец файла или еще нет (принимает значение (true), если достигнут конец файла, и ложь (false) — в противном случае).

Для определения конца файла используется оператор цикла, например, (пока не достигнут конец файла …):

While Not EOF ( ) Do …

Запись в файл

Под записью файла понимается вывод результатов программы из оперативной памяти на диск, т.е. создание нового файла на внешнем устройстве.

Для записи файла в программе необходимо выполнить следующие действия:

Открыть файл для записи с помощью процедуры Rewrite:

Записать данные в файл спомощью процедур Write или Writeln.

Процедура Write производит запись поэлементно в текущую строку:

Процедура WriteLn записывает элемент и переводит указатель в начало следующей строки:

Если не указывать второй параметр процедуры, то в конце данной строки ставится признак конца файла и текущий указатель перемещается на начало следующей строки:

После завершения работы с файлом его закрытие обязательно.

Общая форма записи файла имеет вид:

Логическая функция Eoln()

Часто для обработки текстовых файлов используется специфичная для них функция Eoln(), позволяющая определить, достигнут ли конец строки. Если достигнут — значение функции равно True, а если нет — False.

Таким образом, для анализа конкретных символов строк файла можно применить вложенный цикл типа:

Пример. Дан текстовый файл, содержащий только целые числа, в каждой строке может быть несколько чисел, которые разделяются пробелами. Вывести на экран все числа с учетом разбиения на строки и подсчитать количество элементов в каждой строке.

Пусть в файле содержится следующая информация:

Этот файл можно создать в среде Паскаль следующим образом:

Программа будет иметь следующий вид:

На этом уроке было рассмотрено, как использовать текстовые файлы для ввода и вывода данных в программе на языке Паскаль.
На следующем уроке Вы узнаете, как использовать тип данных Bulean для представления данных логического типа.
Следующий урок: Логический тип данных

Урок понравился? Отзывы и замечания можно оставить в форме для комментариев, расположенной в нижней части страницы.

Источник

самоучитель Паскаль он-лайн

Он-лайн самоучитель Паскаль

Текстовые файлы

Текстовые файлы связываются с файловыми переменными, принадлежащими стандартному типу TEXT. Текстовые файлы предназначены для хранения текстовой информации. Именно в такого типа файлах хранятся, например, исходные тексты программ. Компоненты (записи) текстового файла могут иметь переменную длину, что существенно влияет на характер работы с ними.

EOLN- последовательность кодов ASCII #13 (CR) и #10 (LF);

Для доступа к записям применяются процедуры READ, READLN, WRITE, WRITELN. Они отличаются возможностью обращения к ним с переменным числом фактических параметров, в качестве которых могут использоваться символы, строки и числа. Первым параметром в любой из перечисленных процедур может стоять файловая переменная. В этом случае осуществляется обращение к дисковому файлу или логическому устройству, связанному с переменной процедурой ASSIGN. Если файловая переменная не указана, происходит обращение к стандартным файлам INPUT к OUTPUT.

Обеспечивает ввод символов, строк и чисел. Формат обращения:

При вводе переменных типа STRING количество считанных процедурой и помещенных в строку символов равно максимальной длине строки, если только раньше не встретились символы CR или EOF. В этом случае сами символы CR и EOF в строку не помещаются. Если количество символов во входном потоке данных больше максимальной длины строки, «лишние» символы до конца строки отбрасываются,а новое обращение к READ возвращает пустую строку. Таким образом, процедура READ не в состоянии прочесть последовательность строк: первая строка будет прочитана нормально, а все последующие окажутся пустыми. Для ввода последовательности строк нужно использовать процедуру READLN (см. ниже).

При вводе числовых переменных процедура READ вначале выделяет подстроку во входном потоке по следующему правилу: все ведущие пробелы, символы табуляции и маркеры конца строк EOLN пропускаются; после выделения первого значащего символа, наоборот, любой из перечисленных символов или символ EOF служат признаком конца подстроки. Выделенная таким образом подстрока затем рассматривается как символьное представление числовой константы соответствующего типа и преобразуется во внутреннее представление, а полученное значение присваивается переменной. Если в подстроке был нарушен требуемый формат представления численной константы, возникает ошибка ввода-вывода. Если при пропуске ведущих пробелов встретился символ EOF, переменная получает значение 0. Отметим, что в Турбо Паскале не предусмотрен ввод шестнадцатеричных констант.

При использовании процедуры READ применительно к стандартному файлу INPUT, т.е. при вводе с клавиатуры, символьные строки запоминаются в буфере, который передается процедуре только после нажатия на клавишу Enter. Это позволяет редактировать данные при их вводе. Для редактирования используются следующие клавиши:

Максимальная длина буфера ввода при работе с клавиатурой составляет 127 символов. Ввод с клавиатуры по процедуре READ сопровождается эхо-повтором вводимых символов на экране ПК.

Процедура READ прекрасно приспособлена к вводу чисел. При обращении к ней за вводом очередного целого или вещественного числа процедура «перескакивает» маркеры конца строк, т.е. фактически весь файл рассматривается ею как одна длинная строка, содержащая текстовое представление чисел. В сочетании с проверкой конца файла функцией EOF процедура READ позволяет организовать простой ввбд массивов данных, например, так:

m : array [1..N] of real;

while not EOF(f) and (i (см. процедуру READ), что приведет к пропуску всех символов текущей строки вплоть до EOLN.

Если процедура используется для чтения с клавиатуры, нажатие на клавишу Enter отобразится на экране как последовательность CR + LF и курсор будет помещен в начало следующей строки, в то время как в процедуре READ эхо-повтором клавиши Enter является символ CR и курсор помещается в начало текущей строки.

Обеспечивает вывод информации в текстовый файл или передачу ее на логическое устройство. Формат обращения:

Любой элемент списка вывода может иметь форму

OutExpr [ : MinWidth [ : DecPlaces ] ]

Подпараметр DECPLACES задает количество десятичных знаков в дробной части вещественного числа. Он может использоваться только совместно с MINWIDTH и только по отношению к выводимому выражению одного из вещественных типов.

Если ширина поля вывода не указана, соответствующий параметр выводится вслед за предыдущим без какого-либо их разделения.

Символы и строки передаются выводному файлу без изменений, но снабжаются ведущими пробелами, если задана ширина поля вывода и эта ширина больше требуемой для вывода.

При выводе логических выражений в зависимости от их значения выводятся строки TRUE или FALSE. (Ввод логических констант процедурами READ или READLN не предусмотрен).

Вещественные числа выводятся в экспоненциальном формате, если не указан подпараметр DECPLACES, в противном случае выбирается формат представления числа с фиксированной точкой. Экспоненциальный формат представляет вещественное число в виде

s пробел для положительного и знак «-» для отрицательного чисел;

Е символ десятичного основания;

* знак «+» или «-» в зависимости от знака десятичного порядка числа.

Если подпараметр MINWIDTH опущен, принимается его значение по умолчанию (23). Если MINWIDTH меньше 10, считается, что он равен 10.

Если подпараметр DECPLACES равен нулю, ни дробная часть числа, ни десятичная точка не выводятся. При отрицательном значении DECPLACES этот параметр игнорируется и число выводится в экспоненциальном формате с учетом MINWIDTH. Если значение DECPLACES больше 18, принимается значение 18. Следует учесть, что при указании подпараметра DECPLACES вещественное число всегда будет выводиться в формате с фиксированной точкой и требуемым количеством знаков в дробной части, даже если значение подпараметра MINWIDTH окажется недостаточным для размещения целой части: в этом случае значение MINWIDTH автоматически увеличивается.

При выводе на экран в случае, когда длина выводимой последовательности символов превышает ширину экрана или созданного на нем окна, «лишние» символы переносятся на следующую экранную строку. При заполнении экрана или окна его содержимое сдвигается вверх на одну строку.

Процедура WRITELN. Эта процедура полностью идентична процедуре WRITE за исключением того, что выводимая строка символов завершается кодами CR и LF. При вызове WRITELN можно опускать параметр : в этом случае в файл передается маркер EOLN, что при выводе на экран приведет к переводу курсор» в начало следующей строки.

Логическая функция EOLN. Возвращает TRUE, если во входном текстовом файле достигнут маркер конца строки. Формат обращения:

Если параметр опущен, функция проверяет стандартный файл INPUT.

Логическая функция SEEKEOLN.

Пропускает все пробелы и знаки табуляции до маркера конца строки EOLN или до первого значащего символа и возвращает TRUE, если маркер обнаружен. Формат обращения:

Если параметр опущен, функция проверяет стандартный файл INPUT.

Логическая функция SEEKEOF.

Пропускает все пробелы, знаки табуляции и маркеры конца строки EOLN до маркера конца файла или до первого значащего символа и возвращает TRUE, если маркер обнаружен. Формат обращения:

Если параметр опущен, функция проверяет стандартный файл INPUT.

Источник

Eof (f)

что такое eof в паскале. Смотреть фото что такое eof в паскале. Смотреть картинку что такое eof в паскале. Картинка про что такое eof в паскале. Фото что такое eof в паскале что такое eof в паскале. Смотреть фото что такое eof в паскале. Смотреть картинку что такое eof в паскале. Картинка про что такое eof в паскале. Фото что такое eof в паскале что такое eof в паскале. Смотреть фото что такое eof в паскале. Смотреть картинку что такое eof в паскале. Картинка про что такое eof в паскале. Фото что такое eof в паскале что такое eof в паскале. Смотреть фото что такое eof в паскале. Смотреть картинку что такое eof в паскале. Картинка про что такое eof в паскале. Фото что такое eof в паскале

что такое eof в паскале. Смотреть фото что такое eof в паскале. Смотреть картинку что такое eof в паскале. Картинка про что такое eof в паскале. Фото что такое eof в паскале

что такое eof в паскале. Смотреть фото что такое eof в паскале. Смотреть картинку что такое eof в паскале. Картинка про что такое eof в паскале. Фото что такое eof в паскале

РАБОТА С ФАЙЛАМИ В ПАСКАЛЕ

Цель работы:научиться читать данные из файла, выводить данные в файл, приобрести навыки работы со стандартными процедурами и функциями для всех файлов.

Краткие теоретические сведения.

С понятием файла пользователь компьютера сталкивается постоянно. Язык программирования Паскаль позволяет работать с компонентами файла — записями, с полями записей. Файл в Паскале состоит из однотипных данных. С данными файла можно производить две операции: запись или чте­ние. В Паскале осуществляется обработка последовательных файлов, в которых данные записываются или считываются одно за другим. Запись можно прочесть, минуя предыдущие, если известен ее порядковый номер в файле. Чтобы выполнять действия с данными файла, файл надо открыть для соответствующей операции.

Этапы, которые необходимы для каждой операции при работе с файлом:

Операция записи. Запись в файл означает помещение в него новых данных. Файл размещается на носителе, как правило, на магнитном диске. Данное для занесения в файл форми­руется в оперативной памяти как значение некоторой переменной. Операцией записи в файл это данное копируется из оперативной памяти во внешнюю. Форма представления данного, его тип и структура должны быть одинаковы и для записей файла, и для переменной, из которой это данное копируется.

Описание файла. Описание файла может быть в разделе типов или в разделе переменных. Пусть файл f состоит из целых чисел. Его описание имеет вид:

f: file of integer;

a: integer;

где a — компонента файла данного того же типа, что и записи файла. Тип данных файла указывается после слова of в описании, это может быть числовой или символьный тип, массив или запись. Сложный тип записи файла необходимо предварительно описать в разделе type.

Установление соответствия между логическим и физическим именами файла. Логическое имя — имя переменной из разделаvar, под которым файл присутствует в программе. Физическое имя — имя из каталога оглавления диска. Оператор установления соответствия между именами файлов:

assign(логическое имя файла, физическое имя); например:

assign (f, ‘F.DAT’);

Физическое имя заключено в апострофы, оно появится в том же оглавлении, где находится файл turbo.exe.

Открытие файла для операции запись это действие выполняется оператором:

rewrite (f);

Для занесения в файл данных при его открытии на диске появляются две специальные записи: начало файла, содержащее физическое имя, и признак конца файла. Каждое открытие файла для записи означает создание файла. Если для операциизапись открыть файл с уже имеющимися данными, то все данные файла пропадут. Поэтому открывать для записи можно только файлы с новыми именами (физическими).

При занесении в файл данные будут размещаться между именем и признаком конца файла, причем каждое новое данное окажется перед признаком конца файла. Файл может содержать произвольное количество данных. Ограничение размера файла никак в программе не оговаривается. В оперативной памяти достаточно одной области, совпадающей по формату с записями файла, а на диске определяется размер файла свободным пространством на момент его создания.

Запись данных в файл производит оператор:

write (f, a);

Пример. Пусть требуется создать файл из 10 целых чисел.

Программа име­ет вид:

program Р38;

f:file of integer; a, i:integer;

Begin

assign (f, ‘F.DAT’);

rewrite (f);

writeln (‘введите 10 целых чисел, после каждого нажимайте ‘);

for i: = 1 to 10do

Begin

readln(a);

write (f, a)

Если создать файл и никаких больше действий не производить, то возможности просмотреть данные файлы вне программы, практически нет. Поэтому большинство задач обработки файлов начинаются словами: «Дан файл». Очевидно, как и для других задач с подобным началом, файл необходимо сначала создать, т. е. выполнить описанные четыре этапа. Чтобы работать с данными файла, их надо прежде всего прочесть, открыть файл для чтения.

Операция чтения. Для чтения данных из файла его следует описать, установить соответствие между логическим и физическим именем, а затем открыть для чтения и считывать данные. Первые два шага — описание и установление соответствия имен — такие же, как и для операции записи. Если с файлом совершаются различные операции, то перед выполнением следующей его надо закрыть оператором: close (f);

что такое eof в паскале. Смотреть фото что такое eof в паскале. Смотреть картинку что такое eof в паскале. Картинка про что такое eof в паскале. Фото что такое eof в паскале

Открытие файла для чтения производится оператором:

reset (f);

Читать данные из файла позволяет оператор:

read (f, a);

После создания файла и нескольких преобразований может быть неизвестно количество его записей. Поэтому при чтении данных из файла удобно использовать специальную функцию, контролирующую признак конца файла. Эта функция принимает значениеистина, если встречен признак конца файла, и ложь, если прочитана другая запись. При открытии файла для чтения уже считывается первая его запись, содержащая имя файла, поэтому можно поставить контроль признака кон­ца файла, даже не считав ни одной записи оператором read (f,a);

Функция обработка признака конца файла:

eof (f)

Поскольку количество записей в файле неизвестно, ис­пользовать при чтении данных файла цикл-пересчет нельзя. Поэтому применяется цикл-пока. Его заголовок

Источник

Pascal | Лекция №9

Файлы. Файловые переменные

СОДЕРЖАНИЕ:

Организация доступа к файлам

С термином «файл» вам уже приходилось встречаться. Прежде всего, это понятие обычно связывают с информацией на устройствах внешней памяти. В Паскале понятии файла употребляется в двух смыслах:

В программе между этими объектами устанавливается связь. Вследствие этого все, что происходит в процессе выполнения программы с внутренним файлом, дублируется во внешнем файле. С элементами файла можно выполнять только две операции: читать из файла и записывать в файл.

Файловый тип переменной – это структурированный тип, представляющий собой совокупность однотипных элементов, количество которых заранее (до исполнения программы) не определено.

Для работы с файлом при описании переменных необходимо определить переменную файлового типа, которая будет считаться «представителем» этого файла в данной программе. Такая переменная называется также указателем. Структура описания файловой переменной:

В качестве базового типа можно использовать любой тип, за исключением типа File.

что такое eof в паскале. Смотреть фото что такое eof в паскале. Смотреть картинку что такое eof в паскале. Картинка про что такое eof в паскале. Фото что такое eof в паскале

Количество элементов, хранящихся в данный момент в файле, называется его текущей длиной. Существует специальная ячейка памяти, которая хранит адрес элемента файла, предназначенного для текущей обработки (записи или чтения). Этот адрес называется указателем или окном файла. Указатель всегда указывает на конкретный элемент файла, поэтому существует понятие текущий указатель.

Обычно все действия с файлами производятся поэлементно, причем с тем элементом файла, на который указывает текущий указатель. При записи или считывании указатель перемещается к следующему элементу.

Поскольку число элементов файла не задается, то последним элементом файла всегда записывается символ конца файла (eof). В языке Паскаль существует булевская функция eof( ), результат которой – true, если указатель указывает на конец файла.

Основные операции с файлами

Эти операции необходимы на начальном этапе работы с файлами – для связывания файловой переменной с конкретным файлом, указания того, какие действия будут с ним проводиться и окончания работы с файлом. К ним относят:

Диск: \ имя каталога \ имя подкаталога \ … \ имя файла

Если имя диска и имя каталога не указывать, то берутся текущий диск и текущий каталог.

В эту группу входят:

Эта группа предназначена для действий с каталогами и именами. Некоторые из операций:

Примеры работы с файлами*

В качестве примеров рассмотрим три наиболее часто встречающихся действия с файлами:

Для чтения файла необходимо выполнить следующий алгоритм:

Пример программы, реализующей этот алгоритм:

После того, как мы связали файл с файловой переменной с помощью оператора Assign(F,FileName), открываем файл с помощью оператора Reset(F). В результате файловая переменная f указывает на первый элемент файла:

что такое eof в паскале. Смотреть фото что такое eof в паскале. Смотреть картинку что такое eof в паскале. Картинка про что такое eof в паскале. Фото что такое eof в паскале

С помощью оператора Read(F, Ch) в переменную Ch считывается значение, которое находится в том месте файла, на которое указывает переменная F, т.е. C. Затем указатель перемещается на следующий элемент файла:

что такое eof в паскале. Смотреть фото что такое eof в паскале. Смотреть картинку что такое eof в паскале. Картинка про что такое eof в паскале. Фото что такое eof в паскале

После этого значение переменной Ch выводится на экран с помощью оператора Write(Ch). Затем аналогичным образом считываются из файла значения 2-го, 3-го и т.д. элементов до тех пор, пока файловая переменная не будет указывать на конец файла.

Алгоритм записи данных в файл можно определить следующим образом:

Пример программы, реализующей этот алгоритм и записывающей в файл числа от 1 до 30:

При открытии файла с помощью процедуры Rewrite(F) файл выглядит следующим образом:

что такое eof в паскале. Смотреть фото что такое eof в паскале. Смотреть картинку что такое eof в паскале. Картинка про что такое eof в паскале. Фото что такое eof в паскале

Так как файловая переменная указывает на конец файла, мы можем записать в него любую информацию с помощью процедуры Write, например,

что такое eof в паскале. Смотреть фото что такое eof в паскале. Смотреть картинку что такое eof в паскале. Картинка про что такое eof в паскале. Фото что такое eof в паскале

что такое eof в паскале. Смотреть фото что такое eof в паскале. Смотреть картинку что такое eof в паскале. Картинка про что такое eof в паскале. Фото что такое eof в паскале

Необходимо отметить, что в отличии от вывода на экран, при записи информации в файл вторым аргументом оператора Write являются не выражения, а переменные. Следующие записи будут неверны: Write(F, 1), Write(F, x+1).

Пусть необходимо к уже существующему файлу добавить ряд элементов. Для этого необходимо выполнить следующие действия:

Пример: к уже имеющемуся файлу, в который занесены числа от 1 до 30, дописать числа 40, 50, 60, 70, 80.

При открытии файла с помощью процедуры Reset вся информация в файле остается без изменения, курсор устанавливается на первый элемент файла:

что такое eof в паскале. Смотреть фото что такое eof в паскале. Смотреть картинку что такое eof в паскале. Картинка про что такое eof в паскале. Фото что такое eof в паскале

Затем с помощью операции seek(f, filesize(f)) перемещаем файловую переменную на последний элемент файла:

что такое eof в паскале. Смотреть фото что такое eof в паскале. Смотреть картинку что такое eof в паскале. Картинка про что такое eof в паскале. Фото что такое eof в паскале

Так как файловая переменная указывает на конец файла, мы можем дописать в файл любую информацию, например, с помощью оператора Write(f, 31);

что такое eof в паскале. Смотреть фото что такое eof в паскале. Смотреть картинку что такое eof в паскале. Картинка про что такое eof в паскале. Фото что такое eof в паскале

Текстовые файлы

Отдельным типом файлов являются текстовые файлы. Особенность этих файлов заключается в том, что их содержимое рассматривается как последовательность строк переменной длины, разделенных специальными символами, которые называются «конец строки». Символ конца строки при просмотре файла не виден, так же как и символ конца файла. В программе файловая переменная текстового типа описывается следующим образом:

Var : text;

Каждый символ представлен во внутреннем коде (ASCII) и занимает 1 байт.

Главная особенность текстовых файлов заключается в том, что можно считывать из него и записывать в него элементы типа char, integer, real, string, boolean. Если информация несимвольная, то в процессе чтения или записи происходит ее преобразование из символьной формы во внутреннюю и обратно.

Для работы с текстовыми файлами можно использовать все процедуры и функции, используемые при работе с файлами любых типов, за исключением процедуры seek, функций filepos, filesize. Дело в том, что заранее неизвестно, элементы какого типа находятся в файле.

Например, если в файле находится символ 5, то мы можем его считать как char, integer, real, string размером 1. В этом случае они будут занимать: real – 4 байта; integer 2 байта; char – 1 байт; string — 1 байт.

Для работы с текстовыми файлами определены дополнительные операции.

Функция:

eoln (f) – логическая функция, возвращающая логическое значение true, если достигнут конец строки, и false в противном случае.

Процедуры:

Контрольные вопросы

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *