Операторы ввода-вывода

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

Например, для того чтобы считать значение, введенное с клавиатуры, и присвоить его переменной Value, на языке Pascal нужно записать

readln (Value);

а чтобы вывести это значение на экран

writeln (Value);

Обратите внимание на то, что синтаксис в этих примерах такой же, как при вызове процедуры с параметрами. Зарезервированные слова read! n и writel n представляют собой имена процедур, написанных заранее для выполнения определенных действий.

Точно так же программист, работающий с языком С, для осуществления ввода и вывода информации может использовать процедуры (формально согласно терминологии, применяемой для языка С, они являются функциями) scanf и printf. Однако процедуры prinft языка С и writeln языка Pascal существенно отличаются в использовании параметров. Процедура writeln просто выводит переданные ей параметры в заданном порядке. В процедуре же prinft предполагается, что первый параметр описывает, в каком виде следует выводить следующие за ним параметры. То есть первый параметр в операторе вызова процедуры описывает, как данные будут располагаться на экране. Такой подход называется форматируемым вводом-выводом (formatted I/O).

Например, программист, чтобы вывести на экран переменные Значение1 и Зна-чение2 в десятичном представлении на одной строке и затем перейти на новую строку, на языке С напишет: printf ("%d %d\n", Значение]., Значение2);

Обратите внимание на то, что первый параметр (в двойных кавычках) описывает, как текст будет отображаться на экране. Он состоит из директив преобразования (%d обозначает, что выводимое целое число необходимо преобразовать в строку десятичных цифр в кодировке ASCII и поместить ее на место соответствующей директивы), печатных символов (между двумя директивами %й расположен символ пробела) и непечатных символов или управляющих последовательностей (у нас это \п — перейти на новую строку). Следовательно, в нашем примере текст состоит из числа в десятичном представлении, за которым следует пробел, другое число, возврат каретки1 и перевод строки. Оставшиеся параметры задают переменные в порядке их вывода на экран. Функция prinft формирует результирующую строку с учетом изложенного выше и выводит ее на экран начиная с текущей позиции вывода.

Вот другой пример. Если переменным Agel и Аде2 присвоены значения 16 и 25 соответственно, то в результате выполнения оператора printf ("Возраст участников от %б\п до ld.\n". Agel. Age2); на экране появится сообщение

Возраст участников от 16 до 25.

Обратите внимание на то, что сообщение на экране получается вследствие помещения значений переменных Agel и Аде2 в позиции, отмеченные значком %й, в первом параметре (рис. 5.14). Без форматируемого ввода-вывода программист, работающий на языке Pascal, для получения такого же результата использовал бы последовательность из двух команд

writeln ("Возраст участников от ". Agel); writeln ("до". Age2. "."):

Поскольку языки C++, Java и С# являются объектно-ориентированными, операции ввода-вывода в них рассматриваются как передача данных к объекту и от объекта. В частности, язык C++ предоставляет уже готовые объекты cin и cout для обозначения стандартных устройств ввода (например, клавиатура) и вывода (например, монитор).

Элементы данных, которые нужно ввести с клавиатуры или вывести на экран, передаются к этим объектам и от них в форме сообщений. Например, получить значение с клавиатуры и присвоить его переменной Value можно с помощью выражения

cin» Value;

которое предписывает объекту cin присвоить полученные им данные переменной Value. Точно так же выражение

cout «Value:

предписывает объекту cout вывести на экран данные, присвоенные переменной

Value.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: