Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на C / C++ / Нейбауэр А. Моя первая программа на С.doc
Скачиваний:
182
Добавлен:
02.05.2014
Размер:
3.75 Mб
Скачать

Выбор правильных средств вывода информации

Когда вы планируете способ представления информации в вашей программе, обдумайте, какие именно функции наилучшим образом соответствуют вашим целям.

Чтобы вывести на экран обычный текст или символы, можно использовать функции puts() или putchar(). Так как эти функции не имеют никаких возможностей форматирования данных, они работают быстрее, и их коды занимают меньший объем на диске, чем коды функции printf(). Имея дело с функцией puts(), прежде всего проверьте, добавляет ли компилятор код «новая строка» автоматически. Если он не делает этого, а вы не проверите сразу, потом вам придется потратить довольно много времени на редактирование программы.

Рис. 4.18. Правила использования функции printf()

Кстати, при работе с функцией printf(), пропуск кода «новая строка» тоже является распространенной оплошностью среди начинающих программистов.

Функция printf() работает медленнее и требует большего объема памяти, но она идеально подходит в тех случаях, когда вам требуется выводить числовые данные, форматировать строки или комбинировать текст и числовые переменные в одной строке. Работая с функцией printf(), следует тщательно следить за тем, чтобы указатели формата соответствовали литералам, константам и переменным в списке данных. Рис.4.18 иллюстрирует наиболее важные моменты, необходимые, чтобы правильно написать инструкцию, использующую функцию printf().

Вывод в Си++

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

В Си++ существует стандартный поток вывода cout, позволяющий в сочетании с двумя символами «меньше»

(<<)

, которые называются оператором вставки*, отображать литералы или значения констант и переменных без использования указателей формата.

Если у вас есть компилятор Си++, посмотрите документацию к нему. Не исключено, что необходим специальный файл заголовков для того, чтобы иметь возможность использовать преимущества стандартного потока вывода cout и стандартного потока ввода cin (о нем вы прочтете в следующей главе). Для некоторых компиляторов, например, необходимо включить файл STREAM.H с помощью директивы #include в начале программы (директива #include и использование файлов заголовков рассматривались в главе 2).

______________________________________

* В оригинале insertion operator. Также часто используется термин «оператор вывода». (Прим.перев.)

Рис. 4.19. Стандартный поток вывода cout

Структура инструкции, использующей cout, показана на рис.4.19. После cout надо поставить два знака

<

. Они указывают cout отобразить помещенную после них информацию. Информация может быть представлена в виде литерала (тогда ее заключают в кавычки) либо имени константы или переменной.

Рассмотрим инструкцию cout << "Привет, меня зовут Сэм. Мы с вами уже встречались";

При ее выполнении произойдет вывод на дисплей строки, заключенной в кавычки. Инструкция

int count;

count = 4509;

cout << count

отобразит значение переменной с именем count — число 4509.

Рис. 4.20. Вывод нескольких аргументов с помощью cout

Используя один стандартный поток вывода cout, можно отобразить несколько аргументов. Между собой аргументы разделяются операторами вставки, как это продемонстрировано на рис.4.20. Например, инструкция

int age;

age = 43;

cout << "Вам исполнилось " << age << " года.";

отображает текст

Вам исполнилось 43 года.

Стандартный поток вывода cout отображает каждый пункт, указанный с помощью оператора вставки, в том порядке, в каком они записаны в инструкции.

Так же, как и функция printf(), cout не добавляет никаких команд новой строки после отображения данных. Чтобы перейти к новой строке, там, где вы хотите ее начать, надо добавить управляющий код \n, как это показано на рис.4.20.

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

Замечания по Си++

Одна из особенностей языка Си++ — так называемая перегрузка — делает необязательным использование указателей формата. В отличие от функции printf(), которая требует обязательного указания формата данных, cout при передаче параметров сам определяет формат на основании типа получаемых данных. Этот процесс и называется перегрузкой.