Ввод данных (PascalABC.NET): различия между версиями
(не показаны 3 промежуточные версии этого же участника) | |||
Строка 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. | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Если нужно ввести значения данных разных типов или много значений, используется процедура Read или Readln со списком переменных известного типа. | ||
+ | |||
+ | <syntaxhighlight lang="pascal" line> | ||
+ | ## | ||
+ | var a, b, c: real; | ||
+ | var i, j: integer; | ||
+ | Read(a, b, c, i, j); | ||
+ | Print((3 * a + 5) / (b - i) + Abs(Sqrt(2 * j - c))); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== PascalABC.NET == | == PascalABC.NET == | ||
− | PascalABC.NET предлагает совмещать описание переменной с вводом ее значения | + | PascalABC.NET предлагает совмещать описание переменной с вводом ее значения. |
+ | |||
+ | Необязательным параметром функции является строка выводимая перед вводом данных и обычно поясняющая пользователю что необходимо внести. | ||
var ИмяПеременной := ReadInteger('Текст приглашения ко вводу'); | var ИмяПеременной := ReadInteger('Текст приглашения ко вводу'); | ||
var ИмяПеременной := ReadReal('Текст приглашения ко вводу'); | var ИмяПеременной := ReadReal('Текст приглашения ко вводу'); | ||
Строка 50: | Строка 61: | ||
## | ## | ||
var (a, b) := ReadReal2('Введите длину и ширину прямоугольника:'); | var (a, b) := ReadReal2('Введите длину и ширину прямоугольника:'); | ||
− | Print('Площадь прямоугольника равна', a * b) | + | Print('Площадь прямоугольника равна', a * b); |
</syntaxhighlight> | </syntaxhighlight> | ||
Функция ReadReal2 (это именно функция) осуществляет прием с клавиатуры двух значений типа real, что подсказывает цифра 2 в ее названии, а кортежное присваивание помещает принятые значения в переменные a и b соответственно. Обратите внимание, что в процедуре вывода указано не имя переменной, а выражение. Это нормальная практика. Если значение выражения требуется в программе единственный раз, нет смысла создавать переменную и делать ей присваивание – такие действия лишь тратят память компьютера и увеличивают время работы программы. | Функция ReadReal2 (это именно функция) осуществляет прием с клавиатуры двух значений типа real, что подсказывает цифра 2 в ее названии, а кортежное присваивание помещает принятые значения в переменные a и b соответственно. Обратите внимание, что в процедуре вывода указано не имя переменной, а выражение. Это нормальная практика. Если значение выражения требуется в программе единственный раз, нет смысла создавать переменную и делать ей присваивание – такие действия лишь тратят память компьютера и увеличивают время работы программы. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
Текущая версия на 07:48, 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.
Если нужно ввести значения данных разных типов или много значений, используется процедура 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)));
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 соответственно. Обратите внимание, что в процедуре вывода указано не имя переменной, а выражение. Это нормальная практика. Если значение выражения требуется в программе единственный раз, нет смысла создавать переменную и делать ей присваивание – такие действия лишь тратят память компьютера и увеличивают время работы программы.