《程序设计基础:以C++为例/普通高等教育“十一五”国家级规划教材·计算机系列教材》是以C++语言作为入门语言的程序设计教材,以崭新的思路进行设计和编排。全书以程序设计零起点读者为主要对象,以培养程序设计能力为目标,循序渐进,通过数百个例题,重点讲解程序设计思想和方法,力图将C++语言基础知识介绍和程序设计能力培养完美结合。《程序设计基础:以C++为例/普通高等教育“十一五”国家级规划教材·计算机系列教材》共10章,包括程序设计概述、C++基础、函数、复合数据类型、对象和类、对象和类的进一步学习、继承和多态、文件、常用数据结构以及标准模板库。
《程序设计基础:以C++为例/普通高等教育“十一五”国家级规划教材·计算机系列教材》可作为高等学校学生学习程序设计课程的教材,也可供程序员和编程爱好者参考使用。
《程序设计基础:以C++为例/普通高等教育“十一五”国家级规划教材·计算机系列教材》特色: 1.完全遵循C++语言标准(C++03),并加入了最新C++语言标准(C++11)的部分内容。避免程序依赖任何特定的计算机、操作系统和编译器。 2.以程序设计思想和方法的培养为主线,按照循序渐进的方式进行编排,前后内容由浅入深、相互呼应。 3.针对C++语言语法庞杂,重点介绍了基本的、常用的C++语言语法知识,使读者容易理解和掌握。 4.通过数百个例题,通俗易懂地讲解概念、语法和算法,尤其强调标准库函数的使用。每章后面都有精心设计的实验题,便于读者通过模仿、改写、编写的实践过程强化对相关内容的理解。 5.强调程序的可读性,注重培养良好的编码风格。《程序设计基础:以C++为例/普通高等教育“十一五”国家级规划教材·计算机系列教材》程序全部采用一种符合业界规范的编码风格。
随着信息产业的迅速发展,软件人才的需求量也越来越大。程序设计是软件人才必备的基础知识和技能。
程序设计基础是一门理论与实践密切相关,以培养学生程序设计能力为目标的课程。如何消除学生学习程序设计的畏难情绪,使学生顺利进入程序设计的大门,逐步掌握程序设计思想和方法,提高实践动手能力,是本课程教学的难题。
程序设计既是科学,也是艺术。学习程序设计是一件非常辛苦的事情,要有非常强的耐心和实践精神,需要花费大量的时间,不可能一蹴而就,必须从某个起点开始循序渐进。
本书就是一个很好的起点,以程序设计零起点读者为主要对象,采用标准C++语言(C++03)作为程序设计的描述语言,并加入了最新C++语言标准(C++11)的部分内容。C++语言是目前业界使用最广泛的程序设计语言,作者确信选用C++语言作为程序设计基础课程的教学语言是正确的选择。在多年的教学实践中,作者深深感到C++语言的灵活和高效,能够带给软件开发者无尽想象的空间,同时也深深感到讲授C++语言过程中面临的困难和挑战,意识到在程序设计基础课程中讲授C++语言并不是那么容易的。C++语言是一门复杂的程序设计语言,是为软件开发者设计的,而非为初学者设计的,向初学者讲授C++语言时必须很好地控制其固有的复杂性。
尽管目前有关学习C++语言的书籍很多,但学习C++语言仍然让大多数初学者心存畏惧。作者一直从事程序设计方面的教学和科研工作,主讲过多门程序设计课程,积累了丰富的教学经验。结合自己学习和使用C++语言的经验和感悟,以程序设计为主线,通过数百个例题,简洁通俗地讲解程序设计思想和方法,并穿插介绍相关的语言知识,循序渐进培养学生的程序设计能力。本书对那些渴望掌握C++语言而又心存畏惧的初学者是一个很好的选择。
教学改革的重点之一,就是要抓学生实践动手能力的培养。学生的能力是决定就业的根本,而就业率又是体现教育质量的重要指标。作为国内首家服务外包本科学院以及教育部、商务部在江苏、浙江两省开展地方高校计算机学院培养服务外包人才试点工作单位,我们实施了程序设计课程的教学改革,在教学内容、教学方法、教学手段和考核方式上,基本形成了比较完整的体系,目的就是培养学生的程序设计能力,适应社会对软件服务外包人才培养的需求。本书源于教学改革和教学实践,体现了程序设计教学改革的成果。
全书共有10章,各章内容安排如下: 第1章程序设计概述,介绍程序设计基本概念和C++语言的基础知识。第2章C++基础,介绍标识符、数据类型、运算符、表达式、语句、标准库函数的使用、指针、引用以及程序设计错误、程序设计风格。第3章函数,内容包括函数定义、函数调用、函数声明、内联函数、函数默认参数、函数重载、函数模板、递归函数、指针和函数、引用和函数、Lambda表达式以及异常处理、程序结构。第4章复合数据类型,内容包括数组的基本概念、数组的声明和使用、数组作为函数参数、数组和指针的关系、排序和查找、array数组、动态内存分配以及字符串。第5章对象和类,内容包括面向对象程序设计、类、构造函数和析构函数、静态成员、类作用域、对象作为函数参数、对象数组、异常类以及编写多文件程序。第6章对象和类的进一步学习,内容包括拷贝构造函数、this指针、对象组合、友元函数和友元类、运算符重载以及类模板。第7章继承和多态,内容包括继承的概念、单继承、多继承、多态的概念、虚函数、抽象类。第8章文件,内容包括文件的基本概念、文件操作、文件输入输出以及文件定位。第9章常用数据结构,内容包括数组类Vector、栈类Stack、链表以及队列类Queue。第10章标准模板库,内容包括标准模板库的概念、容器、容器适配器、迭代器、函数对象以及算法。
写给教师
跟各位尊敬的老师一样,作者从事了多年程序开发和教学工作,深知教学的艰辛,为教学方法费劲了心机,为教学效果伤透了脑筋,为学生的学习成绩摇头惋惜……所有这一切,从主观上说,与教师素质有关、与教学方法有关、与学生的学习态度有关;而在客观上,与教材和教学内容组织更有着重大的关联。编写本书的目的,就是企图从客观的角度,使教师的教学热情有更好的着力点,从而更顺利地完成既定的教学目标,让教师和学生的辛劳能得到应有的回报。
每章后面都有精心设计的实验题,可以据此来布置实验内容,使学生从第1周起就练习编程,并贯穿始终。许多实验题与例题有关联。实验题都有运行结果,较难的实验题有编程提示和程序代码,便于学生检验自己编写的程序。
实验所用操作系统可以是Windows、Mac OS X或UNIX/Linux,建议使用业界流行的C++语言集成开发工具(例如Visual Studio、Xcode或Code∷Blocks的较新版本),支持利用项目来实现程序的多文件组织。彻底抛弃非常陈旧的Visual C++ 6.0。
在讲授过程中,应该完全遵循C++语言标准,避免程序依赖任何特定的计算机、操作系统和编译器。要注重培养学生养成良好的编码风格,强调程序的可读性。在编写程序时,采用一种统一的、良好的编码风格是非常重要的。本书程序全部采用一种符合业界规范的编码风格。
我们所面对的教学对象,绝大多数是第一次接触程序设计的学生,很多学生对学习程序设计有较大的畏难情绪。培养学生程序设计能力不外乎3点: 兴趣、天赋和经验。经验可以通过实践加以积累,天赋不容易改变,所以程序设计课程教学唯一能起作用的就是提高学生对编程的兴趣。
以往的程序设计教学多以讲授语法为主,没有引导学生如何合理优美地使用语言来解决实际问题。对初学者来说,语法内容讲得太多,难以在短时间内理解和消化。更何况,在课堂教学中,不可能面面俱到地讲授语法知识。这就造成了多数学生在学习结束后仍不会编程。这种只造砖、不盖房的教学方式,本身就造就了学生这样的学习态度,使学生感觉就是为了考试过关、为了学分而学习,所以学习兴趣不大,主观能动性缺乏,学过的东西也很少能对将来的就业和工作有帮助,因此,真正能够达到课程期望目标的学生少之又少。
本书略去过多的语法细节和实际很少使用的语言特性,通过“例题→知识点说明→模仿编程→实践提高”的教学方式,让学生首先得到成功的经历,尽快体验成功的喜悦,逐渐喜爱看似枯燥的课程,增强学习的信心,激发求知欲。如果不仅会造砖,而且用造好的砖瓦亲手盖起了漂亮的房子,那么,学生就不会轻易将它们丢弃,而且还会长期拥有、使用和维护它们。这样,学到的东西就会真正成为他们自己的财富,而他们也将由此长期受益。那么,教师顺利、圆满地完成教学目标也就可以期待了。
写给学生
程序设计是一门实践性很强的学科,仅靠记概念、背原理是远远不够的。通常学生在上课时基本都能够听懂,可到了自己动手编程时,往往会觉得无从下手。要解决这个问题没有捷径可走,只有增加实践的时间和数量,熟能生巧,经历的多了,就会慢慢理解程序设计的思想,用过的方法多了,遇到问题才有可能想到解决的思路。
刚开始可能会感觉程序设计很难、很痛苦,可是当第一次编写出了一个小程序,就会觉得无比欣喜,回头看看其实也并不是那么难。解决了一个过去不能解决的问题,就是一种自我实现,就会有成就感,就会发觉自己原来这么有潜力。反过来,这种感觉会更加激发学习的热情,驱使自己去解决更多的难题,实现更多实用的任务,同时这些成果还可以作为提高自己工作效率的工具,岂不两全其美?这个过程也正是一条造就高手之路。所以学习程序设计一定要有信心、耐心和恒心,要实践,实践,再实践。
教学资源
读者要获取本书的相关资源,请访问清华大学出版社网站http://www.tup.com.cn。
致谢
在本书写作过程中,参考了部分图书资料和网站资料,在此向其作者表示感谢。
本书的出版得到了清华大学出版社的大力支持,在此表示衷心的感谢。
征求建议与批评
感谢读者选择本书。由于作者水平和经验有限,书中难免有不足之处,恳请读者提出宝贵意见和建议,使本书日臻完善。
第1章 程序设计概述
1.1 程序设计基础
1.1.1 程序
1.1.2 程序设计语言
1.1.3 程序设计
1.2 C++语言的发展历史与特点
1.2.1 C++语言的历史
1.2.2 C++语言的特点
1.3 初识C++
1.3.1 基本术语
1.3.2 C++程序的开发过程
1.3.3 第一个C++程序
1.3.4 华氏温度转换为摄氏温度的程序
1.3.5 两个整数的加法程序
1.3.6 计算两点之间距离的程序 第1章 程序设计概述
1.1 程序设计基础
1.1.1 程序
1.1.2 程序设计语言
1.1.3 程序设计
1.2 C++语言的发展历史与特点
1.2.1 C++语言的历史
1.2.2 C++语言的特点
1.3 初识C++
1.3.1 基本术语
1.3.2 C++程序的开发过程
1.3.3 第一个C++程序
1.3.4 华氏温度转换为摄氏温度的程序
1.3.5 两个整数的加法程序
1.3.6 计算两点之间距离的程序
1.3.7 计算圆面积的程序
小结
习题
实验
第2章 C++基础
2.1 标识符
2.1.1 C++程序中的基本记号
2.1.2 标识符
2.1.3 关键字
2.2 数据类型
2.2.1 数据类型的基本概念
2.2.2 变量和常量
2.2.3 整数类型
2.2.4 浮点数类型
2.2.5 字符类型
2.2.6 布尔类型
2.2.7 枚举类型
2.2.8 类型定义
2.3 用运算符对数据进行运算
2.3.1 用表达式表达运算意图
2.3.2 算术运算符和算术表达式
2.3.3 赋值运算符和赋值表达式
2.3.4 关系运算符和关系表达式
2.3.5 逻辑运算符和逻辑表达式
2.3.6 条件运算符和条件表达式
2.3.7 位运算符
2.3.8 长度运算符
2.3.9 类型转换
2.4 将语句编织成程序
2.4.1 什么是语句
2.4.2 简单语句
2.4.3 单入口单出口的控制结构
2.4.4 分支结构
2.4.5 循环结构
2.5 使用输入输出标准库
2.6 指针
2.6.1 什么是指针
2.6.2 声明指针变量
2.6.3 取地址运算符和解引用运算符
2.6.4 指向指针的指针
2.6.5 指针赋值
2.6.6 通用指针
2.6.7 使用const修饰指针
2.7 引用
2.8 程序设计错误
2.8.1 语法错误
2.8.2 运行时错误
2.8.3 逻辑错误
2.8.4 测试和调试
……
第3章 函数
第4章 复合数据类型
第5章 对象和类
第6章 对象和类的进一步学习
第7章 继承和多态
第8章 文件
第9章 常用数据结构
第10章 标准模板库