Инфоурок Информатика Другие методич. материалыЯзык программирования Паскаль. Работа с файлами

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

Скачать материал

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

Типы данных, с которыми мы до сих пор имели дело (числовые:integer, real и др.; строковые: string и т. д.), предназначены для манипулирования информацией, содержащейся в оперативной памяти компьютера. Однако известно, что оперативная память способна хранить данные только временно – пока компьютер включен. Но как сохранить информацию, чтобы была возможность пользоваться ей и после выключения компьютера. Для этого, данные сохраняют в долговременной памяти (дисковые накопители) в виде файлов.

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

В Паскале существует три типа файловых переменных:

1.      Типизированные;

2.      Текстовые;

3.      Нетипизированные.

 

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

 

I  Описание файловых переменных.

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

§  Для типизированных файлов:

Var f:file of a;

Где f – имя файловой переменной,

а – тип элементов содержащихся в файле (integer, real, string и др.),

file и ofслужебные слова, имеющие смысл файл и из.

Например: Var f:file of integer;

§  Для текстовых файлов:

Var f:text;

Где f – имя файловой переменной,

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

§  Для нетипизированных файлов:

Var f:file;

Где f – имя файловой переменной,

fileобозначает, что тип файловой переменной нетипизированный.

 

 

II  Ассоциирование файла с файловой переменной.

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

Формат процедуры:

Assign(f, ‘name’);

Где f – имя файловой переменной любого вида, с которой ассоциируется файл с диска, имеющий имя name (параметр name принадлежит типу string).

Например:

                        Assign(f, ‘c:\lesson.txt’);

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

 

III  Открытие файла.

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

 Для открытия файлов предназначены процедуры Reset, Rewrite, Append.

1.   Процедура Reset.

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

Формат:       

                  Reset (f);

Где f – файловая переменная любого типа.

Файл, открываемый с помощью процедуры Reset, непременно должен уже существовать. Иначе – ошибка.

2.   Процедура Rewrite.

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

Формат:       

                  Rewrite (f);

 Отличие между процедурами Reset и Rewrite:

1)      если процедуру Reset применить к несуществующему файлу, будет иметь место ошибка; процедура Rewrite в этом случае создаст новый файл;

2)      если процедуру Reset применить к уже существующему файлу, файл будет открыт; процедура Rewrite в этом случае удалит содержимое старого файла и создаст новый файл с тем же именем.

§ Процедура Append.

Эту процедуру можно использовать только для открытия текстовых файлов.

Формат:       

                  Append (f);

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

 

IV Ввод-вывод.

Для осуществления ввода информации в файл и вывода из файла для текстовых и типизированных файлов предназначены процедуры Read и Write (Readln и Writelnтолько для текстовых файлов), а для нетипизированных - BlockRead и BlockWrite.

В Паскале имеется две стандартные файловые переменные  input и output , которые автоматически открываются при запуске программы и автоматически закрываются после работы. Эти две переменные ассоциируются не с файлами, а с конкретными устройствами компьютера: input - с клавиатурой: outputс монитором. Ранее мы использовали процедуры для вывода информации  на экран - write(a,b,’вывод на экран’) и ввода с клавиатуры read(a,b).

Их можно записать иначе:  write(output,a,b, ’вывод на экран’) и read(input,a,b) соответственно. Здесь первый оператор записывает в файл output (т.е. выводит на экран) значения переменных a и b, а также строку текста ’вывод на экран’. Второй оператор считывает из файла input значения (т.е. позволяет ввести их с клавиатуры), которые будут присвоены переменным a и b. Первая и вторая пары операторов эквивалентны. Поэтому, в процедурах read и write, когда требуется осуществить ввод с клавиатуры или вывод на экран, указывать файл (input или output) необязательно.

Упомянутые стандартные файлы можно «переассоциировать». Для этого достаточно воспользоваться процедурой assign, например:

Assign(output,’text.txt’);

Если после этого в данной программе вызвать процедуру write без указания файла, соответствующая информация окажется, записана в файл text.txt.

 

1.      Ввод-вывод для типизированных файлов.

Использование процедуры считывания read для типизированных файлов заключается в считывании одного или нескольких компонентов файла и присвоении значения некоторой переменной.

 

Формат процедуры считывания из типизированного файла:

Read(f,v1,v2,…,vn);

Где fфайловая переменная;

v1,v2,…vnимена переменных, которым будут присвоены данные из файла.

Например:

Read(f,v1,v2);

 

Запись в файл осуществляется процедурой write. Использование данной процедуры для типизированных файлов заключается в присвоении значения некоторой переменной компоненту файла.

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

Write(f,v1,v2,…vn);

