本丛书是基于《CCF青少年计算机程序设计评级标准》开发的一个系列培训教材。该标准围绕计算机程序设计的知识要求和能力要求,共分十级,其中1-3级为基础级,4-5级为提高级,6-7级为高手级,8-10级为大师级。本丛书将评级内容进行归纳,计划1-3级出1本、4-5级出1本,6-7级出1本,8-10级出1本,共4本教材。
江 涛:全国先进工作者、中学特级教师、全国信息学奥林匹克高级指导教师、佛山市南海区十佳教师
宋新波:全国青少年信息学奥赛金牌指导教师、广东省青少年信息学竞赛优秀辅导员、中山市十大杰出青年,荣获中山市学科竞赛突出贡献奖
朱全民:全国师德先进个人、雅礼中学特级教师、国际金牌指导教师、NOI十大杰出指导教师
第1章?模块化编程—函数
1.1 自定义函数的引入................................................... 1
1.2 函数的定义............................................................. 3
1.3 函数调用与参数传递................................................ 5
1.4 变量的作用域.......................................................... 9
1.5 函数的应用........................................................... 11
1.6 递归函数.............................................................. 20
第2章?字符串处理—string类型
2.1 string类型的引入................................................... 33
2.2 string类型的基本操作............................................. 36
2.3 string类型中字母与数字的关系................................ 41
2.4 string类型的应用................................................... 48
本章小结...................................................................... 52
第3章?数据类型的组合—结构和联合
3.1 结构体(struct)的引入............................................. 61
3.2 结构体(struct)的使用............................................. 66
*3.3 结构体(struct)的扩展............................................. 72
*3.4 联合(union)的定义和使用........................................ 76
*3.5 枚举(enum)的定义和使用........................................ 79
本章小结...................................................................... 81
第4章?功能强大的利器—指针
4.1 指针概念、定义与内存分配..................................... 85
4.2 指针的引用与运算.................................................. 87
4.3 指针与数组........................................................... 90
4.4 指针与字符串........................................................ 95
*4.5 函数指针和函数指针数组........................................ 97
4.6 指针的扩展......................................................... 100
本章小结.................................................................... 104
第5章?数据外部存储—文件
5.1 数据存储的分类................................................... 109
5.2 文件类型变量的定义及引用................................... 110
5.3 文件的重定向...................................................... 116
本章小结.................................................................... 118
第6章?数据结构及其运用
6.1 什么是数据结构................................................... 125
6.2 线性表的储存结构及其应用................................... 126
6.3 队列及其应用...................................................... 138
6.4 栈及其运用......................................................... 145
6.5 二分及其快速排序................................................ 151
第7章?简单算法
7.1 什么是算法......................................................... 169
7.2 高精度数值处理................................................... 171
7.3 简单枚举算法...................................................... 178
7.4 模拟算法............................................................. 184
7.5 简单动态规划...................................................... 187
7.6 用递归实现回溯算法............................................. 199
第8章?数学在程序设计中的应用
8.1 常用数学函数...................................................... 207
8.2 质因数的分解...................................................... 209
8.3 最大公约数的欧几里德算法................................... 212
8.4 加法原理与乘法原理............................................. 216
8.5 排列与组合......................................................... 219
8.6 圆排列、可重集排列............................................. 222
第9章?STL(标准模板库)简要说明
9.1 STL中的一些新概念.............................................. 227
9.2 几个常见的容器介绍............................................. 232
9.3 几个常见的算法函数............................................. 240
索引 245
序
由中国计算机学会(CCF)组编的“CCF中学生计算机程序设计教材”面世了。
早在1984年,邓小平就提出“计算机的普及要从娃娃抓起”。这很有先见之明,但这里的“计算机普及”是泛指,并未明确普及哪些内容。在过去的三十多年中,中小学广泛开展了计算机普及活动,2000年教育部也曾发文,要在全国中小学开展信息技术教育。但事实上,现有的所谓“普及”大多成了对计算机工具的认识,而不是对中小学生智力的开发和思维的训练,因而效果不佳。CCF早在1984年就创办了“青少年信息学奥林匹克竞赛NOI”,这是面向那些学有余力的中学生的一项计算机科学(CS)教育活动,但具备开展这项活动的学校并不很多,每年参加NOI联赛的学生不过七八万,比例很小,因而普及的面并不大。
计算机科学教育的核心是算法设计和编程,这要求学生面对一个给定的现实问题要能够找到一个正确和高效的办法(算法)并将其变成计算机能理解的语言(程序设计语言),进而让计算机计算出人们需要的结果来。像快递员最佳路径算法就是一个典型的现实问题。这个过程并不容易,因为将一个问题抽象并构造一个模型,需要一定的数学基础,还得理解计算机的特点,“指挥”计算机干活。这还涉及欲求解问题的“可计算性”,因为并不是任何问题都可以由计算机求解的。计算机也并不知道什么是“问题”,是人告诉计算机,如何按照一步一步的程序求解。这个过程,就会训练一个人求解问题的能力,相应地,其具备的让计算机做事的思维能力称之为“计算思维”(Computational Thinking)。我们平常操作计算机(包括手机这些终端设备)仅仅像开关电灯那样简单,并不会使我们具备计算思维能力,而只有通过上述步骤才能训练这样的能力。随着计算机和网络的发展,未来越来越多的工作将和计算(机)有关(据美国政府的统计是51%以上)。我们必须知道如何让计算机做事,起码知道计算机是如何做事的,这就要求普及计算机科学教育(注意:不是计算机教育,也不是信息技术教育)。
美国政府已经把在中小学普及计算机科学当成一种国策(CS for All,每一个人学习计算机科学),并投入40亿美元落实这一项目。奥巴马总统说“在新经济形态中,计算机科学已不再是可选技能,而是同阅读、写作和算术一样的基础技能……因此,我制定了一项计划,以确保所有孩子都有机会学习计算机科学。”美国政府已明确把计算机教育列入(从幼儿园到12年级)教育体系K12中。英国从2014年起,对中小学的计算机课程进行重大改革,5岁的儿童就开始学写程序。英国教育部启动了“计算机在学校”(Computing at School,CAS)项目。新西兰等国也把计算机编程课当作中学的必修课,并为此投入资金培训教师。未来的竞争不是资源的竞争,而是人才的竞争,如果不具有计算素养和技能,则在未来的社会中处于被动地位。
CCF作为一个负责任的学术社会组织,应该勇于承担起CS普及的任务,这比NOI更加艰巨,更难。不过有NOI三十多年发展的基础,会对未来CS的普及提供有益的经验。
普及计算机科学教育的难点在于师资,而培训师资需要合适的教材。CCF组织富有程序设计教学经验的中学老师编写了“CCF中学生计算机程序设计教材”,分为入门篇、基础篇、提高篇和专业篇,只要有一定数学基础的老师,均可从入门篇修起。学习编程并不像人们想象的那么困难,只要从现实中遇到的(简单)问题出发,循序渐进,通过和计算机的互动,一旦入门就好办了,以后就可以逐步深入下去。
感谢朱全民、陈颖、徐先友、江涛、邱桂香、宋新波、汪星明、屈运华、廖晓刚等老师的贡献,他们花了两年时间写成了这套教材。感谢吴文虎教授、王宏博士审阅本书,在此向他们表示感谢。
杜子德
中国计算机学会秘书长
2016 年8 月29 日
这本书的排版和内容组织给我留下了深刻的印象。打开来,首先映入眼帘的是一个清晰的目录,列出了所有章节以及主要内容,非常方便查找。我最喜欢的是它在讲解某个编程概念时,往往会先给出一个实际的应用场景,然后引出需要用到的编程知识。比如,在讲到“循环”的时候,它会先描述一个需要重复执行的操作,例如打印出1到100的数字,然后再告诉我们如何用循环语句来实现。这种“需求驱动”的学习方式,让我觉得学到的东西都是有用的,能够解决实际问题,而不是空中楼阁。书中的代码示例也非常简洁明了,注释清晰,每一个重要的语句都会有详细的解释,不像有些书的示例代码动辄几十行,让人望而生畏。我尤其喜欢它在解释“函数”这个概念时,用了“一个独立的工具箱”的比喻,让我们理解到函数就是一段可复用的代码,可以完成特定的任务。这种形象的比喻,加上实际的代码演示,让我对函数的理解一下子清晰了很多。总而言之,这本书的“接地气”和“易理解”的特点,对于初学者来说,绝对是事半功倍的学习利器。
评分《CCF中学生计算机程序设计 基础篇》这本书的文字风格非常亲切,没有那种高高在上的学术腔调,读起来就像在和一位经验丰富的老师聊天。作者在讲解过程中,常常会穿插一些小贴士或者“温馨提示”,提醒我们一些容易出错的地方,或者分享一些提高编程效率的小技巧。我记得在讲到“字符串处理”的时候,书中就列举了好几种不同的方法来截取和连接字符串,并且详细分析了每种方法的优劣,这对我来说非常有启发。另外,这本书还有一个我非常欣赏的特点,就是它非常注重逻辑思维的培养。在讲解每一个新的概念之前,都会先引导我们思考“为什么我们需要这个?”,然后再解释“它是什么?”,最后才是“如何用?”。这种层层递进的提问方式,能够帮助我们建立起完整的知识体系,而不是零散地记忆一些代码片段。书中的案例分析也做得非常出色,它不仅仅是展示代码,更是分析代码的思路和背后的逻辑,让我们学会如何去“读懂”代码,而不是简单地“复制粘贴”。
评分这本《CCF中学生计算机程序设计 基础篇》的封面设计简直让人眼前一亮,简洁大气,蓝白相间的配色透露着科技感,又不会过于冰冷,非常符合它面向中学生的定位。拿到手里,纸张的触感也很好,厚实且光滑,印刷清晰,字体大小适中,看起来就让人有翻阅的冲动。我特别喜欢书中那种循序渐进的讲解方式,不像有些教程上来就抛出一堆复杂的概念,这本书从最基本的“什么是程序”、“如何给电脑下达指令”这样通俗易懂的例子入手,就像一位耐心的老师,一步一步地引导你走进编程的世界。即便你之前对编程毫无概念,也能在阅读的过程中逐渐建立起逻辑思维能力,理解代码是如何工作的。书中的插图和图表运用也非常恰当,将抽象的编程概念形象化,让学习过程不再枯燥乏味。很多地方都会用一些生活化的比喻,比如把循环比作每天重复的刷牙洗脸,把条件判断比作下雨天是否需要带伞,这些都大大降低了学习的门槛,让原本可能觉得“高大上”的编程,变得亲切起来。对于我这样才刚刚开始接触编程的学生来说,这样的引导简直是太及时了,它不仅仅是传授知识,更重要的是培养了我对编程的兴趣和信心,让我觉得原来编程并不是那么遥不可及。
评分不得不说,《CCF中学生计算机程序设计 基础篇》在内容的前沿性和实用性上做得相当不错。虽然是基础篇,但它并没有回避一些未来学习中会遇到的重要概念,比如一些简单的面向对象思想的初步引入,虽然篇幅不多,但已经为我们打下了概念基础。我印象特别深刻的是,书中有专门一章讲解如何利用编程来解决一些生活中的小问题,比如一个简单的计算器程序,或者一个自动生成生日祝福语的小工具。这些案例都非常贴近我们的生活,让我们切实感受到编程的实用价值,也激发了我们自己动手去尝试解决问题的动力。而且,书中所用的编程语言版本也是比较新的,使用的语法和函数都是当前主流的,这对于我们将来继续深入学习非常有帮助,避免了学到一些过时的知识。最重要的是,这本书不仅仅是在教我们写代码,更是在培养我们的“计算思维”,也就是如何将一个问题分解成更小的、可管理的部分,并用逻辑的方式去解决它。这种思维方式,无论是在编程领域还是其他学科,都是极其宝贵的财富。
评分坦白说,我最开始拿到《CCF中学生计算机程序设计 基础篇》的时候,并没有抱太大的期待,想着可能就是市面上那种泛泛而谈的入门书。但是,翻开之后,我的看法彻底改变了。它在“基础篇”这个定位上做得非常到位,几乎每一个概念的引入都经过了深思熟虑。例如,在讲解变量的时候,作者没有直接给出定义,而是通过一个“小盒子”的比喻,让你先理解数据是可以存储和变化的,然后再逐步引出“变量”这个术语。这种“先感受,后定义”的方式,比枯燥的理论讲解要有效得多。我特别欣赏书中对算法的初步介绍,虽然是基础篇,但已经触及到了排序和查找这样核心的算法思想。而且,它讲解的方式非常巧妙,没有直接展示复杂的伪代码,而是通过一些小故事或者场景模拟,让你在不知不觉中就理解了算法的逻辑。书中的习题设计也很有针对性,每一章后面的练习题都紧密结合了该章节的内容,而且难度循序渐进,从最简单的“填空”到需要独立思考的小项目,都能帮助我们巩固所学。做完这些习题,我感觉自己对基础知识的掌握扎实了很多,也体会到了编程的乐趣在于解决问题的过程。
评分书不错,值得细读。
评分东东已经收到了,质量不错,物流很快很给力,让孩子学习起来,期待看到好的效果!
评分写的挺细的,内容不多,入门感觉还可以。
评分哈哈哈哈哈哈哈哈呵呵哈哈哈
评分CCF推荐购买的,不错不错!!!!!!!信息学竞赛必备!!!
评分还不错,刷题一直用着,挺好挺好
评分很好很好很好很好很好很好很好很好很好很好
评分是正版书,上午买下午到
评分很好!!!!!!!!!!!!
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.teaonline.club All Rights Reserved. 图书大百科 版权所有