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

Файлы в Pascal, типы файлов и основные оперции над ними.

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

Файлы принято разделять на физические и логические. Физические файлы имеют имя, и располагаются на съемном носителе, а логические это те переменные файлового типа, которые их представляют в программе.

В Паскале различают следующие три вида файлов (в скобках описаны ключевые слова для инициализации файловой переменной):

· текстовые файлы (text);

· типизированные (file of <тип>);

· бестиповые (file).

Немного позже мы разберемся с каждым из них. А сейчас рассмотрим основные операции для работы с файлами.

Создание файла

Assign(<имя файловой переменной>, <имя файла>)

Процедура Assign связывает переменную файлового типа с физическим файлом. Например, установить соответствие между переменной Fil и текстовым файлом lot, расположенном на диске D, можно так:

Assign(Fil, ‘D:\lot.txt’)

Режим чтения

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

Процедура Reset открывает файл в режиме чтения, после чего операторомRead(<файловая переменная>, <считываемый элемент>) можно осуществить последовательное считывание элементов в программу.

Конец файла

ЕOF(<имя файловой переменной>)

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

Режим записи

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

Открыв файл в режиме записи, можно поэлементно записать в него информацию, воспользовавшись процедурой Write(<файловая переменная>, <элемент>).

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

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

Процедура Close закрывает открытый файл, а также освобождает файловую переменную, указанную в качестве параметра.

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

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

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

Изменение имени файла

Rеnаmе(<имя файловой переменной>, ‘<новое имя файла>’)

Rеnаmе переименовывает физический файл, который перед этим следует закрыть процедурой Close.

Смещение указателя файла

Sееk(<имя файловой переменной>, <номер элемента>)

Процедура Sееk устанавливает позицию указателя в файле на необходимый элемент (нумерация элементов начинается с нуля).

Определение положения указателя

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

Функция FilePos принимает значение порядкового номера элемента, над которым в момент вызова находиться указатель.

Определение количества элементов

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

Функция FileSize определяет количество всех имеющихся в файле элементов.

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

Текстовые файлы могут состоять из элементов символьного (char) и строкового (string) типа данных. Ключевое слово Text указывает, что файловая переменная создается для работы именно с текстовым файлом:

Var <идентификатор>: Text;

Структура текстового файла представляет собой последовательность строк, которые в свою очередь состоят из символов. Любая строка оканчивается признаком «конца строки», а сам файл признаком «конца файла». Для определения конца файла в Паскаль есть функция EOF, а для конца строки –EOLn:

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

В случае достижения конца строки она (функция EOLn) принимает значение True, в противном случае False.

 

Примеры задач на работу с файлами в Pascal:

1.Создать файл X компонентами которого являются элемента массива M. Переписать из файла X в файл Y все компоненты, которые стоят на четных местах. Прочитать файл Y.
M = (0,1; 5,6; 0.8; 2,4; 7,3; 6,8; 0,5; 2,3;)

const M: array[1..8] of real = (0.1, 5.6, 0.8, 2.4, 7.3, 6.8, 0.5, 2.3);
var
x,y : file of real;

n: real; i: byte;
begin
assign(x,'x.dat');
assign(y,'y.dat');
rewrite(x);
for i:=1 to 8 do
write(x, M[i]);
close(x);
reset(x);
rewrite(y);
i := 1;
while not EOF(x) do begin
read(x, n);
if not odd(i) then
write(y, n);
i := i + 1;
end;
close(x); close(y);
reset(y);
while not EOF(y) do begin
read(y, n);
write(n:5:1);
end;
writeln;
close(y);
end.

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

var
f: file of char;
c: char; sum, n: word;

begin
assign(f,'nums.txt');
reset(f);
sum := 0;
while not eof(f) do begin
read(f,c);

if c <> ' ' then begin
val(c, n);
sum := sum + n;
end
else begin
write(sum:5);
sum := 0
end;
end;

writeln;
end.