Ввод данных (PascalABC.NET)

Материал из Информационная безопасностя
Перейти к навигации Перейти к поиску

До сих пор мы писали программы, в которых все необходимые данные были известны заранее. Но типичная ситуация предполагает вычисления при задании значений некоторых данных. Например, мы хотим найти значение площади прямоугольника, длины сторон которого в процессе написания программы неизвестны. Здесь требуется операция, позволяющая ввести значения в процессе работы программы. Такой процесс называется вводом.

Классический Паскаль

Классический Паскаль предлагает всегда использовать процедуру 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)));