Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Файлы.doc
Скачиваний:
5
Добавлен:
12.11.2019
Размер:
517.12 Кб
Скачать

Добавление информации в текстовый файл

Для текстовых файлов предусмотрена возможность добавления информации в их конец. Для этого следует открывать файл не процедурой ReWrite, а процедурой Append (от англ. Append – добавить).

Append (<файловая переменная>);

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

Допишем к файлу, созданному в программе WriteTextFile, еще одну строку: «Состоит из двух строк»

Program WriteTextFile2;

Var

t: Text;

Begin

Assign (t, ‘text1.txt’);

Append (t);

{Открытие файла для добавления информации}

Write (t, ‘Состоит из двух строк’);

Close (t);

End.

Задание 5. Напишите программу создание файла в текущем каталоге и записи в него строки, содержащей ФИО вашего классного руководителя. Закройте файл. Добавьте в созданный вами файл информацию о том, какой предмет преподает ваш классный руководитель.

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

Суммы цифр числа =

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

Определение размера текстового файла

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

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

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

Пример 3. Запись в текстовый файл произвольного количества чисел

Program WriteTemps;

Uses Crt;

Var

T: real;

TNumber: Integer;

i: Integer;

F: Text;

Begin

ClrScr;

Write(‘Введите количество измерений температуры: ’);

Readln(TNumber);

{Ввод количества измерений, которые необходимо сохранить в файл}

Assign(F, ‘temps.txt’);

{Сопоставление файловой переменной файлу temps.txt, файл считается текстовым}

Rewrite(F);

{Открытие файла temps.txt для записи}

For i:=1 to TNumber Do

begin

{Цикл по количеству измерений введенному пользователем в переменную TNumber}

Write(‘Введите измерение номер ’, i , ‘: ’);

Readln(T);

{Ввод очередного значения с клавиатуры}

Writeln(F, T);

{Запись введенного значения в файл}

End;

Close(F);

Writeln(‘Информация успешно сохранена.’);

ReadKey;

End.

Таким образом, после выполнения программы в файле temps.txt количество строчек будет равняться числу измерений.

Напишем программу, которая считает весь файл temps.txt, заранее не зная его размера. Для этого используем функцию:

EOF(<файловая переменная>) – (End Of File – конец файла) – возвращает истинное значение, если достигнут конец заданного файла; ложное значение, если конец файла не достигнут.

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

W

Тело цикла

hile not EOF(<файловая переменная>) do

Repeat

Тело цикла

Until EOF(<файловая переменная>)

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

Пример 4. Чтение из текстового файла произвольного количества чисел

Program ReadTemps;

Uses Crt;

Var

T, Sum: real;

TNumber: Integer;

F: Text;

Begin

ClrScr;

Assign(F, ‘temps.txt’);

{Сопоставление файловой переменной файлу temps.txt, файл считается текстовым}

Reset(F);

{Открытие файла temps.txt для чтения}

Sum:=0;

{Сумма прочитанных из файла чисел}

TNumber:=0;

{Счетчик количества чисел в файле}

While not EOF(F) do

begin

Readln(F,T);

{Чтение из файла одного числа в переменную T}

Sum:=Sum+T;

{Увеличение суммы прочитанных чисел}

Inc(TNumber);

{Увеличение счетчика прочитанных чисел}

End;

Close(F);

Writeln(‘Средняя температура = ’, Sum/TNumber : 6:3);

ReadKey;

End.

EOLn(<файловая переменная>) – (End Of Line – конец строки) – возвращает истинное значение, если достигнут конец строки; ложное значение, если конец строки не достигнут.

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

Задание 9. Напишите программу подсчета количества однозначных чисел, двухзначных чисел, трехзначных чисел, четырехзначных чисел, записанных в файле в столбик. Результат запишите в новый файл, созданный на жестком диске. (с помощью оператора Case).

Задание 10. Напишите программу, считывающую из файла координаты вершин треугольника (координаты каждой точки записаны в отдельной строке) и подсчитывающую периметр и площадь треугольника. Результат записать в файл с вершинами.

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

Урок 5 (2 часа)