246071-Либерти-Освой-самостоятельно-С-за-21-день (852741), страница 2
Текст из файла (страница 2)
(http://www.libertyassociates.com), котораяпредоставляет услуги по обучению в Internet объектно-ориентированной разработкепрограммных продуктов, а также занимается наставничеством, консультированием иконтрактнымпрограммированием.Джесс удостоился звания заслуженного программиста (Distinguished Software Engineer atAT&T) и работал в должности вице-президента отдела разработки Ситибанка (Citibank'sDevelopment Division).
Он живет в окрестностях Кембриджа (шт. Массачусетс) с женой Стеси(Stacey) и дочерьми Робин (Robin) и Речел (Rachel). С ним можно связаться через Internet поадресу:jliberty@libertyassociates.com.ДжессосуществляетподдержкукнигичерезсвойжеWebузелпоадресу:http://www.libertyassociates.com—щелкнитенагиперссылкеBooksandResources(Книгииресурсы).ПосвящениеНемеркнущейпамятиДавидаЛивайна(DavidLevine)посвящается.БлагодарностиТретьеизданиеэтойкниги—ещеоднавозможностьвыразитьблагодарностьвсемтем,безчьейподдержкиипомощинаписатьеевбуквальномсмыслебылобыневозможно.Преждевсего,этисловавновьотносятсякСтейси,РобиниРейчелЛиберти.ХочутакжепоблагодаритьмоихредактороввиздательствеSams,профессионаловвысшегокласса.ОгромноеспасибоКрисуДенни(ChrisDenny)иБрэдуДжонс(BradJones)заихработунад предыдущими изданиями книги. Особую признательность хочу выразить ТрейсиДанкельбергер(TracyDunkelberger),ХоллиОлендер(HollyAllender),СинуДиксону(SeanDixon),ХезерТолбот(HeatherTalbot),БарбареХече(BarbaraHacha)иМонеБраун(MonaBrown).Кроме того, я очень благодарен Скипу Джилбреху (Skip Gilbrech) и Дэвиду Мак-Кьюну(David McCune), научившим меня программировать, а также Стиву Роджерсу (Steve Rogers) иСтефану Заджибойло (Stephen Zagieboylo), обучившим меня языку C++.
Хотелось бы сказатьспасибомногимчитателям,которыепомоглимнеотыскатьошибкииопискивпервыхизданияхкниги: Гордону Андерсону (Gordon Anderson), Ричарду Асчери (Richard Ascheri), Рону Барлоу(Ron Barlow), Эйрай Блэчер (Ari Blachor), Чарльзу Кампузано (Charles Campuzano), ТэммиЦерконе (Tammy Cercone), Михаэлю Чомишевски (Michael Chomiczewski), Раймонду Чорчу (С.Raymond Church), Чарльзу Дешу (Charles I.
Desch), Чарльзу Дингмену (Charles Dingman), ДжонуЭмбоу (John Embow), Джею Эриксону (Jay Erikson), Марку Фидлеру (Mark Fiedler), АдамуФордайсу(AdamFordyce),РобертуФрансису(RobertFrancis),КристоферуГарьипи(ChristopherGariepy), Грегу Гордону (Greg Gordon), Чарльзу Хейзгеве (Charles Hasegawa), Элиоту Кирсли(Elliot Kearsley), Андре Р. Кинни (Andrew R.
Kinnie), Лари Кирби (Lari Kirby), Джо Корти (JoeKorty), Ричарду Ли (Richard Lee), Роджеру Лейнингеру (Roger Leininger), Рубену Лопезу (RubenLopez), Рэю Люшу (Ray Lush), Франку Маррено (Frank Marrero), Джоан Мэтью (Joan Mathew),Джеймсу Мэтью (James Mayhew), Шерлиль Мак-Кена (Sheryl McKenna), Джудит Милз (JudithMills), Терри Милнеру (Terry Milner), Патрику Муру (Patrick Moore), Крису Нили (Chris Neely),Гари Пейджу (Gary Page), Джеймсу Парсонзу (James Parsons), Нирелу Петелу (Neeral Patel),Раулю ван Пруйену (Raoul van Prooijen), Карену Ризеру (Karen Risser), Дэну Роджерсу (DanRogers), Ральфу Руссо (Ralph Russo), Грегори Саффорду (Gregory Safford), Джо Скелоуну (JoeScalone),РобертуСайксу(RobertSikes),СэмуСабо(SamSuboh),УолтеруСану(WalterSun),ПолуСаттону (Paul Sutton), Джеймсу Томпсону (James Thompson), Орландо Ванину (Orlando Vanin),ПаскалюВердье(PascalVerdieu),СтефануВейну(StephenWain),ДжерриУайерсу(JerryWares),Джеку Уайту (Jack White), Скотту Вильсону (Scott Wilson), Нику Витхауз (Nick Witthaus),МикаэллеЗулли(MichelleZulli)иособенноДональдуЗи(DonaldXie).Наконец,хочупоблагодаритьмиссисКалиш(Mrs.Kalish),котораяв1965годунаучиласвоихшестиклассников(втомчислеименя)операциямвдвоичнойарифметике:втовремяниона,ниянезнали,зачемэтоможетпонадобиться.ВведениеЦельэтойкниги—помочьчитателюнаучитьсяпрограммироватьнаязыкеC++.Всегоза21деньвыузнаетеотакихнеобходимыхдляэтоговещах,какуправлениевводом-выводом,циклы,массивы, объектно-ориентированное программирование, шаблоны и создание приложений наC++.
Все темы поданы в хорошо организованных уроках, которые выстроены в порядкеусложнения. Для иллюстрации рассматриваемых тем во все главы включены листингипрограмм, дополненные результатами работы этих программ и подробным анализоминструкций. Для удобства ссылки на инструкции при анализе программ все их строкипронумерованы.Чтобы помочь вам быстрее усвоить наши уроки, в конце каждого из них представленаподборка часто задаваемых вопросов и ответы на них, а также тест для самоконтроля иупражнения. В правильности своих ответов на вопросы теста и упражнения вы сможетеубедиться,заглянуввприложениеГ.ДлякогоэтакнигаЧтобы, опираясь на материал этой книги, научиться программировать на языке C++, вамвовсенеобязательноиметьпредыдущийопытпрограммирования.Изложениездесьначинаетсяс исходной точки, и, работая с книгой, вы изучите не только сам язык, но и концепции,положенныевосновупрограммированиянаC++.Верныминадежнымгидомнапутикзнаниямбудут многочисленные примеры синтаксиса и подробнейший анализ всех приведенных здесьпрограмм.Начинаетеливыснуляилиувасужеестьнекоторыйопытпрограммирования—влюбом случае четкая организация этой книги создаст все условия для быстрого и простогоизученияязыкаC++.Неделя№1ОсновныевопросыПри подготовке к первой неделе изучения основ программирования на языке C++ вампонадобитсякомпилятор,текстовыйредакториэтакнига.ЕслиуваснетникомпилятораC++,Нитекстовогоредактора,выможетеработатьсэтойкнигойтеоретически,норезультатнебудеттакимвысоким,какпривыполнениивсехпредлагаемыхздесьупражненийнакомпьютере.Лучшийспособнаучитьсяпрограммировать—самомуписатьпрограммы!Вконцекаждойглавывынайдетеразделпрактическихзанятий,которыйсодержитвопросыдлясамопроверкиинабор упражнений.
Не пожалейте времени, чтобы ответить на все вопросы и выполнить всеупражнения. Сверьте полученные результаты с правильными ответами, приведенными вприложенииГ.Книгаорганизованатак,чтопоследующиеглавыпостроенысучетомматериала,изложенного в предыдущих занятиях, поэтому прежде чем двигаться вперед, убедитесь в том,чтовыдоконцапонимаетеужепрочитанныйматериал.НесколькословдляпрограммистовнаязыкеCМатериал,изложенныйвпервыхпятизанятиях,вероятно,будетвамзнаком.Темнеменее,вам стоит просмотреть содержимое этих занятий и выполнить упражнения, чтобыудостовериться в полном понимании основ, необходимых для усвоения более сложных тем. Итолькопослеэтогопереходитекчтениюзанятия6.ЧтодальшеВтечениепервойнеделивампредстоитосвоитьматериал,необходимыйдляпервыхшаговвпрограммировании вообще и на языке C++ в частности.
На первых двух занятиях выознакомитесьсбазовымиконцепциямипрограммированияисходомвыполненияпрограмм.Назанятии 3 вы получите представление о переменных и константах, а также о том, какиспользовать данные в программах. На занятии 4 рассматриваются возможные ветвленияпрограммнаосновеиспользуемыхданныхиусловий,проверяемыхвовремяработыпрограммы.На занятии 5 вы узнаете о том, что представляют собой функции и как их использовать, азанятие6познакомитвассклассамииобъектами.Назанятии7выполучитеболееподробнуюинформациюоходевыполненияпрограмм,акконцупервойнеделисможетеписатьнастоящиеобъектно-ориентированныепрограммы.День1-й.ПервыешагиВведениеДобро пожаловать на страницы книги Освой самостоятельно C++ за 21 день! Предлагаюнезамедлительно отправиться в путь, если вы хотите стать профессиональным программистомнаязыкеC++.Сегоднявыузнаете:•ПочемуC++сталстандартомвобластиразработкипрограммныхпродуктов.•КаковыэтапыразработкипрограммынаязыкеC++.•Какнаписать,скомпилироватьискомпоноватьсвоюпервуюпрограммунаязыке.КраткийэкскурсвисториюязыкаC++Эволюция языков программирования с момента появления первых электронныхкомпьютеров, построенных для выполнения расчетов траектории движения артиллерийскихснарядоввовремявтороймировойвойны,быладовольнодраматической.Раньшепрограммистыработали с самыми примитивными компьютерными командами, представлявшими собой частьмашинного языка.
Эти команды состояли из длинных строк единиц и нулей. Вскоре былиизобретены ассемблеры, которые могли отображать машинные команды в мнемоническомпредставлении,болеепонятномдлячеловека(например,командыADDилиMOV).Современемпоявилисьтакиеязыкивысокогоуровня,какBASICиCOBOL.Благодаряэтимязыкампоявиласьвозможностьпрограммировать,используялогическиеконструкцииизсловипредложений, например Let I = 100.
Эти команды переводились в машинный языкинтерпретаторами и компиляторами. Интерпретатор по мере чтения программыпоследовательнопревращаетеекоманды(иликод)вкомандымашинногоязыка.Компиляторжецеликомпереводитпрограммныйкод(листингпрограммы)внекоторуюпромежуточнуюформу—объектныйфайл.Этотэтапназываетсякомпиляцией.Затемкомпиляторвызываетпрограммукомпоновки,котораяпревращаетобъектныйфайлвисполняемыйфайлпрограммы.С интерпретатором работать проще, так как команды программы выполняются в тойпоследовательности, в которой они записаны, что облегчает контроль за выполнениемпрограммы.