ПАСКАЛЬ: РОБОТА З ФАЙЛАМИ
Читання доступного елемента файла задається процедурою 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.
Приклад 2. Напишемо програму обчислення середнього арифметичного A цілих чисел непорожнього файла nums.dat та запису в інший файл всіх його чисел, менших A.
Розв'яжемо задачу в такий спосіб:
1) прочитати всі числа з файла, обчислити їх суму й кількість і визначити A;
2.повторно прочитати всі числа, копіюючи з них лише менші від A.