Где fфайловая переменная;

v1,v2,…vnимена переменных, значения которых записывается в файл. Они должны быть того же типа, что и компоненты файла.

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

 

2.      Ввод-вывод для текстовых файлов.

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

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

Read(f,v1,v2,…vn);

Где fфайловая переменная;

v1,v2,…vnимена переменных, которым будут присвоены данные из файла.

Например:

Read(f,v1,v2);

Как будет выполняться эта строка:

-          если переменные v1,v2 типа Char, то из файла считывается символ и присваивается переменной v1, затем считывается следующий символ и присваивается следующей переменной v2 (если очередной считанный символ окажется маркером конца файла, то выполнение процедуры считывания будет прекращено и программа перейдет к следующему оператору);

-          если переменные v1,v2 типа string, то из файла считываются символы до ближайшего маркера конца строки (пробел или enter) и присваиваются переменной v1, а переменной  v2 будет присвоено нулевое значение. А для того чтобы считывать несколько строк, необходимо использовать не Read, а readln;

-          если переменные v1,v2 типа integer или real,то из файла будут считываться только символы являющиеся числом.

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

Write(f,v1,v2,…vn);

Где fфайловая переменная;

v1,v2,…vnимена переменных, значения которых записывается в файл.

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

Например:

Rewrite(f);

Write(f,v1,v2);

Как будет выполняться этот фрагмент:

процедурой Rewrite(f) открывается файловая переменная f; процедура Write(f,v1,v2) записывает в файл значения переменных v1,v2.

3.      Ввод-вывод для нетипизированных файлов.

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

Reset(f,512);

Rewrite(f,256);

Здесь f – файловая переменная, имеющая тип file (что соответствует нетипизированным файлам). Второй параметр (512 и 256) – это размер записей (в байтах), которыми будет производиться считывание из файла или запись в файл данных. Если этот параметр не задан, по умолчанию длина записи считается равной 128 байт.

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

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

Формат процедуры blockread:

Blockread(f,buf,c,r);

Где f – нетипизированная файловая переменная;

Buf – переменная, ранее объявленная в программе и используемая в качестве рабочего буфера. Размер этого буфера, который предназначен для обменов, не должен быть меньше длины записи, определенной при открытии файла процедурой Reset или Rewrite. Имя этой переменной в качестве параметра указывается при вызове процедуры Blockread.

Cвыражение или значение, соответствующее количеству записей, которые следует считать из файла;

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

Формат процедуры blockwrite:

Blockwrite(f,buf,c,r);

Где f – нетипизированная файловая переменная;

Buf – переменная, ранее объявленная в программе и используемая в качестве рабочего буфера. Размер этого буфера, который предназначен для обменов, не должен быть меньше длины записи, определенной при открытии файла процедурой Reset или Rewrite. Имя этой переменной в качестве параметра указывается при вызове процедуры Blockwrite.

Cвыражение или значение, соответствующее количеству записей, которые следует добавить в файл;

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

 

V Специальные операции.

1.   Процедура Seek.

Эта процедура устанавливает указатель на определенный элемент в файле. Файл, к которому применяется процедура Seek, должен быть открыт.

Формат процедуры:

Seek(f,n);

Где f – файловая переменная;

n – номер элемента в файле.

Например, для того чтобы переместить указатель текущей позиции к третьему элементу файла, процедура выглядит так:    Seek(f,3);

 

2.   Процедура Truncate.

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

Формат процедуры:

Truncate(f);

Где f – файловая переменная.

 

3.   Функция FileSize.

Определяет длину файла (т.е. число содержащихся в нем элементов). При этом файл должен быть открыт.

Формат функции:

FileSize(f);

Где f – файловая переменная любого типа, за исключением Text.

 

4.   Функция FilePos.

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

Формат функции:

FilePos(f);

Где f – файловая переменная любого типа за исключением Text.

 

5.   Функция EoF.

Значение этой функции истина (true), когда указатель текущей позиции находится в конце файла, либо если файл пустой, и ложь (false), во всех других случаях. Эта функция позволяет «нащупать» конец файла.

 Формат функции:

EoF(f);

 

VI  Закрытие файлов.

Открытые файлы закрываются процедурой close.

Формат процедуры:

Close(f);

 

VII. Удаление файла.

Формат процедуры:

Erase(f);

Fфайловая переменная.

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

 

Итак, при работе с файловыми переменными, возможны следующие операции, которые подробно описаны выше:

I  Описание файловых переменных.

II  Ассоциирование файла с файловой переменной.

III  Открытие файла.

IV Ввод-вывод.

V Специальные операции.

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

VII. Удаление файла.

 

