Пустой, простой и составной операторы
Пустой оператор не содержит никаких символов и не выполняет никаких действий. Обычно пустой оператор используется для организации перехода к концу какого-либо блока, если необходимо пропустить несколько операторов, но не выходить из блока.
Например:
Label Metka;
…..goto Metka;
Простые операторы – не содержат внутри себя других операторов. Например: выбора присоединения, перехода, ввода, вывода, присваивания.
Например: Readln(c); Write (a); а:=4*с+b
Составной оператор – объединение нескольких операторов в одну группу. Составной оператор представляет собой группу из произвольного числа операторов, отделенных друг от друга точкой с запятой, и ограниченную операторными скобками begin и end. Любой из операторов составного оператора может быть составным оператором.
Структура записи:
Begin – начало
Оператор 1;
Оператор 2;
Оператор N;
End – конец.
Например: условный, цикла, выбора.
В TP допускается произвольная глубина вложений составного оператора:
End является закрывающей скобкой и одновременно указывает конец предыдущего оператора.
Оператор присваивания
Оператор присваивания – основной оператор любого языка программирования, присваивает значение указанной переменной.
Формат записи: < имя > := < выражение >, где
имя – имя переменной;
:= — знак операции присваивания; выражение – уравнение, формула, значение.
Например: СТАРТ:= 1; Х0:=0; Х:=СН*М-D.
Ввод данных
Для ввода различных значений переменных применяется оператор ввода Read. Как только во время выполнения программы встречается оператор Read, машина останавливается и ожидает ввода данных. После ввода данных процесс выполнения программы продолжается.
Формат записи:Read (a1, a2, … an), где a1,a2, … an — переменные, которым последовательно присваивается вводимые значения.
Другой формат записи оператора: Readln (a1 ,a2, … an);
Отличие Readln от Read в том, что после ввода значений осуществляется перевод на новую строку.
Допускается использование операторов ввода без параметров: Readln – осуществляется перевод на новую строку без ввода данных или задержку экрана.
Вывод данных
Для вывода данных из памяти ЭВМ на экран дисплея значений осуществляется оператором Write.
Форма записи: Write (a1, a2, … an), где a1,a2, … an — переменные.
Например: Write (‘значение В = ‘, B);
Другой формат записи оператора: Writeln (a1, a2, … an) <вывод на экран переменных a1, a2, … an >
Допускается использование операторов вывода без параметров: Writeln. Осуществляется перевод на новую строку экрана. Оператор вывода без параметров часто используют для пропуска пустых строк.
Вывод данных по формату
Форма записи:
W
rite (x : n);
Количество знаков в числе
Переменная
Например:
Wtite (x : 3);
Write (x : 7);
Форма записи:
W

