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