Паскаль: робота з файлами, Детальна інформація
Паскаль: робота з файлами
Для того, щоб читати вже створений типізований файл, треба відкрити його для читання викликом процедури RESET(f). Після її виклику файлова змінна установлюється в початковий стан для читання, а номером доступного елемента стає 0 незалежно від того, чи є взагалі елементи в файлі. Значення f можна подати як (F, 0, R), тобто
F f0 f1 ...
Стан R
Якщо F є порожньою послідовністю, F=<>, то спроба читання з файла завершується аварійно, оскільки доступного елемента просто немає!
Файл із диску можна читати тільки після установлення файлової змінної в початковий стан для читання, тобто установлення обов’ язкове. Можливість чи заборона установлення файлової змінної, зв’ язаної з клавіатурою, залежить від системи програмування. У системі Турбо Паскаль таке установлення можливе, хоча й не обов’ язкове.
Зазначимо, що в програмі може бути довільна кількість викликів процедури reset, і що система Турбо Паскаль дозволяє після виконання її викликів не тільки читати з файла, а й записувати в нього, тобто змінювати його перший елемент. І взагалі, система дозволяє змінювати за допомогою write доступний елемент файла, яким би не було його місце в послідовності і за будь-якого стану файла.
Читання доступного елемента файла задається процедурою READ. Її виклик має вигляд
read(f, v),
де v – ім’ я змінної того ж типу, що і в елементів файла. В результаті значення доступного елемента присвоюється цій змінній, а вказівник доступного елемента переміщується на наступний елемент.
Наприклад, при читанні read(f, x) файлової змінної f із значенням
(<11, 12, 13>, 0, R)
змінна x набуває значення 11, а значення f подається як
(<11, 12, 13>, 1, R),
тобто доступним стає елемент 12.
Узагалі, якщо файл містить n елементів, пронумерованих від 0 до n-1, і номер доступного компонента i менше n, то виклик read(f, x) задає присвоювання змінній x значення i-го елемента та перехід від значення файлової змінної (F, i, R) до (F, i+1, R). Якщо ж i=n, то кажуть, що файл f прочитано, або вичерпано (зокрема, коли він порожній, тобто F = <>). За такого значення i виклик read призводить до аварійного завершення програми.
У виклику процедури read можна вказувати довільну кількість аргументів, що є іменами однотипних змінних:
read ( f, v1, v2, … , vN ).
Такий виклик виконується насправді як послідовність викликів
read(f, v1 ); read(f, v2 ); ... read(f, vN ).
Зрозуміло, треба гарантувати при цьому, що в файлі залишилося достатньо непрочитаних елементів.
Підкреслимо, що до типізованих файлів незастосовна процедура читання readln – її можна вживати лише для читання текстів.
Визначення того, чи прочитано вже файл, задається функцією EOF. За виклику eof(f) повертається бульове значення false, якщо доступний який-небудь елемент файла, тобто значення виразу i, i, R). Значення true повертається за i=n, що можливо після читання всіх елементів файла без установлення його в початковий стан.
Виклик функції eof дозволяє визначити, чи є ще у файлі непрочитані елементи, та запобігти читання з вичерпаного файла.
Практично завжди програму варто записувати так, щоб у процесі її виконання перевірка невичерпаності файла передувала виклику процедури read.
L
®
°
„@
^„@
\x6100\x0224
F f0 f1 ...
Стан R
Якщо F є порожньою послідовністю, F=<>, то спроба читання з файла завершується аварійно, оскільки доступного елемента просто немає!
Файл із диску можна читати тільки після установлення файлової змінної в початковий стан для читання, тобто установлення обов’ язкове. Можливість чи заборона установлення файлової змінної, зв’ язаної з клавіатурою, залежить від системи програмування. У системі Турбо Паскаль таке установлення можливе, хоча й не обов’ язкове.
Зазначимо, що в програмі може бути довільна кількість викликів процедури reset, і що система Турбо Паскаль дозволяє після виконання її викликів не тільки читати з файла, а й записувати в нього, тобто змінювати його перший елемент. І взагалі, система дозволяє змінювати за допомогою write доступний елемент файла, яким би не було його місце в послідовності і за будь-якого стану файла.
Читання доступного елемента файла задається процедурою READ. Її виклик має вигляд
read(f, v),
де v – ім’ я змінної того ж типу, що і в елементів файла. В результаті значення доступного елемента присвоюється цій змінній, а вказівник доступного елемента переміщується на наступний елемент.
Наприклад, при читанні read(f, x) файлової змінної f із значенням
(<11, 12, 13>, 0, R)
змінна x набуває значення 11, а значення f подається як
(<11, 12, 13>, 1, R),
тобто доступним стає елемент 12.
Узагалі, якщо файл містить n елементів, пронумерованих від 0 до n-1, і номер доступного компонента i менше n, то виклик read(f, x) задає присвоювання змінній x значення i-го елемента та перехід від значення файлової змінної (F, i, R) до (F, i+1, R). Якщо ж i=n, то кажуть, що файл f прочитано, або вичерпано (зокрема, коли він порожній, тобто F = <>). За такого значення i виклик read призводить до аварійного завершення програми.
У виклику процедури read можна вказувати довільну кількість аргументів, що є іменами однотипних змінних:
read ( f, v1, v2, … , vN ).
Такий виклик виконується насправді як послідовність викликів
read(f, v1 ); read(f, v2 ); ... read(f, vN ).
Зрозуміло, треба гарантувати при цьому, що в файлі залишилося достатньо непрочитаних елементів.
Підкреслимо, що до типізованих файлів незастосовна процедура читання readln – її можна вживати лише для читання текстів.
Визначення того, чи прочитано вже файл, задається функцією EOF. За виклику eof(f) повертається бульове значення false, якщо доступний який-небудь елемент файла, тобто значення виразу i
Виклик функції eof дозволяє визначити, чи є ще у файлі непрочитані елементи, та запобігти читання з вичерпаного файла.
Практично завжди програму варто записувати так, щоб у процесі її виконання перевірка невичерпаності файла передувала виклику процедури read.
L
®
°
„@
^„@
\x6100\x0224
The online video editor trusted by teams to make professional video in
minutes
© Referats, Inc · All rights reserved 2021