You Can Do It——C++编程新手互动教程(高校学生编程入门指南,互动式教学,切实确保学习质量)
基本信息
内容简介回到顶部↑
在本书中,作者把握住了以下3个要点,能够确保你获得的良好的学习效果:
·根据不同学习目的,采取不同的代码引入方法。
·精心设置“任务”帮助你掌握必需的技巧和知识。
·提供丰富练习,培养编程能力和检验学习效果。
本书具有以下几个特色:
·roberta的评论:roberta在学习过程中的反馈意见和疑问,你在阅读的时候可能会感同身受。
·提示:帮助你完成任务和练习。
·解决方案:francis对你提出的要求是,搞清楚他所提供的解决方案为什么有效,为什么和你的有所不同。
·总结:总结独立于语言的重要编程概念、标准c++的知识要点,以及francis为你灌输的额外的c++的知识要点。 这些特色绝不仅仅是多样化的形式,更重要的是,它们能够切实地确保你的学习质量。
随书光盘中包含所需软件、本书附录和词汇表。
本书采用互动的教学方式,使用c++语言来教授新手学习程序设计。
全书共17章。第1章是对编程概念和工具的简单介绍,第2章到第6章介绍了c++编程中的循环、函数、通信、类型创建和使用等技巧技能。第7章总结了编程的思路和技巧。接下来的6章(第8章到第13章)中,每一章都作为一个单元,在前17章的基础上添加了一些新的材料和一些新的思路。第14到第16章的主要目标是巩固所学的知识和技巧,并显示如何用所掌握的知识实现一些看上去难度很大的任务。第17章再次对常见编程问题进行了分类分析和论述。随书光盘中带有所需软件、附录和术语表。
本书适合于缺乏经验但却对学习计算机编程充满兴趣的读者,尤其适合作为高等院校学生学习编程的入门指南。
·根据不同学习目的,采取不同的代码引入方法。
·精心设置“任务”帮助你掌握必需的技巧和知识。
·提供丰富练习,培养编程能力和检验学习效果。
本书具有以下几个特色:
·roberta的评论:roberta在学习过程中的反馈意见和疑问,你在阅读的时候可能会感同身受。
·提示:帮助你完成任务和练习。
·解决方案:francis对你提出的要求是,搞清楚他所提供的解决方案为什么有效,为什么和你的有所不同。
·总结:总结独立于语言的重要编程概念、标准c++的知识要点,以及francis为你灌输的额外的c++的知识要点。 这些特色绝不仅仅是多样化的形式,更重要的是,它们能够切实地确保你的学习质量。
随书光盘中包含所需软件、本书附录和词汇表。
本书采用互动的教学方式,使用c++语言来教授新手学习程序设计。
全书共17章。第1章是对编程概念和工具的简单介绍,第2章到第6章介绍了c++编程中的循环、函数、通信、类型创建和使用等技巧技能。第7章总结了编程的思路和技巧。接下来的6章(第8章到第13章)中,每一章都作为一个单元,在前17章的基础上添加了一些新的材料和一些新的思路。第14到第16章的主要目标是巩固所学的知识和技巧,并显示如何用所掌握的知识实现一些看上去难度很大的任务。第17章再次对常见编程问题进行了分类分析和论述。随书光盘中带有所需软件、附录和术语表。
本书适合于缺乏经验但却对学习计算机编程充满兴趣的读者,尤其适合作为高等院校学生学习编程的入门指南。
作译者回到顶部↑
本书提供作译者介绍
Francis Glassborow是C++方面的权威,有着30多年的编程和教学经验,是C++标准委员会的一名重要成员。作为ACCU的前任主席,他曾审阅了3000多本专业书籍,并且总是能够给出准确犀利、切中肯綮的意见,使无数的读者受益匪浅。正是由于他的这些阅历,他抱着严谨、认真的态度和科学的方法来编写这本书,力图为初学者打造一本切合实际、学以致用的编程指南。
在这本书的编写过程中,作者Francis可谓用心良苦。他找到一位完全未曾接触过计算机工作的妇女Roberta Allen作为目标学生,开始按照图书.. << 查看详细
在这本书的编写过程中,作者Francis可谓用心良苦。他找到一位完全未曾接触过计算机工作的妇女Roberta Allen作为目标学生,开始按照图书.. << 查看详细
目录回到顶部↑
第1章 初论编程 1
1.1 什么是编程 1
1.2 编程工具介绍 2
1.3 我们的第一个程序 5
1.3.1 创建源代码 5
1.3.2 保存源代码 6
1.3.3 编译源代码 6
1.3.4 把程序添加到项目中 7
1.3.5 创建和运行可执行文件 7
1.3.6 详解empty_playpen源代码 8
1.4 c++程序的元素 11
1.5 playpen窗口并不一定是白色的 12
1.6 画点 14
1.7 混合颜色 17
1.8 现代艺术 17
1.9 任务、练习和乐趣 18
1.10 roberta的评论 19
1.11 总结 20
1.11.1 关键编程概念 20
1.11.2 c++要点 20
1.1 什么是编程 1
1.2 编程工具介绍 2
1.3 我们的第一个程序 5
1.3.1 创建源代码 5
1.3.2 保存源代码 6
1.3.3 编译源代码 6
1.3.4 把程序添加到项目中 7
1.3.5 创建和运行可执行文件 7
1.3.6 详解empty_playpen源代码 8
1.4 c++程序的元素 11
1.5 playpen窗口并不一定是白色的 12
1.6 画点 14
1.7 混合颜色 17
1.8 现代艺术 17
1.9 任务、练习和乐趣 18
1.10 roberta的评论 19
1.11 总结 20
1.11.1 关键编程概念 20
1.11.2 c++要点 20
译者序回到顶部↑
初次浏览这本书的时候,我心里颇有几分不以为然。虽然我并不认为只有天赋过人者才能学会编程,但编程怎么也应该算是一种高层次的智力活动。可是在本书中,作者所面向的读者居然可以是任何层次的人,读者甚至不必有多少计算机和数学基础,这也太小看编程了吧。更何况,作者使用了公认的最为难学的一种语言(C++)来讲述编程。
留意到本书的作者,我才知道他是大名鼎鼎的ACCU组织的前主席。ACCU是Association of C and C++ Users(C和C++用户协会,www.accu.org)的缩写,是一个著名的编程技术组织,经常召开世界范围的编程技术大会和研讨,组织网上社群交流,广泛评阅数以千计的技术书籍并共享阅读经验。这个组织在技术社群有着很大的影响力,它拥有许多重量级的高手,作为前主席,Francis Glassborow更是个中翘楚。
作为一名具有多年编程教学经验并且经常在ACCU的技术刊物上撰写技术文章的学者,Francis Glassborow在C++编程的教学方面具有非常独到的经验。他以这种互动的新颖方式推出这本编程入门教程,肯定有其独具匠心之处。在仔细阅读和翻译本书的过程中,我越来越领会到作者的良苦用心,对本书的态度也变得越来越欣赏。
这本书的最大特点就是“互动性”,作者邀请了一位年过50且以前从来没有编程经验的妇女(Roberta)参与本书的写作过程。中国唐代诗人白居易在写完诗后,常常先读给老妪听,若对方不懂,则再行修改,直至“老妪能解”。估计Francis Glassborow不知道这个典故,但他所采用的方式却是惊人地相似。这或许就是他相信任何人都可以用这本书学会编程的信心所在吧。
诚如作者在书中所言,要想学会编程,至少要具备两个条件,一是对编程感兴趣,二是愿意花时间和精力学习编程。我也相信,任何人只要具备了这两个条件,学会编程绝对不在话下。当然,一本好的指导书可以帮助读者有的放矢地学习编程的各个方面,达到事半功倍的效果。本书就是这样一本可以帮助读者正确学习编程的好书。
C++是一种非常复杂的语言,所涵盖的内容非常广泛。本书并没有完整地讲述C++,有许多重要和常用的C++特性都没有出现在书中。站在作者的角度,他认为当务之急是帮助读者掌握如何利用已经学会的工具来解决问题,也就是编程的方法论,而不是完整地学会一门编程语言。许多读者(包括当年初学编程的我)似乎有这样一种想法,学会了一门编程语言就相当于学会了编程。其实不然;语言只是工具,重要的是如何用这个工具解决你需要处理的问题,而不是把主要精力放在如何全面仔细地对工具进行研究。
本书之所以使用相对复杂的C++来描述编程,很大程度上是因为C++是当前的主流编程语言之一,并且它与另外几种主流语言C、Java、C#在语法上极为相似。C/C++/Java/C#合起来称为C族语言,在当前占据着主导地位。此外,在教学方面,C族语言也逐渐取代了从前的伪Pascal语言。
本书的译稿得到了南京师范大学荣耀老师的审阅,他提出了许多宝贵的修改意见,并欣然为本书作序。在序言中,他从一个C++一线教师的角度对本书给出了客观的评价和积极的阅读建议,相信对读者会很有帮助和启发。译者在这里向荣耀老师表示诚挚的谢意!
虽然译者想尽力译好这本书,但疏漏之处在所难免,欢迎读者批评指正。译者的E-mail地址是parassite@sina.com,读者如有问题,可随时与译者联系。
徐 波
留意到本书的作者,我才知道他是大名鼎鼎的ACCU组织的前主席。ACCU是Association of C and C++ Users(C和C++用户协会,www.accu.org)的缩写,是一个著名的编程技术组织,经常召开世界范围的编程技术大会和研讨,组织网上社群交流,广泛评阅数以千计的技术书籍并共享阅读经验。这个组织在技术社群有着很大的影响力,它拥有许多重量级的高手,作为前主席,Francis Glassborow更是个中翘楚。
作为一名具有多年编程教学经验并且经常在ACCU的技术刊物上撰写技术文章的学者,Francis Glassborow在C++编程的教学方面具有非常独到的经验。他以这种互动的新颖方式推出这本编程入门教程,肯定有其独具匠心之处。在仔细阅读和翻译本书的过程中,我越来越领会到作者的良苦用心,对本书的态度也变得越来越欣赏。
这本书的最大特点就是“互动性”,作者邀请了一位年过50且以前从来没有编程经验的妇女(Roberta)参与本书的写作过程。中国唐代诗人白居易在写完诗后,常常先读给老妪听,若对方不懂,则再行修改,直至“老妪能解”。估计Francis Glassborow不知道这个典故,但他所采用的方式却是惊人地相似。这或许就是他相信任何人都可以用这本书学会编程的信心所在吧。
诚如作者在书中所言,要想学会编程,至少要具备两个条件,一是对编程感兴趣,二是愿意花时间和精力学习编程。我也相信,任何人只要具备了这两个条件,学会编程绝对不在话下。当然,一本好的指导书可以帮助读者有的放矢地学习编程的各个方面,达到事半功倍的效果。本书就是这样一本可以帮助读者正确学习编程的好书。
C++是一种非常复杂的语言,所涵盖的内容非常广泛。本书并没有完整地讲述C++,有许多重要和常用的C++特性都没有出现在书中。站在作者的角度,他认为当务之急是帮助读者掌握如何利用已经学会的工具来解决问题,也就是编程的方法论,而不是完整地学会一门编程语言。许多读者(包括当年初学编程的我)似乎有这样一种想法,学会了一门编程语言就相当于学会了编程。其实不然;语言只是工具,重要的是如何用这个工具解决你需要处理的问题,而不是把主要精力放在如何全面仔细地对工具进行研究。
本书之所以使用相对复杂的C++来描述编程,很大程度上是因为C++是当前的主流编程语言之一,并且它与另外几种主流语言C、Java、C#在语法上极为相似。C/C++/Java/C#合起来称为C族语言,在当前占据着主导地位。此外,在教学方面,C族语言也逐渐取代了从前的伪Pascal语言。
本书的译稿得到了南京师范大学荣耀老师的审阅,他提出了许多宝贵的修改意见,并欣然为本书作序。在序言中,他从一个C++一线教师的角度对本书给出了客观的评价和积极的阅读建议,相信对读者会很有帮助和启发。译者在这里向荣耀老师表示诚挚的谢意!
虽然译者想尽力译好这本书,但疏漏之处在所难免,欢迎读者批评指正。译者的E-mail地址是parassite@sina.com,读者如有问题,可随时与译者联系。
徐 波
前言回到顶部↑
购书之前
如果你正在决定是否购买本书,请仔细阅读本节的内容,以便对本书有一个充分的认识。我将尽自己最大的努力帮助你作出正确的结论。虽然我希望自己的书卖得越多越好,但我并不希望你浪费时间和金钱购买以后会令你后悔的东西。
在计算机编程领域,这是一本非常独特的书,因为它是为普通人编写的。任何人只要拥有一台计算机(在目前这个阶段,它还需要运行某个版本的Microsoft Windows),想知道编程是怎么回事,而且打算花点时间通过学习编程来满足这方面的好奇心,我相信,这本书肯定能够帮助他轻松地学会编程。
本书是我和Roberta的合作成果。在本书中,我的角色是一位知识广博、经验丰富的教师,而Roberta的条件应该和本书的读者相似。在本书的技术内容方面,Roberta的贡献并不大,但她仍然在本书的写作过程中发挥了极大的作用,帮助我精心安排难度和进度,使那些计算机水平只不过能够启动程序、使用字处理程序、收发电子邮件以及在Internet上进行冲浪的人也能够跟得上学习的进度。当她以学生身份半途加入到本书的写作过程时,虽然她使用计算机已有10年之久,但她仍然没有掌握诸如目录结构之类的概念。16岁以后,她就再也没有接触过数学课程。她的数学水平也就是会一些简单的算术,顶多只能在公司里干一些简单的财务工作。
不过,她也有两个优点。其一,她希望了解编程;其二,她相信我能够教会她编程。这两点非常重要。如果你希望使用本书,你也需要做到这两点。你必须愿意投入时间和精力了解编程的基础知识,并且信任我们(Roberta和我)能够帮助你实现这个目标。只要你能够满足这两个条件,我们可以承诺你肯定能够学会编程。并且,你根本用不着学完全书就能够具备自行编写程序的能力。只要稍微运用一些想象力,你肯定能设计出一些能够展现自己独特风采的程序。Roberta在学完第6章之前就完成了她的第一个完整的源程序。当她完成学业时,她已经为她的孙子孙女们编写了好几个程序,其中至少有一个程序是完全按照她自己的兴趣所编写的。
我之所以告诉你这些,是因为我确信任何人只要有兴趣都可以学会简单的编程。我还相信,很多人会认为学会编程将在多个方面使他们受益。当一个程序最终能够顺利运行且能够实现设计目标时,所有程序员都会为之振奋,并有一种成功的感觉。
如果你粗粗浏览本书,你可能会疑惑你是否能够弄懂书中那些稀奇古怪的文本 。不必担心,你很快就会发现,所有这类文本只不过是计算机用来表达意图的一种方式,并没有任何稀奇古怪之处。它并不是普通的语言,尽管其中确实有一些英文单词。这是一种称为C++(读作cee plus plus)的计算机语言。如果你周围有一些对编程略知一二的朋友、亲戚或同事,当他们听说本书是用C++讲述编程时,他们可能会向你反馈一些可怕的警告。相信我,不要被他们的话吓倒,其实他们都受到了误导。
为什么要用C++
让我问一个不同的问题:“为什么要用英语?”你的回答大概是:“因为这是我讲话所用的语言。”问得再深一点,哪种语言是人类使用最为广泛的语言呢?以中文为母语的人数多于任何其他语言,但我为什么不用中文写作呢?另一方面,像西班牙语或斯瓦里希语之类的语言远比英语易学,但我为什么不用它们来写作呢?
我们知道,英语不仅是几亿人的母语,而且以它为第二语言的人更是数量惊人。如果你是个初次访问地球的外星人,毫无疑问,你会选择英语与地球上的人进行交流。尽管英语非常复杂,但是如果人们必须与他们社区之外的人进行交流,绝大多数人都会把英语作为第一选择。
C++在计算机社区中的角色与英语在人类社区中的角色非常相似。它是一种功能强大、语法复杂的语言。当然,对于新手而言,它确实存在着许多难解的地方,可以说处处隐藏着陷阱。但是,它确实又是应用最为广泛的通用目的的计算机编程语言。就像没有人敢声称自己完全掌握英语一样,彻底精通C++的人也可以说是凤毛麟角。但是,就像我们并不需要掌握英语的全部内容一样,我们也不需要精通C++的所有方面。本书并不是一本讲述C++的书,即使你学完了本书,你也称不上是位C++程序员。但是,你将成为一名能够使用C++来表达问题的解决方案并且能够编写程序来满足现实需要的程序员。
为什么要用C++?因为它并不会妨碍我向你展示如何进行编程。其他编程语言可能更简单一些,但我常常觉得它们没办法让我用一种非常简洁的方式向你展示编程问题的答案,这常常令我有受挫的感觉。使用C++,我可以从它的丰富功能中撷取一些精华,向读者提供功能强大的工具,允许他们更为方便地在程序中体现自己极富创意的思路。
C++存在一个小小的缺点。作为一种基本语言,它缺乏进行图形开发的工具。不过这个问题很容易得到解决,因为我可以用C++编写这些工具,供读者使用。我需要一些专家帮助我开发这些工具,这是由于计算机的复杂特性所决定的:不同的计算机可能使用不同的图形工具,不同计算机屏幕所使用的颜色数量也不一定相同。使用C++,我可以清楚地说明我需要的是什么,这样我的一位同事(Garry Lancaster)就可以把我所写的规范转换为能够在所有MS Windows机器上运行的工具。最终(甚至可能在你看到本书之前),我会请另外的人改写这些工具,这样其他机器也能够运行它们。但是,在此之前,我们不得不接受一个人为的限制,也就是说如果你在程序中使用了我所提供的工具,那么你的程序就只能在某种版本的MS Windows上运行。
最后,我还需要一些简单的工具,你可以用它们编写程序,并且管理一些技术细节,使你所写的东西能够为计算机所理解。这些工具是由另一位作者Al Stevens提供的,他允许我发布他所开发的Quincy工具集,帮助新手学习编程。
Garry Lancaster和Al Stevens等人所做的工作说明了计算机社区的最大优点:优秀的作品可自由共享。其结果是,你可以得到学习程序所需要的任何东西(除了计算机以及时间和精力)。
选择权完全在你的手中。如果你希望学习编程,并进而学习别人的计算机程序是如何运行的,你肯定能够实现自己的目标。Roberta和我足足花了9个月时间编写这本书(但这并不意味着你需要花9个月时间来读完它;Roberta在此期间还有一个非常重要的任务,就是说服我改进本书的文字,使其他人更容易读懂)。你第一次面临一个真正的选择,是否要在学习编程的道路上走下去。我们已经完成了我们所能做的一切,剩下的就靠你自己了。
最大限度地利用本书
既然你已经决定购买本书,我将向你提供一些建议,以便最大限度地利用本书。
在理想情况下,你不应该独自学习。注意,我用了“在理想情况下”这个词。在现实中,你很可能发现自己别无选择,只能依靠自学。但是,只要有可能,你要尽量避免这种情况。脑子里有了这个想法之后,你可以把我接下来所说的内容当成是一种有益的建议,而不是学习本书的必需条件。
有两种人可以帮助你:学习伙伴和指导老师。学习伙伴应该是那种与你能力相近,并且你乐意与之共同学习的人,他愿意与你共同分享成功和失败。学习的过程也包括了犯错误。犯错误并没有什么值得羞愧的。有时候,我们可能会为自己的愚蠢感到可笑;有时候,我们可能会对学习伙伴的洞察力印象深刻。在任何时候,我们都不应该嘲笑别人。错误可能是令人发笑的原因,但你却可以从别人所犯的错误中吸取教训。从这个意义上讲,犯错误的人也是值得你尊敬的。
如果你正在决定是否购买本书,请仔细阅读本节的内容,以便对本书有一个充分的认识。我将尽自己最大的努力帮助你作出正确的结论。虽然我希望自己的书卖得越多越好,但我并不希望你浪费时间和金钱购买以后会令你后悔的东西。
在计算机编程领域,这是一本非常独特的书,因为它是为普通人编写的。任何人只要拥有一台计算机(在目前这个阶段,它还需要运行某个版本的Microsoft Windows),想知道编程是怎么回事,而且打算花点时间通过学习编程来满足这方面的好奇心,我相信,这本书肯定能够帮助他轻松地学会编程。
本书是我和Roberta的合作成果。在本书中,我的角色是一位知识广博、经验丰富的教师,而Roberta的条件应该和本书的读者相似。在本书的技术内容方面,Roberta的贡献并不大,但她仍然在本书的写作过程中发挥了极大的作用,帮助我精心安排难度和进度,使那些计算机水平只不过能够启动程序、使用字处理程序、收发电子邮件以及在Internet上进行冲浪的人也能够跟得上学习的进度。当她以学生身份半途加入到本书的写作过程时,虽然她使用计算机已有10年之久,但她仍然没有掌握诸如目录结构之类的概念。16岁以后,她就再也没有接触过数学课程。她的数学水平也就是会一些简单的算术,顶多只能在公司里干一些简单的财务工作。
不过,她也有两个优点。其一,她希望了解编程;其二,她相信我能够教会她编程。这两点非常重要。如果你希望使用本书,你也需要做到这两点。你必须愿意投入时间和精力了解编程的基础知识,并且信任我们(Roberta和我)能够帮助你实现这个目标。只要你能够满足这两个条件,我们可以承诺你肯定能够学会编程。并且,你根本用不着学完全书就能够具备自行编写程序的能力。只要稍微运用一些想象力,你肯定能设计出一些能够展现自己独特风采的程序。Roberta在学完第6章之前就完成了她的第一个完整的源程序。当她完成学业时,她已经为她的孙子孙女们编写了好几个程序,其中至少有一个程序是完全按照她自己的兴趣所编写的。
我之所以告诉你这些,是因为我确信任何人只要有兴趣都可以学会简单的编程。我还相信,很多人会认为学会编程将在多个方面使他们受益。当一个程序最终能够顺利运行且能够实现设计目标时,所有程序员都会为之振奋,并有一种成功的感觉。
如果你粗粗浏览本书,你可能会疑惑你是否能够弄懂书中那些稀奇古怪的文本 。不必担心,你很快就会发现,所有这类文本只不过是计算机用来表达意图的一种方式,并没有任何稀奇古怪之处。它并不是普通的语言,尽管其中确实有一些英文单词。这是一种称为C++(读作cee plus plus)的计算机语言。如果你周围有一些对编程略知一二的朋友、亲戚或同事,当他们听说本书是用C++讲述编程时,他们可能会向你反馈一些可怕的警告。相信我,不要被他们的话吓倒,其实他们都受到了误导。
为什么要用C++
让我问一个不同的问题:“为什么要用英语?”你的回答大概是:“因为这是我讲话所用的语言。”问得再深一点,哪种语言是人类使用最为广泛的语言呢?以中文为母语的人数多于任何其他语言,但我为什么不用中文写作呢?另一方面,像西班牙语或斯瓦里希语之类的语言远比英语易学,但我为什么不用它们来写作呢?
我们知道,英语不仅是几亿人的母语,而且以它为第二语言的人更是数量惊人。如果你是个初次访问地球的外星人,毫无疑问,你会选择英语与地球上的人进行交流。尽管英语非常复杂,但是如果人们必须与他们社区之外的人进行交流,绝大多数人都会把英语作为第一选择。
C++在计算机社区中的角色与英语在人类社区中的角色非常相似。它是一种功能强大、语法复杂的语言。当然,对于新手而言,它确实存在着许多难解的地方,可以说处处隐藏着陷阱。但是,它确实又是应用最为广泛的通用目的的计算机编程语言。就像没有人敢声称自己完全掌握英语一样,彻底精通C++的人也可以说是凤毛麟角。但是,就像我们并不需要掌握英语的全部内容一样,我们也不需要精通C++的所有方面。本书并不是一本讲述C++的书,即使你学完了本书,你也称不上是位C++程序员。但是,你将成为一名能够使用C++来表达问题的解决方案并且能够编写程序来满足现实需要的程序员。
为什么要用C++?因为它并不会妨碍我向你展示如何进行编程。其他编程语言可能更简单一些,但我常常觉得它们没办法让我用一种非常简洁的方式向你展示编程问题的答案,这常常令我有受挫的感觉。使用C++,我可以从它的丰富功能中撷取一些精华,向读者提供功能强大的工具,允许他们更为方便地在程序中体现自己极富创意的思路。
C++存在一个小小的缺点。作为一种基本语言,它缺乏进行图形开发的工具。不过这个问题很容易得到解决,因为我可以用C++编写这些工具,供读者使用。我需要一些专家帮助我开发这些工具,这是由于计算机的复杂特性所决定的:不同的计算机可能使用不同的图形工具,不同计算机屏幕所使用的颜色数量也不一定相同。使用C++,我可以清楚地说明我需要的是什么,这样我的一位同事(Garry Lancaster)就可以把我所写的规范转换为能够在所有MS Windows机器上运行的工具。最终(甚至可能在你看到本书之前),我会请另外的人改写这些工具,这样其他机器也能够运行它们。但是,在此之前,我们不得不接受一个人为的限制,也就是说如果你在程序中使用了我所提供的工具,那么你的程序就只能在某种版本的MS Windows上运行。
最后,我还需要一些简单的工具,你可以用它们编写程序,并且管理一些技术细节,使你所写的东西能够为计算机所理解。这些工具是由另一位作者Al Stevens提供的,他允许我发布他所开发的Quincy工具集,帮助新手学习编程。
Garry Lancaster和Al Stevens等人所做的工作说明了计算机社区的最大优点:优秀的作品可自由共享。其结果是,你可以得到学习程序所需要的任何东西(除了计算机以及时间和精力)。
选择权完全在你的手中。如果你希望学习编程,并进而学习别人的计算机程序是如何运行的,你肯定能够实现自己的目标。Roberta和我足足花了9个月时间编写这本书(但这并不意味着你需要花9个月时间来读完它;Roberta在此期间还有一个非常重要的任务,就是说服我改进本书的文字,使其他人更容易读懂)。你第一次面临一个真正的选择,是否要在学习编程的道路上走下去。我们已经完成了我们所能做的一切,剩下的就靠你自己了。
最大限度地利用本书
既然你已经决定购买本书,我将向你提供一些建议,以便最大限度地利用本书。
在理想情况下,你不应该独自学习。注意,我用了“在理想情况下”这个词。在现实中,你很可能发现自己别无选择,只能依靠自学。但是,只要有可能,你要尽量避免这种情况。脑子里有了这个想法之后,你可以把我接下来所说的内容当成是一种有益的建议,而不是学习本书的必需条件。
有两种人可以帮助你:学习伙伴和指导老师。学习伙伴应该是那种与你能力相近,并且你乐意与之共同学习的人,他愿意与你共同分享成功和失败。学习的过程也包括了犯错误。犯错误并没有什么值得羞愧的。有时候,我们可能会为自己的愚蠢感到可笑;有时候,我们可能会对学习伙伴的洞察力印象深刻。在任何时候,我们都不应该嘲笑别人。错误可能是令人发笑的原因,但你却可以从别人所犯的错误中吸取教训。从这个意义上讲,犯错误的人也是值得你尊敬的。
序言回到顶部↑
去年冬天,为了给C++爱好者推荐一些参考读物,我撰写了《C++程序设计之四书五经》一文。我将文中推荐的书单发给C++语言的创建者Bjarne Stroustrup征求建议。Bjarne告诉我,还缺一本给完完全全的C++初学者看的入门书,并向我推荐Francis Glassborow的You Can Do It: A Beginner's Introduction to Computer Programming。
Francis在C++社群大名鼎鼎。他曾任ACCU(The Association of C & C++ Users,C和C++用户协会)主席,多年来评阅了成百上千本C++书籍。他有着30余年的编程和教学经验,是C++标准委员会的一名重要成员。他的阅历决定了这本书在C++社群必然占有不容忽视的地位。
因为机缘,我很早浏览过这本书的英文版。我的感觉是Francis的本意似乎并不是想写一本关于C++的入门书,而是要写一本关于如何编程的入门书,为希望体验编程乐趣的人们提供一个入门导引。恰巧Francis是一位C++权威,于是,他采用C++作为本书的编程描述语言。这个巧合使得本书既是一本优秀的编程入门书,也是一本优秀的C++入门书,同时还证明了的确可以将C++作为第一门编程语言来教、来学。
本书写作风格清新,让人眼前一亮。它不是从“C++中的C”讲起,而是迅速展示类、名字空间、异常处理等C++核心语言特性。代码普遍使用vector、string、set、map等标准库组件。全书以有趣的实例拉动语言和标准库的讲解,而不像有些C++教材那样,例子纯属虚构,仅为演示语言特性和库的用法,很难给读者留下深刻的印象,因此教学效果也就大打折扣。
为了确保本书能够为完完全全的外行所看懂,Francis特意邀请了一位家庭妇女Roberta Allen作为目标学生,进行互动写作。除了正文外,作者还安排有任务、练习、Roberta的疑问、Francis的解释、Roberta的评论、任务解决方案、练习解决方案等版块。此外,每章后的总结还列出了关键的编程概念、C++要点等。读者应该尽可能完成Francis布置的任务和练习,因为要想真正掌握编程技术,你必须亲自动手写程序。对于作者提供的解决方案和宝贵的建议则要用心体会,它们有助于你提高编程技术。
我认为,如果你认真阅读了这本书,并动手实践了所有精心设定的练习,你应该可以初步掌握现代风格的C++编程。不过,如果你希望跻身于职业C++程序员之列,阅读这本书只能算是一个良好的开始,你还有很多东西要学,比如面向对象和泛型编程。
说到这儿,我不由得想起国内的C++教材及教育现状。众所周知,许多大学C++课程仍然在主讲C,学生写出来的大多是伪C++程序。作为一名C++讲师,我个人认为责任并不全在教育者,我的教学经验证明一上来就讲面向对象、标准库,为数不少的学生接受起来非常吃力,花一定的时间讲述C++中的C纯粹情非得已。尽管如此,我还是认为Francis的这本书可以为包括我本人在内的中国教师,提供关于如何进行新式C++教学的有益启发。
当然,我并不认为这本书就适合用作正规的C++大学教材,这种例子驱动的写作方式注定了本书的理论体系不够完整,概念阐述不够全面深入。它虽然很棒,但毕竟浅显了一些。我认为它最大的作用在于可以培养你编写程序、学习C++的兴趣,而这正是国内C++教材和C++教育最最欠缺的!
因此,我认为,如果你是一名完完全全的C++初学者,此前对编程如雾里看花,虽然正忍受着糟糕的C++教材和教育的折磨,但对编程的热情火焰尚未完全熄灭,不妨读一读本书并动手实践,希望它可以重新唤起你对C++编程的热爱。
退一步来说,即使你不是一名学生,比如说,是中关村或珠江路上摆弄电脑硬件的新青年,但对编程充满了渴望,或是一名Web网站设计者,希望体验C++编程之乐趣,这本书都可以让你心想事成。
编程对于初学者来说是一件神秘的事情,而当程序能够如愿运行时,那种快乐无与伦比。我还记得大学时使用SUN工作站编写第一个Basic程序时(那时C++尚处于发育期)从激动到沮丧再到兴奋的体验。我折腾了好久也没能让计算1加1的代码算出2来,在克服“重重困难”运行出结果后,我几乎欢呼出来!
编程不仅可以成为一种兴趣,让我们乐在其中;编程也可以成为一种职业,我们靠它养家糊口。可以肯定的是,几乎所有程序员都会从编程本身获得快乐,尤其当我们的工作为别人所欣赏时。
本书译者徐波先生文风轻松流畅,译文读来甚为舒坦。作为一名C++老手和讲师,我饶有兴味地读完了这本入门读物,相信作为完完全全的编程新手的你,定会从中获得更大的快乐。我甚至幻想我的爱人有朝一日也能阅读本书并动手体验编程之乐趣,体会我为何心甘情愿年复一年、日复一日佝偻于手提电脑前,写程序,写关于C++的一切。
荣 耀
2004年12月
于南京师范大学
www.royaloo.com
Francis在C++社群大名鼎鼎。他曾任ACCU(The Association of C & C++ Users,C和C++用户协会)主席,多年来评阅了成百上千本C++书籍。他有着30余年的编程和教学经验,是C++标准委员会的一名重要成员。他的阅历决定了这本书在C++社群必然占有不容忽视的地位。
因为机缘,我很早浏览过这本书的英文版。我的感觉是Francis的本意似乎并不是想写一本关于C++的入门书,而是要写一本关于如何编程的入门书,为希望体验编程乐趣的人们提供一个入门导引。恰巧Francis是一位C++权威,于是,他采用C++作为本书的编程描述语言。这个巧合使得本书既是一本优秀的编程入门书,也是一本优秀的C++入门书,同时还证明了的确可以将C++作为第一门编程语言来教、来学。
本书写作风格清新,让人眼前一亮。它不是从“C++中的C”讲起,而是迅速展示类、名字空间、异常处理等C++核心语言特性。代码普遍使用vector、string、set、map等标准库组件。全书以有趣的实例拉动语言和标准库的讲解,而不像有些C++教材那样,例子纯属虚构,仅为演示语言特性和库的用法,很难给读者留下深刻的印象,因此教学效果也就大打折扣。
为了确保本书能够为完完全全的外行所看懂,Francis特意邀请了一位家庭妇女Roberta Allen作为目标学生,进行互动写作。除了正文外,作者还安排有任务、练习、Roberta的疑问、Francis的解释、Roberta的评论、任务解决方案、练习解决方案等版块。此外,每章后的总结还列出了关键的编程概念、C++要点等。读者应该尽可能完成Francis布置的任务和练习,因为要想真正掌握编程技术,你必须亲自动手写程序。对于作者提供的解决方案和宝贵的建议则要用心体会,它们有助于你提高编程技术。
我认为,如果你认真阅读了这本书,并动手实践了所有精心设定的练习,你应该可以初步掌握现代风格的C++编程。不过,如果你希望跻身于职业C++程序员之列,阅读这本书只能算是一个良好的开始,你还有很多东西要学,比如面向对象和泛型编程。
说到这儿,我不由得想起国内的C++教材及教育现状。众所周知,许多大学C++课程仍然在主讲C,学生写出来的大多是伪C++程序。作为一名C++讲师,我个人认为责任并不全在教育者,我的教学经验证明一上来就讲面向对象、标准库,为数不少的学生接受起来非常吃力,花一定的时间讲述C++中的C纯粹情非得已。尽管如此,我还是认为Francis的这本书可以为包括我本人在内的中国教师,提供关于如何进行新式C++教学的有益启发。
当然,我并不认为这本书就适合用作正规的C++大学教材,这种例子驱动的写作方式注定了本书的理论体系不够完整,概念阐述不够全面深入。它虽然很棒,但毕竟浅显了一些。我认为它最大的作用在于可以培养你编写程序、学习C++的兴趣,而这正是国内C++教材和C++教育最最欠缺的!
因此,我认为,如果你是一名完完全全的C++初学者,此前对编程如雾里看花,虽然正忍受着糟糕的C++教材和教育的折磨,但对编程的热情火焰尚未完全熄灭,不妨读一读本书并动手实践,希望它可以重新唤起你对C++编程的热爱。
退一步来说,即使你不是一名学生,比如说,是中关村或珠江路上摆弄电脑硬件的新青年,但对编程充满了渴望,或是一名Web网站设计者,希望体验C++编程之乐趣,这本书都可以让你心想事成。
编程对于初学者来说是一件神秘的事情,而当程序能够如愿运行时,那种快乐无与伦比。我还记得大学时使用SUN工作站编写第一个Basic程序时(那时C++尚处于发育期)从激动到沮丧再到兴奋的体验。我折腾了好久也没能让计算1加1的代码算出2来,在克服“重重困难”运行出结果后,我几乎欢呼出来!
编程不仅可以成为一种兴趣,让我们乐在其中;编程也可以成为一种职业,我们靠它养家糊口。可以肯定的是,几乎所有程序员都会从编程本身获得快乐,尤其当我们的工作为别人所欣赏时。
本书译者徐波先生文风轻松流畅,译文读来甚为舒坦。作为一名C++老手和讲师,我饶有兴味地读完了这本入门读物,相信作为完完全全的编程新手的你,定会从中获得更大的快乐。我甚至幻想我的爱人有朝一日也能阅读本书并动手体验编程之乐趣,体会我为何心甘情愿年复一年、日复一日佝偻于手提电脑前,写程序,写关于C++的一切。
荣 耀
2004年12月
于南京师范大学
www.royaloo.com
相关资源回到顶部↑
· 【推荐】众多高校学子口口相传,他们共同的选择--华清远见嵌入式学院(嵌入式Linux就业课程、3G手机开发就业课程,通过入学测试即签100%就业协议,4个月集中实训,世界500强企业成功就业保障!!!)· 【亚嵌教育 嵌入式培训专家】(嵌入式培训,嵌入式Linux培训,ARM培训,Linux培训,3G培训,Android培训,WINCE培训,DSP培训,FPGA培训,嵌入式就业培训)
· 程序员的7种武器(正则表达式、编程语言、数据库、算法、软件调试、开发环境)
· C/C++ 经典著作(《C专家编程》《C++ Templates中文版》《C和指针 》《C陷阱与缺陷》《C++沉思录》)
评论交流
共有54人开贴评论 91人参与评论 51人参与打分 查看
评价等级:







