Главная » Файлы » Для учня/студента » Інформатика [ Добавить материал ]

Текстові файли. Ввід даних з клавіатури науковий
14.07.2010, 16:26
Будь-який файл, що складається з послідовності символів, можна у вигляді, показаному на малюнку.
Бачимо, що файл є набором рядків тексту, кожен з яких закінчується спеціальним символом "кінець рядка". Весь файл закінчується символом "кінець файлу".
При відкриванні файлу для читання операційна система створює спеціальний вказівник, який показує наступний символ, який повинен бути прочитаний з файлу, і встановлює його на перший символ файлу. Зчитуючи кожен наступний символ, операційна система переставляє вказівник на наступний символ. Символи "кінець рядка" вводяться як будь-які інші, а спроба прочитати "кінець файлу" діагностується як помилка. Отже файл читається тільки посимвольно від початку до кінця, тобто є файлом послідовного доступу.
Аналогічно можна було б організувати введення з клавіатури. Під час звертання до оператора Read система очікувала б натискання клавіш і вводила інформацію символ за символом. Але це незручно, бо випадково чи помилково натиснутий символ безпосередньо вводиться в програму, що позбавляє користувача можливості зробити виправлення.
Тому для введення даних з клавіатури передбачений спеціальний рядок символів, який називається буфером введення. Під час запуску програми на виконання буфер введення порожній. Коли зустрічається перший Read, виконання програми припиняється доти, поки користувач не введе з клавіатури в буфер рядок символів, завершивши його натисканням Enter. До натискання цієї клавіші користувач може перевіряти і виправляти рядок. Виконання програми поновлюється, а ввід здійснюється з буфера доти, поки не буде прочитаний останній символ, який міститься в ньому. Коли даних не вистачає, то система очікує вводу в буфер нового рядка. Таким чином, введення з клавіатури повністю аналогічне введенню з файлу, тільки при цьому кожний рядок вводиться користувачем.
Наприклад, якщо при виконанні фрагменту програми

Read ( a );
WriteLn ( 'A=', a );
Read ( b );
WriteLn ( 'B=', b );

ввести два числа одразу, то програма не очікуватиме вводу другого числа, а введе його з буфера, тобто у вікні виконання будемо бачити таке:

10 25
A = 10
B = 25

Категория: Інформатика | Добавил: Zet
Просмотров: 219 | Загрузок: 0 | Рейтинг: 0.0/0