Слайд 1Программирование
в Pascal
Работа с файлами.
Программирование – вторая грамотность.
А.П.Ершов
Мурзина Ольга Ивановна,
учитель
информатики МБОУ «Лицей» г. Арзамаса
Слайд 2Файл – это набор данных, хранящийся во внешней памяти компьютера
(на жестком диске, флэшке, дискете, компакт-диске и т.п.) под заданным
именем.
Слайд 3Файлы используются для
ввода информации (исходные данные – аргументы алгоритма) для
обработки в программу;
вывода в них и последующего хранения полученных результатов
(выходные данные – результаты алгоритма).
Слайд 4Имена файлов, как правило, имеют длину до 8 символов, а
расширения - до 3.
Например:
input.dat
output.dat
input.txt
output.txt
train.inp
train.out
Слайд 5Для того, чтобы работать с файлом необходимо для него:
1. Объявить
файловую переменную в разделе описания переменных VAR
2. В теле программы
связать файловую переменную с физическим файлом на диске
3. Инициировать вид работы с файлом: чтение, запись или дополнение
Слайд 6Для того, чтобы работать с файлом необходимо для него:
4. Выполнить
чтение данных из файла
5. Выполнить запись (дополнение) в файл
6. Закрыть
файл
Слайд 7Во Free Pascal имеются три вида файлов:
Текстовый файл (объявляется
типом text);
Типизированный файл (объявляется предложением file of тип);
Нетипизированный
файл (объявляется типом file).
Слайд 8Объявление файла:
Примеры:
var
t:text;
f:file
of integer;
m:file of real;
f1:file of zapic;
f2:file;
…
Слайд 9Связывание файловой переменной с физическим файлом на диске командой (процедурой):
assign(,
файла>);
Пример:
var
t:text;
i:integer;
begin
… assign(t,’c:\work1\a01.txt’);
Слайд 10Инициирование вида работы с файлом одной из команд (процедур):
reset(файловая переменная);
для чтения (открывается файл, и указатель устанавливается на
начало. Если файла не существует, возникает ошибка);
rewrite(файловая переменная);
для записи (открывается файл, и указатель устанавливается на начало. Если файл существует, он очищается);
append(файловая переменная);
для дозаписи (открывается файл и указатель устанавливается на последнюю запись).
Слайд 11read(файловая переменная, список переменных);
для всех файлов
readln(файловая переменная, список переменных);
только для
текстовых файлов;
каждый раз указатель смещается на число прочитанных записей
Слайд 12Команды (процедуры)
записи в файл
write(файловая переменная, список переменных);
для всех файлов
writeln(файловая переменная, список переменных);
только для
текстовых файлов
Слайд 13close(файловая переменная);
если команда в программе отсутствует, то файл закрывается автоматически
вместе с завершением программы.
Слайд 14eof(файловая переменная)
используется для проверки достижения конца файла и является
сокращением от
end
of
file
Слайд 15 eoln(файловая переменная)
используется для проверки достижения конца строки файла
и является сокращением от
end
of
line
(только для текстовых файлов)
Слайд 16Какую задачу решает программа?
program a01;
var
t:text; i:integer;
begin
assign(t,'c:\work\a01.txt');
rewrite(t);
randomize;
for i:=1 to 100 do
writeln(t,random(100)-50);
close(t)
end.
Слайд 17Какую задачу решает программа?
program a02;
var
t,t1:text; x:integer;
begin
assign(t,'c:\work\a01.txt');
assign(t1,'c:\work\a02.txt');
reset(t);
rewrite(t1);
while not eof(t) do
begin
read(t,x);
write(x:5);
if x>0 then x:=sqr(x)
else x:=-x;
writeln(x:5); writeln(t1,x);
end;
close(t); close(t1);
end.
Слайд 18Что делает эта программа? Почему числа выводятся именно так?
program primer1;
var
t:text;
i:integer;
begin
assign(t,’primer1.txt');
rewrite(t);
for i:=-3 to 5 do
writeln(t,i);
close(t)
end.
-3
-2
-1
1
2
3
4
5
Файл primer1.txt
Слайд 19Как изменился формат вывода? Почему?
program primer2;
var
t:text;
i:integer;
begin
assign(t,’primer2.txt');
rewrite(t);
for i:=-3 to 5 do
write(t,i);
close(t)
end.
-3-2-1012345
Файл primer2.txt
Последующее чтение
из файла primer2.txt в целочисленные переменные невозможно
Слайд 20Что изменилось теперь?
program primer3;
var
t:text; i,p:integer;
begin
assign(t,’primer3.txt');
rewrite(t);
p:=0;
for
i:=-3 to 5 do begin
if p>0 then
write(t,’ ‘);
write(t,i);
inc(p);
end;
close(t)
end.
-3 -2 -1 0 1 2 3 4 5
Файл primer3.txt
Последующее чтение из файла primer3.txt в целочисленные переменные обеспечено
Слайд 21Чтение из файла в переменные разного типа
program primer4;
var
t:text;
a,b,c:integer;
s:string;
begin
assign(t,’primer4.txt');
reset(t);
read(t,a,b,c,s);
close(t)
end.
1 2
3 four
Файл primer4.txt
Результат такой же
как после выполнения операторов
a:=1;
b:=2;
c:=3;
s:=‘four’;
Слайд 22Разбор и решение одной олимпиадной задачи
(ВОШ, школьный этап 2014/2015
уч. года)
«Цапли – 100 баллов».
Требуется написать программу, которая по
заданным числам a и b выведет минимальное количество цапель, которое могло быть в вольере.
Ваша программа должна:
прочитать из исходного файла task1.in два целых числа a и b, которые разделены в нем ровно одним пробелом (1 ≤ a ≤ 109, 1 ≤ b ≤ 109);
подсчитать и вывести в файл task1.out одно число – минимальное количество цапель, которое могло быть в вольере.
Например: