- •Внутреннее представление данных
- •1) Представление чисел
- •2) Представление текстовых данных.
- •3) Представление мультимедийной информации
- •2. Основные этапы обработки программ пользователя.
- •Средства записи алгоритмов. Виды алгоритмов
- •4. Основные этапы решения задачи на компьютере.
- •Структура программы на языке Паскаль
- •6. Идентификаторы, числа, строки, выражения .
- •Операторы ввода/вывода данных
- •8. Числовые типы данных .
- •Полезные функции
- •Логические операции над битами
- •Символьный тип данных
- •10. Логический тип данных (Boolean) .
- •11.Перечисляемый и ограниченный типы.
- •Функция succ(X)
- •Функция pred(X)
- •Функция ord(X)
- •12. Раздел описания типов и констант . Типизированные константы.
- •Оператор присваивания, составной и условные операторы
- •Составной оператор
- •Оператор if-else
- •14. Операторы цикла.
- •Циклы включают в себя
- •Цикл for
- •Итерационные циклы Цикл while
- •Цикл repeat
- •16. Оператор выбора.
- •Массивы и переменные с индексами
- •18. Сортировка массивов.
- •Метод "пузырька"
- •Сортировка вставками
- •Строковые типы данных.
- •20. Приведение типов в Паскале.
- •Правила работы с типами данных
- •Пример задачи, где используется явное преобразование типов
- •21. Тип множество (Set).
- •23. Файловые типы данных
- •Классификация файлов в tp
- •24. Типизированные файлы. Создание и просмотр файлов.
- •25. Корректировка и дозапись компонент в типизированных файлах.
- •26. Текстовые файлы.
- •27. Корректировка и дозапись информации в текстовый файл.
- •28.Описание и вызов процедур в Паскале.
- •Параметры-значения, параметры-переменные
- •29. Описание и вызов функций в Паскале.
- •30.Область действия переменных при использовании подпрограмм.
- •31.Способы передачи параметров в подпрограммы.
- •32.Рекурсивное описание процедур и функций.
- •Существует два вида рекурсий:
- •33. Динамические типы данных. Простейшие действия с указателями.
- •34.Создание и обработка динамических списков
- •35. Создание и обработка стеков.
- •36.Создание и обработка очередей.
- •37. Создание и использование таблиц.
- •40.Буферизированный и небуферизированный ввод данных.
24. Типизированные файлы. Создание и просмотр файлов.
Более характерным для Pascal являются типизированные файлы, или файлы произвольного доступа (последовательный+прямой). Основным свойством этих файлов является то, что их структура данных представляет собой последовательностькомпонентов одного типа. Описывают подобный файл словосочетаниемfile ofс последующим указанием типа компонентов файла, число которых (длина файла) не фиксируется:
varимя_файла:fileofтип_компонентов
Поскольку известен тип элементов файла, а следовательно, и объем памяти, отводимой под каждый из них, можно рассчитать позицию каждого из элементов внутри файла. Это позволяет организовать непосредственный доступ к любому элементутипизированного файла.
Чтобы можно было работать с типизированным файлом, необходимо, как и для текстовых файлов, сначала связать имя файловой переменной с внешним именем файла(операторAssign). Затем нужно открыть его (используются операторыResetиRewrite, но неAppend). ОператорыResetиRewriteоткрывают файли для чтения, и для записи(а не только для чтения или только для записи, как при использовании текстовых файлов). Отличие их в том, что операторResetоткрывает толькосуществующийфайл (если такого файла нет, будет сгенерирована ошибка времени выполнения). С другой стороны, операторRewriteсоздает новый файл (еслифайл с таким именем ужеимеется, то онбудет уничтожени создан заново). При открытии файла с ним связывается текущий указатель файла, который позиционируется на его первый элемент. Оперировать можно только тем элементом файла,на который ссылается указательфайла. При чтении или записи элемента файла происходит автоматическое перемещение указателя на следующий элемент. Чтение из типизированного файла производится операторомRead(но неReadLn), а запись в него — операторомWrite(но неWriteLn). Однако следует помнить, что в списке вывода оператора Write могут быть только переменные. Типы элементов файла и типы переменных в списках ввода-вывода должны быть согласуемы по присваиванию. Элементами типизированных файлов могут быть числовые, символьные, булевы, строковые значения, массивы, записи, но не файлы или структуры с файловыми элементами.
Узнать количество элементов типизированного файла (размер файла) можно с помощью функции FileSize, для которой используется следующий синтаксис:
FileSize(имя_файла)
Элементы типизированного файла нумеруются с нуля(порядковый номер последнего элемента файла на единицу меньше размера файла). Чтобы узнать, на каком элементе располагается указатель файла, используют функциюFilePos:
FilePos(имя_файла)
Текущим положением указателя можно управлять, для чего служит процедура Seek, которая использует следующий синтаксис:
Seek(имя_файла,номер_элемента)
Второй параметр (тип LongInt) задает номер элемента (отсчет от 0), на который должен переместиться указатель файла.
Как и для текстовых файлов, можно использовать функцию Eof(имя_файла), которая возвращает значениеTrue, если текущий указатель расположен на признаке конца файла (т. е. при выполнения равенстваFilePos(имя_файла) = FileSize(имя_файла)).
Процедура Seekи функцияFilePosиFileSizeпозволяют легко осуществлять коррекцию элементов типизированного файла, имя которого указано в качестве е параметра, начиная с элемента, на котором расположен указатель. Однако уничтожить элемент внутри файла нельзя, для этого файл должен быть перезаписан.
Текстовые файлы могут быть созданы текстовым редактором. Однако типизированные файлы создаются в результате работы какой-либо программы.
Пример записи данных в типизированный файл:
type
t_subscriber = record
surname: string[20];
tel: LongInt;
end;
var
subscriber: t_subscriber;
f: file of t_subscriber;
i: Integer;
begin
Assign(f,'notebook.dat');
Rewrite(f);
for i:=1 to 5 do begin
with subscriber do begin
Write('Surname: ');
ReadLn(surname);
Write('Phone: ');
ReadLn(tel);
end;
Write(f, subscriber);
end;
Close(f);
end.
Пример последовательного доступа к типизированному файлу:
type
t_subscriber = record
surname: string[20];
tel: LongInt;
end;
var
subscriber: t_subscriber;
f: file of t_subscriber;
s: string[7];
begin
Assign(f,'notebook.dat');
Reset(f);
while not Eof(f) do begin
Read(f, subscriber);
with subscriber do begin
str(tel,s);
if Copy(s,1,2) = '33' then
tel := tel+4000000;
end;
Seek(f,FilePos(f)-1); // возврат указателя назад
Write(f,subscriber);
end;
Close(f);
end.
В приведенной программе типизированный файл обрабатывается и как файл последовательного доступа, и как файл произвольного доступа.
type veshi=record
surname:string[20];
n:integer;
p:real;
end;
file_rec=file of veshi;
Просмотр файла
Procedure Print (var f:file_rec); {Процедура вывода информации из файла на экран}
const str=' ';
var v:veshi;
z,i:integer;
begin
clrscr; writeln;
if filesize (f)=0 then {Проверяем пуст ли файл}
writeln ('File is empty')
else
begin
seek(f,0);
while not eof(f) do
begin
read(f, v);
write (v.surname);
z:=length(v.surname);
z:=z+1;
for i:=z to 20 do
write (' ');
write (v.n,str);
writeln(v.p:7:2);
end;
end;
writeln; writeln ('Press "Enter"');
readln;
end;