объясните как работает процедура read()


#1

делал ребенок программку в которой нужно было ввести последовательность чисел. Сделали что то вроде:

var
    a : integer;
    
begin
    repeat
        read(a);
    until a = 0;
    
end.

честно говоря ожидалось что числа будут вводится в одну строку но после каждого введенного числа происходит переход на новую строку. В чем разница между read() и readln()? И если результат одинаковый, зачем платить больше?

заметил еще странность. если числа заменить на строки, вот так:

var
    a : string;
    
begin
    repeat
        read(a);
    until a = '0';
    
end.

то программа начинает вести себя странно. Если ввести “0” то она как положено завершается. Но если ввести любую другую строку то она уходит в бесконечный цикл напрочь игнорируя read()


#2

Приведите пример ввода и то, что кажется вам странным


#3

ожидалось что введенные значения будут идти в одну строку, типа:

1 45 65 76 94

а выглядит так:

1

45

65

76

94


#4

Я ввожу 1 45 65 76 94 0 и всё работает.

А вывода у вас нет


#5

при чем тут вывод когда речь идет про ввод? ожидалось что при использовании оператора read() после ввода числа и нажатия Ентер курсор останется в той же строке, но он переходит на следующую строку и введенные числа выглядят в столбик.


#6

так, разницу между read() и readln() понял, второй оператор не позволяет ввести ряд чисел и принимает только первое. Но у меня почему то ожидалась работа по аналогии с write() :slight_smile:

и объясните почему со строками он уходит в бесконечный цикл?


#7

Все работает, как положено. Картинку кликните, чтобы вся была видна.

Подробности: Часть 6, стр. 183


#8

спасибо! Старый стал позабывал все :slight_smile: Хоть опять за учебники садить…