С.Б. Липпман, Ж. Лажойе - Язык программирования С++ Вводный курс (1114944)
Текст из файла
С++ для начинающих3ПредисловиеМежду выходом второго и третьего издания “С++ для начинающих” произошло довольномного событий. Одним из самых значительных стало появление международного стандарта.Он не только добавил в язык С++ новые возможности, среди которых обработкаисключений, идентификация типов во время выполнения, пространство имен, встроенныйбулевский тип данных, новый синтаксис приведения типов, но также существенно изменил ирасширил имеющиеся – шаблоны, механизм классов, поддерживающий объектную иобъектно-ориентированную парадигму программирования, вложенные типы и разрешениеперегруженных функций. Еще более важным событием стало включение в состав стандартаС++ обширной библиотеки, содержащей, в частности, то, что ранее называлось StandardTemplate Library (STL).
В эту стандартную библиотеку входят новый тип string,последовательные и ассоциативные контейнеры, такие, как vector, list, map, set, иобширный набор обобщенных алгоритмов, которые могут применяться ко всем этим типамданных. Появилось не просто много нового материала, нуждающегося в описании, нофактически изменился сам способ мышления при программировании на С++. Короче говоря,можно считать, что С++ изобретен заново, поэтому третье издание нашей книги “C++ дляначинающих” полностью переработано.В третьем издании не только коренным образом поменялся наш подход к С++, изменились иавторы.
Прежде всего, авторский коллектив удвоился и стал интернациональным, хотя корниего по-прежнему на североамериканском континенте: Стен (Stan) американец, а Жози (Josйe)канадка. Двойное авторство отражает деление сообщества программистов С++ на две части:Стен в настоящее время занимается разработкой приложений на C++ в области трехмернойграфики и анимации для Walt Disney Feature Animation, а Жози принимает участие вразвитии самого языка С++, являясь председателем рабочей группы по ядру языка вкомитете по стандартизации и одним из разработчиков компилятора С++ в IBM CanadaLaboratory.Стен работает над С++ с 1984 года.
Он был одним из членов первоначальной команды,трудившейся в Bell Laboratories под руководством Бьерна Страуструпа (Bjarne Stroustrup),изобретателя языка. Стен принимал участие в разработке cfront, оригинальной реализации С,с версии 1.1 в 1986 году до версии 3.0, и возглавлял проект при работе над версиями 2.1 и3.0.
После этого он работал под началом Страуструпа над проектом, посвященнымисследованиям объектной модели программной среды разработки на C++.Жози – член команды, работающей над компилятором С++ в IBM Canada Laboratory напротяжении восьми лет. С 1990 года она входит в состав комитета по стандартизации.
Тригода она была вице-президентом комитета и четыре года – председателем рабочей группы поядру языка.Третье издание “C++ для начинающих” существенно переработано, что отражает не толькоразвитие и расширение языка, но и изменения во взглядах и опыте авторов книги.Структура книги“C++ для начинающих” содержит обстоятельное введение в международный стандарт С++.Мы включили в название книги слова “для начинающих” потому, что последовательнопридерживались учебного подхода к описанию языка С++; однако название не предполагаетупрощенного или облегченного изложения материала.
Такие аспекты программирования, какобработка исключений, контейнерные типы, объектно-ориентированный подход и т.п.,С++ для начинающих4представлены в книге в контексте решения конкретных задач. Правила языка, напримерразрешение перегруженных функций или преобразования типов в объектноориентированном программировании, рассматриваются столь подробно, что во вводномкурсе это может показаться неуместным.
Но мы уверены, что такое освещение необходимодля практического применения языка. Материал книги не нужно стараться усвоить “за одинпроход”: мы предполагаем, что читатель будет периодически возвращаться к ранеепрочитанным разделам. Если некоторые из них покажутся вам слишком трудными илипросто скучными, отложите их на время. (Подозрительные разделы мы помечали значком А.)Читатель может не знать язык С, хотя некоторое знакомство с каким-либо современнымструктурным языком программирования было бы полезно. Мы писали книгу, которая сталабы первым учебником по С++, а не первым учебником по программированию! Чтобы неделать предположений о начальном уровне подготовки, мы начинаем с определения базовыхтерминов. В первых главах описываются базовые концепции, такие, как переменные ициклы, и для некоторых читателей изложение может показаться слишком примитивным, новскоре оно становится более углубленным.Основное достоинство С++ заключается в том, что он поддерживает новые способы решенияпрограммистских задач.
Поэтому чтобы научиться эффективно использовать С++,недостаточно просто выучить новые синтаксис и семантику. Для более глубокого усвоения вкниге рассматриваются разнообразные сквозные примеры. Эти примеры используются какдля того, чтобы представить разные средства языка, так и для того, чтобы объяснить, зачемэти средства нужны. Изучая возможности языка в контексте реального примера, мыпонимаем, чем полезно то или иное средство, как и где его можно применить при решениизадач из реальной жизни. Кроме того, на примерах проще продемонстрировать понятияязыка, которые еще детально не рассматривались и излагаются лишь в последующих главах.В начальных главах примеры содержат простые варианты использования базовых понятийС++. Их цель – показать, как можно программировать на С++, не углубляясь в деталипроектирования и реализации.Главы 1 и 2 представляют собой полное введение в язык С++ и его обзор.
Назначение первойчасти – как можно быстрее познакомить читателя с понятиями и средствами данного языка,а также основными принципами написания программ.По окончании этой части у вас должно сложиться некоторое общее представление овозможностях С++, но вместе с тем вполне может остаться ощущение, что вы совсем ничеготолком не понимаете.
Все нормально: упорядочению ваших знаний как раз и посвященыостальные части книги!В главе 1 представлены базовые элементы языка: встроенные типы данных, переменные,выражения, инструкции и функции. Мы увидим минимальную законченную программу наС++, обсудим вопросы компиляции, коснемся препроцессора и поддержки ввода/вывода. Вэтой главе читатель найдет ряд простых, но законченных С++ программ, которые можнооткомпилировать и выполнить. Глава 2 посвящена механизму классов и тому, как с егопомощьюподдержаныпарадигмыобъектногоиобъектно-ориентированногопрограммирования.
Оба эти подхода иллюстрируются развитием реализации массива какабстрактного типа. Кроме того, приводится краткая информация о шаблонах, пространствахимен, обработке исключений и о поддержке стандартной библиотекой общих контейнерныхтипов и методов обобщенного (generic) программирования. Материал в этой главе излагаетсявесьма стремительно, и потому некоторым читателям она может показаться трудной. МыС++ для начинающих5рекомендуем таким читателям просмотреть вторую главу “по диагонали” и вернуться к нейвпоследствии.Фундаментальной особенностью С++ является возможность расширять язык, определяяновые типы данных, которые могут использоваться с тем же удобством и гибкостью, что ивстроенные.
Первым шагом к овладению этим искусством является знание базового языка.Часть II (главы 3-6) посвящена рассмотрению языка на этом уровне.В главе 3 представлены встроенные и составные типы, предопределенные в языке, а такжетипы string, complex и vector из стандартной библиотеки С++.
Эти типы составляютосновные “кирпичики”, из которых строятся все программы. В главе 4 детально освещаютсявыражения языка – арифметические, условные, присваивания. Инструкции языка, которыеявляются мельчайшими независимыми единицами С++ программы, представлены в главе 5.Контейнерные типы данных стали предметом главы 6. Вместо простого перечислениясовокупности поддерживаемых ими операций, мы иллюстрируем операции на примерепостроения системы текстового поиска.Главы 7-12 (часть III) посвящены процедурно-ориентированному программированию наС++.
В главе 7 представлен механизм функций. Функция инкапсулирует набор операций,составляющих единую задачу, как, например, print(). (Круглые скобки после имениговорят о том, что мы имеем дело с функцией.) Такие понятия, как область видимости ивремя жизни переменных, рассматриваются в главе 8. Обзор механизма функций продолженв главе 9: речь пойдет о перегрузке функций, которая позволяет присвоить одно и то же имянескольким функциям, выполняющим похожие, но по-разному реализованные операции.Например, можно определить целый набор функций print() для печати данных разныхтипов. В главе 10 представлено понятие шаблона функции и приведены примеры егоиспользования.
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.