Ввод данных (PascalABC.NET): различия между версиями
Строка 22: | Строка 22: | ||
<syntaxhighlight lang="pascal" line> | <syntaxhighlight lang="pascal" line> | ||
begin | begin | ||
− | var a: integer; | + | var a, c: integer; |
var b: real; | var b: real; | ||
− | |||
Readln(a, b, c); | Readln(a, b, c); | ||
end. | end. |
Версия 07:45, 4 мая 2023
До сих пор мы писали программы, в которых все необходимые данные были известны заранее. Но типичная ситуация предполагает вычисления при задании значений некоторых данных. Например, мы хотим найти значение площади прямоугольника, длины сторон которого в процессе написания программы неизвестны. Здесь требуется операция, позволяющая ввести значения в процессе работы программы. Такой процесс называется вводом.
Классический Паскаль
Классический Паскаль предлагает всегда использовать процедуру Readln для чтения данных с клавиатуры и записи в переменные.
В качестве параметров она принимает переменные, в которые необходимо записать прочитанные данные.
Например следующий код считает с клавиатуры значение и поместит его в переменную a целого типа.
1 Begin
2 var a: integer;
3 Readln(a);
4 end.
Мы можем считать несколько значений в одной строке (Readln - сокращение от Read Line - прочитать строку)
Следующий код считывает три значения в одной строке и записывает их в переменные.
Обратите внимание, что переменные не обязательно должны быть одного типа данных.
1 begin
2 var a, c: integer;
3 var b: real;
4 Readln(a, b, c);
5 end.
PascalABC.NET
PascalABC.NET предлагает совмещать описание переменной с вводом ее значения:
var ИмяПеременной := ReadInteger('Текст приглашения ко вводу'); var ИмяПеременной := ReadReal('Текст приглашения ко вводу');
Если приглашение не нужно, оператор выглядит еще проще
var ИмяПеременной := ReadInteger(); var ИмяПеременной := ReadReal();
Если переменная была описана ранее, ключевое слово var указывать нельзя поскольку повторное описание переменных язык запрещает. Так вводится значение одной переменной. А если их больше? Вспомним кортежное присваивание: оно и тут имеется, только в ограниченном количестве – до четырех переменных.
var (имя1, имя2) := ReadInteger2('Текст приглашения ко вводу'); var (имя1, имя2) := ReadReal2('Текст приглашения ко вводу');
Имеются также ReadInteger3, ReadReal3, ReadInteger4 и ReadReal4.
В Паскале операция ввода с клавиатуры непременно должна завершиться нажатием клавиши Enter. Вводимые данные могут разделяться пробелами, но можно также в ходе ввода использовать Enter – это решает пользователь программы.
Универсальная программа для расчета площади прямоугольника могла бы выглядеть так
1 ##
2 var (a, b) := ReadReal2('Введите длину и ширину прямоугольника:');
3 Print('Площадь прямоугольника равна', a * b)
Функция ReadReal2 (это именно функция) осуществляет прием с клавиатуры двух значений типа real, что подсказывает цифра 2 в ее названии, а кортежное присваивание помещает принятые значения в переменные a и b соответственно. Обратите внимание, что в процедуре вывода указано не имя переменной, а выражение. Это нормальная практика. Если значение выражения требуется в программе единственный раз, нет смысла создавать переменную и делать ей присваивание – такие действия лишь тратят память компьютера и увеличивают время работы программы.
Если нужно ввести значения данных разных типов или много значений, используется процедура Read или Readln со списком переменных известного типа.
1 ##
2 var a, b, c: real;
3 var i, j: integer;
4 Read(a, b, c, i, j);
5 Print((3 * a + 5) / (b - i) + Abs(Sqrt(2 * j - c)));