Для чего предназначен оператор readln a для ввода данных с клавиатуры

Обновлено: 06.07.2024

Процедуры Read и ReadLn выполняют чтение информации из устройства стандартного ввода. В консольных приложениях этим устройством может быть, например, клавиатура (точнее - введённые с клавиатуры данные), в графических приложениях - файл на диске.

То есть эти процедуры являются “антиподами” процедур Write и WriteLn - выполняют противоположные им действия.

Процедуры Read и ReadLn выполняют схожие действия. Основное отличие между ними следующее: процедура ReadLn после завершения ввода выполняет перевод строки (а в случае с файлами читает файл строка за строкой). А процедура Read читает данные подряд - без перевода строки.

В Турбо Паскале я не помню такого (может просто забыл), но в FreePascal ввод с клавиатуры можно выполнять только процедурой ReadLn, а процедура Read почему-то не работает.

Синтаксис для вывода на консоль:

procedure Read(Args: Arguments);

Синтаксис для вывода в файл:

procedure Read(var F: Text; Args: Arguments);

Аргументами (Arguments) могут быть переменные разных типов. Если используется несколько переменных, то они перечисляются через запятую. Например:

Как уже было сказано, при вводе с консоли эти переменные могут быть разных типов. Но, в отличие от процедур Write/WriteLn использовать константы не допускается (и это логично))).

ВАЖНО!
При вводе данных следует учитывать, что в случае, если введённое пользователем значение имеет тип, отличный от типа переменной, в которую вводится это значение, то возникнет ошибка времени выполнения. Если, например, в указанном выше примере пользователь в качестве первого числа введёт вещественное значение (такое как 3.14), то программа завершится аварийно, так как переменная х имеет целый тип.

При чтении из файла можно работать как с типизированными файлами, так и с текстовыми файлами.

Если F (см. синтаксис) - это типизированный файл, то переменные, передаваемые как параметры (Args) должны иметь такой же тип, какой указан для файла F. Нетипизированные файлы использовать не допускается. Если параметр F не указан, то предполагается, что чтение выполняется из стандартного устройства ввода.

Если файл F имеет тип Text, то переменные должны иметь тип Char, Integer, Real или String.

Если при чтении файла нет данных, доступных для чтения, то в переменную F возвращается пустое значение (0 - для порядковых типов, пустая строка - для строковых).

Маркер конца строки не является частью прочитанной строки и игнорируется.

Если во время выполнения процедуры Read/ReadLn происходит ошибка, то генерируется ошибка времени выполнения. Такое поведение не всегда приемлемо (например, во время чтения файла). Поэтому в каких-то случаях генерацию ошибок отключают. Сделать это можно с помощью директивы компилятора .

В разных отладочных и учебных программах процедуру ReadLn часто используют для того, чтобы консольное приложение не закрылось автоматически после выполнения. Для этого в конце программы просто записывают (как в примере выше):

То есть просто имя процедуры без параметров. В этом случае программа будет ожидать нажатия клавиши ENTER. Следовательно, программа не завершится, пока не будет нажата клавиша ENTER, и это позволит увидеть результат работы программы. Разумеется, в операционной системе DOS (и подобных) такой проблемы нет. Это актуально только для Windows.

оператор write и writeln

Если необходимо после вывода перейти на другую строку, то используется оператор writeln () .

Результат:

Рассмотрим примеры задач с использованием вывода Writeln в Pascal:

Write('Сумма 5 + 6 = ',5+6);

Результат: Сумма 5 + 6 = 11

Результат: Привет

Результат: AB

Результат:
A
B

begin var n:integer; read(n); n: = n * n; print('n = ',n);

2 способ (форматный вывод):

begin var a:=1.2; var b:=4; var c:=a+b; WritelnFormat ('f (, ) = ', a, b, c); end.

var x := ReadInteger('Enter x:'); var y := ReadInteger('Enter y:'); var res := x + y; Print($'Sum of and is ');

Задача 1. Написать программу, которая выводит на экран ваши ФИО, каждое слово – с новой строки.

[Название файла: L1task1.pas ]

Оператор присваивания и оператор Readln в Pascal

Оператор присваивания

Важно: Идентификаторы состоят из буквы, за которой могут следовать буквы, цифры или символ подчеркивания

Чтобы задать переменной какое-либо значение используется оператор присваивания. Оператор присваивания в Паскале обозначается как := , выполняет правую часть выражения и присваивает результат переменной, расположенной в левой части выражения:

оператор присваивания


Пример:

a:=2; writeln('квадрат ',a,'=',a*a);

begin var n:integer; // объявление переменной n:=1; // присваивание

2 method (канонический):

begin var n:=1; // объявление переменной и присваивание значения => инициализация

Ввод данных

Пример использования readln в Pascal:

Writeln('Введите число'); readln(a); writeln('квадрат ',a,'=',a*a);

то же самое, что и read:
Пример использования read в Pascal:

Writeln('Введите число'); read(a); writeln('квадрат ',a,'=',a*a);

Если запрашиваются две переменные, то можно перечислять их через запятую:

Writeln('Введите два числа'); read(a,b); writeln('сумма чисел = ',a+b);

Пример: Запросить для ввода два целых числа и вывести на экран их сумму.

begin var n:integer; // n - целочисленная переменная read(n); // ввод значения и сохранение его в переменной n

begin var n:real; // n - переменная вещественного типа read(n);// ввод значения и сохранение его в переменной n

// n - целочисленная переменная и мы вводим значение и сохранением его в переменной n var n:=ReadInteger(); // х - переменная вещественного типа и мы вводим значение и сохранением его в переменной х var x:=ReadReal();

3 способ (кортежное присваивание):

var n1, n2: integer; // объявление двух переменных (n1, n2) := (1, 2); // 1 присваивается переменной n1, 2 присваивается переменной n2

// n1 и n2 - целочисленные переменные и мы вводим для них два значения var(n1, n2) := readInteger2;

var x := ReadInteger('Введите x:'); var y := ReadInteger('Введите y:'); var res := x + y;

Компьютерные программы обрабатывают (изменяют) различные данные. Программа получает данные, что-то делает с ними и выводит их в измененной форме или выводит другие данные.

Следовательно, любой язык программирования должен иметь инструменты как для ввода данных, так и их вывода. В Паскале ввод осуществляется с помощью процедур read() и readln() , а вывод - благодаря write() и writeln() . Процедуры, которые имеют окончание ln , после своего выполнения переводят указатель на новую строку.

Откуда или с помощью чего можно ввести данные в программу? Обычно это можно сделать с помощью клавиатуры или из файлов.

Куда можно вывести данные? На экран, в файл, на принтер и др.

Стандартным устройством ввода является клавиатура, а вывода — монитор. Стандартные — значит "работающие по-умолчанию"; т.е. если не указано ничего иного, то программа будет считывать данные с клавиатуры, а выводить их на монитор. Вместе клавиатуру и монитор называют консолью. Таким образом консоль представляет собой стандартное устройство ввода-вывода.

Вывод данных на экран. Форматированный вывод

Вывод данных на экран и в файл в языке программирования Pascal осуществляется с помощью процедур write ( ) и writeln ( ) . Здесь будет рассмотрен вывод только на экран.

Допустим, нам требуется отобразить на экране пару фраз. Если мы хотим, чтобы каждая из них начиналась с новой строки, то надо использовать writeln() , если нет – то write() .

Вывод с помощью writeln и write

Еще один пример. В памяти компьютера хранятся данные. Из программы мы обращаемся к ним с помощью переменных num, fl и st. Вывести их значения на экран можно по-разному.

Форматированный вывод

Во втором случае мы видим, что процедуры вывода (как write() так writeln() ) позволяют конструировать выводимую информацию из различных компонент (строк-констант и переменных).

В третьем случае был осуществлен так называемый форматированный вывод. При этом для выводимого значения указывается ширина поля вывода (количество знакомест). Если мы выводим вещественное (дробное) число, то вторым числом через двоеточие указывается количество знаков после запятой. Если для вещественных чисел не осуществлять форматирование, то они отобразятся так, как определено для данного компьютера. Если указать только число знакомест без фиксирования дробной части, то вывод будет в экспоненциальной форме.

