0% нашли этот документ полезным (0 голосов)
11 просмотров21 страница

Al 17

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

Загружено:

sergey.poltorak.main
Авторское право
© © All Rights Reserved
Мы серьезно относимся к защите прав на контент. Если вы подозреваете, что это ваш контент, заявите об этом здесь.
Доступные форматы
Скачать в формате PDF, TXT или читать онлайн в Scribd
0% нашли этот документ полезным (0 голосов)
11 просмотров21 страница

Al 17

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

Загружено:

sergey.poltorak.main
Авторское право
© © All Rights Reserved
Мы серьезно относимся к защите прав на контент. Если вы подозреваете, что это ваш контент, заявите об этом здесь.
Доступные форматы
Скачать в формате PDF, TXT или читать онлайн в Scribd
Вы находитесь на странице: 1/ 21

Алгоритмы

и
алгоритмические языки

Лекция 18
Язык Паскаль: файловые типы
Язык Паскаль.Типы данных

целый
вещественный стандартные
логический
простые символьный
перечислимые
ограниченные

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

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

Пустой файл - файл, не содержащий ни одного элемента.


f a b c d - файл
- маркер

f↑ c - буфер

программа
Считывать элементы из файла можно только последовательно
Запись элементов происходит в конец файла 3
Описание файловых типов и переменных
Файловый тип – множество всех файлов, имеющих один и тот
же базовый тип

<файловый тип> ::= file of <базовый тип>

Примеры
type Т1 = file of char;
Т2 = file of array[1..10] of boolean;

Переменные-файлы

var t: Т1;
b1, b2: T2;
z: file of real;

4
Операции над файлами
Присваивание файлов запрещено!
Передача файла в процедуру или функцию – только по ссылке
procedure P(var ff:T1);
Режимы работы с файлом

– чтение
– запись

Установив какой-то режим, можно выполнять только чтение (или


только запись)
Менять режим работы с файлом можно любое число раз.

Обозначения:
type T = ….....
var f: file of T;
x: T; 5
{f↑ - буферная переменная}
Работа в режиме чтения
1. Установка режима чтения

reset(f)

Если файл пуст, после reset значение буферной переменной не


определено

2. Проверка на конец файла

true, если маркер файла указывает на позицию за


eof(f) = последним элементом
false, если маркер указывает на какой-то элемент файла

6
Работа в режиме чтения
3. Считывание элемента из файла
get(f)

x:=f↑; get(f); x:=f↑

get(f) get(f) get(f) f a b c get(f)


f a b c f a b c f abc
ошибка
f↑ a f↑ b f↑ c f↑ ?
x x x

Особые случаи:
1. Если до выполнения get маркер указывал на последний элемент
файла, то после get
значение буферной переменной не определено,
eof(f) = true
2. Если перед выполнением get было eof(f)=true, то get будет
ошибкой 7
Работа в режиме чтения
Пример
Суммирование элементов файла

var G: file of real; S: real;

S:=0;
reset(G); {на начало G + режим чтения}
while not eof(G) do {пока не конец G}
begin
S:=S+G↑; {добавить в S очередное число}
get(G) {к следующему элементу файла}
end

8
Работа в режиме чтения
3. Запись элемента файла в переменную

read(f,x)

x:=f↑;
get(f)

Пример: сумма элементов файла

S:=0;
reset(G);
while not eof(G) do
begin
read(G,x);
S:=S+x
end;
9
Работа в режиме записи
1. Установка режима записи

rewrite(f)

Запись в файл выполняется


с самого начала файла и
после уничтожения всего предыдущего содержимого файла.

2. Запись элемента в файл put(f)


f↑:= 'a'

┌─────── put(f) ┌──────────f↑:='b';put(f) ┌──────


f │ -----> f │ a ------------> f│ a b
└─────── └────────── └─────

10
Работа в режиме записи
3. Запись элемента в файл – write

write(f,x)

f↑:=x;
put(f)

Пример:
Запись в файл всех цифр
var t: file of char;
c: char;

rewrite(t); {очистка t + режим записи}


for c:='0' to '9' do
begin t↑:=c; put(t) end;
{ write(t,c) } 11
Реализация дополнительных операций
для работы с файлами
Копирование содержимого одного файла в другой

type F = file of T;
{в качестве Т - любой допустимый тип}

procedure copy(var source, dest:F); {source → dest}


var x: T;
begin
reset(source); rewrite(dest);
while not eof(source) do
begin
read(source,x);
write(dest,x);
end
end; 12
Связь имени файла с файловой переменной

var
f: file of T; {T – любой допустимый тип}

begin
assign (f, 'data.txt')

{работа с файлом}

close(f)
end;

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

text – стандартный тип текстовых файлов

var t : text;

┌─────────────────────────────────
t│ a b c ▓ ▓ d e ▓ ...
└─────────────────────────────────

text и file of char – разные типы

14
Операции над строками текстового файла
1. Логическая функция eoln(t)

true, если маркер файла t на конце строки


eoln(t) =
false, если маркер файла t на обычном символе
┌────────── ┌────────── ┌──────────
t│abc▓d▓ef t│abc▓d▓ef t│abc▓d▓ef
└────────── └────────── └──────────
↑ ↑ ↑

t↑ b eoln(t)=false t↑ eoln(t)=true eof(t)=true ->

eoln(t)-ошибка

При eoln(t) = true t↑=' '


15
Операции над строками текстового файла
2. Переход на начало следующей строки - процедура readln(t)

a b c ▓d e ▓ ▓ a b c ▓d e ▓ ▓ a b c ▓d e ▓ ▓

readln(t) readln(t)

while not eoln(t) do


get(t);
get(t);

3. Запись конца строки в файл - процедура writeln(t)

16
Работа с текстовым файлом. Пример
Подсчет количества строк, начинающихся с #, в текстовом
файле t

k:=0;
reset(t);
while not eof(t) do {цикл по строкам}
begin
if not eoln(t) then {непустая строка}
begin
read(t,c);
if c= '#' then k:=k+1
end;
readln(t) {пропускаем оставшиеся символы строки}
end

17
Файлы input и output
input – стандартный файл ввода
output – стандартный файл вывода

{
var input, output : text;

reset(input);
rewrite(output);
}

Сокращенная запись:
read(x) = read(input, x)
readln = readln(input)
write(x)= write(output,x)
writeln = writeln(output)

18
Расширенные возможности чтения и записи
для текстовых файлов
var t : text;
Ввод
read(t,x) x - char, integer или real

read(t,x1,...,xn) = read(t,x1);...;read(t,xn)
readln(t,x1,...,xn) = read(t,x1,...,xn);readln(t)
Вывод
write(t,p)
p - это e, e:m или e:m:n
e – выражение типа char, boolean, integer или real,
либо строка
m – ширина поля вывода
n – количество цифр в дробной части результата e
write(t,p1,...,pn) = write(t,p1);...;write(t,pn)
writeln(t,p1,...,pn) = write(t,p1,...,pn);writeln(t)
19
Внутренние и внешние файлы
Внутренние файлы существуют только во время выполнения
программы: появляются в начале ее работы и уничтожаются при
выходе их нее

Внешние файлы существуют до/после работы программы.


Пример: input, output

Для использования внешних файлов необходимо указать их в


заголовке программы:
program p(input, output, A,B)
Файлы, описанные в программе, но не указанные в заголовке,
являются внутренними

20
Пример работы с текстовыми файлами
var А, B: text; Переписать содержимое файла А в файл В с
сохранением деления на строки
begin {Free Pascal – использует assign и close }
assign(А,’one.txt’); assign(B,’two.txt’);
reset(А); rewrite(B);
while not eof(A) do
if eoln(A) then
begin
readln(A);
writeln(B)
end
else
begin
read(A,c); {c:char}
write(B,c)
end;
close(A); close(B) 21
end.

Вам также может понравиться