Классификация файлов в Turbo Pascal

Сущность и задачи файлов, особенности работы с ними. Характеристика видов файлов в Turbo Pascal: текстовых, типизированных, нетипизированных. Описание процедур и функций, используемых при открытии, записи, чтении, добавлении, изменении и удалении файла.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 15.01.2013
Размер файла 37,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Введение

В Turbo Pascal часто приходится работать c данными, при этом ни исходные данные, ни результаты не сохраняются, и нам приходится вводить их заново. Это очень неудобно при больших объемах данных. Но на данный момент эта проблема решена. Для этого необходимо оформить исходные данные и результаты в виде файлов, которые хранятся на диске точно так же, как и программы, которые можно использовать в любой момент, когда это необходимо, что упрощает нашу работу. Введение файлового типа в язык Паскаль вызвано необходимостью обеспечить возможность работы с внешними устройствами ЭВМ, предназначенными для ввода, вывода и хранения данных. Работа с файлами составляет существенную часть необходимых умений квалифицированного программиста. Главное, чему необходимо научиться при работе с файлами - это записать информацию из программы в файл. Для этого нужно: описать переменную файлового типа; связать ее с конкретным физическим файлом; открыть файл выполнить чтение или запись информации; по окончании работы с файлом закрыть файл.

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

Также узнать о таких процедурах и функциях Close, rewrite, reset, eof, seek, filesize, rename, erase, truncate, append, SetTextBuf, Append, Flush, SeekEOLn, SeekEOF об их использовании.

Глава I. Основные понятия. Текстовые файлы

1.1 Файлы. Виды файлов. Особенности работы с файлами

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

Файлом называется область памяти на диске, имеющая свое имя. Любой из файлов можно читать, проанализировать, изменить и записать. Физические файлы можно по-разному представить в программе. Язык Турбо Паскаль предлагает три вида представления файлов: текстовые файлы, типизированные файлы, нетипизированные файлы.

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

Доступ к файлу в программе происходит с помощью переменных файлового типа. Переменную файлового типа описывают одним из трех способов: file of тип - типизированный файл (указан тип компоненты);

text - текстовый файл;

file - нетипизированный файл.

Все компоненты файла имеют общее имя, а каждый имеет еще и свой номер. Начальный элемент имеет нулевой номер. Количество элементов файла может быть любым: число компонентов файла может изменяться (увеличиваться или уменьшаться), то есть заранее, не фиксируется.

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

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

описать переменную файлового типа;

связать ее с конкретным физическим файлом процедурой assign;

открыть файл процедурой reset или rewrite;

выполнить чтение или запись информации;

по окончании работы с файлом закрыть файл процедурой close.

1.2 Основные процедуры и функции для работы с файлами

Для работы с файлами используются процедуры и функции:

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

Assign(<файловая_переменная>, <имя_дискового_файла>).

Следует помнить, что имя дискового файла при необходимости должно содержать путь доступа к этому файлу, включая имя дисковода. При этом имя дискового файла - строковая величина, т.е. должна быть заключена в апострофы. Например: Assign (chf, 'G:\Home\ Student\ Lang\ Pascal\ primer.dat'); Если путь не указан, то программа будет искать файл в своем рабочем каталоге и по указанным путям в autoexec.bat.

Вместо имени дискового файла можно указать имя логического устройства.

Не разрешается связывать с одним физическим файлом более одной файловой переменной.

2.После окончания работы с файлами на Паскале, они должны быть закрыты.

Close(<список файловых переменных>);

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

3.Запись в файл в Паскале

Работа с файлами заключается, в основном, в записи элементов в файл и считывании их из файла.

Write(<имя_ф_переменной>,,<список,записи>);

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

4.Подготовка файла к чтению.

Reset(<имя_ф_переменной>);

Эта процедура ищет на диске уже существующий файл и переводит его в режим чтения, устанавливая указатель на первую позицию файла. Если происходит попытка открыть для чтения не существующий еще на диске файл, то возникает ошибка ввода/вывода, и выполнение программы будет прервано.

5.Чтение из файла в Паскале.

Read(<имя_ф_переменной>,<список переменных>).

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

6.Функция определения достижения конца файла в Паскале

