Основы программирования на C++, PASCAL
В стандарте языка Паскаль допустим только последовательный доступ к элементам файла. Одной из дополнительных возможностей, реализованных в Турбо Паскале, является прямой доступ к записям файла.
Как уже отмечалось, элементы файла пронумерованы в порядке их занесения в файл, начиная с нуля. Задав номер элемента файла, можно непосредственно установить на него указатель. После этого можно читать или перезаписывать данный элемент. Установка указателя на нужный элемент файла производится процедурой
Seek(FV,n)
Здесь FV — имя файловой переменной, n — порядковый номер элемента. В следующем примере эта процедура будет использована.
Пример 2. Имеется файл, сформированный программой из предыдущего примера. Пусть некоторые студенты пересдали экзамен и получили новые оценки. Составить программу внесения результатов переэкзаменовки в файл. Программа будет запрашивать номер студента в ведомости и его новую оценку. Работа заканчивается, если вводится несуществующий номер (9999).
Program New_Marks;
Type Stud=Record
FIO: String[30];
Nz: String[6] ;
Mark: 2..5
End;
Var Fstud: File Of Stud;
S: Stud;
N: Integer;
Begin
Assign(Fstud,'FM.DAT');
Reset(Fstud) ;
Write('Номер в ведомости?');
ReadLn(N);
While N<>9999 Do
Begin
Seek(Fstud,N-l);
Read(Fstud,S);
Write(S.FIO,'оценка?');
ReadLn(S.Mark);
Seek(Fstud,N-l);
Write(Fstud,S);
Write('Номер в ведомости?');
ReadLn(N);
End;
WriteLn('Работа закончена!');
Close(Fstud)
End.
Пример требует некоторых пояснений. Список студентов в ведомости пронумерован, начиная от 1, а записи в файле нумеруются от 0. Поэтому, если n — это номер в ведомости, то номер соответствующей записи в файле равен n-1. После прочтения записи «номер n—1» указатель смещается к следующей n-й записи. Для повторного занесения на то же место исправленной записи повторяется установка указателя.
Упражнения
1. Описать запись, содержащую сведения о рейсе самолета.
2. Описать массив записей, содержащий таблицу Д.И.Менделеева. Составить программу заполнения массива.
3. Рассматривая комплексное число как двухэлементную запись, составить процедуры выполнения арифметических операций с комплексными числами.
4. Сведения о деталях, хранящихся на складе, содержат следующие атрибуты: название, количество, стоимость одной детали.
Составить программы, решающие следующие задачи:
а) заполнить файл с информацией о деталях на складе;
б) вычислить общую стоимость деталей;
в) выяснить, какие детали имеются в наибольшем количестве, какие — в наименьшем;
г) вывести информацию о наличии на складе деталей данного типа и их количестве;
д) внести изменения в файл после выдачи со склада определенного количества данного вида деталей. Если какой-то тип деталей полностью выбран со склада, то уничтожить запись о нем в файле.