Процедуры Read и Readln в языках семейства Паскаль (Pascal) предназначены для организации ввода данных с клавиатуры или их чтения из файла. Процедура Read завершает чтение непосредственно после получения последнего символа исходных данных, ограниченного пробелом или признаком смены строки (который получается при нажатии клавиши Enter). Процедура Readln, кроме того, осуществляет принудительный переход к следующей строке, пропуская признак смены строки.
Пример. Пусть надо ввести значения для переменных a и b типа integer.
Read(a, b); выполнит такой ввод независимо от того, как разделять значания - одним или более пробелами, нажатием Enter или комбинацией этих действий.
Readln(a, b); поведет себя точно так же. Поэтому нет разницы, какую из двух процедур использовать (зато Read короче писать!) для ввода данных числового типа.
Но для ввода символов и символьных строк разница есть!
Пробел и признак смены строки - это тоже символы, поэтому тут нужно использовать только Readln, поскольку признаком разделения данных для строк является только смена строки. Строка также может быть и пустой, т.е. не содержать символов.
Поэтому правило такое: если нет ввода символьных данных - используем Read. Если вводятся символьные данные, используем Readln, причем, если перед вводом таких данных вводятся числовые данные, их также надо вводить посредством Readln. Почему? Чтобы после Read не остался ко вводу признак смены строки и не получить в качестве вводимой затем строки пустую.
Подробнее обо всем этом можно прочесть в литературе по языку Паскаль. Например, в книге "PascalABC.NET: Введение в современное программирование", стр 214. Она легко ищется в Интернет, расположена на официальном сайте PascalABC.NET и бесплатна для скачивания.
Адекватная версия:
PascalABC.NET
begin
var expr := Readstring();
expr.Split(' ')[0].Println;
end.
Версия "Нас так учили"
var
expression: string;
s_index: byte;
begin
s_index := 1;
readln(expression);
while expression[s_index] <> ' ' do begin
write(expression[s_index]);
s_index := s_index + 1;
end;
end.
Объяснение:
Т.к по условию слово - последовательность непробельных символов, ограниченная пробелами или концами строки, то данная программа полностью игнорирует пунктуацию и считает любой символ частью того слова, с которым он не разделён пробелом.
1)Да
2)Нет
3)Да
Тест 21) X:=8+2*5.
1) X:=8+2*5.В итоге получаем 8+10=18.
1) X:=8+2*5.В итоге получаем 8+10=18.2)Y:=(x mod 10) + 14
1) X:=8+2*5.В итоге получаем 8+10=18.2)Y:=(x mod 10) + 14Получаем : y:=(18 mod 10) +14.
1) X:=8+2*5.В итоге получаем 8+10=18.2)Y:=(x mod 10) + 14Получаем : y:=(18 mod 10) +14. Mod - остаток от деления.
1) X:=8+2*5.В итоге получаем 8+10=18.2)Y:=(x mod 10) + 14Получаем : y:=(18 mod 10) +14. Mod - остаток от деления. Следовательно - 8+14=22
1) X:=8+2*5.В итоге получаем 8+10=18.2)Y:=(x mod 10) + 14Получаем : y:=(18 mod 10) +14. Mod - остаток от деления. Следовательно - 8+14=223)X:=(Y div 10) +3
1) X:=8+2*5.В итоге получаем 8+10=18.2)Y:=(x mod 10) + 14Получаем : y:=(18 mod 10) +14. Mod - остаток от деления. Следовательно - 8+14=223)X:=(Y div 10) +3Div - целая часть от деления.
1) X:=8+2*5.В итоге получаем 8+10=18.2)Y:=(x mod 10) + 14Получаем : y:=(18 mod 10) +14. Mod - остаток от деления. Следовательно - 8+14=223)X:=(Y div 10) +3Div - целая часть от деления.Получаем : X:=(22 div 10) +3
1) X:=8+2*5.В итоге получаем 8+10=18.2)Y:=(x mod 10) + 14Получаем : y:=(18 mod 10) +14. Mod - остаток от деления. Следовательно - 8+14=223)X:=(Y div 10) +3Div - целая часть от деления.Получаем : X:=(22 div 10) +3Следовательно 2+3=5.
1) X:=8+2*5.В итоге получаем 8+10=18.2)Y:=(x mod 10) + 14Получаем : y:=(18 mod 10) +14. Mod - остаток от деления. Следовательно - 8+14=223)X:=(Y div 10) +3Div - целая часть от деления.Получаем : X:=(22 div 10) +3Следовательно 2+3=5.ответ : x=5, y=22.