发表于:2005-5-13 9:52:00
快速的看了一遍,感觉这确实是完全为编程新手准备的。所以,如果你不是新手,没有必要买这本书了。
作者精心设计了一个Playpen的画布类,用来展示C++语言的一些常见特性。我的体会是,从教学的角度来看,这个类设计的确实很好,可以说是出色。但是我不喜欢这样的例子,相比之下,我更喜欢文本界面的控制台程序。
另外,这本书没有以better C部分开头,直接展示了C++的一些特性。尽管没有全面的介绍了C++的各个部分(只介绍了C++的一个很小的常用子集),但对于初学,还是很不错的。看完这本书,应该更深入的学习C++。
作者精心设计了一个Playpen的画布类,用来展示C++语言的一些常见特性。我的体会是,从教学的角度来看,这个类设计的确实很好,可以说是出色。但是我不喜欢这样的例子,相比之下,我更喜欢文本界面的控制台程序。
另外,这本书没有以better C部分开头,直接展示了C++的一些特性。尽管没有全面的介绍了C++的各个部分(只介绍了C++的一个很小的常用子集),但对于初学,还是很不错的。看完这本书,应该更深入的学习C++。
评价等级:







发表于:2005-5-18 16:29:00
5星给原书,译本给4星半
————
我也借阅了本书,确实对于已经懂了C++基本知识的人没多大帮助
所以我还是去啃C++Primer吧
不过作者立足于给一个计算机知识约为0的人来讲授C++编程知识
比起Accelerated C++来说要更加通俗易懂,后者用来授课也许会有好的效果
但对于自学好像不足,因为Accelerated C++比起本书来说缺乏:
1)习题答案
很难想象每一个没有计算机基础的人打一开始就可以做完所有题目
这很容易打击自学者的热情
此外本书作者鼓励email问问题,当然需要用英语
2)练习的趣味性
没有上学的压力的时候,趣味性会提升人的学习热情
至少我认为大多数人是这样的
————
当然不是说本书不适合做教材,比起很多书来说
这本书跟Accelerated C++有这么些优点:
1)讲的东西不至于太多
很多C++书都有千页左右,比如C++Primer,TCPPP,C++PrimerPlus
这很容易让一个人只见树木不见林,虽然象C++Primer,TCPPP这种书是进阶必备
但我觉得应该先读完一本不太厚的书之后再去学C++Primer
当然对许多在学校已经学过C++或者其他编程语言的人并不必要用别的书来复习
C++Primer本身就有一个C++速览
此外,Lippman也为别的语言的熟练者写了一本C++速成教材:Essential C++
2)非C--〉C++模式
很多书的前半部其实是一本C教程,后面加了类等概念,更好一点的书也写了STL概念,但是作为全新的C++教程,这两本算是突破,这种突破我感觉对读者的编程思维影响颇大。
————
这本书讲的东西比Accelerated C++要少一些(虽然篇幅一样),不过这没太多不妥,因为如果你对这门语言有兴趣,需要阅读更多的书。
对这本书的翻译,虽然有一些笔误,但大体上还是不错的,读起来还是颇通顺的
不过原书一些标题被翻译成相当古板的文字
比如“You can loop”成为了“循环”
“You can write a function”成为了“编写函数”
还有就是页码跟原书对不上号(应该来个边注原书页码),而且索引也不见了
————
我也借阅了本书,确实对于已经懂了C++基本知识的人没多大帮助
所以我还是去啃C++Primer吧
不过作者立足于给一个计算机知识约为0的人来讲授C++编程知识
比起Accelerated C++来说要更加通俗易懂,后者用来授课也许会有好的效果
但对于自学好像不足,因为Accelerated C++比起本书来说缺乏:
1)习题答案
很难想象每一个没有计算机基础的人打一开始就可以做完所有题目
这很容易打击自学者的热情
此外本书作者鼓励email问问题,当然需要用英语
2)练习的趣味性
没有上学的压力的时候,趣味性会提升人的学习热情
至少我认为大多数人是这样的
————
当然不是说本书不适合做教材,比起很多书来说
这本书跟Accelerated C++有这么些优点:
1)讲的东西不至于太多
很多C++书都有千页左右,比如C++Primer,TCPPP,C++PrimerPlus
这很容易让一个人只见树木不见林,虽然象C++Primer,TCPPP这种书是进阶必备
但我觉得应该先读完一本不太厚的书之后再去学C++Primer
当然对许多在学校已经学过C++或者其他编程语言的人并不必要用别的书来复习
C++Primer本身就有一个C++速览
此外,Lippman也为别的语言的熟练者写了一本C++速成教材:Essential C++
2)非C--〉C++模式
很多书的前半部其实是一本C教程,后面加了类等概念,更好一点的书也写了STL概念,但是作为全新的C++教程,这两本算是突破,这种突破我感觉对读者的编程思维影响颇大。
————
这本书讲的东西比Accelerated C++要少一些(虽然篇幅一样),不过这没太多不妥,因为如果你对这门语言有兴趣,需要阅读更多的书。
对这本书的翻译,虽然有一些笔误,但大体上还是不错的,读起来还是颇通顺的
不过原书一些标题被翻译成相当古板的文字
比如“You can loop”成为了“循环”
“You can write a function”成为了“编写函数”
还有就是页码跟原书对不上号(应该来个边注原书页码),而且索引也不见了
| 我要写评论 |
| 查看所有评论交流(共54条) |








点击看大图






加载中...
