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

на главную - закладки

Жанры

Программирование. Принципы и практика использования C++ Исправленное издание
Шрифт:

Для того чтобы определить отправную точку выполнения, каждая программа на языке С++ должна содержать функцию с именем

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

• Тип возвращаемого значения, в этой функции — тип

int
(т.е. целое число), определяет, какой результат возвращает функция в точку вызова (если она возвращает какое-нибудь значение). Слово
int
является зарезервированным в языке С++ (ключевым словом), поэтому его нельзя использовать как имя чего-нибудь еще (см. раздел А.3.1).

Имя, в данном случае
main
.

• Список параметров, заключенный в круглые скобки (см. разделы 8.2 и 8.6); в данном случае список параметров пуст.

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

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

int main { }

Пользы от этой программы мало, так как она ничего не делает. Тело функции

main
программы “Hello, World!” содержит две инструкции:

cout << "Hello, World!\n"; // вывод "Hello, World!"

return 0;

Во-первых, она выводит на экран строку

Hello, World!
, а затем возвращает значение
0
(нуль) в точку вызова. Поскольку функция
main
вызывается системой, мы не будем использовать возвращаемое значение. Однако в некоторых системах (в частности, Unix/Linux) это значение можно использовать для проверки успешности выполнения программы. Нуль (
0
), возвращаемый функцией
main
, означает, что программа выполнена успешно.

Часть программы на языке С++, определяющая действие и не являющаяся директивой

#include
(или другой директивой препроцессора; см. разделы 4.4 и А.17), называется инструкцией.

2.3. Компиляция

С++ — компилируемый язык. Это значит, что для запуска программы сначала необходимо транслировать ее из текстовой формы, понятной для человека, в форму, понятную для машины. Эту задачу выполняет особая программа, которая называется компилятором. То, что вы пишете и читаете, называется исходным кодом, или текстом программы, а то, что выполняет компьютер, называется выполняемым, объектным, или машинным кодом. Обычно файлы с исходным кодом программы на языке С++ имеют расширение

.cpp
(например,
hello_world.cpp
) или
.h
(например,
std_lib_facilities.h
), а файлы с объектным кодом имеют расширение
.obj
(в системе Windows) или
.o
(в системе Unix). Следовательно, простое слово код является двусмысленным и может ввести в заблуждение; его следует употреблять с осторожностью и только в ситуациях, когда недоразумение возникнуть не может. Если не указано иное, под словом код подразумевается исходный код или даже исходный код, за исключением комментариев, поскольку комментарии предназначены для людей и компилятор не переводит их в объектный код.

Компилятор читает исходный код и пытается понять, что вы написали. Он проверяет, является ли программа грамматически корректной, определен ли смысл каждого слова. Обнаружив ошибку, компилятор сообщает о ней, не пытаясь выполнить программу. Компиляторы довольно придирчивы к синтаксису. Пропуск какой-нибудь детали, например директивы

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

// пропущен заголовочный файл

int main

{

cout << "Hello, World!\n";

return 0;

}

Мы не сообщили компилятору о том, что представляет собой объект, поэтому он сообщает об ошибке. Для того чтобы исправить программу, следует добавить директиву

#include
.

#include "std_facilities.h"

int main

{

cout << "Hello, World!\n";

return 0;

}

К сожалению, компилятор снова сообщает об ошибке, так как мы сделали опечатку в строке

std_lib_facilities.h
. Компилятор заметил это.

#include "std_lib_facilities.h

int main

{

cout << "Hello, World!\n;

return 0;

}

В этом примере мы пропустили закрывающую двойную кавычку (

"
). Компилятор указывает нам на это.

#include "std_lib_facilities.h"

integer main

{

cout << "Hello, World!\n";

return 0;

}

Теперь мы вместо ключевого слова

int
использовали слово
integer
, которого в языке С++ нет. Компилятор таких ошибок не прощает.

#include "std_lib_facilities.h"

int main

{

cout < "Hello, World!\n";

return 0;

}

Здесь вместо символов

<<
(оператор вывода) использован символ
<
(оператор “меньше”). Компилятор это заметил.

#include "std_lib_facilities.h"

int main

{

cout << 'Hello, World!\n';

return 0;

}

Здесь вместо двойных кавычек, ограничивающих строки, по ошибке использованы одинарные. Приведем заключительный пример.

#include "std_lib_facilities.h"

int main

{

cout << "Hello, World!\n"

return 0;

}

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

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

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

Дракон - не подарок

Суббота Светлана
2. Королевская академия Драко
Фантастика:
фэнтези
6.74
рейтинг книги
Дракон - не подарок

Бастард Императора. Том 8

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

Чужая дочь

Зика Натаэль
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Чужая дочь

Эра Мангуста. Том 2

Третьяков Андрей
2. Рос: Мангуст
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эра Мангуста. Том 2

Идеальный мир для Лекаря 14

Сапфир Олег
14. Лекарь
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 14

Один на миллион. Трилогия

Земляной Андрей Борисович
Один на миллион
Фантастика:
боевая фантастика
8.95
рейтинг книги
Один на миллион. Трилогия

Помещицы из будущего

Порохня Анна
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Помещицы из будущего

Шлейф сандала

Лерн Анна
Фантастика:
фэнтези
6.00
рейтинг книги
Шлейф сандала

Черный маг императора 2

Герда Александр
2. Черный маг императора
Фантастика:
юмористическая фантастика
попаданцы
аниме
6.00
рейтинг книги
Черный маг императора 2

Император

Рави Ивар
7. Прометей
Фантастика:
фэнтези
7.11
рейтинг книги
Император

Бандит 2

Щепетнов Евгений Владимирович
2. Петр Синельников
Фантастика:
боевая фантастика
5.73
рейтинг книги
Бандит 2

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

INDIGO
15. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 2

Князь Серединного мира

Земляной Андрей Борисович
4. Страж
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Князь Серединного мира

Чайлдфри

Тоцка Тала
Любовные романы:
современные любовные романы
6.51
рейтинг книги
Чайлдфри