- •Содержание:
- •Порядок выполнения лабораторных работ
- •Оператор присваивания
- •Операторы ввода-вывода
- •Условный оператор
- •Задание к лабораторной работе
- •Программирование разветвляющегося
- •Оператор цикла for
- •Нестандартные типы данных
- •Ограниченные типы данных
- •Оператор выбора варианта
- •Задание к лабораторной работе
- •Лабораторная работа 3 регулярные типы данных. Селективная обработка массивов
- •Регулярные типы данных
- •Сортировка массивов
- •Примеры выполнения задания лабораторной работы
- •Задание к лабораторной работе
- •Лабораторная работа 4 вложенные циклы. Обработка двумерных массивов
- •Общие указания
- •Задания к лабораторной работе
- •Лабораторная работа 5 процедуры и функции
- •Процедуры
- •Функции
- •Задание к лабораторной работе
- •Лабораторная работа 6 обработка символьных данных
- •Символьный тип данных
- •Строковый тип данных
- •Процедуры
- •Функции
- •'Abcdef' copy(s,2,3) 'bcd'
- •'System' length(s) 6;
- •Задание к лабораторной работе
- •Лабораторная работа 7 комбинированные типы данных
- •Задание к лабораторной работе
- •Лабораторная работа 8 файлы и файловые типы данных
- •Файловый тип данных
- •Процедуры обработки файлов
- •Файлы с типом
- •Процедуры для работы с файлами с типом
- •Функции для обработки файлов с типом
- •Задание к лабораторной работе
- •Список рекомендованной литературы
Файлы с типом
Файл с типом состоит из однотипных компонентов, причем их количество при определении файла не определяется. Доступ ведется через указатель файла (файловая переменная). При чтении (записи) этот указатель перемещается к следующего компоненту. Поскольку все компоненты файла имеют одинаковую длину, то возможен произвольный (прямой) доступ к компонентам файла.
Процедуры для работы с файлами с типом
Для обработки файлов с типом применяются следующие процедуры:
Rewrite(F) – создает новый файл; если файл с таким именем уже существует на диске, то он удаляется и создается новый. Записывать в файл информацию можно только непосредственно за концом файла.
Reset(F) – открывает существующий файл. В файл можно записывать информацию и читать из него. Записывать в файл дополнительную информацию можно только в конец файла.
Write(F,V1,[V2…])–записывает в файл содержимое указанных переменных. Тип файла и переменных может совпадать.
Read(F,V1,[V2…])–читает из файла компоненты в указанные переменных. Тип файла и переменных может совпадать.
Seek (F, N:LongInt)- передвигает указатель файла на n-й компонент (n – целое выражение). Первый компонент имеет номер 0.
Функции для обработки файлов с типом
Кроме функции Eof для файлов с типом существуют такие функции:
FileSize(F):LongInt – возвращает количество компонентов в файле (файл может быть уже открытый). Это номер компонента, который вытекает за последний.
FilePos(F):LongInt – возвращает номер текущего компонента в файле (первый компонент имеет номер нуль).
Обработка и корректировка файла
При выполнении задания предполагается организовать запись в файл дополнительной информации одним из следующих способов:
а) запросить в диалоге количество вводимых записей и ввести при помощи цикла с параметром ровно N записей;
б) организовать ввод при помощи цикла с постусловием до тех пор, пока не будет введен признак конца ввода.
Для расширения существующего файла с типом (занесение записей в конец файла), следует выполнить позиционирование в конец файла, а потом делать запись:
Var
F : File Of <Type>;
X : <Type>
…………………………
Seek (F, FileSize(F));{позиционирование за последним компонентом файла}
Write(F,X); {запись нового компонента в конец файла}
Пример выполнения задания лабораторной работе.
Пример 37. Сформировать файл из квадратов целых чисел. Найти сумму четных чисел и количество нечетных чисел среди компонентов файла.
Программа имеет вид:
program pr37;
uses crt;
var f:file Of integer;
x,n,s,k:integer; c:char;
begin clrscr;
ASSIGN(F,'D:\FA.DAT');
REWRITE(F);
WRITELN('УВОДИ ЦЕЛЫЕ ЧИСЛА'); READ(X);
while x<>0 do begin
n:=sqr(x); write(f,n);
read(x) end;
RESET(F); CLRSCR;
WRITELN('СОДЕРЖАНИЕ ФАЙЛА:');
s:=0; k:=0;
while not eof(f) do
begin
read(f,x); write(x:4);
if x mod 2 =0 then
S:=S+X ELSE K:=K+1 END;
CLOSE(F); WRITELN;
WRITELN('СУММА ЧЕТНЫХ ЧИСЕЛ =',S:5);
WRITELN('КОЛИЧЕСТВО НЕЧЕТНЫХ ЧИСЕЛ =',K:2);
c:=readkey
end.
В этой программе признаком конца записи в файл является ввод числа нуль.