Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Лабораторна робота № 11. Уміти скласти програму з використанням файлів послідовного та прямого доступу



Тема:

Файли з типом

Мета:

Уміти скласти програму з використанням файлів послідовного та прямого доступу

11.1. Теоретичні відомості

З точки зору PASCAL-системи – це структурований тип даних, який складається з послідовності компонент одного типу і однакових розмірів. Доступ до конкретної компоненти ведеться через поточний вказівник файла. При записі (читанні) цей вказівник автоматично переміщується до наступної компоненти. Оскільки всі компоненти файла мають однакову довжини, то можливий довільний (прямий) доступ до компонента файла. Найчастіше компонентами файла є записи.

В мові PASCAL введення-виведення інформації здійснюється через спеціальні файлові змінні, які мають складну внутрішню структуру, що відповідає типу Record. Файли з типом задаються так:

Type < ім`я типу > = File of < тип компоменти >;

Var < iдентифікатори >: < ім`я типу >;

Приклад:

Type ZAPIS = Record

Len: byte;

Ves: real

end;

KARTA = File of ZAPIS;

Var Fi: KARTA; Zt: ZAPIS;

Файли з типом в Паскалі дають можливість організувати два способи доступу до компонент файла: послідовний і прямий.

При послідовному способі доступу пошук починається з самого початку файла, далі йде перевірка по черзі кожної з його компонент, поки не знайдеться потрібна.

Прямий спосіб доступу дозволяє звертатися до компоненти за її номером. Порядкові номери компонент починаються з нуля.

11.1.1. Стандартні процедури обробки файлів з типом

Введемо такі позначення:

FV - ім'я файлової змінної;

St - String;

Ch - символьна змінна;

P - змінні p1,p2,...,pN того ж самого типу, що і компоненти файлової змінної FV;

n - цілочисельній вираз.

З врахуванням введених позначень розглянемо файлові процедури:

Assing(FV,St) – пов'язує файлову змінну FV з зовнішнім ім'ям файла. Повне ім'я файла на диску має вид: St:= [<ім'я диску:>]<ім'я файлу>[.<тип>]; Починаючи з момента виконання процедури Assign всі дії над файловою змінною FV еквівалентні дії над файлом, заданим значенням літерного рядка St.

Rewrite(FV) – створює новий файл. Ця процедура використовується для створення нового файлу на диску. Ім'я файла було попередньо визначено в процедурі Assign. Якщо на диску вже був файл з таким ім'ям, він знищується. Поточний вказівник файла встановлюється в першу позицію (з номером 0).

Reset(FV) – встановлює поточний вказівник на початок файлу. Якщо цю процедуру використати до неіснуючого файлу, виникає помилка.

Read(FV,P) – читає дані з файлу. Здійснюється зчитування з файлу FV значень p1,p2,..,pN. Після завершення виконання процедури вказівник переміщується до наступної компоненти.

Write(FV,P) – змінні p1,..,pN записуються в дисковий файл, визначений змінною FV. Після виконання процедури вказівник файлу переміщується до наступної компоненти.

Seek(FV,n) – встановлює вказівник на компоненту файла n. Відлік компонент починається з нуля.

Close(FV) – закриває файл, позначений змінною FV.

11.1.2. Стандартні функції обробки файлів з типом

1. FilePos(FV): LongInt – повертає номер компоненти файла, на який показує поточний вказівник файла, описаного змінною FV.

2. FileSize(FV): LongInt – повертає поточний розмір файлу, з яким пов'язана файлова змінна FV.

3. EoF(FV): Boolean – видає True, якщо наступний символ за прочитаним маркер кінця файла.

3.

11.1.3. Приклад обробки інформації в файлах з типом

Організувати файл прямого доступу "Записник", який містить прізвище знайомого і його номер телефону. Вияснити, чи є в записнику дані про знайомого із заданим номером телефону. Якщо є, то надрукувати його прізвище, якщо нема – надрукувати повідомлення: "Знайомого з таким прізвищем нема у записнику".

Поставлену задачу можна розв'язати за допомогою такої програми на PASCAL.

Приклад:

Uses Crt;

Type TelRef = Record

Name: String[20];

Number: Word;

end;

TelRefBase = File of TelRef;

Var F: TelRefBase;

R: TelRef;

S: String;

N, i: Word;

Procedure Create;

Begin

Rewrite(F);

i:=1;

Writeln('Символ $ - кiнець створення записника.');

While True do

begin

Writeln('Введiть прізвище ',i,' знайомого');

Readln(S);

if S[1]='$'

then begin

Close(F);

Exit

end;

R.Name:=S;

Writeln('Введiть номер його телефону');

Readln(N);

R.Number:=N;

Write(F,R);

i:=i+1

end

end;

Procedure ReadBase;

Begin

Reset(F);

Writeln('Введiть прізвище знайомого');

Readln(S);

While not Eof(F) do

begin

Read(F,R);

if R.Name=S

then

begin

Writeln('Номер телефона ',R.Number);

Exit

end;

end;

Writeln('Знайомого з таким прізвищем нема у записнику')

end;

BEGIN

ClrScr;

Writeln('Задайте iм"я файлу-записника');

Readln(S);

Assign(F,S);

While i<>3 do

begin

Writeln('Виберiть режим роботи:');

Writeln('1 - Створення записника');

Writeln('2 - Перегляд записника');

Writeln('3 - Кiнець роботи');

Readln(i);

Case i of

1: Create;

2: ReadBase;

end;

end;

END.

В поданій програмі процедура Create призначена для створення файлу з заданим типом, який являє собою певну базу даних – телефонний довідник. Процедура ReadBase дозволяє переглядати створену базу даних і вибрати з неї записи, що відповідають певній ознаці.





Дата публикования: 2014-11-04; Прочитано: 416 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.009 с)...