Чтение онлайн

на главную

Жанры

Шрифт:

1.1 Введение

Это турне проведет вас через ряд программ и частей программ на С++. К концу у вас должно сложиться общее представление об основных особенностях С++, и будет достаточно информации, чтобы писать простые программы. Для точного и полного объяснения понятий, затронутых даже в самом маленьком законченном примере, потребовалось бы несколько страниц определений. Чтобы не превращать эту главу в описание или в осуждение общих понятий, примеры снабжены только самыми короткими определениями используемых терминов. Термины рассматриваются позже, когда будет больше примеров, способствующих обсуждению.

1.1.1

Вывод

Прежде всего, давайте напишем программу, выводящую строку выдачи:

#include «stream.h»

main (* cout «„ «Hello, world\n“; *)

Строка #include «stream.h» сообщает компилятору, чтобы он включил стандартные возможности потока ввода и вывода, находящиеся в файле stream.h. Без этих описаний выражение cout «„ „Hello, world\n“ не имело бы смысла. Операция „« («пометить в“*) пишет свой первый аргумент во второй (в данном случае, строку «Hello, world\n“ в стандартный поток вывода cout). Строка – это последовательность символов, заключенная в двойные кавычки. В строке символ обратной косой \, за которым следует другой символ, обозначает один специальный символ, в данном случае, \n является символом новой строки. Таким образом выводимые символы состоят из Hello, world и перевода строки.

– * Программирующим на C «« известно как операция сдвига влево для целых. Такое использование «« не утеряно, просто в дальнейшем «« было определено для случая, когда его левый операнд является потоком вывода. Как это делается, описано в #1.8. (прим. автора)

Остальная часть программы

main (* ... *)

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

1.1.2 Компиляция

Откуда появились выходной поток cout и код, реализующий операцию вывода ««? Для получения выполняемого кода написанная на С++ программа должна быть скомпилирована. По своей сути процесс компиляции такой же, как и для С, и в нем участвует большая часть входящих в последний программ. Производится чтение и анализ текста программы, и если не обнаружены ошибки, то генерируется код. Затем программа проверяется на наличие имен и операций, которые использовались, но не были определены (в нашем случае это cout и ««). Если это возможно, то программа делается полной посредством дополнения недостающих определений из библиотеки (есть стандартные библиотеки, и пользователи могут создавать свои собственные). В нашем случае cout и «« были описаны в stream.h, то есть, были указаны их типы, но не было дано никаких подробностей относительно их реализации. В стандартной библиотеке содержится спецификация пространства и инициализирующий код для cout и ««. На самом деле, в этой библиотеке содержится и много других вещей, часть из которых описана в stream.h, однако к скомпилированной версии добавляется только подмножество библиотеки, необходимое для того, чтобы сделать нашу программу полной.

Команда компиляции в С++ обычно называется 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 $

1.1.3

Ввод

Следующая (довольно многословная) программа предлагает вам ввести число дюймов. После того, как вы это сделаете, она напечатает соответствующее число сантиметров.

#include «stream.h»

main (* int inch = 0; // inch – дюйм cout «„ „inches“; cin “» inch; cout «„ inch; cout «« " in = "; cout «« inch*2.54; cout «« « cm\n“; *)

Первая строка функции main описывает целую переменную inch. Ее значение считывается с помощью операции »» («взять из») над стандартным потоком ввода cin. Описания cin и »», конечно же, находятся в «stream.h». После ее запуска ваш терминал может выглядеть примерно так:

$ a.out inches=12 12 in = 30.48 cm $

В этом примере на каждую команду вывода приходится один оператор. Это слишком длинно. Операцию вывода «« можно применять к ее собственному результату, так что последние четыре команды вывода можно было записать одним оператором:

cout «„ inch «« " in = " «« inch*2.54 «« « cm\n“;

В последующих разделах ввод и вывод будут описаны гораздо более подробно. Вся эта глава фактически может рассматриваться как объяснение того, как можно написать предыдущие программы на языке, который не обеспечивает операции ввода-вывода. На самом деле, приведенные выше программы написаны на С++, «расширенном» операциями ввода-вывода посредством использования библиотек и включения файлов с помощью #include. Другими словами, язык С++ в том виде, в котором он описан в справочном руководстве, не определяет средств ввода-вывода. Вместо этого исключительно с помощью средств, доступных любому программисту, определены операции «„ и “».

1.2 Комментарии

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

Символы /* начинают комментарий, заканчивающийся символами */. Вся эта последовательность символов эквивалентна символу пропуска (например, символу пробела). Это наиболее полезно для многострочных комментариев и изъятия частей программы при редактировании, однако следует помнить, что комментарии /* */ не могут быть вложенными.

Символы // начинают комментарий, который заканчивается в конце строки, на которой они появились. Опять, вся последовательность символов эквивалентна пропуску. Этот способ наиболее полезен для коротких комментариев. Символы // можно использовать для того, чтобы закомментировать символы /* или */, а символами /* можно закомментировать //.

1.3 Типы и описания

Каждое имя и каждое выражение имеет тип, определяющий операции, которые могут над ними производиться. Например, описание

int inch;

определяет, что inch имеет тип int, то есть, inch является целой переменной.

Описание – это оператор, который вводит имя в программе. Описание задает тип этого имени. Тип определяет правильное использование имени или выражения. Для целых определены такие операции, как +, -, * и /. После того, как включен файл stream.h, объект типа int может также быть вторым операндом ««, когда первый операнд ostream. Тип объекта определяет не только то, какие операции могут к нему применяться, но и смысл этих операций. Например, оператор

Поделиться:
Популярные книги

Бастард Императора

Орлов Андрей Юрьевич
1. Бастард Императора
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Бастард Императора

На границе империй. Том 10. Часть 1

INDIGO
Вселенная EVE Online
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 1

Имя нам Легион. Том 7

Дорничев Дмитрий
7. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 7

Измена. Вторая жена мужа

Караева Алсу
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Вторая жена мужа

Буря империи

Сай Ярослав
6. Медорфенов
Фантастика:
аниме
фэнтези
фантастика: прочее
эпическая фантастика
5.00
рейтинг книги
Буря империи

Пенсия для морского дьявола

Чиркунов Игорь
1. Первый в касте бездны
Фантастика:
попаданцы
5.29
рейтинг книги
Пенсия для морского дьявола

На изломе чувств

Юнина Наталья
Любовные романы:
современные любовные романы
6.83
рейтинг книги
На изломе чувств

Тринадцатый II

NikL
2. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Тринадцатый II

Сирота

Шмаков Алексей Семенович
1. Светлая Тьма
Фантастика:
юмористическое фэнтези
городское фэнтези
аниме
5.00
рейтинг книги
Сирота

Законы Рода. Том 9

Flow Ascold
9. Граф Берестьев
Фантастика:
городское фэнтези
попаданцы
аниме
дорама
фэнтези
фантастика: прочее
5.00
рейтинг книги
Законы Рода. Том 9

Красноармеец

Поселягин Владимир Геннадьевич
1. Красноармеец
Фантастика:
боевая фантастика
попаданцы
4.60
рейтинг книги
Красноармеец

Огненный князь 4

Машуков Тимур
4. Багряный восход
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Огненный князь 4

Начальник милиции. Книга 5

Дамиров Рафаэль
5. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Начальник милиции. Книга 5

Инкарнатор

Прокофьев Роман Юрьевич
1. Стеллар
Фантастика:
боевая фантастика
рпг
7.30
рейтинг книги
Инкарнатор