Ввод данных (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;
  var c: integer;
 
 
   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 соответственно. Обратите внимание, что в процедуре вывода указано не имя переменной, а выражение. Это нормальная практика. Если значение выражения требуется в программе единственный раз, нет смысла создавать переменную и делать ей присваивание – такие действия лишь тратят память компьютера и увеличивают время работы программы.
 
Если нужно ввести значения данных разных типов или много значений, используется процедура 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>
 

Текущая версия на 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 соответственно. Обратите внимание, что в процедуре вывода указано не имя переменной, а выражение. Это нормальная практика. Если значение выражения требуется в программе единственный раз, нет смысла создавать переменную и делать ей присваивание – такие действия лишь тратят память компьютера и увеличивают время работы программы.