Моим друзьям и семье, которые
помогли мне стать "чайником" в еще большей
степени, чем я есть на самом деле
Об авторе
Стефан Р. Дэвис (Stephen R. Davis) — автор множества книг, включая такие бестселлеры, как C++ для "чайников", More C++ for Dummies и Windows 95 Programming for Dummies. Стефан работает в компании Valtech, специализирующейся в области обучения информатике (Даллас, Техас).
Введение
Об этой книге
Добро пожаловать в четвертое издание книги C++ для "чайников". В ней вы найдете всю необходимую для изучения C++ информацию, описанную доступным языком и не отягощенную излишними подробностями.
О чем эта книга
Книга, которая у вас в руках, — это введение в язык программирования C++.
Она начинается с азов: от читателя не требуется каких-либо знаний в области программирования (и в этом основное отличие от предыдущего издания, которое предполагает знание языка C).
В отличие от других книг по программированию на C++, в этой книге вопрос "почему" считается не менее важным, чем вопрос "как". И потому перед изложением конкретных особенностей языка C++ я старался объяснить читателю, как они действуют в целом. Ведь каждая структурная особенность языка — это отдельный штрих единой картины.
Если вы не понимаете, зачем нужны те или иные особенности языка, постарайтесь понять, как они работают. Прочитав книгу, вы сможете написать на C++ вразумительную программу и, что не менее важно, будете понимать, почему и как она работает.
Эта книга не обучает программированию для Windows. Научиться этому можно в два этапа. Сначала необходимо усвоить C++, а затем приобрести книгу Программирование в Windows 98 для "чайников".
Что такое C++
C++ представляет собой объектно-ориентированный низкоуровневый язык программирования, отвечающий стандартам ANSI и Международной организации стандартов (International Standards Organization — ISO). Объектная ориентированность C++ означает, что он поддерживает стиль программирования, упрощающий кодирование крупномасштабных программ и обеспечивающий их расширяемость. Будучи низкоуровневым языком, C++ может генерировать весьма эффективные высокоскоростные программы. Сертификация ANSI и ISO обеспечила переносимость C++: написанные на нем программы совместимы с большинством современных сред программирования.
Уже в самом названии содержится намек на то, что C++ является следующим поколением языка программирования C — результатом добавления новых веяний академической компьютерной мысли к старому доброму C. На C++ можно делать все то же, что и на C, и даже таким же образом. Но это нечто большее, чем просто C, наряженный в новые одежды. Дополнительные возможности C++ весьма значительны и требуют не только некоторых размышлений, но и привычки, однако результат того заслуживает.
Для опытного программиста на C язык C++ может показаться одновременно и захватывающим и расстраивающим. Представьте себе немца, читающего по-датски. Это очень похожие ситуации. Программист, использующий C, сможет понять смысл программ на C++, но из-за значительных отличий между языками его трактовка не всегда будет адекватной. Эта книга поможет вам перейти от C к C++ настолько мягко, насколько это возможно. Однако напомним, что для читателей C++ для "чайников" опыт программирования на C вовсе не обязателен.
Соглашения, используемые в книге
Описываемые сообщения или любая другая информация, отображаемая на экране, будет выглядеть так:
H1 mom!
Программный код будет представлен таким же образом:
// программа
void main()
{
...
}
Если вы решите набирать программу вручную, следите за тем, чтобы ее текст полностью соответствовал напечатанному в книге, за исключением количества пробелов, которое может быть произвольным.
Всяческие компьютерные сообщения, такие как команды и имена функций, будут выглядеть вот так. После имен функций всегда следуют открывающая и закрывающая скобки, например myFavoriteFunction().
Иногда для выполнения некоторых действий в книге рекомендуется использовать специальные команды клавиатуры. Например, когда в тексте содержится инструкция: нажать <Ctrl+C>, вам следует, удерживая нажатой клавишу <Ctrl>, нажать клавишу <C>. Вводить знак "плюс" при этом не нужно.
Время от времени будут использоваться команды меню, например File
Open.
В этой строке для открытия меню File и выбора нужной команды из него предлагается использовать клавиатуру или мышь.
Что можно не читать
C++ является слишком большим куском, чтобы проглотить его сразу. Вы столкнетесь и с легкими, и с достаточно сложными моментами. Чтобы уберечь вас от перенасыщения информацией, не актуальной для вас в текущий момент, некоторые технические подробности будут отмечены специальными пиктограммами (см. раздел "Использованные в этой книге пиктограммы").
Некоторые сведения общего характера будут помещаться в выделенных врезках. Почувствовав, что информация воспринимается с трудом, смело пропускайте этот раздел во время первого чтения (но помните, что по возможности его нужно будет прочитать, поскольку в конечном счете незнание каких-то моментов неизбежно скажется на ваших программах).
Нелепые предположения
Чтобы освоить материал книги C++ для "чайников", совершенно не обязательно иметь какой-то опыт в программировании. Конечно, если он есть, это только плюс, но его отсутствие не должно вас тревожить.
В предыдущем издании этой книги предполагалось, что вы уже немного знакомы с языком C. Идея была в том, что изучающий C++ должен был основываться на уже имеющихся знаниях языка C. Однако такой методологический подход оказался ошибочным. Прежде всего, многие принципы C++ в корне отличаются от основополагающих принципов C, несмотря на обманчивую схожесть их синтаксиса. К тому же среди изучающих C++ большинство составляют все-таки не программисты на C, а новички в программировании.
Четвертое издание C++ для "чайников" начинается с основных понятий, используемых в программировании. Затем книга ведет читателя от программ из простых синтаксических конструкций до концепций объектно-ориентированного программирования. Читателю, осилившему ее всю, не составит большого труда в нужный момент произвести впечатление на друзей или блеснуть своей осведомленностью на вечеринках.
Как организована эта книга
Каждая новая структурная возможность языка будет охарактеризована следующим образом:
- что представляет собой эта возможность;
- зачем она включена в язык;
- как она работает.
Разделы книги щедро снабжены небольшими фрагментами программного кода. Каждый из них иллюстрирует представленные особенности или основные моменты некоторых моих разработок. Эти фрагменты не всегда закончены и в основном не представляют собой ничего существенного.
Примечание. Необходимость соблюдать формат книги требовала переноса очень длинных строк кода. В конце таких строк появляется стрелка, которая напоминает о том, что следует продолжать ввод, не торопясь нажимать клавишу <Enter>. Я очень старался свести эти длинные строки кода к минимуму.
В конце каждой части...
В дополнение в конце частей 2, 3 и 4 приводятся тексты серии программ BUDGET. Эти программы достаточно объемны, чтобы позволить вам получить какое-то представление о реальных программах.
К тому же очень важно понимать, как разные структурные единицы языка C++ сосуществуют в готовой программе. Поэтому, хотя забот у меня и так было предостаточно, я занялся разработкой примеров обучающих программ. Наверное, от недостатка фантазии мне пришлось потратить много времени на придумывание программных сюжетов. Хотелось бы, чтобы представленные в них особенности языка были очевидны читателю.
В конце концов в качестве примера было решено использовать программу BUDGET. Она рождается как простая, процедурно ориентированная программа. Постепенно обрастая структурными особенностями, описанными в каждой новой части, к концу книги программа BUDGET предстанет перед вами во всей красе своего объектно-ориентированного содержимого. Возможно, работа с этой программой покажется вам страшной тратой времени. Если это так, вы можете пропустить первые варианты программы (хотя, по мнению нашего редактора, замысел довольно удачный). Тем не менее я надеюсь, что, разобрав программу BUDGET, вы постигнете тайну согласованной работы возможностей C++.
Часть 1. Первое знакомство с C++
Эта часть является отправной точкой нашего путешествия в мир C++. Вы начнете его с нелегкого испытания — написания своей первой компьютерной программы. Затем перейдете к изучению синтаксиса языка.
Часть 2. Становимся программистами
В этой части новоприобретенные знания основных команд C++ пополнятся способностью объединять фрагменты программного кода в модули и повторно использовать их в программах.
Здесь также представлена внушающая наиболее благоговейный страх тема: указатели в C++. Если вам это ни о чем не говорит, не волнуйтесь — скоро вы обо всем узнаете.
Часть 3. "Классическое" программирование
В этой части дело запутывается все больше и больше: начинается обсуждение объектно-ориентированного программирования. По правде говоря, объектно-ориентированный подход к построению программ и есть главная причина возникновения и активного использования C++. Ведь отказавшись от объектно-ориентированных особенностей C++, мы просто возвратимся к его предшественнику — языку программирования C. В этом разделе обсуждаются такие понятия, как классы, конструкторы, деструкторы, и прочие не менее страшные термины. Не волнуйтесь, если пока что вы не совсем понимаете, о чем идет речь.
Часть 4. Наследование
Возможность наследования — это как раз то главное свойство объектно-ориентированного программирования, которое обеспечило ему известность и распространенность. Обсуждение этой одной из наиболее важных концепций, понимание которой служит ключом к эффективному программированию на C++, и является темой четвертой части. Теперь дороги назад нет: закончив освоение этого материала, вы сможете назвать себя настоящим объектно-ориентированным программистом.
Часть 5. Полезные особенности
К моменту знакомства с этой частью вы уже будете знать все необходимое для эффективного программирования на C++. Здесь же затрагиваются некоторые оставшиеся дополнительные вопросы. Если вы чувствуете, что голова все еще кружится от избытка с трудом воспринимаемой информации, можете пока удержаться от чтения этой части.
Часть 6. Великолепная десятка
Разве книга для "чайников" может считаться законченной без такой полезной напутствующей части? В ее единственной главе вы узнаете наилучшие способы избежать ошибок в программах.
Что дальше
Обучиться языку программирования — задача отнюдь не тривиальная. Я попытаюсь сделать это настолько мягко, насколько возможно, но вы должны будете поднатужиться и освоить некоторые элементы серьезного программирования. Так что разомните пальцы, приготовьте для книжки почетное место рядом с клавиатурой и — приступим!