Eof(<имя_ф_переменной>);

Название этой функции является сложносокращенным словом от end of file. Значение этой функции имеет значение true, если конец файла уже достигнут, т.е. указатель стоит на позиции, следующей за последней компонентой файла. В противном случае значение функции - false.

7.Изменение имени файла в Паскале.

Rename(<имя_ф_переменной>,<новое_имя_файла>);

Здесь новое_ имя_ файла - строковое выражение, содержащее новое имя файла, возможно с указанием пути доступа к нему. Перед выполнением этой процедуры необходимо закрыть файл, если он ранее был открыт.

8.Уничтожение файла в Паскале.

Erase(<имя_ф_переменной>);

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

9.Уничтожение части файла от текущей позиции указателя до конца.

Truncate(<имя_ф_переменной>);

10. Append(<имя_ф_переменной>); открыть для добавления записей в конец файла.

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

Особое место в языке Паскаль занимают текстовые файлы, компоненты которых имеют символьный тип. Для описания текстовых файлов в языке определен стандартный тип Тext: var TF1, TF2: Text.

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

С признаком конца строки связана функция EOLn (var T:Text):Boolean, где Т - имя текстового файла. Эта функция принимает значение true, если достигнут конец строки, и значение false, если конец строки не достигнут.. Текстовый файл состоит из элементов различной длины, между которыми стоят разделители. Чтобы найти элемент последовательного файла, надо просмотреть все, что ему предшествует.

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

Модификация уже существующего текстового файла возможна только путем добавления новых записей в конец файла. Для этого он должен быть открыт специальной процедурой: Append(<имя логического текстового файла>);

Такие операции обработки текстового файла, как ввод с клавиатуры - это не что иное, как ввод записей текстового файла, связанного с физическим файлом, “размещенным” на клавиатуре.

Вывод же на монитор - это вывод в текстовый физический файл, “размещенный” на дисплее. Эти стандартные файлы имеют предопределенные в библиотеке System (которая, напомним, всегда автоматически подключается к программе) имена: Input - для входного файла и Output - для выходного. Заметим, что имеется возможность связать эти логические файлы и с другими устройствами, например, назначив вывод из текстового файла Output на диск.

Общая форма записи операторов чтения и записи включает в себя упоминание имени логического файла:

Read([<имя логического текстового файла>,] <список ввода>);

Readln([<имя логического текстового файла>,] <список ввода>);

Write([<имя логического текстового файла>,] <список вывода>);

Writeln([<имя логического текстового файла>,] <список вывода>);

Важная особенность операторов обмена с текстовым файлом. Они обеспечивают автоматическое преобразование информации из текстового вида к типу переменных, стоящих в списке, при вводе и из внутреннего формата представления данных в текстовый вид при выводе. Если, обрабатывая некоторый ранее созданный текстовый файл, неизвестно количество записей-строк, как же определить, когда файл закончится? Проблема состоит в том, что по самому файлу определить, сколько в нем строк невозможно - в языке Pascal операции для этого не предусмотрено. Все что доступно программистам - это функция Eof(<имя логического файла>); которая возвращает значение true при достижении конца файла. Аналогичного сорта проблема может возникнуть и при чтении отдельной записи. Составляя программу, разработчик должен знать формат каждой строки обрабатываемого файла (например, сколько в ней чисел, в каком формате эти числа представлены), чтобы правильно использовать оператор чтения. Если отсутствует информация о количестве элементов строки, то можно воспользоваться функцией, Eoln(<имя логического текстового файла>); которая принимает значение true, если встретился признак “конец строки”. Заметьте, что в соответствии с описанием функция Eof применима не только к тестовым, но и к файлам других видов, в отличие от функции Eoln.

Вариантами этих функций, полезными при чтении числовой информации из текстового файла являются булевские функции SeekEof(<имя логического текстового файла>); и SeekEoln ('имя логического текстового файла');

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

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

Приведем примеры операторов записи и считывания данных.

Assign(f1,'File1.dan');

{назначить переменой f1,имя файла: File1. dan } ReWrite(f1);,

{открыть файл для записи в первой программе} Writeln(f1,'Значения"X","Y"');

{начать запись }, For,i:=1,to,N,do