tite (x : n : m);
#2 Литералы и Вывод данных на экран (в консоль). Первое знакомство с Write и Writeln. Аргументы процедуры. Паскаль
![]()
Литералы — это данные записанные непосредственно в программном коде, мы можем посмотреть на них в конкретной строке программы и сказать, что это число или строка или символ и т.д. И какая именно число, строка или символ т.д. Значение литерала нельзя изменить, так как он сам и есть значение.
Типы литералов
Литералы бывают разных типов и каждый литерал соответствует какому-то типу данных, но о типах данных вообще мы поговорим позднее. Пока же рассмотрим литералы трёх типов:
- Строковые литералы
- Символьные литералы
- Числовые литералы
Строковые литералы
Строковые литералы — это строки текста. Внутри программы, написанной на языке Паскаль, они всегда берутся в одинарные кавычки, например:
Следует отметить, что строковый литерал всегда размещается на одной строке, и перенос её внутри литерала приведёт к ошибке при запуске программы.
Символьные литералы
То же самое, что и строки, только состоят из одного символа, заключенного в одинарные кавычки.
Цифра взятая в кавычки с двух сторон также трактуется как символ.
Примеры символьных литералов (с помощью комментариев к коду, добавим справа пояснения):
Последним в списке примеров символьных литералов приведён пробел, это просто символ пробела окружённый одинарными кавычками
Числовые литералы
Числовые литералы можно разделить на:
-
Целочисленные — это любые целые числа — положительные, например:
или отрицательными, например:
Далее рассмотрим использование литералов для вывода данных.
Вывод данных на экран с помощью write() и writeln()
В этом разделе мы с вами начнём писать первые работающие строки программного кода на языке Паскаль.
Первая программа — Привет Мир!
Следуя уже довольно старой и всё такой же доброй традиции, выполним нашу первую программу, поприветствовав мир:
Запустите этот пример (не забывая о том для чего нужны и что значат комментарии и операторные скобки). Вывелось ли приветствие?
Если окно в котором оно выводится слишком быстро закрывается, используйте приём для удержания консоли (просто запомните его, позже мы объясним как это работает):
Если строка выводится в виде абракадабры, то просто перепишите строковый литерал английскими буквами, как это указано в комментарии к строке вывода приветствия (просто передаём звуки русского языка латинскими символами, переводить фразу на английский не требуется).
Далее в листингах (фрагментах кода), мы будем опускать (не писать каждый раз) операторные скобки, подразумевая, что уже пишем внутри тела программы. Но для запуска этих фрагментов в вашей среде разработки, они должны быть окружены ими.
Обязательно запускайте на своём компьютере все примеры, которые будут встречаться далее.
write() и writeln() — стандартные процедуры вывода данных
Процедура — это подпрограмма, которую вызывает основная программа, чтобы подпрограмма совершила какие-то действия необходимые основной программе.
Write() и Writeln() — две стандартные (то есть разработанные создателями языка) процедуры в Паскаль, которые позволяют выводить на экран переданную в них информацию, или говорят «переданные им аргументы».
Аргументы — это значения, которые передаются в процедуру, будучи перечисленными в коде программы внутри скобок после имени процедуры, например:
Даст нам в консоли текст:
Обратите внимание, что после вызова любой процедуры обычно ставится точка с запятой.
Чтобы показать, что какое-то слово является именем процедуры в обычном тексте (учебника, например) и коде программы после имени процедуры всегда открывают и закрывают операторные скобки вне зависимости от того, перечисляются ли внутри этих скобок какие-то аргументы или нет.
Вызов процедуры с указанным именем
Чтобы вызвать какую-то процедуру необходимо знать:
- её имя
- число её аргументов и их тип
Например ,пусть у нас есть выдуманная процедура с именем, скажем, $test()$ и мы знаем, что она принимает на вход два аргумента: один целочисленный аргумент и один литерал, тогда вызвать её можно с помощью такой строки в теле программы:
Или даже передав в качестве первого аргумента переменную нужного типа:
write() & writeln()
Теперь перейдём непосредственно к обсуждению write() и writeln().
Общее:
-
И write() и writeln() служат для вывода в консоль информации.
Например, ввод чисел:
Или строк (строковый литералов):
Отличие:
- write() просто выводит на экран переданные ему аргументы.
- writeln() же выводит переданные аргументы и переводит курсор на новую строку. То есть любой следующий вызов процедуры вывода данных начнёт свой вывод уже со следующей строки.
Таким образом сравним работу фрагментов кода:
В чем разница между результатами, если запустить их? Обратите внимание в каком случае произошёл перенос строки, а в каком нет.
Пустой writeln() и пустой write() для перевода строки
Следует отметить, что по данному выше описанию работы writeln() и write() можно сказать, что вызванный без аргументов write():
не делает вообще ничего, а вот пустой writeln() позволяет перенести курсор на новую строку:
(заметьте, что в последнем примере кода использовались и однострочные и многострочные комментарии)
Вывод литералов разного типа:
Примеры вывода одного и того же разными способами
Паскаль не зря называют языком программирования, как и обычном человеческом языке «сказать» тут можно одно и то же разными способами. Поэтому очень важно понимать, всё что написано в примерах, которые встречаются в этом тексте. Если вам что-то неясно — задавайте вопросы.
Вывод одной строки — разными способами
Пусть у нас есть задача вывести в консоль такой текст:
Итак, рассмотрим разные способы:
-
Проще всего напечатать этот текст в виде строкового литерала:
— следует отметить, что запятая внутри кавычек не разделяет аргументы, а рассматривается Паскалем как обычный символ внутри строкового литерала.
ПРИМЕЧАНИЕ: Надо понимать, что множественные вызовы write() и передача всё тех же аргументов через запятую — это одно и то же, а вот множественный вызов writeln() и передача аргументов в один writeln() через запятую — не одно и то же, так как после каждого вызова writeln происходит перенос курсора на новую строку.
Вывод многострочного текста
Если требуется вывести многострочный текст, то одним или несколькими write() не обойтись, ведь нужно будет как-то переносить курсор на новую строку, а write этого делать не умеет, поэтому нам придётся использовать в том числе и writeln().
Пусть нам требуется вывести в косоль такого аски-арт робота:
По сути это текст из нескольких строк, где встречаются пробелы другие символы:
Разные способы вывода:
- В отличии от предыдущих примеров тут уже не обойтись передачей всего текста в один строковый литерал, так как этот робот многострочный, поэтому чтобы вывести его построчно будем использовать серию writeln():
- После вывода последней строки перенос курсора не обязателен, и потому можно использовать write():
- Если вы почему-то хотите вывести какую-то очередную стоку с помощью write() и после неё идёт текст, который должен начинаться с новой строки, то не забывайте дополнительно вызвать пустой writeln(), например:
Видео-пояснение
К этому уроку есть видео-пояснения:
- Виды литералов: стороковые, символьные, числовые. Writeln() — начало работы: https://youtu.be/tZYsinEC_Q0
- Write, Writeln, вывод литералов, аргументы процедуры, отличия: https://youtu.be/dcaXkgx36D0
- Урок для детей: Литералы и вывод в консоль, примеры и пояснения
Задачи для самостоятельного решения
-
Ответьте на вопросы (письменно):
- Литералы какого типа вы знаете?
- четыре аргумента — первые два целочисленные, и третий символьный и четвертый строковый.
- два разных аргумента символьного типа
- пять аргуементов — первые два строковое, один числовой и два символьных
- три аргумента: два строковых и один числовой
Подсказка: если разобраться не получается или для лучшего понимания, см. этот видео-разрабор ответа.
и вызовом этой процедуры несколько раз с каждым из этих аргументов, например:
? Будет ли разница между выведенными на экран текстами, если в них write() заменить на writeln()?
(если не можете ответить сходу — запустите по очереди оба примера ,сравните результат и снова почитайте объяснения выше)
Подсказка: если разобраться не получается или для лучшего понимания, см. этот видео-разрабор ответа.
ПРИМЕЧАНИЕ: когда будете решать следующие ниже задачи, можете привести все решения в теле одной программы, просто закомментировав то. что уже работает, ваш код будет выглядеть как-то так:
Когда же будете показывать работу программы расскомментируйте те строки, работу которых хотите продемонстрировать. Например показываем работу первой строчки тела программы (в предыдущем же примере мы показывали работу второй строки):
Далее решите задачи запуская код программы, в теле которого:
Выведите эту строку на экран 4-ре раза, для каждого пункта используя один вызов writeln(), без иного дополнительного кода :
- С помощью 1 аргумента — литерала строкового типа
- С помощью 2-х аргументов-литералов любого типа
- С помощью вывода всей строки, кроме последнего символа, потом уже этот последний символ
- Так, чтобы одна цифра была числовым литералом, вторая символом, а всё остальное чем угодно
ПРИМЕЧАНИЕ: После выполнения всех четырёх пунктов на экране (в консоли) вы должны получить 4 строки:
с помощью отдельных символов (симольных литералов), а всё остальное как угодно.
Подсказка: попробуйте решить самостоятельно, если не все понятно можно посмотреть разбор решения
Что выполняет пустой оператор writeln
Горбачев Л.И. Основы программирования в среде Turbo Pascal.
1. Простые операторы. Программирование алгоритмов линейной структуры
Оператор — предписание в языке программирования, предназначенное для задания некоторого завершенного действия в процессе переработки информации на ПЭВМ.
Основная часть программы на языке Паскаль представляет собой последовательность операторов, каждый из которых производит некоторое действие над данными. Операторы выполняются последовательно в том порядке, в котором они записаны в тексте программы. Разделителем операторов служит точка с запятой.
Все операторы языка Паскаль подразделяются на три группы: простые, ввода-вывода и структурные. Фактически операторы ввода-вывода являются обращением к стандартным процедурам, так как в Паскале нет специальных операторов ввода-вывода. Однако по установившейся традиции такие обращения называют операторами.
1.1. Простые операторы.
Операторы, не содержащие в себе никаких других операторов, называются простыми. К ним относятся операторы присваивания, безусловного перехода, вызов процедуры и пустой оператор.
1.1.1. Оператор присваивания.
Оператор присваивания (:=) предписывает выполнить выражение, заданное в его правой части, и присвоить результат переменной, идентификатор которой расположен в левой части. Переменная и выражение должны иметь один и тот же тип. Исключение представляет случай, когда переменная имеет вещественный тип, а выражение — целочисленный. Допустимо присваивание любых типов данных, кроме файловых.
Формат: имя_переменной := выражение;
Пример: Sort := 1; Cost := 15.23;
Name := ‘Модель ВАЗ 2109’;
Result := sin(A) + cos(B);
Y := Sqrt(X) + 1; L := M and N;
1.1.2. Оператор безусловного перехода (goto).
Исполняемая часть программы является некоторым составным оператором, в котором составляющие его операторы выполняются в той последовательности, в которой они записаны. Если нужно изменить такую последовательность, пользуются оператором перехода. Оператор безусловного перехода (goto) означает "перейти к. " и применяется в случаях, когда после выполнения некоторого оператора надо выполнить не следующий по порядку, а какой-либо другой, отмеченный меткой оператор. Т.е. передать управление оператору, перед которым стоит метка, указанная в операторе goto.
Формат: goto метка;
Пример: .
Label Metka1, Metka2;
.
Metka1:
goto Metka2;
Metka2:
goto Metka1;
.
Метка представляет собой идентификатор или любое целое число без знака в диапазоне от 0 до 9999. Метка должна быть описана в разделе label и записывается перед помечаемым оператором, от которого отделяется двоеточием. Между меткой и данным можно включать один или несколько пробелов.
При записи оператора goto необходимо отметить следующее:
а) метка, на которую передается управление, должна быть описана в разделе описания меток того блока процедуры, функции основной программы, в котором эта метка используется;
б) областью действия метки является тот блок, в котором она описана. Переход возможен только в пределах блока;
в) попытка выйти за пределы блока или передать управление внутрь другого блока вызывает программное прерывание.
Следует помнить, что в соответствии с правилами структурного программирования оператор goto следует применять как можно реже, т.к. считается, что его частое употребление резко усложняет понимание логики программы, усложняет ее отладку. В крайнем случае он может использоваться для преждевременного выхода из оператора повтора.
Пример: Программа, реализующая оператор GoTo.
Program GoTo;
Uses CRT;
Label Finish; < Описание метки >
Var password : integer;
Begin
Finish:
ClrScr;
Write(‘Введите пароль: ‘); ReadLn(password);
< 999 - правильное значение пароля >
if password <> 999 then
begin
WriteLn(‘Неверный пароль! Доступ запрещен!’);
goto Finish
end
else WriteLn(‘Пароль верный! Доступ разрешен!’);
ReadLn
End.
1.1.3. Оператор вызова процедуры.
Оператор вызова процедуры служит для активизации предварительно определенной пользователем или стандартной процедуры.
1.1.4. Пустой оператор.
Пустой оператор не содержит никаких символов и не выполняет никаких действий. Он может быть расположен в любом месте программы, где синтаксис языка допускает наличие оператора. Как и все другие операторы, пустой оператор может быть помечен меткой. Чаще всего пустой оператор используется для организации выхода из середины программы или составного оператора:
begin
goto Metka; <Переход в конец блока>
.
Metka: <Пустой оператор помечен меткой>
end.
Пустому оператору соответствует символ ";" на том месте, где по правилам должен быть какой-либо оператор.
Пример: A := B; ; M := 7.2;
1.1.5. Операторы ввода-вывода.
В любом языке программирования предусмотрена возможность обмена или пересылки информации между ОЗУ (оперативным запоминающим устройством) и внешними устройствами (принтер, дисплей, дисководы и т.д.).
Для ввода в ОЗУ (чтения) и вывода из ОЗУ (записи) данных в Турбо Паскале существуют стандартные (встроенные) процедуры ввода-вывода, вызываемые соответственно, операторами Read и Write.
- Read(список_переменных); — каждое вводимое значение последовательно присваивается переменным из списка; вводимые числа должны отделяться друг от друга при вводе пробелами или нажатием клавиши Enter;
- ReadLn(список_переменных); — то же, что и оператор Read, только на экране после ввода данных происходит переход на новую строку (т.е. следующий оператор ввода будет вводить данные с новой строки); вводимые числа должны отделяться друг от друга при вводе пробелами или нажатием клавиши Enter;
- ReadLn; — происходит переход на новую строку без ввода данных.
Значения вводимых переменных должны соответствовать типам переменных из списка ввода. В Турбо Паскале допускается вводить значения следующих данных: целых (integer), вещественных (real), символьных (char), а также строковых переменных (string).
- значение логической переменной;
- значение переменной типа "перечисление";
- значение переменной типа "массив" (можно вводить значения отдельных элементов массива);
- значение переменной типа "множество" (можно вводить значения отдельных элементов множества);
- значение переменной типа "запись" (можно вводить значения отдельных полей записи);
- Write(список_переменных); — выводит последовательно значения переменных из списка;
- WriteLn(список_переменных); — то же, что и оператор Write, но после вывода значений на экране осуществляется переход на новую строку (следующий оператор вывода будет выводить данные с начала новой строки);
- WriteLn; — осуществляет переход на новую строку без вывода данных (вывод "пустой" строки).
- целых переменных (integer);
- вещественных переменных (real);
- символьных переменных (char);
- логических переменных (boolean);
- символьных констант;
- арифметических и логических выражений;
- строковых переменных.
- значение переменной типа "перечисление";
- значение переменной типа "массив" (можно выводить значения отдельных элементов массива);
- значение переменной типа "множество" (можно выводить значения отдельных элементов множества);
- значение переменной типа "запись" (можно выводить значения отдельных полей записи);
В результате выводимые значения будут такими:
ПРИМЕР
I =-5 R = 3.5200000000E+00
Символ — +
B =TRUE
В Турбо Паскале предусмотрен вывод данных в определенном пользователем форматом (форматированный вывод). В общем случае формат имеет следующий вид: P:M, где P — имя переменной, M — целая константа, указывающая на число позиций, необходимых для выводимой величины P (в качестве параметра M может указываться не число, а имя константы, описанное в разделе const).
Для вещественных переменных формат может быть задан в таком виде: P:M:N (элемент : длина : количество цифр), где M — общее число позиций для выводимой переменной P, включая знак числа, целую часть, точку и дробную часть; N — число позиций дробной части. В этом случае переменная P выводится в виде константы с фиксированной точкой.
Пример: Используем форматированный вывод переменных из предыдущего примера:
.
WriteLn(‘ I =’,I:3,’ R =’,R:5:2);
WriteLn(‘ Символ — ‘,C:5);
Write(‘ B =’,B:8);
Результат:
I = -5 R = 3.52
Символ — +
B = TRUE
1.2. Примеры программ линейной структуры.
Пример: Осуществить вывод на принтер таблицы, в которой записаны значения сторон прямоугольника и его площадь.
Program DemoWriteln;
Uses CRT;
Var < A, B - стороны, Area - площадь >
A, B, Area : integer;
Begin
A := 8; B := 4;
Area := A * B;
< Lst указывает, что вывод производится на принтер >
WriteLn(Lst, ‘————————————‘);
WriteLn(Lst, ‘| Сторона A | Сторона B | Площадь |’);
WriteLn(Lst, ‘————————————‘);
WriteLn(Lst, ‘|’, A:6, ‘|’:6, B:6, ‘|’:6, Area:6, ‘|’:4);
WriteLn(Lst, ‘————————————‘);
End.
В результате работы программы получим таблицу:
—————————————-
| Сторона A | Сторона B | Площадь |
—————————————-
| 8 | 4 | 32 |
—————————————-
каждая строка которой будет печататься с первой позиции новой строки печатающего устройства.
Пример: Программа, пересчитывающая расстояние, выраженное в милях, в расстояние, выраженное в километрах.
program MilToKm;
uses CRT;
var Mil : real; < Расстояние в милях >
Km : real; < Расстояние в километрах >
Begin
ClrScr;
Write(‘Задайте расстояние в милях: ‘); ReadLn(Mil);
Km := Mil * 1.6;
WriteLn(Mil:5:2, ‘ миль это ‘, Km:5:2, ‘ километров’);
ReadLn
End.
Примечание: Оператор ReadLn можно применить для задержки вывода результата работы программы на экране до нажатия на клавишу Enter.
Что выполняет пустой оператор writeln
WriteLn: Выполняет процедуру Write, затем записывает маркер конца строки в файл.
| Объявление: | Procedure WriteLn([Var F: Text;] P1 [,P2. Pn]); |
|---|
Замечания:
Процедура WriteLn является расширением процедуры Write, поскольку она определена только для текстовых файлов. После вызова процедуры Write, WriteLn записывает маркер конца строки (CR/LF) в файл. Обращение типа WriteLn(F) записывает маркер конца строки в файл F. Вызов WriteLn без параметров соответствует вызову WriteLn(Output).
Ограничения:
Файл должен быть открыт на запись.
Пример программы для процедуры WriteLn.
- Read
- ReadLn
- Write
Программирование
Исходники Pascal (127)
Справочник
Справочник по паскалю: директивы, функции, процедуры, операторы и модули по алфавиту
Pascal. Операторы ввода-вывода
Процедура ввода данных с клавиатуры – Read (читать). Ее можно представить так:
В качестве списка ввода выступают имена переменных. Во время выполнения оператора ввода данных программа останавливается и ждет, пока они будут введены. Для завершения ввода необходимо нажать Enter. Если переменных несколько, то они могут вводиться через пробел, либо, введя одну переменную нужно нажать Enter, потом ввести вторую и т. д.
Для перевода каретки после выполнения оператора Read на новую строку, следует прибавить окончание ln:
Также можно не указывать список ввода:
Программа не перейдет к выполнению следующей части до тез пор, пока не выполниться пустой оператор.
Вывод данных:
Для вывода данных в Паскале имеется оператор Write. Для того, чтобы каретка переводилась на следующую строку, к нему прибавляется окончание ln и получается Writeln. В общем виде эти операторы имеют вид:
Элементами списка вывода являются величины различных типов, в том числе выражения и строки, отделенные друг от друга запятыми, например:
Здесь x и y – параметры, заключенные в круглые скобки. Возможно использование оператора вывода и без параметров:
Форматированный вывод:
Недостаточно просто вывести значение на экран, нужно также сделать это как можно корректнее. Допустим нам нужно в одном операторе Write вывести значения нескольких переменных (a=1, b=2, c=3). Пишем:
После выполнения, на экране действительно отобразятся значения данных переменных, но это понятно компьютеру, а пользователь увидит число 123. Необходимо придать вид выводимым данным, сделать это в Паскале можно двумя способами:
1) Вписать пробел вручную, например:
2) Воспользоваться возможностью форматированного вывода:
Двоеточие относиться к переменной, после которой оно следует, и говорит программе, что при выводе (переменной) нужно выделить место, заданное целым числом (в нашем случае это 2), т. е. под значения, хранящиеся в переменных b и c отводиться две клетки, сами они выведутся «прижатыми» к правому краю.
Процедура форматированного вывода может применяться и к другим типам данных, но особого внимания заслуживает вещественный тип. Как известно переменные вещественного типа имеют целую и дробную части, поэтому для них предусмотрена такая форма записи с использованием формата:
Результат выполнения: 32.101
Формат 5 означает, что всего под число 32.1012 выделено 5 клеток, а 2 – из этих пяти под дробную часть отводиться 2 клетки.
Операторы Write и WriteLn
Мы уже использовали операторы Write и WriteLn, но нам необходимо подробнее остановиться на правилах применения этих операторов.
Write (англ. писать) – оператор, который используется для вывода информации на экран. Оператор WriteLn выполняет то же самое действие, но так как у него есть еще окончание Ln (line — англ. линия, строка), то после вывода на экран нужного сообщения, он дополнительно переводит курсор на следующую строчку.
Write (список выражений)
WriteLn (список выражений)
Процедуры Write и WriteLn используются не только для вывода результата, но и для вывода различных сообщений или запросов. Это позволяет вести диалог с пользователем, сообщать ему, когда ему нужно ввести значения , когда он получает результат, когда он ошибся и др.
Например, при выполнении процедуры WriteLn(‘Найденное число ‘,а), будет напечатана строчка, заключенная в апострофы, а затем выведено значение переменной а.
Оператор WriteLn можно применить и без параметров. В этом случае напечатается строка, состоящая из пробелов, и курсор будет переведен на другую строку. Это иногда нам нужно для лучшего восприятия ввода данных.