正版保障 假一赔十 可开发票
¥ 38.83 8.6折 ¥ 45 全新
库存6件
作者赵春晓、王丽君
出版社清华大学出版社
ISBN9787302483236
出版时间2017-10
装帧平装
开本16开
定价45元
货号25166546
上书时间2024-11-01
出版说明
高等学校计算机基础教育教材精选在关于高等学校计算机基础教育三层次方案的指导下,我国高等学校的计算机基础教育事业蓬勃发展。经过多年的教学改革与实践,全国很多学校在计算机基础教育这一领域中积累了大量宝贵的经验,取得了许多可喜的成果。
随着科教兴国战略的实施以及社会信息化进程的加快,目前我国的高等教育事业正面临着新的发展机遇,但同时也必须面对新的挑战,这些都对高等学校的计算机基础教育提出了更高的要求。为了适应教学改革的需要,进一步推动我国高等学校计算机基础教育事业的发展,我们在全国各高等学校精心挖掘和遴选了一批经过教学实践检验的优秀的教学成果,编辑出版了这套教材。教材的选题范围涵盖了计算机基础教育的三个层次,包括面向各高校开设的计算机必修课、选修课,以及与各类专业相结合的计算机课程。
为了保证出版质量,同时更好地适应教学需求,本套教材将采取开放的体系和滚动出版的方式(即成熟一本、出版一本,并保持不断更新)。坚持宁缺毋滥的原则,力求反映我国高等学校计算机基础教育的成果,使本套丛书无论在技术质量上还是文字质量上均成为真正的“精选”。
清华大学出版社一直致力于计算机教育用书的出版工作,在计算机基础教育领域出版了许多优秀的教材。本套教材的出版将进一步丰富和扩大我社在这一领域的选题范围、层次和深度,以适应高校计算机基础教育课程层次化、多样化的趋势,从而更好地满足各学校由于条件、师资和生源水平、专业领域等的差异而产生的不同需求。我们热切期望全国广大教师能够积极参与到本套丛书的编写工作中来,把自己的教学成果与全国的同行们分享;同时也欢迎广大读者对本套教材提出宝贵意见,以便我们改进工作,为读者提供更好的服务。
我们的电子邮件地址是 jiaoh@tup.tsinghua.edu.cn。联系人:焦虹。
清华大学出版社
前言
C语言程序设计基础作者在高校从事了三十年的C语言程序设计课程的教学,深切地感受到C语言程序设计作为一门计算机基础课程,其重要性不仅仅体现在一般意义上的程序编制,更体现在如何培养学生运用计算思维解决问题的能力。在长期的教学实践中,作者遇到的问题是学生在上课时基本都能够听懂,可到了自己动手做习题的时候,就会觉得无从下手,不会编程。尤其是面对较复杂的应用问题时,往往束手无策。究其原因,就是不知道程序设计的思想方法,缺乏应有的计算思维能力。所有这一切,从主观上说,与教师的教学方法有关,与学生的学习态度有关;而在客观上,与教材体系编排和教学内容组织有着更大的关系。面对这样一些问题,我们在多年教学经验的基础上,决定编写本教材。
写给使用本教材的教师:
(1)贯穿于教材中的计算思维主线
计算思维是一种人们对于一个问题描述、建立模型以及问题后求解这一过程的科学思维能力,它已经成为人们本质的、必须具备的一种基础思维方式和能力。程序设计是将分析和解决问题的思维活动转化成计算机程序的过程。从这个角度讲,程序设计能够体现问题求解的思想方法,是对学生进行思维训练的一个直接、操作性的平台。学生编程过程中,通过问题分析、算法设计、程序实现来体验问题求解的思维训练过程。所以,学生学C编程的目的不应是单纯掌握C语言的语法规范,不是单纯学习C语言程序设计技术,而是学习利用计算机分析和解决问题的基本过程和思维方法。将计算思维融入程序设计教材中有助于提升学生的编程水平。从思维方法的高度培养学生,可以让学生自觉地运用计算思维来看待问题、思考问题和解决问题,从而实现教学由传授知识到培养能力的转变。
传统C语言程序设计教材存在的问题是教材内容过分关注语言的语法和语义细节,以语法规则为纲来组织教学内容。由于C语言具有大量繁杂的语法知识点,教师只能采用灌输式教学模式,花费大量课时用于讲授琐碎的语法知识,而不是重在程序设计思想和方法的传授,教学效果不好。
针对高校C语言程序设计课程教学中存在的问题,通过梳理现有教学内容,对教学的知识点不做大的更换,主要是改革教材体系结构,我们精心设计教学内容与案例,增加与计算思维有关的内容,以计算思维为主线进行重新组织。为了让学生学会如何运用计算机科学的基础概念进行问题求解,强调与培养计算思维能力有关的数据结构和算法实现,重点突出以“构造”为特征的问题求解方法的培养。每个教学单元从问题开始讲起,以问题为核心规划单元内容,通过设计性内容,培养学生分析问题、解决问题、研究和探索问题的能力。在解决问题的过程中形成计算性思维。后通过综合性的应用培养学生的创新意识。让学生应用已有知识分析、解决与实际生活或工作相关的问题。让学生在实践中获得成就感。潜移默化地培养学生的计算思维技能和应用创新能力。
C语言程序设计基础前言(2) 问题驱动的教学方法
授人以鱼不如授人以渔。融入计算思维,教学方法是关键。从解决问题的角度出发,强调解决问题的方法、思路,这就是计算思维。计算思维用抽象与分解的方法来处理复杂的问题,通过对问题进行合适的表达以及对问题建模来使问题变得容易解决。为了让计算思维在本教材中落地,我们在每个教学单元都采用了问题驱动即基于问题的教学方法(ProblemBased Learning,PBL)。这种方法不像传统教学那样先学习理论知识再解决问题。采用PBL教学方法,对于教材的每一章,我们都在节提出若干问题和思想方法,在该章后续的内容中再介绍解决本章内容的语法规则。对于章节中的每个例题也都是按这个思路组织的。实施问题驱动的关键是精心设计提出的问题。在设计问题时选择了贴近生活和能让学生感兴趣的内容,注意问题的典型性,同时兼顾知识的覆盖面,学生利用现有的能力能够实现,同时要具有一定的代表性,对解决其他相似问题具有指导意义。
计算思维是一种思维方式,也是一种解决问题的思考过程,计算思维的目标在于解决问题。从现实角度来说,计算思维就是问题抽象、模型建立、算法设计和实现以及问题引申的过程,也就是将未知问题归纳成若干已知问题从而求解的过程。主要从三方面来突出计算思维。
首先是问题驱动,从原始问题入手。原始问题是指在现实世界中客观存在的,尚未被分解、简化、抽象的实际问题。在这个过程中编程者先通过观察,对问题进行深入的认识和理解。有了问题,说明学习的目标找到了,而只有解决问题的学习才是有意义的。生活和工作中需要的,便是学习的方向。通过学习解决问题,新问题出现了,再从解决问题入手进行学习,如此形成良性循环。教材的每一章的部分主要以展示经典案例为主,提出一些经典问题,结合生活中的实际应用过程,形象直观地向学生们展现C语言程序设计的魅力所在。
其次是问题抽象与分解,将问题同知识点联结。C程序设计语言包括各种常量、变量、数组、结构、指针和函数等符号。抽象就是使用C语言的符号代替实际问题中的各种变量。为了机器的自动化运行,用顺序结构、选择结构和循环结构对过程进行分解,从程序模块化到语句结构化,在抽象分解过程中进行符号转换和编写程序。在分析问题和解决问题中训练学生有关计算思维的抽象和分解能力,寻找一个切入点将该问题同编程者已有的知识和经验进行联结;后通过变换,将一个问题转化为另一个或分解成另几个容易解决的新问题,以达到解决原问题的目的。从问题引入知识点,用知识点带动学生对语法的掌握、对算法的理解及对设计的熟悉。这种传授知识、技能和计算思维的一体化教学模式,摒弃了原有的“重语法、轻方法、不谈思维”的错误教学方法,而是使教学目标从“知识和技能”的传授上升到“思维”的教学。
第三,注重算法思维。在计算思维技能中,算法思维是在思考使用算法来解决问题的方法。这是学习自己编写计算机程序时需要开发的核心技术。有些问题是一次性的,但解决这些问题的方案,则可以不断发展。在同类问题重复出现时,算法思维就可以介入。没有必要重新每次从头思考,而是采用每次都行之有效的解决方案。解一个问题,想一想方法,还有哪些问题使用了相同的思想和方法。这就是教了学生计算思维。基于此,在教材中融入一些基本算法,例如迭代、递推、穷举、递归、排序、查找等。在算法讲解中,采取循序渐进的方式进行,例如对于交换的问题,我们从简单两个量的交换,三个量的交换,到一维数组逆置问题中的多个量交换,再到二维数组转置问题中的下三角元素和上三角对应元素的交换,这样引导学生利用所学知识,一步步分析问题,从简到难,充分调动学生的好奇心和求知欲,发挥个人潜能去分析并寻找解决问题的方法,引导学生编程并在计算机上加以调试实现。
后,培养学生掌握使用自动化思维进行信息处理的能力。计算思维算法强调利用计算机的速度和存储优势,通过严格机械化的操作时序解决实际问题。比如“鸡兔同笼”问题可以使用两个二元方程组进行数学求解,但是计算机算法则可以使用穷举法进行简单重复的操作求解,充分利用了计算机的计算速度优势。在程序设计课程中强化计算思维训练,可以让学生掌握使用自动化思维进行信息处理的能力。
(3)教师应是学生与教材交流的中介者
教学过程是教师、学生、教材、环境诸因素交互作用的动态过程,是一个“生态系统”。教师的作用就是要引导、启发。作为老师主要不在于传授知识,而在于引导学生自己去求得知识,也就是引导学生自己去发现问题,自己去解决问题。叶圣陶将教师的这种作用比作教孩子走路:“老师讲,目的是要达到不用讲,好比帮孩子学走路,先牵着他走,扶着他走;进一步让他自己走,在旁边护着他;后完全可以放心了,就让他自己走,护也不用护了。上课也一样,不能光灌输,要多启发,多引导。”教师要从知识的传授者、灌输者、拥有者转向教学活动的引导者、激励者、服务者。教师要大胆地接受新的教学理念,把学生转换成为课堂的重点,引导鼓励学生自主学习创新的学习能力。使教师的中介作用可以提供给学生更好的教学服务。
教师引导学生养成良好的计算思维和编程的好习惯,有意识地训练学生仔细阅读题目,找出问题的关键并抽象为数学模型,思考数学模型求解的步骤,用所学的计算机编程语言将算法编写成一个源程序在计算机上调试运行,并能对每个程序的结果加以分析,引导学生对已有算法的优缺点进行思考和分析,如何进行简化和优化,好能给出一些能优化改进的算法。这种中介引导作用提炼并展现了隐藏在知识背后的计算思维的光芒,引起学生求知欲望和心理共鸣,就是培养了学生的计算思维能力。
(4)简单易用的DevC 上机环境
对于学生来说,通过上机实践,初学习是很有趣味的,但在后续学习中却因为语法内容的增多,使用语言工具的繁琐,反而降低了学习热情。所谓的“成在实践,败在工具”。
“工欲善其事,必先利其器”,早期用得多的IDE开发工具是Turbo C。1997年微软推出了一款C/C 编译器——VC 6.0,VC 6.0界面友好,调试功能强大,非常经典。很多高校将VC 6.0作为C语言的教学基础,作为上机实验的工具,至今仍然有很多企业和个人在使用。对于初学者VC 6.0是比较容易上手的,但其对标准支持得不好可能使人养成不良的编程习惯。VC 6.0适合在低配置的机器上使用,在高配置的系统上,VC 6.0有一些兼容性问题。可能在配置环境的时候给初学者造成一些不必要的麻烦。微软后来对VC 6.0进行了升级,并更名为Visual Studio(简称VS),支持更多的编程语言,拥有更加强大的功能。但是 Visual Studio 文件很大,约有3GB,大部分功能初学者暂时不会用到,而且安装繁琐,不用时很难卸载干净,占用资源较多,低配置的机器不能使用。
GCC(GNU CompilerCollection,GNU编译器套装)是一套由GNU开发的编程语言编译器。它是一套以GPL及LGPL许可证所发行的自由软件,也是自由的类UNIX及苹果计算机Mac OS X操作系统的标准编译器。GCC(特别是其中的C语言编译器)也常被认为是跨平台编译器的事实标准。Linux平台下使用GCC。
在Windows下,也有集成了GCC的开发工具,如DevC 。DevC 是一款自由软件,遵守GPL许可协议分发源代码。DevC 集成使用了GNU的GCC,是对于C99支持好的编译器,它的ANSI C/C 兼容性远好于微软的VS系列。可以用此软件实现C/C 程序的编辑、预处理、编译、链接、运行和调试。它是一种轻量级的C/C 编程工具,具有关键字加亮,不同颜色显示等功能,还具有代码自动补全功能,可以根据程序上下提示所有可能的指令,从而提高编程效率,还有完善的调试功能。简单配置就可以上手使用,让初学者免于面对庞大IDE比如Visual Studio的困惑,让初学者更多地关注于语言本身而不是一个繁琐的IDE。
由于DevC 简单实用,操作简便,特别适合初学者,避免了初学者学习C语言编程时使用其他开发工具的困惑。DevC 是学习C或C 的开发工具,适合初学者与编程高手的不同需求。DevC 是NOI、NOIP等比赛的指定工具,ACM比赛测试用的也是DevC 环境。作者使用DevC 作为高校C语言的教学和上机实验的工具,本教材上机环境也是使用的DevC 。
(5)因类施教的折中式体系编排
根据各个计算机和非计算机专业(例如理学类、艺体类、工程类和文史类)学生的特点和各个专业的需要,首先在教学内容的选取上加以区别对待,在教材体系编排上采用折中式组织。兼顾程序设计和语法规则两方面的需要,将每一章分成基本内容和阅读延伸两部分。在每一章的基本内容中,主要讲解程序设计的思路和方法以及C语言的重要语法规则,重点突出程序设计,学生们学完了这部分内容就可以编写程序了。将一些在课堂教学中难以组织的内容放在阅读延伸部分,如一些较大的应用问题、一些语法细节以及并不是所有读者都感兴趣的非主流问题等,另外各个学校之间,同一学校计算机和非计算机专业所讲授内容有所不同,程序设计课程的教学时数一般为64~96。基于这些差异性,教师可以根据自己专业的特点选择讲授阅读延伸部分内容。也可让学生自学这部分内容。这样做极大地方便了教师的使用,改变了学生先学习大量枯燥的知识再编程的方法,大大提高了学习效率。
写给使用本教材的学生:
学习C语言编程,首先要解决的是书籍。教材不仅遵循学科逻辑,而且遵循学生学习的心理逻辑,形成了高度结构化的教材,不仅为教师教学提供基本的操作框架和步骤,提示教学方法,而且还为学生学习提供指引。学编程,仅靠记概念、背算法是不够的。本教材在每章的基本内容中提供了丰富的例题,对每一个例题或者算法,要注意总结其中的算法思想和程序设计过程与方法,还有其中涉及的重要语法规则及应用方式等。每一章都配备了习题和实验问题,便于学生课后做编程练习。建议初学者把所有的习题都独立做一遍,然后对照答案的代码,看看自己的代码有哪些不足,再试着修改自己的代码。习武之人首先要学的都是各种套路,题做多了,才能做到“做题过万道,编程如有神”。
其次是学习方法,好的学习方法将事半功倍。学生们在编写完程序之后,还可以上机实践。通过写程序和上机实践,就会慢慢理解程序设计的思想,用过的方法多了,遇到问题时才有可能想到解决的思路。初学者可能会感觉编程很难,可是当你编写出了一个个的程序,就会觉得其实也并不是那么难,就会有成就感。反过来这种感觉会更加激发学习的热情。
后,我们精心制作了本教材的视频课程,将做成慕课帮助学生更好地学好C语言编程,提供实时交互的在线编程环境,互帮互助的问答社区,师生之间、学员之间还可以在线交流。
由于时间仓促,书中难免存在不妥之处,请读者原谅,并提出宝贵意见。
作者2017年7月
目录
C语言程序设计基础第1章程序及其执行1
本章知识结构图1
本章学习导读1
1.1程序2
1.2程序设计语言3
1.2.1几种常用的高级语言3
1.2.2C语言的词法记号4
1.3C语言程序的基本结构8
1.4C语言程序上机运行四部曲10
1.5习题111
1.6实验1学习DevC 开发环境实验(2学时)12
1.7阅读延伸12
1.7.1为什么要学习C语言12
1.7.2DevC 集成开发环境15第2章如何设计C程序19
本章知识结构图19
本章学习导读19
2.1程序设计的关键——设计一个好的算法20
2.1.1算法及其特性20
2.1.2算法、数据结构和程序23
2.1.3算法的分类25
2.1.4算法的表示形式26
2.2结构化程序设计方法28
2.3程序设计过程——程序开发5步骤29
2.4习题231
2.5实验2C程序开发过程实验(2学时)32
2.6阅读延伸33
2.6.1程序设计风格33C语言程序设计基础目录2.6.2学习程序设计的目的——培养计算思维能力36
2.6.3怎样学好程序设计37第3章顺序结构39
本章知识结构图39
本章学习导读40
3.1顺序结构的思想方法40
3.2C语言的数据及其运算41
3.2.1常量41
3.2.2变量44
3.2.3运算表达式48
3.3数据处理——赋值语句51
3.4数据输出——格式化输出库函数printf53
3.5数据输入——格式化输入库函数scanf55
3.6顺序结构的应用58
3.6.1职工工资问题58
3.6.2两个数交换问题59
3.7习题359
3.8实验3顺序结构程序设计实验(2学时)60
3.9阅读延伸62
3.9.1字符数据的输入和输出库函数62
3.9.2各种基本类型的变量定义64
3.9.3数据的机内形式和机外形式65
3.9.4sizeof运算符66
3.9.5数据类型转换67
3.9.6C语言程序预处理命令68第4章选择结构72
本章知识结构图72
本章学习导读72
4.1逻辑选择的思想方法73
4.2if语句与条件判断75
4.2.1if语句的一般形式75
4.2.2关系运算76
4.2.3逻辑运算77
4.3三种选择结构80
4.3.1用if语句实现单路选择结构80
4.3.2用if语句实现双路选择结构81
4.3.3用if语句实现多路选择结构82
4.4switch语句与多路选择结构84
4.5选择结构的应用87
4.5.1书店收银问题87
4.5.2三个数的排序问题88
4.6习题490
4.7实验4选择结构程序设计实验(4学时)91
4.8阅读延伸96第5章循环结构98
本章知识结构图98
本章学习导读98
5.1循环控制的思想方法99
5.2三种循环控制语句100
5.2.1while语句100
5.2.2do…while语句102
5.2.3for语句103
5.3两种循环结构——计数型和非计数型105
5.4循环结构的嵌套107
5.5循环结构中的两个辅助控制语句108
5.6循环结构的应用111
5.6.1出租车计价问题111
5.6.2图形输出问题112
5.7习题5114
5.8实验5循环结构程序设计实验(6学时)117
5.9阅读延伸1
— 没有更多了 —
以下为对购买帮助不大的评价