Ввод данных (PascalABC.NET): различия между версиями
(Новая страница: «{{TOCRight}} До сих пор мы писали программы, в которых все необходимые данные были известны за...») |
|||
Строка 2: | Строка 2: | ||
До сих пор мы писали программы, в которых все необходимые данные были известны заранее. Но типичная ситуация предполагает вычисления при задании значений некоторых данных. Например, мы хотим найти значение площади прямоугольника, длины сторон которого в процессе написания программы неизвестны. Здесь требуется операция, позволяющая ввести значения в процессе работы программы. Такой процесс называется вводом. | До сих пор мы писали программы, в которых все необходимые данные были известны заранее. Но типичная ситуация предполагает вычисления при задании значений некоторых данных. Например, мы хотим найти значение площади прямоугольника, длины сторон которого в процессе написания программы неизвестны. Здесь требуется операция, позволяющая ввести значения в процессе работы программы. Такой процесс называется вводом. | ||
+ | == Классический Паскаль == | ||
+ | Классический Паскаль предлагает всегда использовать процедуру Readln для чтения данных с клавиатуры и записи в переменные. | ||
+ | |||
+ | В качестве параметров она принимает переменные, в которые необходимо записать прочитанные данные. | ||
+ | |||
+ | == PascalABC.NET == | ||
PascalABC.NET предлагает совмещать описание переменной с вводом ее значения: | PascalABC.NET предлагает совмещать описание переменной с вводом ее значения: | ||
var ИмяПеременной := ReadInteger('Текст приглашения ко вводу'); | var ИмяПеременной := ReadInteger('Текст приглашения ко вводу'); |
Версия 07:42, 4 мая 2023
До сих пор мы писали программы, в которых все необходимые данные были известны заранее. Но типичная ситуация предполагает вычисления при задании значений некоторых данных. Например, мы хотим найти значение площади прямоугольника, длины сторон которого в процессе написания программы неизвестны. Здесь требуется операция, позволяющая ввести значения в процессе работы программы. Такой процесс называется вводом.
Классический Паскаль
Классический Паскаль предлагает всегда использовать процедуру Readln для чтения данных с клавиатуры и записи в переменные.
В качестве параметров она принимает переменные, в которые необходимо записать прочитанные данные.
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)));