Это турне проведет вас через ряд программ и частей программ на C++. К концу у вас должно сложиться общее представление об основных особенностях C++, и будет достаточно информации, чтобы писать простые программы. Для точного и полного объяснения понятий, затронутых даже в самом маленьком законченном примере, потребовалось бы несколько страниц определений. Чтобы не превращать эту главу в описание или в обсуждение общих понятий, примеры снабжены только самыми короткими определениями используемых терминов. Термины рассматриваются позже, когда будет больше примеров, способствующих обсуждению.
Вывод
Прежде всего, давайте напишем программу, выводящую строку выдачи:
#include
main()
{ cout << "Hello, world\n"; }
Строка #include сообщает компилятору, чтобы он включил стандартные возможности потока ввода и вывода, находящиеся в файле stream.h. Без этих описаний выражение cout << "Hello, world\n" не имело бы смысла. Операция << ("поместить в"*1) пишет свой первый аргумент во второй (в данном случае, строку "Hello, world\n" в стандартный поток вывода cout). Строка - это последовательность символов, заключенная в двойные кавычки. В строке символ обратной косой \, за которым следует другой символ, обозначает один специальный символ; в данном случае, \n является символом новой строки. Таким образом выводимые символы состоят из Hello, world и перевода строки.
Остальная часть программы
main() { ... }
определяет функцию, названную main. Каждая программа должна содержать функцию с именем main, и работа программы начинается с выполнения этой функции.
Компиляция
Откуда появились выходной поток cout и код, реализующий операцию вывода < Для получения выполняемого кода написанная на C++ программа должна быть скомпилирована; по своей сути процесс компиляции такой же, как и для С, и в нем участвует большая часть входящих в последний программ. Производится чтение и анализ текста программы, и если не обнаружены ошибки, то генерируется код. Затем программа проверяется на наличие имен и операций, которые использовались, но не были определены (в нашем случае это cout и <<). Если это возможно, то программа делается полной посредством дополнения недостающих определений из библиотеки (есть стандартные библиотеки, и пользователи могут создавать свои собственные). В нашем случае cout и << были описаны в stream.h, то есть, были указаны их типы, но не было дано никаких подробностей относительно их реализации. В стандартной библиотеке содержится спецификация пространства и инициализирующий код для cout и <<. На самом деле, в этой библиотеке содержится и много других вещей, часть из которых описана в stream.h, однако к скомпилированной версии добавляется только подмножество библиотеки, необходимое для того, чтобы сделать нашу программу полной.
Команда компиляции в C++ обычно называется CC. Она используется так же, как команда cc для программ на C; подробности вы можете найти в вашем руководстве. Предположим, что программа с "Hello, world" хранится в файле с именем hello.c, тогда вы можете ее скомпилировать и запустить примерно так ($ - системное приглашение):
$ CC hello.c $ a.out Hello,world $
a.out - это принимаемое по умолчанию имя исполняемого результата компиляции. Если вы хотите назвать свою программу, вы можете сделать это с помощью опции -o:
$ CC hello.c -o hello $ hello Hello,world $
Ввод
Следующая (довольно многословная) программа предлагает вам ввести число дюймов. После того, как вы это сделаете, она напечатает соответствующее число сантиметров.
#include main() { int inch = 0; // inch - дюйм cout << "inches"; cin >> inch; cout << inch; cout << " in = "; cout << inch*2.54; cout << " cm\n"; }
Первая строка функции main() описывает целую переменную inch. Ее значение считывается с помощью операции >> ("взять из") над стандартным потоком ввода cin. Описания cin и >>, конечно же, находятся в . После ее запуска ваш терминал может выглядеть примерно так:
$ a.out inches=12 12 in = 30.48 cm $
В этом примере на каждую команду вывода приходится один оператор; это слишком длинно. Операцию вывода << можно применять к ее собственному результату, так что последние четыре команды вывода можно было записать одним оператором:
cout << inch << " in = " << inch*2.54 << " cm\n";
В последующих разделах ввод и вывод будут описаны гораздо более подробно. Вся эта глава фактически может рассматриваться как объяснение того, как можно написать предыдущие программы на языке, который не обеспечивает операции ввода-вывода. На самом деле, приведенные выше программы написаны на C++, "расширенном" операциями ввода-вывода посредством использования библиотек и включения файлов с помощью #include. Другими словами, язык C++ в том виде, в котором он описан в справочном руководстве, не определяет средств ввода-вывода; вместо этого исключительно с помощью средств, доступных любому программисту, определены операции << и >>.
8 8 8
| |