Примеры:

1.       С клавиатуры вводятся пять чисел. Определить все четные числа и записать их в файл.

Uses crt;

Var f:text;

a,x:integer;

begin

assign(f,’c:\file’);

rewrite(f);

for x:=1 to 5 do

begin

readln(a);

if a mod 2=0 then write(f,a);

end;

close(f);

end.

 

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

uses crt;

var f1,f2:text;

x,a,b:integer;

begin

assign(f1,’c:\file1’);

assign(f2,’c:\file2’);

rewrite(f1);

rewrite(f2);

for x:=1 to 5 do

    begin

      readln(a);

      writeln(f1,a);

    end;

close(f1);

reset(f1);

for x:=1 to 5 do

     begin

       readln(a);

        b:=a*2;

        writeln(f2,b);

      end;

close(f1);

close(f2);

end.

 

3.      В конец файла file2 из предыдущей задачи добавить строку ‘Конец файла’.

Uses crt;

Var f2:text; c:string;

Begin

C:= ‘Конец файла’

Assign(f2,’c:\file2’);

Append(f2);

Writeln(f2,c);

Close(f2);

End.

 

Задачи:

1.        Создать типизированный файл и записать в него:

a.        Число 4,5

b.        Слово «Привет»

c.        5 одинаковых целых чисел.

d.        Таблицу Пифагора.

Записываемые данные, кроме таблицы Пифагора, вводятся с клавиатуры.

2.        В конец существующего файла с таблицей Пифагора записать фразу  «конец таблицы».

3.        Вывести на экран таблицу Пифагора из файла, созданного ранее.

4.        Имеется типизированный файл с целыми числами. Все его четные элементы заменить нулями.

5.        Имеется типизированный файл с числами А1. Переписать все числа из этого файла в конец существующего файла А2.

 

Просмотрено: 0%
Просмотрено: 0%
Скачать материал
Скачать материал "Язык программирования Паскаль. Работа с файлами"

Методические разработки к Вашему уроку:

Получите новую специальность за 2 месяца

Противопожарный инженер

Получите профессию

Интернет-маркетолог

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Скачать материал

Найдите материал к любому уроку, указав свой предмет (категорию), класс, учебник и тему:

6 654 388 материалов в базе

Скачать материал

Другие материалы

Вам будут интересны эти курсы:

Оставьте свой комментарий

Авторизуйтесь, чтобы задавать вопросы.

  • Скачать материал
    • 01.10.2017 1452
    • DOCX 69 кбайт
    • Оцените материал:
  • Настоящий материал опубликован пользователем Снурницин Юрий Алексеевич. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт

    Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.

    Удалить материал
  • Автор материала

    Снурницин Юрий Алексеевич
    Снурницин Юрий Алексеевич
    • На сайте: 6 лет и 6 месяцев
    • Подписчики: 0
    • Всего просмотров: 8263
    • Всего материалов: 6

Ваша скидка на курсы

40%
Скидка для нового слушателя. Войдите на сайт, чтобы применить скидку к любому курсу
Курсы со скидкой

Курс профессиональной переподготовки

Менеджер по туризму

Менеджер по туризму

500/1000 ч.

Подать заявку О курсе

Курс профессиональной переподготовки

Управление сервисами информационных технологий

Менеджер по управлению сервисами ИТ

600 ч.

9840 руб. 5900 руб.
Подать заявку О курсе
  • Сейчас обучается 26 человек из 19 регионов
  • Этот курс уже прошли 34 человека

Курс повышения квалификации

Применение компьютерных моделей при обучении математике и информатике в рамках ФГОС ООО

72 ч. — 180 ч.

от 2200 руб. от 1100 руб.
Подать заявку О курсе
  • Сейчас обучается 51 человек из 29 регионов
  • Этот курс уже прошли 176 человек

Курс профессиональной переподготовки

Информатика: теория и методика преподавания в профессиональном образовании

Преподаватель информатики

300/600 ч.

от 7900 руб. от 3950 руб.
Подать заявку О курсе
  • Сейчас обучается 49 человек из 21 региона
  • Этот курс уже прошли 148 человек

Мини-курс

Психологические аспекты развития и состояния личности

4 ч.

780 руб. 390 руб.
Подать заявку О курсе

Мини-курс

Развитие коммуникации и речи у детей раннего возраста

4 ч.

780 руб. 390 руб.
Подать заявку О курсе
  • Сейчас обучается 31 человек из 17 регионов
  • Этот курс уже прошли 18 человек

Мини-курс

Основы налогообложения и формирования налогооблагаемых показателей

2 ч.

780 руб. 390 руб.
Подать заявку О курсе