一本难度适当、易学易教的教材是开展小学信息学教学的重要一环。本书选取 80多个贴近小学生学习生活的例子,结合小学生的认知规律,激发孩子兴趣,以程序为中心,适当地弱化语法。本书利用流程图厘清思路,并提供多种算法实现举一反三,让小学生在学习 C+ +语言编程的过程中,学会运用计算思维解决问题。本书循序渐进、层层铺垫地依次呈现各个知识点,深入浅出,让学生在探索中体会到编程的乐趣和魅力。 本书适合小学四年级及以上学生阅读使用,可作为全国青少年信息学奥林匹克普及组竞赛教材,也可作为信息教师学习 C+ +语言的入门教材。
《小学生C++趣味编程》以单元和课的形式编排、符合小学生认知特点的编程入门书,知识点依次呈现,深入浅出,循序渐进。课课有习题,课课有课件,易学易会。以知识点为中心,《小学生C++趣味编程》适当地弱化语法,注重算法。利用流程图厘清思路,激发学习兴趣,培养计算思维。
前言
比尔·盖茨说:“学习编程可以锻炼你的思维,帮助你更好地思考,创建一种我认为在各领域都非常好用的思维方式。”麻省理工学院的切尔·雷斯尼克说:“当你学会编程,你会开始思考世界上的一切过程。”
未来的世界一定是智能化、自动化的世界,与大数据、人工智能等技术相关,而这一切的基础是程序。学会编程,有利于在信息化的今天更高效地利用计算机;学会编程,能更好地读懂世界、适应世界、创造未来世界。
小学生学习编程并不是为了将来成为程序员,而是在学习中开发智力、培养创造力,学会运用计算思维解决问题。学会编程就拥有了一笔巨大的“财富”。
正因为编程如此重要,从1984年起,中国计算机学会每年都举行“青少年信息学奥林匹克竞赛(NOI)”,希望通过比赛促进学校、社会开展程序教学。然而,现有的青少年信息学培训教材大部分是仿照大学教材来编写,相关知识常常集中、系统地出现,像用户说明书一样面面俱到,所举的例子经常涉及初中、高中的知识,这样的教材非常适合有一定基础的中学生,但对初学的小学生来说,较难理解,学习也就变得枯燥无味、索然无趣。于是就萌发了编写本书的念头。一本符合小学生心理、适合小学生学习的书,既能方便一线教师轻松地开设拓展课程,开展社团、竞赛等活动,又能让广大小学生轻松、有趣地学习。
在编写本书时,笔者进行了如下几点思考。
(1)方向比努力更重要。以程序为中心,循序渐进,层层铺垫,采用课
和单元的形式编排课程,符合儿童的认知规律,为学生的学习、教师的教学指引正确的方向。
(2)
兴趣比奖次更重要。本书选取的例子贴近生活,符合儿童的身心特点,易引起小学生的共鸣,激发他们的学习兴趣,让学生感觉到学习C++是一件很有趣的事情。
(3)
信心比知识更重要。本书选取最常用的语句、算法,舍弃超越小学生能力范围的内容,不盲目拔高,重在让普通的学生在有限的时间内轻松地看懂、学会,体验到成功的喜悦。
(4)
算法比语言更重要。算法决定程序,是程序设计的核心,语言只是载体。只有理解算法,才能掌握解决问题的方法,才能建立计算思维,为今后的学习打下坚实的基础。本书注重算法,利用流程图让学生轻松理解解题思路,举一反三,课后的习题利于学生巩固升华,也便于教师教学。
感谢浙江省功勋教师、省特级教师董闺聪老师,从1996年就开始帮助我、支持我开展程序教学;感谢省特级教师俞正强老师,是他的“种子教师”培养方案,促使我开始编写本书;感谢省特级教师王伟文老师,正是他的帮助和大力支持,本书才能正式出版。
感谢浙江师范大学陈炳木和熊继平、金华职业技术学院刘日仙、金华市教研室吴跃胜、婺城区教研室钱柳松、金华九中郑理新和方金浩、金华五中陈洪祺、金华一中胡建峰等老师,为本书提出了许多真诚而有益的建议;感谢我的学生给我创作的灵感;感谢我的女儿潘雨萱小朋友,让我进一步反思教学中存在的问题,她还为本书配上有趣的插图。本书也献给我可爱的女儿。
本书以适合小学生学习为出发点,结合本人20余年的教学经验,历时4年多编写完成。编写本书的过程,是一次自我学习、自我成长和自我反思的过程。但是因时间和水平有限,书中难免存在不妥或错误之处,欢迎批评指正,可发送电子邮件,更希望读者对本书提出建设性意见,以便修订再版时改进。
潘洪波
2017年6月
下 册
第 40课 儿歌《打老虎》—while语句 166
第 41课 蜗牛与葡萄树—死循环 169
第 42课 最小公倍数—枚举算法 172
第 43课 最大公约数—辗转相除 175
第 44课 角谷猜想—while语句的应用 178
第 45课 蝴蝶效应—双精度实数 double及科学计数法 181
第 46课 精益求精—分数化为小数 185
第 47课 称心如意的输入—do-while语句 189
第 48课 加加乐—各数位之和 192
第 49课 大大大—纯小数变整数 195
第 50课 书香阁的座位数—数学计算 198
第 51课 拍手游戏—模拟法 201
第 52课 报数游戏—模拟法 204
第 53课 化功大法—纯小数转化为最简分数 208
拓展阅读:计算机系统 211
第 5单元 多重循环 213
第 54课 有规律的图形—循环的嵌套 214
第 55课 图形的窍门—双重循环的应用 219
第 56课 九九乘法表—双重循环的应用 223
第 57课 鸡兔同笼—双重循环的应用 226
第 58课 百钱买百鸡—三重循环与程序的优化 229
第 59课 比特童币—四重循环 233
第 60课 比特超市—超市收费程序 237
拓展阅读:因特网 241
第 6单元 数组 243
第 61课查分程序—数组 244
第 62课 捉迷藏—数组越界 248
第 63课老鹰捉小鸡—循环移位 252
第 64课跳绳比赛—排序 256
第 65课采访报道—字符数组的输入与输出 261
第 66课恺撒加密术—字符串的输入与输出 265
第 67课快速求素数—筛选法 269
第 68课谁大谁小—逻辑判断与推理 273
第 69课胡萝卜与骨头—模拟法 276
第 70课读心术—二进制数的应用 280
拓展阅读:数据结构 286
第 7单元 函数 287
第 71课一见如故—函数 288
第 72课函数与最大值—局部变量与全局变量 293
第 73课丑数—函数的应用 297
第 74课哥德巴赫猜想—函数的应用 300
第 75课第 n个大的数—数组名作为实参 304
第 76课猜猜乐—二分法查找 308
第 77课交作业啦—递归算法 312
第 78课通力合作的 100个数—递归算法及子函数的声明 316
第 79课谁是老大—递归求最大值 319
拓展阅读:世界上第一个微处理器 322
第 8单元 指针、类 323
第 80课今雨新知—地址与指针 324
第 81课民主选举—指针与数组 327
第 82课编程是一门艺术—类与对象 331
拓展阅读:求伯君 335
参考答案(下册) 337
参考文献 340
附录A 字符集 341
附录B 奖励积分卡 —比特童币 342
第3单元
格莱尔是勤奋的孩子,她每天都会练半小时的钢琴,也就是说,1月 1日练半小时的钢琴,1月 2日练半小时的钢琴,1月 3日练半小时的钢琴,……,12月 31日练半小时的钢琴。
每天都重复做一件事需要毅力,格莱尔真是一个了不起的孩子!
尼克和格莱尔玩“老狼老狼几点钟”的游戏。老狼老狼几点钟? 1点钟。老狼老狼几点钟? 2点钟。老狼老狼几点钟? 3点钟。老狼老狼几点钟? 4点钟。 ……老狼老狼几点钟? 11点钟。老狼老狼几点钟? 12点钟。
狼来了,快跑!
试编一程序,输出上面的文字。
#include
using namespace std;
int main()
{ cout << "老狼老狼几点钟 ? 1点钟。" << endl; cout << "老狼老狼几点钟 ? 2点钟。" << endl; cout << "老狼老狼几点钟 ? 3点钟。" << endl; cout << "老狼老狼几点钟 ? 4点钟。" << endl; cout << "老狼老狼几点钟 ? 5点钟。" << endl; cout << "老狼老狼几点钟 ? 6点钟。" << endl; cout << "老狼老狼几点钟 ? 7点钟。" << endl; cout << "老狼老狼几点钟 ? 8点钟。" << endl;
cout << "老狼老狼几点钟 ? 9点钟。" << endl;
cout << "老狼老狼几点钟 ? 10点钟。" << endl;
cout << "老狼老狼几点钟 ? 11点钟。" << endl;
cout << "老狼老狼几点钟 ? 12点钟。" << endl;
cout << "狼来了 , 快跑! " << endl;
return 0;
}
其中 cout<<"老狼老狼几点钟 ? "重复出现了 12次,输入时运用复制、粘贴可以很快地完成,但是解决有些问题时,需要重复几百次、几千次或几万次,是不是只能这样做呢?
这时我们就需要使用 for循环语句,for循环语句最常用的格式为:
for(循环变量赋初值 ; 循环条件 ; 循环变量增值)
语句 ;
其中“语句 ;”就是循环体,可以是一个简单的语句,也可以是一个用 “{ }”括起来的复合语句。它的执行过程如图 27.1所示。
……