begin,X:=0.5*i;

Y:= Ln(X);,{ пример расчета значений переменных }

write(f1, X:6:2, Y:10:4); {записать данные в файл File1.dan }

If i mod 5 = 0 then writeln(f1) {записать символ #13}Еnd;

Close(f1);,закрыть файл в первой программе }

Assign(f2,,'File1.dan');

Reset(f2);{ открыть файл для чтения во второй программе }

Readln(f2);,{пропустить первую строчку}

For,,i:=1,to,N,do,begin

read(f2,,a[i],,b[i]);{считать данные в массивы "A" и "B"}

If,i,mod,5,=,0,then

readln(f2).{считать.символ.#13}

end;Close(f2);{закрыть файл во второй программе}

При обновлении файла с выходными данными во время повторных запусков программы на экране появляется предупреждение (Warning) о перезаписи новых данных с диска в оперативную память, т. е. в окно редактора: Reload from disk?, на что следует ответить - Yes.

1.4 Особенности текстовых файлов

Работа с этими файлами имеет особенности:

текстовые файлы удобнее для восприятия человеком, а типизированные соответствуют машинному представлению объектов;

текстовые файлы, как правило, длиннее типизированных;

длина текстовых файлов зависит не только от количества записей, но и от величины переменных.

имена этих файлов в списках ввода - вывода не указываются;

применение процедур reset, rewrite и close к стандартным файлам ввода - вывода запрещено;

Turbo Pascal вводит дополнительные процедуры и функции, применимые только к текстовым файлам, это SetTextBuf, Append, Flush, SeekEOLn, SeekEOF.

Процедура SetTextBuf(var f: Text; var Buf; BufSize: Word) служит для увеличения или уменьшения буфера ввода - вывода текстового файла f. Значение размера буфера для текстовых файлов по умолчанию равно 128 байтам. Увеличение размера буфера сокращает количество обращений к диску. Рекомендуется изменять размер буфера до открытия файла.

Буфер файла начнется с первого байта переменной Buf. Размер буфера задается в необязательном параметре BufSize, а если этот параметр отсутствует, размер буфера определяется длиной переменной Buf.

Процедура Append(var f: Text) служит для специального открытия выходных файлов. Она применима к уже существующим физическим файлам и открывает из для дозаписи в конец файла.

Процедура Flush(var f: Text) применяется к открытым выходным файлам. Она принудительно записывает данные из буфера в файл независимо от степени его заполнения.

Функция SeekEOLn(var f: Text): Boolean возвращает значение True, если до конца строки остались только пробелы.

Функция SeekEOF(var f: Text): Boolean возвращает значение True, если до конца файла остались строки, заполненные пробелами.

Глава II. Типизированные и нетипизированые файлы

2.1 Типизированный файл

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

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

Способы доступа к файлам (а не сами файлы!) можно разделить на два типа: последовательной и произвольный. Наглядным примером последовательного доступа является запись на магнитной ленте - нельзя прочитать информацию, записанную в середине ленты, не прочитав информацию, записанную в начале ленты (нужно понимать, что пример условен и не лишён недостатков). Произвольный доступ можно показать на примере пластинки. Можно найти произвольную запись на пластинке, просто установив на неё иголку. Типизированный файл может обрабатываться как в режиме последовательного так и в режиме прямого доступа к записям. Во втором случае операторы обмена должны знать адрес требуемой записи. Адресация записей производится по их порядковым номерам, которые присваиваются записям в процессе создания файла. Условно говоря, с файлом связан “курсор ” - указатель позиции в файле, который показывает на текущую обрабатываемую запись.

2.2 Работа с типизированными файлами

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

Запись и чтение производятся поэлементно, причем в них участвует тот элемент файла, на который "смотрит" указатель.

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

Read(<имя логического файла>, <список ввода>);

Write(<имя логического файла>, <список вывода>);

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

Для осуществления прямого доступа используется процедура установки курсора на запись с заданным номером:

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

Второй параметр процедуры представляет собой выражение типа Longint.

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

FilePos(<имя логического файла>);

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

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

Вставка новых записей в файл возможна только путем добавления их в конец файла. Другими словами, нельзя вставить новую запись между двумя уже существующими записями (“раздвинуть” записи). Чтобы добавить в конец файла новую запись, следует в процедуре Seek указать номер последней записи файла. Это число можно узнать, воспользовавшись функцией FileSize(<имя логического файла>); которая возвращает количество записей в типизированном файле (заметим, что она не применима к текстовым файлам).

Процедуры: Seek(F, FileSize(F)); Write(F, Info); добавляют в конец файла F новую запись с информацией из переменной Info.

Интересно, что номер добавляемой записи не обязательно должен быть на единицу большим общего числа записей в файле. Например, если файл имеет 50 записей, мы можем поместить в него запись с номером 60.

При этом будут созданы и промежуточные 9 записей с номерами от 51 до 59, которые могут быть заполнены полезной информацией позже.

Удаление записей также возможно только в конце файла, то есть методом “отсечения” его “хвостовой” части.

Для этого предназначена процедура Truncate(<имя логического файла>); которая отсекает все записи файла, начиная с той, на которую указывает в данный момент курсор.

Следует обратить внимание на одну важную особенность обмена с типизированными файлами. Обмен информацией между внешней и оперативной памятью всегда происходит без преобразования данных.

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

Рассмотрим пример работы с типизированным файлом.

Создание и модификация типизированного файла

Program TypedFile;

type

Person = record { строка ведомости }

Name: String[20];

Salary: Word;

end;

PersonFile = file of Person;

Var P: Person;

F: PersonFile;

S: String[80]; { буфер для вводимой текстовой строки }

StarPos, { номер позиции строки, где находится * }

Code: Integer; { код завершения процедуры Val }

В заключение обзора средств работы с типизированными файлами отметим, что функция определения конца файла Eof и процедура закрытия файла CloseFile также применяются для их обработки.

2.3 Нетипизированные файлы

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

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

Нетипизированный файл рассматривается в Паскале как совокупность символов или байтов. Выбор char или byte не играет никакой роли, важен лишь объем занимаемых данных. Такое представление стирает различия между файлами независимо от типа содержащейся в них информации. На практике это приводит к тому, что любой файл, подготовленный как текстовый или типизированный, можно открыть и начать работу с ним, как с нетипизированным набором данных.

Для определения в программе нетипизированного файла служит зарезервированное слово file:

Var

MyFile : file;

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

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

Нетипизированный файл является файлом прямого доступа, что говорит о возможности одновременного использования операций чтения и записи. Для таких файлов самым важным параметром является длина записи в байтах. При инициации нетипизированного файла процедурами Reset или Rewrite можно указать длину записи нетипизированного файла в байтах. Например, так:

var

f: file;

begin.......

assign(f, 'myfile.dat')

reset(f,512); …… end.

Длина записи нетипизированного файла указывается вторым параметром при обращении к процедурам Reset или Rewrite, в качестве которого может использоваться выражение типа WORD.

Если длина записи не указана, она принимается равной 128 байтам.

Открытие нетипизированного файла с длиной записи в 1 байт можно выполнить следующим образом: rewrite(MyFile) или reset(MyFile)

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

Поэтому после открытия файла с помощью вызовов: rewrite(MyFile) или reset(MyFile) процедуры и функции, обслуживающие файлы прямого доступа, работают с записями длиной 128 байт.

Каждый пользователь для своих программ может выбрать наиболее подходящий размер записи. Турбо Паскаль не накладывает каких-либо ограничений на длину записи нетипизированного файла, за исключением требования положительности и ограничения максимальной длины 65535 байтами. При этом следует учитывать два обстоятельства. Во-первых, для обеспечения максимальной скорости обмена данными следует задавать длину, которая была бы кратна длине физического сектора дискового носителя информации (512 байт). С другой стороны, нужно помнить, что общий размер файла может не быть кратен выбранному размеру записи (последняя запись может быть неполной). Для того, чтобы гарантированно обеспечить полное чтение всего файла, рекомендуется установить размер записи равным 1.Более того, фактически пространство на диске выделяется любому файлу порциями - кластерами. Которые в зависимости от типа диска могут занимать 2 и более смежных секторов. Как правило, кластер может быть прочитан или записан за один оборот диска, поэтому наивысшую скорость обмена данными можно получить, если указать длину записи, равную длине кластера.

2.4 Процедуры и функции применимые к файлам

файл текстовый типизированный процедура

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

Assign (МуFilе, 'с:\МуDirectory\result.dat') - процедура связывания логической файловой переменной МуFilе с конкретным физическим файлом на дисковом носителе,информации;

Closе (МуFilе) - процедура, закрывающая открытый файл;

Rewrite (МуFilе) - процедура, создающая новый файл и открывающая его для записи и чтения; при работе с нетипизированными файлами эта процедура имеет дополнительный параметр, который был рассмотрен выше;

Reset (МуFilе) - процедура, открывающая существующий файл данных для чтения и записи; при работе с нетипизированными файлами эта процедура имеет дополнительный параметр, который был рассмотрен выше;

eof (МуFilе) - логическая функция, проверяющая, достигнут ли конец файла;

seek (МуFilе, n) - процедура, позволяющая явно изменить значение текущего указателя файла, установив его на элемент с номером n;

filepos (МуFilе) - функция, возвращающая позицию указателя файла; нумерация начинается с нуля;

filesize(МуFilе) - функция, возвращающая количество элементов файла; rename(МуFilе, FileName) - процедура, позволяющая переименовать существующий файл;

truncate(МуFilе) - процедура, позволяющая удалить часть существующего файла, начиная с текущей позиции и до конца файла;

erase(МуFilе) - процедура, стирающая указанный файл, Вы должны были заметить, что в списке нет процедур read и write.

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

I. Применение текстового файла на практике.

1) пример использования текстового файла

