ПАСКАЛЬ: РОБОТА З ФАЙЛАМИ
reset(f);
while not eof ( f ) do
beginread ( f, x ); writeln ( x.num, ': ', x.nam )
end
end.
2.* Переписати програму з прикладу 13.2, щоб у разі порожнього файла її виконання не завершувалося аварійно.
3. Переписати програму з прикладу 13.2, щоб числа не копіювалися в інший файл, а друкувалися на екрані.
4.* Написати пpоцедуpу пpисвоювання файлів шляхом копіювання.
5.* Написати функцію пеpевіpки побайтової pівності двох файлів.
6.* Написати пpоцедуpу дописування до елементів пеpшого файла елементів другого, із зберіганням pезультату
а) в новому файлі; б) в першому файлі.
7.* Написати пpоцедуpу виведення змісту файла з даними про студентів на екpан "стоpінками": після друкування на екрані даних про чергових 5 студентів виводиться запит щодо продовження, і виконання програми призупиняється до того, як користувач підтвеpдить або не підтвердить пpодовження.
4. Прямий доступ у системі Турбо Паскаль
Як ми побачили в трьох попередніх підрозділах, доступність елемента файла, тобто можливість його читання чи створення в ході виконання програми, залежить від його розташування в послідовності. Досі ми розглядали підпрограми послідовного доступу до елементів файла. Він полягає в тім, що елементи файла не задаються явно, а доступність їх у ході виконання програми цілком визначається їх розташуванням у послідовності. Спочатку доступний перший елемент, після його обробки – другий тощо.
Але послідовний доступ елементів не завжди зручний. Чи не замислювався читач над тим, як запрограмувати читання з типізованого файла елемента за його номером або його заміну, додавання чи вилучення ?
Зрозуміло, що задати читання елемента за номером k можна так:
reset(f);
for i:=1 to k-1 do read(f, x); {пропущено k-1 елемент – доступний k-й}
read(f, x).
Для заміни елемента файла за його номером k можна "вийти на нього" шляхом читання попередніх. Далі можна скористатися одним недоліком системи Турбо Паскаль. Справа в тім, що система дозволяє в стані читання записувати в файл значення змінних (і лише змінних!). Отже, заміну елемента можна описати так:
reset(f);