Загрузка данных
На предоставленных изображениях содержится практическое занятие №39 на тему «Разработка программ работы с текстовыми файлами на Pascal ABC».
Ниже приводится подробный разбор теоретического материала, ответов на контрольные вопросы и решений практических заданий.
Изучение нового материала (Краткая выжимка)
* Текстовый файл в Паскале — это совокупность строк произвольной длины, разделенных метками конца строки, а весь файл заканчивается меткой конца файла.
* Основные шаги при работе с файлом:
* Связывание файловой переменной с файлом на диске с помощью процедуры assign(variable, 'path');
* Открытие файла для чтения (reset), записи (rewrite) или добавления (append).
* Чтение или запись данных (read, readln, write, writeln).
* Закрытие файла с помощью процедуры close(variable);
Контрольные вопросы и ответы на них
* Что такое текстовый файл?
* Ответ: Это совокупность строк произвольной длины, разделенных метками конца строки, с общей меткой конца файла в конце.
* Какие существуют виды текстовых файлов?
* Ответ: Текстовые (тип text) файлы со строками неопределенной длины, файлы с типом записей (двоичные/типизированные file of) и файлы без типа для передачи данных блоками записей (нетипизированные file).
* Как описать файловые переменные?
* Ответ: С помощью ключевого слова var и указания типа, например: f: text;.
* Как открыть файл?
* Ответ: С помощью процедур reset(f) (для чтения существующего), rewrite(f) (для создания нового/перезаписи) или append(f) (для добавления в конец).
* Как прочитать файл?
* Ответ: Построчно или посимвольно с помощью процедур read(f, ...) или readln(f, ...), проверяя конец файла через функцию eof(f).
* Как записать в файл?
* Ответ: С помощью процедур write(f, ...) или writeln(f, ...).
Практические задания (Решения на Pascal ABC)
Задание 1
Условие: В файле text.txt записаны строки. Вывести первую и третью из них на экран.
var
filetext: text;
a, b, c: string;
begin
assign(filetext, 'c:\text.txt');
reset(filetext);
readln(filetext, a); // читаем 1-ю строку
readln(filetext, b); // читаем 2-ю строку
readln(filetext, c); // читаем 3-ю строку
close(filetext);
writeln(a);
writeln(c);
end.
Задание 2
Условие: Считать из файла input.txt числа (записаны в столбик). Затем записать их произведение в файл output.txt.
var
p, x: integer;
f: text;
begin
assign(f, 'input.txt');
reset(f);
p := 1;
while not eof(f) do
begin
readln(f, x);
p := p * x;
end;
close(f);
assign(f, 'output.txt');
rewrite(f);
writeln(f, 'Произведение чисел ', p);
close(f);
end.
Задание 3 (Добавление строки S в начало файла)
Условие: Дана строка S и текстовый файл. Добавить строку S в начало файла.
(Полное решение с использованием вспомогательного файла):
var
F_in, F_out: Text;
Name, S: String;
begin
Write('Введите строку S: ');
Readln(S);
Write('Введите имя файла: ');
Readln(Name);
Assign(F_in, Name);
Assign(F_out, 'c:\text1.txt');
Reset(F_in);
Rewrite(F_out);
Writeln(F_out, S); // Записываем новую строку первой
while not eof(F_in) do
begin
Readln(F_in, Name); // Используем переменную как буфер для чтения строк старого файла
Writeln(F_out, Name);
end;
Close(F_in);
Close(F_out);
Erase(F_in); // Удаляем старый файл
Rename(F_out, Name); // Переименовываем временный файл в исходный
end.
Задание 4
Условие: Создать текстовый файл, в который записать 3 предложения. Прочитать этот файл, вывести его содержимое на экран и определить длину каждого предложения.
Program File_text;
var
fl: text;
st: string;
n: byte;
begin
assign(fl, 'file1.txt');
rewrite(fl);
writeln(fl, 'Очень полезно изучать');
writeln(fl, 'язык Pascal');
close(fl);
reset(fl);
while not eof(fl) do
begin
readln(fl, st);
writeln(st);
n := length(st);
writeln('длина =', n);
end;
close(fl);
end.