Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование.docx
Скачиваний:
192
Добавлен:
28.03.2015
Размер:
383.85 Кб
Скачать

40.Буферизированный и небуферизированный ввод данных.

Буфер - это область памяти, используемая для временного хранения данных при вводе или выводе. Обмен данными (ввод и вывод) может происходить как с внешними устройствами, так и с процессами в пределах компьютера. Буферы могут быть реализованы в аппаратном или программном обеспечении, но подавляющее большинство буферов реализуется в программном обеспечении. Буферы используются когда существует разница между скоростью получения данных и скоростью их обработки, или в случае когда эти скорости переменны, например, при буферизации печати.

Буферизация ввода - данные сначала попадают в некий буфер (текстовый файл), а в переменных они оказываются только после очистки буфера, которая происходит при определенном событии, например, нажатии “Enter”.

Отсутствие буферизации – данные, введенные с клавиатуры, оказываются в переменных сразу.

Буферизация вывода

При использовании оператора writeln, на экран сразу же ничего не выводится.

Так как все лежит в буфере.

При определенных условиях, например, достижении определенного размера буфера

или ручном вызове функции его очистки все что хранилось в буфере выводится на экран.

В Pascal все строго буферизизировано.

Пример:

1. Var a: integer; Begin Read(a); Writeln('Hello'); End.

2.Uses crt; Var c: char; Begin c := ReadKey(); Writeln('Hello');

Readln; End.

При работе обеих программ данные попадают сначала в буфер. Но read ждет нажатия “Enter”, чтобы данные из буфера поместить в переменные, а readkey организовывает задержку выполнения программы и ждет, пока пользователь не нажмет какую-то клавишу, как только это происходит – данные из буфера так же помещаются в переменные. Поэтому Readkey создает иллюзию отсутствия буфера.