
- •1. Подпрограммы
- •1.1. Описание подпрограмм
- •1.2. Обращение к подпрограммам
- •1.3. Виды параметров подпрограмм
- •1.3.1. Параметры-значения и параметры-переменные
- •1.3.2. Параметры процедурного типа
- •1.3.3. Параметры-константы
- •1.3.4. Нетипизированные параметры подпрограмм
- •1.3.5. Массивы и строки открытого типа
- •1.4. Рекурсивные подпрограммы
- •2. Файлы данных
- •2.1. Текстовые файлы
- •2.2. Типизированные файлы
- •2.3. Нетипизированные файлы
- •2.4. Обработка ошибок, возникающих в действиях с файлами
- •3. Указатели - ссылочные типы данных
- •4. Модули
- •5. Локальные и глобальные сети эвм
- •6. Базы данных
- •6.1. Модели организации данных
- •6.2. Нормализация данных
- •6.3. Типы связей между объектами
- •7. Основы компьютерной безопасности
- •7.1. Компьютерные вирусы
- •7.2. Защита информации в Интернете
- •Контрольные работы
- •Тема 1. Параметры-значения и параметры-переменные
- •Пример выполнения задания
- •Решение. Составляем алгоритм (изображен ниже), а затем программу.
- •Варианты задания
- •Тема 2. Процедурный тип Пример выполнения задания
- •Варианты задания
- •Тема 3. Рекурсия Пример выполнения задания
- •Варианты задания
- •Тема 4. Текстовые и типизированные файлы Пример выполнения задания
- •Варианты задания
- •Тема 5. Указатели Пример выполнения задания
- •Варианты задания
- •Тема 6. Модули Пример выполнения задания
- •Варианты задания
- •Библиографический список
- •Оглавление
- •1.1. Описание подпрограмм ……………………………………………… 1
2.2. Типизированные файлы
Типизированный файл – это последовательность компонент одного типа. В этой связи файловая переменная для работы с ним описывается так:
var <ФП> : file of <тип компонент файла >;
Типизированные файлы являются файлами произвольного доступа. Это означает, что любой элемент такого файла доступен по его номеру как для чтения, так и для его изменения (перезаписи). Компоненты файла пронумерованы от нуля. С помощью функции FileSize(<ФП>) можно установить размер открытого файла. Номер текущего элемента файла возвращает функция FilePos(<ФП>). Процедура Seek(<ФП>, <Номер>) позволяет переместить текущий указатель в файле на позицию с заданным номером. Процедура Truncate(<ФП>) помещает признак конца файла в текущую позицию и тем самым удаляет все существовавшие за ней элементы. Запись и чтение данных для открытого файла можно производить соответственно с помощью процедур Write (<ФП>, <Список вывода>) и Read(<ФП>, <Список ввода>). В списках ввода и вывода могут присутствовать переменные одного типа с компонентами файла. Покажем примеры действий с типизированными файлами.
Пример 1. Продемонстрируем особенности реализации прямого доступа к элементам файла.
program Tip_File;
var
f : file of byte;
i, n : byte;
begin
assign(f, 'f_byte');
rewrite(f);
for i := 1 to 8 do
begin
writeln('Введите ', i, '-ю компоненту файла');
readln(n);
write(f, n)
end;{for}
close(f);
reset(f); {Открываем файл для действий с ним}
writeln('Исходный файл :');
repeat
read(f, n);
write(n : 4);
until eof(f);
writeln;
seek(f, 3); {Маркер на 4-й элемент файла}
n := 13;
write(f, n); {'Затерли' старое значение новым}
read(f, i); {Читаем следующий (!) элемент файла}
writeln('5-й элемент файла = ', i);
seek(f, 3); {Вернулись к 4-му элементу}
read(f, i);
writeln('4-й элемент = ', i);
seek(f, 5);
truncate(f); {Урезаем файл до 5 элементов}
reset(f); {Маркер на начало файла}
while not eof(f) do
begin {Выводим содержимое файла}
read(f, n);
write(n : 4);
end;
writeln;
writeln('Размер файла = ', filesize(f));
close(f)
end.
Пример 2. Покажем особенности работы с типизированным файлом, состоящим из компонент сложного типа. Создадим файл записей с фамилиями и средними оценками студентов некоторой группы.
program file_zap;
uses crt;
const n = 25;
type
st = record {Тип-запись}
fam : string[25];
sb : real
end;
var
i : byte;
f : file of st; {Файл записей}
buf : st;
begin
clrscr;
assign(f, 'gruppa');
rewrite(f);
for i := 1 to n do
begin
with buf do
begin
writeln('Введите фамилию ', i, '-го студента');
readln(fam);
writeln('Введите его сpедний балл');
readln(sb)
end; {with}
write(f, buf) {Запись buf в файл}
end; {for}
close(f); {Закpываем файл}
reset(f); {Откpываем файл для чтения}
repeat
read(f, buf);
with buf do
writeln(fam, ' ' : 25 - length(fam), sb : 4 : 2)
until eof(f);
writeln('Нажмите ENTER');
readln
end.