Ввод данных с клавиатуры

Ввод данных в языке программирования Паскаль обеспечивается процедурами read() и readln() . Ввод данных осуществляется либо с клавиатуры, либо из файла. Здесь рассматривается только ввод с клавиатуры.

Когда данные вводятся, то они помещаются в ячейки памяти, доступ к которым обеспечивается с помощью механизма переменных. Поэтому, когда в программе на Pascal используется процедура read() (или readln() ), то в качестве фактического параметра (аргумента) ей передается имя переменной, которая будет связана с вводимыми данными. Потом эти данные можно будет использовать в программе или просто вывести на экран.

Readln

В процедуры ввода можно передавать не один фактический параметр, а множество.

Передача readln нескольких параметров

При вводе данных их разделяют пробелом, табуляцией или переходом на новую строку (Enter). Данные символьного типа не разделяются или разделяются переходом на новую строку.

Существуют особенности ввода данных с помощью операторов read() и readln() . Если используются подряд несколько операторов read() , то вводимые данные можно разделять всеми допустимыми способами. При использовании нескольких вызовов readln() каждый последующий срабатывает только после нажатия Enter. Программа ниже иллюстрирует это. Комментарии поясняют последовательность возможных действий при вводе данных.

Приветствую. Сегодня я хотел бы затронуть тему операторов ввода данных.

Ничего не напоминает? Те, кто внимательно читали предыдущую статью, скажут что эти операторы похожи на операторы вывода. И будут правы! Оператор readln отличается от оператора read только лишь тем, что после ввода данных переводит курсор на следующую строку

Возьмем для примера задачу №1 из первого урока. В ней, если вы помните, длину и ширину прямоугольника мы непосредственно вбивали в код программы. Сейчас мы немного поколдуем над кодом и сделаем так, чтобы эти данные можно было вводить с клавиатуры каждый раз при запуске программы.

Для этого вместо куска кода пишем

Попробуйте теперь запустить программу с измененным кодом. На всякий случай напишу весь код:

Заметили, как теперь при запуске программа ждет ввода данных? И пока ввод не будет осуществлен, она не продолжит выполнение. Но согласитесь, это мы с вами знаем, что при запуске программы нужно ввести значения длины и ширины, а кто-то другой, запустив ее, не догадается до этого. Поэтому нам нужно вывести на экран просьбу, что-то вроде "Введите длину". Для этого используем оператор вывода write. О нем я уже писал в предыдущем уроке.

Ход ваших рассуждений при составлении программы должен быть примерно следующим:
1) Мне нужно попросить пользователя ввести значения ширины прямоугольника. Для этого использую оператор вывода: writeln('Введите ширину прямоугольника');
2) Теперь нужно чтобы программа прочитала это значение. Для этого использую оператор ввода: readln(A);

Здесь немного остановимся. Возможно у вас возник вопрос: "А что значит буква А в скобках?" Так вот, в скобках вы указываете ту переменную, которой будет присвоено значение, введенное с клавиатуры. В нашем случае ширину мы записываем в переменную А, следовательно и в скобках пишем ее.
3) Далее мне нужно попросить пользователя ввести длину. По аналогии с первым пунктом:
writeln('Введите длину прямоугольника');
4) Считываем введенное значение по аналогии со 2-ым пунктом: readln(B);

Вот и все, соберем весь код в кучу:

Запустите программу, посмотрите как она выполняется. На мой взгляд чего-то не хватает. Как думаете? Следует выводить на экран что-то типа "Ответ" или "Периметр language-pascal">write(P); строку: write('Периметр =');

2) Модернизировать предпоследнюю строчку кода write(P) . Делается это следующим образом: пишем оператор write, открываем круглую скобку, в одинарных кавычках пишем 'Периметр = ', ставим запятую и после нее пишем переменную P. Вот как это будет выглядеть: write('Периметр = ',P);

Запустите программу, протестируйте ее при разных значениях длины и ширины. Если возникли какие-то вопросы, не стесняйтесь задавать их, контакты для связи со мной находятся здесь. Ну, а если вопросов нет, можете приступать к следующему уроку

Читайте также: