为什么要这样设计这节课
- 格式:doc
- 大小:35.50 KB
- 文档页数:5
为什么要这样设计这节课 计算机语言是空手套白狼,是无中生有的一门技术。试想一下,没有软件的计算机能干啥?就是一堆废铁。是软件让计算机有了灵魂。而软件是用计算机语言创造的。 我们先有了需求,才去寻找解决方案。计算机的发展仍然沿袭了这个路线。计算机的研发原因,仅仅是要提高计算弹道数据的速度。但人们发现,计算机能快速而且不知疲倦的执行事先编制好的程序,最初的程序是用低级的机器语言编写的,工作量大、容易出错。为什么不用一些能看得懂的符号来编写程序呢?那好吧,我们做一个符号和机器语言转换的软件吧,这样,我们可以用符号编写程序,让这个软件自动转换成机器语言。 哇,成功了! 这就是汇编语言。 嘿,哥们,这汇编还是太难,我不想知道寄存器、堆栈是怎么回事,你能不能再简单点,让我别操作这些玩意了,还有这些命令能不能更像点人类的语言? 什么?你成功了?! 这就是高级语言。 “可你这种语言偏向于计算,你看我的计算机语言可以很方便的实现多媒体技术。” “我的更好„„” 于是各种计算机高级语言犹如雨后春笋般冒了出来。 “这里面怎么没我什么事,好歹我也开发了一个视窗系统啊?”盖茨不高兴了。 “还真没你什么事,你的视窗系统就是计算机语言的一个产品而已!”盖茨听了,转身向人们推荐他的视窗和office了。 “哇,确实好,学电脑还是要学视窗和office。”盖茨听了,开始笑了。 “你们吵什么?到我这儿都一样,还不都是0和1?”电脑忍不住了。 “到你那儿是除了0就是1,可你知道吗?我的语言,能让程序员用很少的代码实现一个复杂的功能?” “是吗?那你操作一下计算机的硬件我看看?”C忍不住了。 “呵呵!”汇编笑而不语。 “好了,别吵了,你们各有各的长处,但精髓不都一样吗?”LOGO的作者坐不住了。 “你也敢谈精髓?”大家对logo语言的作者冷嘲热讽,“你有面向对象的思想吗?” “你们真的认为面向对象是计算机语言的精髓?” 大家一下子沉默了。
“到底是授之以鱼呢,还是授之以渔呢?”我愁眉苦脸,“到底该教什么给学生呢?” “嘿,那个说计算机语言的精髓都一样的,过来!” LOGO语言的作者屁颠屁颠的跑过来。 “你说来听听。” “好的。”大师喝了口水。 “计算机语言最终是要翻译成0和1的,但为了让人们很容易的掌握,往往用我们人类的语言来表述,但把人类语言表示时态的东西都去掉了,干脆只用一些关键字来表述,比如:前进用FD来表示。” “也就你这个语言,有前进这个命令,天下还有哪种语言有这种命令?再说,你这种语言能开发出视窗那样牛逼的软件吗?”我反驳道。 “你不是要教给学生语言的精髓吗?何必在乎这种语言能干什么!”大师开始翻白眼了。 “好吧,你继续说。”我无语了。 “我开发这个语言的时候,为了能实现在屏幕上画出各种各样的图形,我在屋子里走来走去,还让我儿子帮忙,给我下命令,并记录我走过的轨迹,我们把所有的命令都写下来,发现只保留前进和左转就行了,但为了方便,我们又加了后退和右转。” “后来,又发现还需要擦掉轨迹的命令。” “这个我知道原因,因为需要把无用的轨迹去掉,好重新开始,但为什么加了回到原点的命令?”我问。 “你要是模拟过画图形的步骤,你会发现,想一下子回到原点很不容易,距离和角度很难测量。” “哦,是的。”我赞同。 “然后,我和儿子就开始用这几个命令画我们能想到的图形,我们发现有些时候,不需要留下轨迹,比如:一段时断时续的线。所以我们又加了抬笔和落笔的命令。” “为什么不用跳这个命令?不也一样吗?”我有点疑问。 “当然可以了。” 大师赞许的看了看我,继续说道。“有一次儿子恶作剧,非要我画一条10000段不连续的线,可把我累坏了,你想啊,前进 40 抬笔前进40 落笔,我得写10000次,于是,我又加了重复命令,让刚才的那几个命令重复了10000次,儿子第二次的恶作剧落空了。但他又想出来另一个恶作剧,让我画10000条这样的线,没办法,我又让重复能够嵌套。” “你儿子挺逗的。”我赞道。 “那是,还有更好玩的呢,儿子发现这样的恶作剧不能生效的时候,竟然想出来另一个办法,让我每天都画一个小房子,你也知道,画一个小房子也很费时间的,我总不能再加画小房子的命令吧?” “那你是怎么解决的?”我问。 “我开始设想,让使用者自己可以新增没有的命令。” “你是说过程吗?” “是的。”大师点头。 “我发现引入过程的概念后,使用者方便多了。但儿子又给我出了一个难题,每次让我画的房子的尺寸各不相同。” “哈哈!”我开始幸灾乐祸了。 “这也难不倒我,我又更改了我的设计,允许使用者在过程中可以加入参数,使用过程的时候,再具体告诉过程里面的参数到底是多少。” “哦!”我开始佩服大师了。 “有了这些基本的命令,加上重复命令和过程的定义,我们可以画出任何一种图形,后来儿子想让图形更漂亮,他希望图形是彩色的。” “嗯,你就又加了着色的命令。”我接话道。 “是的。” “可你为什么要让海龟走到里面去?”我不解。 “你上美术课的时候,给图形着色,不就是要在图形里面吗?”大师也不解,很明显,他一定认为我的智商有问题,“记住:计算机语言其实也要符合我们对世界的认知,其实学习计算机语言就是学会用计算机语言来描述我们身边的世界。” “那你为啥要抬笔进去?”我开始挑刺。 “这个嘛,其实不抬笔也行哈。”大师开始局促起来。 “还有了,为啥我画不出一个黑框的红色图形?”我开始有点得意了。 “是你没好好学习嘛!”大师画了一个黑框的红色图形。 “哈哈!”有你这么笨的吗?这么麻烦!我冷嘲热讽道。 “这个嘛„„”大师有点脸红了。 “其实,每种语言都有不完善的地方。”大师开始辩解道,“所以才会不断推出后续版本,其实这对于你教学生来说,也不是什么坏事,你可以让学生提出自己的困惑和对这个软件的改进意见啊,这样才能让他们养成独立思考的能力。” “是的。”我对我刚才的得意有点脸红了。 “你看,其他计算机语言的精髓是不是也就是这些?”大师开始炫耀了,“而且我们刚才的对话,就是回顾了我的研发过程,你在教学的时候,完全可以让学生从一个研发者的角度来学习,这样更容易理解计算机语言的精髓。” “对啊!”我不禁击掌道。 “知道我为什么给这个软件起名叫LOGO吗?” “为什么?”我反问道,“LOGO是什么意思?” “思想。”大师说罢,飘然而去。
好吧,我承认上面的对话是我杜撰的。 我在教学logo语言的过程中,有了些许感悟。 一、让学生学会用计算机语言来描述我们身边的世界。 计算机语言和我们人类使用的语言一样,都是对世界的描述。
【课例1】 师:请你写出画10段不连续的线段的命令。 生:fd 20 pu fd 20 pd fd 20 pu fd 20 pd fd 20 pu fd 20 pd fd 20 pu fd 20 pd„„ 师:请说出这段命令的规律 生:把“fd 20 pu fd 20 pd”这段命令重复10次 师:这是中文的描述,如果你来开发logo语言,你打算怎么描述它。 生:„„
【课例2】 师:我们已经学习了重复命令,请说出下列语句的意思。Repeat 30000[起床 睡觉] 生:起床和睡觉重复了30000次 生:过了30000天 生:这个人挂了 生:人的一生 „„ 师:如果用这个语句来描述人的一生,合适吗? 生:合适 生:不合适,有的人年龄比这个长。 生:不合适,没考虑午休的情况。 „„ 二、重思想,轻语法
语法很重要,写错了,程序无法运行。但语法又一点也不重要,因为我们能随时查阅。我在教学的过程中,从来不让学生记忆命令,我把所有的命令及意义都写到黑板上,学生随时可以抬头查阅。但其中的思想,却无从查阅。
【课例3】在学习完本章后。 师:说说你学了logo语言后的收获。 生:„„ 师:你能利用学习logo语言的收获,编写一套无人战机的命令集吗? 学生经过讨论,发现:无人战机的命令集完全可以参照logo语言的思想。 基本命令集:起飞、飞行、转弯、降落、侦查、攻击。 重复命令(以实现对某一目标的重复侦查或攻击)、重复命令的嵌套(对某一目标的地毯式轰炸) 过程(以实现执行新的命令) 带参数的过程(以实现对不同目标的攻击)
三、鼓励质疑 【课例4】 学生通过实验,总结出logo语言的命令集。 师:我们看看作者设计的命令集,对比一下,和你设计的有何不同? 生:为什么没有跳的命令,这样可以不留下痕迹啊? 师:作者是用抬笔和落笔来实现的。 生:跳不更简单吗? 师:对啊,我也觉得跳更简单。
【课例5】 生:老师,我发现,画不出来一个黑框的红颜色正方形,为什么? 师:我也不知道。 生:是不是设计的原因? 师:应该是。 另一个学生:能画出来,我画给你们看 „„ 生:我觉得很别扭!这个地方设计的不好。 师:你的想法很好。 质疑是创新的起点,一切科学发现都是从疑问开始的。我们要呵护学生的质疑态度,让他们更自信、快乐。 正如我曾在课例中讲到的,学习logo语言后,无法做出我们心目中的软件。看起来logo语言的用处不大,但却是了解计算机语言的一个窗口,是学习其他更高级语言的基础,体会其中的精髓,我们一定能对计算机语言有深入的认识,并做出自己心目中的软件。