пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

pogromirovanie:
» sooqa
Уася:
» History motherfuckers

Ввод информации с клавиатуры. Процедуры read и readln. Функции eof и eoln. (Пример программ по обработке предложения с использованием пошагового ввода. Определить количество слов удовлетворяющих заданному условию).

Для ввода значений с клавиатуры используют специальные процедуры Read и ReadLn (рис.). Эти процедуры позволяют вводить значения стандартных типов, кроме boolean, и строки (string).
Вводимые значения (кроме значений символов и строк) разделяют пробелами или записывают на разных строках. Отдельные символы и строки символов при вводе записывают подряд, так как пробел в этом случае также считается символом.

                                                              

Физически операции ввода выполняются с использованием буфера, т. е. вводимая с клавиатуры последовательность символов сначала помещается в память, а затем, уже из памяти, читается программой. Последовательность передается в буфер ввода по нажатию клавиши Enter. При этом в буфер вместе с кодами введенных символов помещается и код Enter, состоящий из двух символов «#13, #10».

Если ввод осуществляется процедурой ReadLn, то буфер ввода после выполнения операции очищается, причем символы, оставшиеся не обработанными, игнорируются. Если ввод осуществляется процедурой Read, то очистка не выполняется и, следовательно, следующий оператор ввода начнет читать символы из той же строки. Последнее существенно только, если вводятся значения типа char (или string), так как при вводе чисел пробелы и переход на следующую строку игнорируются.

Например:

  1. Var a,b,c:real; и: integer;

Begin
Read(a,b); {числа могут быть введены в одной строке или в разных}
ReadLn(c,n);.., {числа могут быть введены в той же строке, что и предыдущие числа}

  1. Var a:real; c:char;

Begin ...

Read(a); ...

Write('Продолжить?( y/n)');

Read(c); {приводит к тому, что после запроса компьютер не переходит в ожидание ввода, как мы предполагали, а вводит следующий символ из буфера ввода, т. е. символ #13}

Чтобы избежать «игнорирования ввода», необходимо для выполнения предыдущей операции ввода использовать вместо процедуры Read

процедуру ReadLn:

Var a:real; c:char;

Begin ...

ReadLn(a);... {очистим буфер ввода после выполнения операции}

Write('Продолжить?( y/n)');

Read(c); {в данном случае все в порядке: после вывода запроса

программа ожидает ввода символа}


27.01.2014; 06:42
хиты: 198
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь