Завдання

1. Дано текстовий файл F.txt. Виключити пробіли, що стоять у кінці його рядків. Результат помістити в файл F1.txt.

2. Дано текстовий файл F.txt. Переписати компоненти файлу F.txt в файл G.txt, ставлячи на початку кожного рядка пробіл.

3. Дано текстовий файл F.txt. Одержати найдовшій рядок файлу. Якщо в файлі є декілька рядків з найбільшою довжиною, то вибрати останній з них.

4. Дано текстовий файл F.txt. Визначити, чи входить в файл словосполучення "Теорема".

5. Дано текстовий файл F.txt. Вивести на екран всі його рядки, що містять більше 40 символів.

6. Дано текстовий файл F.txt. Переписати у файл G.txt всі компоненти файлу F.txt із заміною в них символу "0" на "1" і навпаки.

7. Дано текстовий файл F.txt. Переписати його в файл G.txt, замінюючи кожну цифру на наступну за величиною ("9" замінюється на "0").

8. Створити текстовий файл F.txt, що складається з 9 рядків, в першому з яких міститься одна літера "1", в другому – дві літери "2",..., в девятому - девять літер "9".

9. Дано текстовий файл F.txt. Підрахувати кількість пустих рядків, які містяться в ньому.

10. Дано текстовий файл F.txt. Вивести на екран всі рядки файлу, що починаються з символу "П".

11. Дано текстовий файл F.txt. Скопіювати його в файл G.txt обминаючи пусті рядки.

12. Дано текстовий файл F.txt. Вивести на екран вміст його рядків, вказавши на початку кожного рядка його номер.

13. Дано текстовий файл F.txt. Вивести на екран перший з найкоротших його рядків.

14. Дано текстові файли F.txt, G.txt, записаних українською мовою. Дописати в кінець файлу G.txt всі ті рядки з файлу F.txt, які починаються з голосної літери.

15. Дано текстовий файл F.txt. Підрахувати кількість його рядків, виводячи на екран дисплея кожен третій з них.

 

10.3. Контрольні запитання з теми

1. В яких випадках зручно застосовувати файли ?

2. Чим файли відрізняються від масивів і що у них є спільного ?

3. Що таке фізичне ім'я файлу, чим воно відрізняється від логічного імені ?

4. Розкажіть, як класифікуються файли в мові Pascal ?

5. Розкажіть про способи створення файлових даних.

6. Як розрізняються файли по видах доступу до їх компонент ?

7. Як оголошуються змінні файлових типів ?

8. У чому полягають особливості текстових файлів ?

9. У чому полягає відміна текстових файлів від file of char?

10. Які дії необхідно виконати для відкриття файлу ?

11. Як відкрити файл для запису ?

 

 


Лабораторна робота № 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 дозволяє переглядати створену базу даних і вибрати з неї записи, що відповідають певній ознаці.