Паскаль: обробка текстів, Детальна інформація

Паскаль: обробка текстів
Тип документу: Реферат
Сторінок: 17
Предмет: Комп`ютерні науки
Автор: Олексій
Розмір: 33.1
Скачувань: 1103
Приклад. У тексті записано такі символи:

1   2   3 [13] [10]

  5 5 [26]      

Нехай x, y, z, t – цілі змінні. Читання read(f, x, y); read(f, z, t) надасть їм значень 1, 2, 3, 55 відповідно, читання readln(f, x, y); read(f, z, t) – 1, 2, 55, 0, читання readln(f, x); readln(f, y, z, t) – 1, 55, 0, 0.

Тепер розглянемо читання числових послідовностей, записаних у текстах. Найбільш природним є таке подання послідовності вхідних даних, у якому кінець послідовності визначається кінцем файла. У цьому випадку читання описується за допомогою функції eof у циклі вигляду

while not eof(f) do

begin

read(f, v);

обробка значення змінної v

end.

З виклику eof(f) повертається значення true, якщо доступним є кінець файла. За такої організації читання слід забезпечити, щоб між останньою числовою сталою та кінцем файла не було порожніх символів. Якщо цього не зробити, то в системі Турбо Паскаль буде прочитано зайве нульове значення.

Якщо файл порожній, то перше ж виконання виклику eof(f) породжує true, і тіло циклу не виконується жодного разу. Змінна v залишається зі старим значенням. А якщо значення їй не було присвоєно, то можливі непередбачувані помилки.

Звернімо увагу, що читання в циклі відбувається після того, як із виклику функції eof повернулося значення false, тобто кожному читанню передує перевірка, чи не є файл прочитаним. Ми радимо завжди записувати програми так, що при їх виконанні спочатку перевіряється, що з файла можна читати, і лише тоді читається.

Приклад 3. У тексті записано дійсні числа, розділені порожніми символами. Обчислити їх середнє арифметичне.

Кількість чисел нічим не обмежена, тому скористаємося циклом із перевіркою ознаки кінця тексту. За порожнього тексту друкується 0:

n:=0; A:=0;

while not eof(f) do

begin

read(f, x); n:=n+1;

A:=A+x; {}

end;

if n>0 then A:=A/n;

writeln(A).

Зауважимо, що сума чисел у тексті може бути непредставною навіть у типі real, хоча їх середнє не більше максимального з них. Середнє арифметичне варто обчислювати інакше.

Отже, замість оператора A:=A+x у циклі напишемо оператор

A:=(n-1)/n*A+x/n,

що виконується за n>0, і вилучимо оператор if n>0 then A:=A/n.\xF0E7

Задачі

3.* Яких значень набудуть дійсні змінні a, b, c, d і який символ стане доступним після виконання викликів

а) read(f, a, b, c, d),

The online video editor trusted by teams to make professional video in minutes