Читаем Программирование полностью

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

Однако у нас не всегда есть выбор. Когда вы начинаете программировать, язык программирования можно рассматривать как иностранный, изучать “грамматику и словарь” которого просто необходимо. Именно этим мы и займемся в этой и следующих главах, но читатели должны помнить следующее.

  • Мы изучаем программирование.

  • Результатом нашей работы являются программы и системы.

  • Язык программирования — это лишь средство.

Как ни странно, помнить об этом довольно сложно. Многие программисты не могут устоять перед увлечением мелкими деталями синтаксиса и семантики. В частности, слишком многие ошибочно полагают, что их первый язык программирования — самый лучший. Пожалуйста, не попадайтесь в эту ловушку. Язык С++ во многих отношениях прекрасный язык, но он не идеален; впрочем, то же самое можно сказать о любом языке программирования.

  Большинство понятий, связанных с проектированием и программированием, являются универсальными, и многие из них поддерживаются популярными языками программирования. Это значит, что фундаментальные идеи и методы, изучаемые нами в рамках достаточно продуманного курса программирования, переходят из одного языка в другой. Они могут быть реализованы — с разной степенью легкости — во всех языках программирования. Однако технические детали языка весьма специфичны. К счастью, языки программирования разрабатываются не в вакууме, поэтому у понятий, которые мы изучаем в нашем курсе, очевидно, есть аналоги в других языках программирования. В частности, язык С++ принадлежит к группе языков, к которым помимо него относятся языки С (глава 27), Java и C#, поэтому между ними есть много общего.

Заметьте, что, когда мы говорим о технических деталях языка, мы свободно оперируем неопределенными именами, такими как f, g, X и y. Мы делаем это, чтобы подчеркнуть техническую природу таких примеров, сделать их очень короткими и не смешивать языковые детали с логикой программы. Когда вы увидите неопределенные имена (которые ни в коем случае нельзя использовать в реальном коде), пожалуйста, сосредоточьтесь на технических аспектах кода. Технические примеры обычно содержат код, который просто иллюстрирует правила языка. Если вы скомпилируете и запустите его, то получите множество предупреждений о неиспользуемых переменных, причем некоторые из таких программ вообще не делают никаких осмысленных действий.

Пожалуйста, помните, что эту книгу не следует рассматривать как полное описание синтаксиса и семантики языка С++ (даже по отношению к свойствам, которые мы рассматриваем). Стандарт ISO С++ состоит из 756 страниц, а объем книги Язык программирования Страуструпа, предназначенной для опытных программистов, превышает 1000 страниц. Наше издание не конкурирует с этими книгами ни по охвату материала, ни по полноте его изложения, но соревнуется с ними по удобопонятности текста и по объему времени, которое требуется для его чтения.

<p id="AutBody_Root134"><strong>8.2. Объявления и определения</strong></p>

Объявление (declaration) — это инструкция, которая вводит имя в область видимости (раздел 8.4), устанавливает тип именованной сущности (например, переменной или функции) и, необязательно, устанавливает инициализацию (например, начальное значение или тело функции).

Рассмотрим пример.

int a = 7;              // переменная типа int

const double cd = 8.7;  // константа с плавающей точкой

                        // двойной точности

double sqrt(double);    // функция, принимающая аргумент типа double

                        // и возвращающая результат типа double

vector v;        // переменная — вектор объектов класса Token

До того как имя в программе на языке С++ будет использовано, оно должно быть объявлено. Рассмотрим пример.

int main()

{

  cout << f(i) << '\n';

}

Компилятор выдаст как минимум три сообщения об ошибках, связанных с необъявленными идентификаторами: сущности cout, f и i в программе нигде не объявлены. Исправить ошибку, связанную с потоком cout, можно, включив в программу заголовочный файл std_lib_facilities.h, содержащий его объявление.

#include "std_lib_facilities.h" // здесь содержится объявление

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже