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

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

Жанры

Программирование. Принципы и практика использования 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;

}

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

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

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

Бальмануг. Невеста

Лашина Полина
5. Мир Десяти
Фантастика:
юмористическое фэнтези
5.00
рейтинг книги
Бальмануг. Невеста

Егерь

Астахов Евгений Евгеньевич
1. Сопряжение
Фантастика:
боевая фантастика
попаданцы
рпг
7.00
рейтинг книги
Егерь

Мастер 8

Чащин Валерий
8. Мастер
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Мастер 8

Секретарша генерального

Зайцева Мария
Любовные романы:
современные любовные романы
эро литература
короткие любовные романы
8.46
рейтинг книги
Секретарша генерального

Феномен

Поселягин Владимир Геннадьевич
2. Уникум
Фантастика:
боевая фантастика
6.50
рейтинг книги
Феномен

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

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

Имперец. Том 1 и Том 2

Романов Михаил Яковлевич
1. Имперец
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Имперец. Том 1 и Том 2

Ты не мой Boy 2

Рам Янка
6. Самбисты
Любовные романы:
современные любовные романы
короткие любовные романы
5.00
рейтинг книги
Ты не мой Boy 2

Право налево

Зика Натаэль
Любовные романы:
современные любовные романы
8.38
рейтинг книги
Право налево

Треск штанов

Ланцов Михаил Алексеевич
6. Сын Петра
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Треск штанов

Изгой Проклятого Клана. Том 2

Пламенев Владимир
2. Изгой
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Изгой Проклятого Клана. Том 2

Повелитель механического легиона. Том VIII

Лисицин Евгений
8. Повелитель механического легиона
Фантастика:
технофэнтези
аниме
фэнтези
5.00
рейтинг книги
Повелитель механического легиона. Том VIII

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

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

Изгой. Пенталогия

Михайлов Дем Алексеевич
Изгой
Фантастика:
фэнтези
9.01
рейтинг книги
Изгой. Пенталогия