Сторінка
1

Паскаль: обробка текстів

ПОШУКОВА РОБОТА

1. Особливості організації текстів У мові Турбо Паскаль для подання текстів на зовнішніх носіях означено спеціальний тип файлів з ім’ ям TEXT. Файли цього типу будемо називати файлами-текстами. Елементами файлів-текстів є символи, але тип text відрізняється від типу file of char наявністю спеціальних підпрограм, пов’ язаних саме з розбиттям на рядки. Розглянемо деякі з цих підпрограм. Спосіб, у який задається кінець рядка фізичного файла, залежить від файлової системи, і можна навіть його й не знати. Достатньо розглядати рядок файлової змінної як послідовність, що закінчується спеціальним символом. Він позначається словом eol. Рядок, складений лише цим символом, називається порожнім. Слова eol немає в мові Паскаль, і в програмах воно не вживається. Визначити, чи доступний кінець рядка eol у файлі під час виконання програми, можна за допомогою функції EOLN. З виклику eoln(f) повертається значення true, якщо доступний eol, і false у противному разі. У системі Турбо Паскаль ця функція повертає значення true, коли доступним є символ chr(13). Цей символ, власне, й задає кінець рядка. У текстах, створених "під DOS", за цим символом, як правило, іде chr(10), що позначає "переведення рядка". Позначимо ці символи як [13] і [10]. Ось приклад тексту, який говорить сам за себе: ЦЕЙ ТЕКСТ[13][10]СКЛАДАЄТЬСЯ[13][10][13][10]

З П’ЯТИ РЯДКІВ,[13][10]З ЯКИХ ТРЕТІЙ ПОРОЖНІЙ[13][10] Звичайно, приємніше читати цю послідовність у вигляді ЦЕЙ ТЕКСТ[13][10]

СКЛАДАЄТЬСЯ[13][10]

[13][10]

З П’ЯТИ РЯДКІВ,[13][10] З ЯКИХ ТРЕТІЙ ПОРОЖНІЙ[13][10] Для визначення, чи прочитано текст, викликається функція EOF. У текстах, на відміну від типізованих файлів, ознака кінця файла може задаватися не лише засобами операційної системи, але й спеціальними символами в самому фізичному файлі. Для програм, написаних мовою Турбо Паскаль, таким символом є chr(26). Наприклад, наведений текст у фізичному файлі насправді закінчувався б не символами [13][10], а [13][10][26]. Якщо в тексті доступний символ chr(26), то з виклику функції eof(f) повертається true, за іншого символу – false. Ім’ я input можна не вказувати у викликах та замість eof(input) чи eoln(input) писати eof чи eoln.

2. Записування в текст Описання роботи з текстами, що є файлами на диску комп’ ютера, почнемо з записування, оскільки воно має набагато менше "підводних каменів", ніж читання. Нехай далі f є ім’ ям файлової змінної типу text. Текст, як і файли інших видів, установлюється в початковий стан для запису викликом rewrite(f). Після цього файл стає порожнім. Для того, щоб дописувати до вже існуючого тексту, треба установити його в початковий стан для дописування викликом процедури APPEND: append(f). Після цього всі символи тексту, крім символу кінця файла, залишаються в тексті, і нові символи будуть дописуватися за останнім із них. Запис у текст задається викликами процедур WRITE і WRITELN, першим аргументом у яких є ім’ я файлової змінної. При виконанні виклику write(f, вираз-базового-типу-або-рядок) спочатку обчислюється значення виразу. За цим значенням створюється послідовність символів, що його зображає, і копіюється в текст f. Наприклад, виклик write(f, trunc( sqrt(9999) ) ) задає дописування в файл двох символів '9' і '9', що задають число 99. У виклику можна записати одразу кілька виразів через кому: write(f, вираз1, вираз2, .). Наприклад, за x=2 виклик write(f, 'x=', x, '; x**2=', sqr(x)) задає виведення в файл послідовності символів x=2; x**2=4. До речі, такий виклик виконується як послідовність викликів write(f, вираз1); write(f, вираз2); . Процедура writeln відрізняється лише тим, що за виклику writeln(f, список-виразів-базових-типів-або-рядків) за останньою сталою в текст додається eol (у Турбо Паскаль – [13][10]). Список виразів тут може бути порожнім – тоді лише додається eol. У викликах процедур write і writeln після виразу через двокрапку можна задати ширину поля W під запис значення виразу, наприклад,

write(f, sqr(x):2). Тут W=2. Нехай для запису значення виразу потрібно L символів. В останньому виклику L=1 за x<4, L=2 за 3<x<10, L=3 за 9<x<34 тощо. Якщо L£ W, то перед символами значення додаються W-L пропусків; а якщо L>W, то виводяться всі символи. Таким чином, за x=3 друкується пропуск і 9, а за x=100 – всі п’ ять символів 10000. Після виразу дійсного типу можна також указати кількість N цифр дробової частини, що виводяться після десяткової крапки, наприклад,

write(f, sqrt(x): 7 : 3). Якщо N указано, то виводиться стала з фіксованою крапкою та N цифрами після крапки, інакше – нормалізована з порядком. В даному разі за x=2 виводиться два пропуски та 1.414. Остання цифра є результатом округлення. Деякі інші деталі можуть визначатися системою програмування. Приклад 1. За виклику writeln (f, 'СЛОН', 'собака':1, 'кіт':5) у текст виводиться рядок

С

Л

О

Н

с

о

б

а

к

а

   

к

і

т

[13]

[10]

Перейти на сторінку номер:
 1  2  3  4  5  6  7 


Інші реферати на тему «Інформатика»: