Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
mlr_progr_1sem.doc
Скачиваний:
7
Добавлен:
03.11.2018
Размер:
1.72 Mб
Скачать

Ввод/вывод информации на экран

Система ввода/вывода Си++ действует через так называемые потоки (streams). Поток ввода/вывода – это логическое устройство, которое выдает и принимает пользовательскую информацию. Образно говоря потоки ввода/вывода – это органы чувств программы. Как у человека есть уши, чтобы слышать и голосовые связки, чтобы говорить, так и у программы есть поток ввода для получения информации извне и поток вывода для записи информации во внешнее устройство, например, на экран.

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

Если программа на Си++ начинает выполняться, открываются четыре потока:

Поток

Значение

Устройство ввода/вывода по умолчанию

cin

Стандартный ввод

Клавиатура

cout

Стандартный вывод

Экран

cerr

Стандартная ошибка

Экран

clog

Буферизуемая версия cerr

Экран

В дальнейшем нас пока будут интересовать потоки cin, cout.

Для использования стандартных функций ввода/вывода вам необходимо подключить к вашей программе библиотеку iostream. Собственно ввод/вывод осуществляется в Си++ двумя операторами: << и >>.

С помощью оператора вывода << можно вывести данные любого базового типа Си++. Вот некоторые примеры.

cout << “Эта строка выводится на экран.\n”

cout << 100.99;

Для считывания значения с клавиатуры, используйте оператор ввода >>. Например, в этом фрагменте целая величина вводится в num.

int num.

cin >> num;

Рассмотрим несколько вариантов использования приведенных операторов ввода/вывода.

Листинг 2

/*Программа вывода строки, двух целых

чисел и одного числа с плавающей запятой*/

#include <iostream.h> // Подключение стандартной

// библиотеки ввода/вывода

void main( void )

{

int i, j; // Объявление трех переменных

double d; // i, j, d

i = 10; //

j = 20; // Их инициализация

d = 99.101; //

// Вывод данных на экран

cout << “Вот несколько чисел: ”;

cout << i;

cout << ‘ ‘;

cout << j;

cout << ‘ ‘;

cout << d

}

Ниже представлен результат работы программы.

Вот несколько чисел: 10 20 99.101

В одном выражении ввода/вывода можно выводить более одной величины. Например, программу представленную в листинге 2 можно модифицировать следующим образом:

Листинг 3

/*Модифицированная программа вывода строки,

двух целых чисел и одного числа с плавающей запятой*/

#include <iostream.h> // Подключение стандартной

// библиотеки ввода/вывода

void main( void )

{

int i, j; // Объявление трех переменных

double d; // i, j, d

i = 10; //

j = 20; // Их инициализация

d = 99.101; //

// Вывод данных на экран

cout << “Вот несколько чисел: ” << i << ‘ ‘ << j << ‘ ‘ << d;

}

Результат ее работы будет точно таким же, как и для предыдущей программы.

В листинге 4 представлен пример программы, позволяющей пользователю вводить число.

Листинг 4

/*Программа, позволяющая осуществить ввод одного числа*/

#include <iostream.h> // Подключение стандартной

// библиотеки ввода/вывода

void main( void )

{

int i; // Объявление переменной

cout << “Введите число: ”;

cin >> i;

cout << “Вот ваше число: ” << i << “\n”;

}

В ряде случаев у вас может возникать задача вывода данных в заданном формате. Для этого можно использовать функцию printf(). Так как printf() не является встроенным элементом языка Си++, то до запуска программы к ней необходимо с помощью оператора #include подключить файл-заголовок, содержащий описание функции printf(). В данном случае это файл stdio.h.

Мы уже использовали функцию printf() ранее (см. листинг 1) и теперь рассмотрим ее более подробно.

Прототип:

int printf( const char *format [, argument]... );

Описание:

Осуществляет форматированный вывод.

Параметры:

format – форматная строка;

argument – последовательность аргументов.

Возвращаемое значение:

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

Объявлен в файле-заголовке:

stdio.h

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