Program StringCount;

Uses Crt;

Var

i : integer; s : string;

f : text; Begin

ClrScr;

readln(s);

assign(f, s);

reset(f); i := 0;

while not Eof(f) do begin

readln(f,s);

i:=i+1; end;

close(f);

writeln(i); readln;

End.

2) программа которая подсчитывает количество символов в файле и результат делится на 40000-таким способом можно оценить объем информации

Program StringCount;

Var

F: text; s: string;

Const

Sum: longInt=0;

begin

Write (`имя файла: '); { запрашиваем…}

Readln (s); { и вводим имя файла}

Assign (f,s); Reset (f);

While not EOF(f) do

Begin

{посчитываем количество символов в файле}

Readln (f,s);

Inc (Sum, Length(s))

end; Close (f);

Writeln (`Объем = `,Sum /40000:6;2);

End.

3) Написать программу, которая вводит с клавиатуры список фамилий учащихся, а затем распечатывает его, кроме тех учащихся, у которых фамилия начинается с буквы 'Ш'".

Program L; Var

I,N : Integer;

F : File Of String; S : String;

Begin

Assign(F,'Spis.lst'); {Связываем переменную F с файлом Spis.lst}

Writeln('Введите количество учащихся');

Readln(N); {Вводим количество учащихся}

Rewrite(F); {Создаем файл для записи в него данных}

For I:=1 To N Do {Для всех учащихся}

Begin

Writeln('Введите фамилию'); Readln(S);

Write(F,S) End;

Close(F); Reset(F);

Writeln; Writeln('Список учащихся:');

While Not(Eof(F)) Do

Begin Read(F,S);

If S[1]<>'Ш' Then

Writeln(S)

End;

Close(F) ;

End.

4) Программа для считывания строковых и числовых данных из файла и записи их в другой файл.

Program nt;

var

c: char; j, i: word;

s: array[1..10] of string[12];

a: array[1..10, 1..6] of word;

f1, f2: text;

begin

assign(f1, 'F1.txt'); reset(f1);

assign(f2, 'F2.txt'); rewrite(f2);

for i:= 1 to 10 do

begin

read(f1, s[i]); { считывание строки }

for j:= 1 to 6 do read(f1, a[i,j]); { считывание шести чисел }

readln(f1) { считывание символа конца строки }

end;

for c:= 'А' to 'Я' do { цикл по перебору символов }

for i:= 1 to 10 do

if s[i,1] = c then

begin

write(f2, s[i]); { запись строк в алфавитном порядке первых символов }

for j:= 1 to 6 do write(f2, a[i,j]:2) { запись шести чисел }

writeln(F2)

end;

close(f1);

close(f2);

end.

II Применение типизированного файла на практике.

1) программа для записи данных в типизированный файл.

Program Writing;

Var

FileName : string; {строка, содержащая имя файла}

FVar : file of byte; {переменная файлового типа}

Index : byte;

Begin

write ('Введите имя файла ');{предложение ввести имя файла}

readln (FileName);{ввод имени файла}

assign (FVar, FileName);{связь имени файла и переменной}

rewrite (FVar);{открытие файла для записи}

for Index:= 0 to 99 do {цикл для расчетов и вывода данных в файл}

write (FVar,Index);{запись в файл FVar величины Index}

close (FVar); {закрытие файла}

End.

2) Дополните содержание текста задачи созданием типизированного файла file.dat..

Program Srednee;

Uses Crt;

Var

Kol, Element,{переменная для хранения очередного элемента файла}

Summa {переменная для хранения суммы элементов файла}

:integer;

f : file of integer;

SrAriph : real

Begin ClrScr;

Assign(f,'file.dat');{связываем файловую переменную f с физическим файлом file.dat}

reset(f);{открываем файл для чтения}

Summa :=0;{обнуление суммы}

while not Еof(f) do{просматриваем файл до конца}

begin

read(f,Element);{считываем из файла очередной элемент в переменную Element}

Inc(Kol);{увеличиваем счетчик количества элементов файла}

Inc(Summa,Element);{увеличиваем переменную Summa на Element} end;

SrAriph := Summa/Kol{вычисляем среднее арифметическое чисел}

write('Среднее арифметическое элементов файла равно ',SrAriph:5:2);

close(f);{закрываем файл}

readln;

End.

III. Применение нетипизированного файла на практике.

1) Составить программу, которая создает нетипизированный файл из 100 чисел и выводит на экран k-ый элемент.

Program Netipiz1;

Uses Crt;

Type

FileType = file;

Var

f : FileType; P, k : byte;

Begin ClrScr;

assign(F, 'MyFile');

rewrite(F,1); Randomize;

for k := 1 to 100 do

Begin

P := Random(100);

blockwrite(F, P, 1); end;

close(F);

reset(F,1);

for k := 1 to 100 do

begin

blockread(F, P, 1);

write(p,' '); end;

write('Введите номер нужного элемента ');

readln(k);

Seek(F, k-1);

blockread(F, P, 1);

writeln(k,'-ий элемент файла равен ', P);

close(F);

End.

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

Program Netipiz3;

Uses Crt;

Var

f : file; i, k, s : integer;

Mas : Array [1..10] of byte;

Begin ClrScr;

Randomize;

for i := 1 to 10 do

begin Mas[i] := Random(10);

write(Mas[i]:3);

end;

Assign(f, 'file.dat');

rewrite(f, 1);

blockwrite(f, Mas, 10);

close(f); reset(f,1);

S:=0; i:=0;

while not Eof(f) do

begin

blockread(f, k, 1);

s:= s+k; Inc(i);

end;

close(f);

writeln;

write(s/i:5:2);

readln;

End.

3) Составить программу, которая создает копию элементов нетипизированного файла f и помещает в файл g.

Program Netipiz2;

Uses Crt;

Var

f, g : file;

s : char;

Stroka1, Stroka2 : string;

Begin

ClrScr;

write('Введите имя исходного файла: ');

readln(Stroka1);

assign(f, Stroka1);

rewrite(f, 1);

writeln('Введите содержимое файла ');

readln(s);

while s <> #13 do

begin

blockwrite(f, s, 1);

readln(s);

end;

close(f);

reset(f, 1);

write('Введите имя конечного файла: ');

read(Stroka2);

assign(g, Stroka2);

rewrite(g, 1);

while not Eof(f) do

begin

blockread(f, s, 1);

blockwrite(g, s, 1);

end;

close(f);

close(g);

reset(g, 1);

writeln('Содержимое конечного файла:');

while not Eof(g) do

begin

blockread(g, s, 1);

write(s);

end;

close(g);

readln;

End.

Заключение

Из данной курсовой работы мы узнали:

Любой из файлов можно читать, анализировать, изменять и записывать.

Паскаль поддерживает три вида файлов - типизированные, текстовые и нетипизированные, что полностью покрывает все возможные потребности программистов по обмену данными между программой и внешней памятью. Для работы с файлом на диске надо представить в программе файловую переменную и произвести ее логическую связку с этим файлом. Над файловой переменной нельзя выполнять никаких операций (присваивать значение, сравнивать и др.). Их можно использовать только для выполнения операций с файлами (чтения, записи, удаления файла и т.д.). Также, через файловую переменную можно получить информацию о конкретном файле (тип, параметры, имя файла и т.д.). До начала работы с файлами в Паскале необходимо установить связь между файловой переменной и именем физического дискового файла с помощью процедуры Assign.. Работа с файлами заключается, в основном, в записи элементов в файл и считывании их из файла. Для этого используется процедура Write. Процедура Reset ищет на диске уже существующий файл и переводит его в режим чтения, устанавливая указатель на первую позицию файла. Процедура Read(<имя_ф_переменной>, <список переменных>) используется для чтение из файла. После окончания работы с файлами на Паскале, они должны быть закрыты процедурой Close.

Использование файлов в Pascal облегчает работу программисту, так как можно использовать записанные данные в файле сколько угодно раз, поэтому файлы так распространены среди программистов и пользователей.

Список использованной литературы

1. В.В. Фаронов. «Турбо Паскаль Начальный курс» М.: "Нолидж", 2001.

2. В.В. Шураков. «Обеспечение сохранности информации в системах обработки данных». М.: "Финансы и статистика", 1985.

3. О.М. Вайнеров, Э.Н. Самохвалов. «Проектирование баз данных.» М.: «Высшая школа», 1990.

4. Л.В. Зайцева. «Алгоритмические языки и программирование. М.: "МГУ», 1996.

5. Т. Тиори, Д. Фрай. «Проектирование структур баз данных». М.: «Мир». 1985.

6. Марченко А.И., Марченко А.А., под редакцией Тарасенко «Программирование в среде Турбо Паскаль 7.0» К: Век+, 1999г., 496с.

7. Грибаннов В.П., Калмыкова О.В., «Основы алгоритмизации и. алгоритмические языки».

8. Использование Интернет-ресурсов: http://progopedia.ru/language/pascal/; http://www.cyberguru.ru/programming/pascal

Размещено на Allbest.ru

...

Подобные документы

  • Файл - именованная область памяти на магнитном носителе. Программирование доступа к файлу в языке Turbo Pascal. Описание файловой переменной. Виды файлов в зависимости от способа описания: текстовые, двоичные или типизированные и нетипизированные.

    реферат [14,8 K], добавлен 19.01.2009

  • Изучение текстового режима языка программирования Turbo Pascal. Написание игры "Змейка" с помощью средств, процедур и функций языка программирование Turbo Pascal. Структурное и функциональное описание разработки. Листинг и общие примеры работы программы.

    контрольная работа [286,3 K], добавлен 10.04.2011

  • Записи: ієрархічні, з варіантними полями, множини. Складання програм, які забезпечують дії з таблицями, відомостями, списками, каталогами, де містяться дані різних типів. Особливості використання процедур і функцій мови Turbo Pascal при розробці програм.

    реферат [39,8 K], добавлен 13.11.2010

  • Структура и основные элементы языка Turbo Pascal. Алгоритм составления простейших программ на Turbo Pascal. Применение условного оператора и сильноветвящихся алгоритмов. Циклы с предусловием и постусловием, сочетание циклических и условных операторов.

    реферат [64,0 K], добавлен 20.03.2016

  • Основы работы на языке высокого уровня Turbo Pascal. Основное оборудование и программное обеспечение. Операторы, необходимы для работы в графической среде Turbo Pascal. Запуск графического режима. Текст программы в графической среде Turbo Pascal.

    лабораторная работа [12,7 K], добавлен 14.05.2011

  • Разработка программы для редактирования в оперативной памяти текстовых ASCII-файлов размером не более 40 килобайт, на языке программирования Pascal в среде разработки Turbo Pascal 6.0. Инструкция для пользователя. Листинг разработанной программы.

    курсовая работа [21,3 K], добавлен 26.11.2011

  • Характеристика вычислительной системы и инструментов разработки. Программирование на языке Pascal в среде Turbo Pascal и на языке Object Pascal в среде Delphi. Использование процедур, функций, массивов, бинарного поиска. Создание базы данных в виде файла.

    отчет по практике [2,1 M], добавлен 02.05.2014

  • Описание используемых в программе операторов, процедур, функций. Директива include. Правила объявления и определения функций в СИ++. Блок-схема алгоритма программы. Подпрограммы чтения из файла и записи в файл. Использование заголовочных файлов.

    курсовая работа [346,8 K], добавлен 26.04.2012

  • История создания и развитие Pascal. Особенности пакета программирования Turbo. его возможности редактора текстов, компилятора и отладчика. Построения программы на языке Turbo Pascal, ее структура, типы алгоритмов, одномерные и многомерные массивы.

    курсовая работа [519,3 K], добавлен 25.06.2011

  • Программирование и структура программы на языке Turbo Pascal и MS Visual C++6.0. Вычисление площади круга. Реализация программы в системе Turbo Pascal и MS VISUAL C++6.0 для Windows. Структура окна ТРW. Сохранение текста программы в файле на диске.

    лабораторная работа [3,7 M], добавлен 22.03.2012

  • Описание возможностей языка программирования Turbo Pascal. Написание программы создания файлов с прямым доступом, которая также будет обрабатывать наборы данных с определенными полями и ограничениями. Контрольный пример работы поисковой программы.

    курсовая работа [563,6 K], добавлен 22.01.2016

  • Понятие и история развития языка Turbo Pascal, оценка его графических возможностей и особенностей. Инициализация графического режима. Управление экраном и окнами, цветом и фоном, принципы работы с текстом. Построение графиков функций и изображений.

    курсовая работа [159,9 K], добавлен 17.12.2014

  • Программирование нестандартных функций. Матрицы и операции над ними. Решение нелинейных уравнений и численное интегрирование. Оптимизация функции и численное дифференцирование. Аппроксимация функции: методы решения, описание программы, результаты.

    курсовая работа [70,5 K], добавлен 12.08.2011

  • Разработка эскизного и технического проектов программы "Helpopr" (ввод, хранение и вывод данных на дисплей по запросу пользователя). Язык программирования Turbo Pascal. Описание алгоритма программы. Требования к компьютеру и программному обеспечению.

    курсовая работа [198,1 K], добавлен 03.02.2010

  • Разработка алгоритма поставленной задачи по обработке числовой информации в среде Turbo Pascal 7.0 с базовым языком программирования Pascal, отладка программы, реализующей разработанный алгоритм. Описание структуры программы, ее вспомогательных процедур.

    курсовая работа [668,0 K], добавлен 25.02.2010

  • Теоретические и практические аспекты решения прикладных задач с применением функций и процедур структурного (модульного) программирования. Особенности разработки схемы алгоритма и программы для вычисления массива z на языке Turbo Pascal 7.0, их описание.

    курсовая работа [241,7 K], добавлен 11.12.2009

  • При помощи Turbo Pascal достаточно не просто создать программу, которая бы демонстрировала работу с базами данных. Для этого существует огромное количество специализированных программ. Основа и сущность формирования базы данных при помощи Turbo Pascal.

    курсовая работа [479,7 K], добавлен 04.07.2008

  • Разработка программ на языке Turbo Pascal на основе использования массивов данных. Особенности хранения данных, способы объявления переменных, действия над элементами массивов, их ввод и вывод. Практическое применение одномерных и многомерных массивов.

    методичка [17,8 K], добавлен 25.11.2010

  • История появления и распространения Turbo Pascal - среды разработки для языка программирования Паскаль. Общий вид объявления файлового типа. Входная, выходная и промежуточная информация. Алгоритм решения задачи: словесный алгоритм, блок-схема, программа.

    курсовая работа [359,4 K], добавлен 05.01.2010

  • Строгая типизация и наличие средств структурного (процедурного) программирования императивного языка Pascal. Структура программы, выражения, строки. Правила и описание типов, процедур и функций, операторов ввода - вывода, модулей и подпрограмм.

    курсовая работа [37,3 K], добавлен 28.06.2008

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.