printf( “One string” );

Вывод:

One string

printf( “%s %s”, “One”, “string” );

Вывод:

One string

printf( “%s\n%s”, “Two”, “string” );

Вывод:

Two

string

printf( “[%d : %d]”, 1, 0 );

Вывод:

[1 : 0]

Форматная строка содержит два вида объектов: обычные символы, копируемые на экран, и спецификации преобразования, которые вызывают преобразование и печать остальных аргументов в том порядке, как они перечислены. Каждая спецификация преобразования начинается с % и заканчивается символом-спецификатором преобразования.

В общем случае спецификация преобразования имеет следующий вид:

%[флаги] [ширина] [.точность] [{h | l | I64 | L}]тип

Подробное описание всех параметров спецификации вы можете найти в приложении В 1.2 конспекта лекций. Мы же будем использовать упрощенный вариант спецификации:

%тип

Символы-спецификаторы и разъяснение их смысла приведены в таблице 1. Если за % нет правильного символа-спецификатора, результат не определен.

Таблица 1. Преобразования printf

Символ

Тип аргумента; вид печати

d, i

int; знаковая десятичная запись

o

unsigned int; беззнаковая восьмеричная запись (без 0 слева)

x, X

unsigned int; беззнаковая шестнадцатеричная запись (без 0x или 0X слева), в качестве цифр от 10 до 15 используются abcdef для x и ABCDEF для X

u

unsigned int; беззнаковое десятичное целое

c

int; единичный символ после преобразования в unsigned char

s

char *; символы строки печатаются, пока не встретится '\0' или не исчерпается количество символов, указанное точностью

f

double; десятичная запись вида [-]mmm.ddd, где количество d специфицируется точностью. По умолчанию точность равна 6; нулевая точность подавляет печать десятичной точки

e, E

double; десятичная запись вида [-]m.dddddde±xx или запись вида [-]m.ddddddE±xx, где количество d специфицируется точностью. По умолчанию точность равна 6; нулевая точность подавляет печать десятичной точки

g, G

double; используется %e и %E, если порядок меньше -4 или больше или равен точности; в противном случае используется %f. Завершающие нули и точка в конце не печатаются

p

void *; печатает в виде указателя (представление зависит от реализации

n

int *; число символов, напечатанных к данному моменту данным вызовом printf, записывается в аргумент. Никакие другие аргументы не преобразуются

%

никакие аргументы не преобразуются; печатается %

Чаще всего на печать мы выводим числа и строки. Поэтому из представленного выше списка для вас являются важными символы-спецификаторы d, g и s.

Символ

То, что выводится на экран

Пример

d

целое число

printf( “%d”, 5);

g

вещественное число (с плавающей запятой)

printf( “%g”, 5.00);

s

строка

printf( “%s”, “fine!”);

Пример

Рассмотрим следующий вызов функции printf():

printf( “I am %s\n %d : %d\n”, “fine!”, 1, 0);

В результате выполнения данной строки на экране выведется:

I am fine!

1 : 0

Форматная строка начинается со слов «I am ». Так как, перед этими словами нет «%», они выводятся на экран без каких-либо преобразований. Далее следуют символы «%s». Они означают, что следует вывести в виде последовательности символов переданный аргумент «fine!». Следует отметить, что символ «\n» следующий далее в форматной строке не относятся к символам-спецификаторам форматной строки. Это специальный символ, используемый при выводе текстовой информации. В таблице 2 приведено описание некоторых специальных символов.

Таблица 2. Некоторые специальные символы

Символ

Назначение

\n

Новая строка

\t

Табуляция

\’

Одинарная кавычка

\”

Двойная кавычка

\\

Обратный слеш

\?

Вопросительный знак

Таким образом, символ «\n» говорит о необходимости начать новую строку. Далее в форматной строке заданы символы «%d : %d». Они говорят о том, что следующие аргументы (в данном случае 1 и 0) являются целыми числами и их следует вывести на экран, разделив последовательностью символов « : ». Заканчивается форматная строка еще одним символом «\n».

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]