scratch编程教案

2024-06-08 版权声明 我要投稿

scratch编程教案(精选9篇)

scratch编程教案 篇1

第()周

辅导内容:Scratch移动的小猫 辅导过程:

1、介绍scrather软件,让学生scrather软件主要功能和作用

2、学生自己探索scrather软件。

3、学生汇报scrather软件探索结果

4、展示任务:移动的小猫

5、辅导完成移动的小猫所需要使用的命令。

6、7、提交完成的作业。

8、拓展任务:让小猫有更多的功能。如下,并交作业提交上来。按p键就跑 按J就叫喵的声音,按T就跳起来 ……

辅导小结:

辅 导 计 划

第()周 辅导内容:小猫走迷宫 辅导过程:

A、初步掌握舞台背景的编辑与导入方法。B、了解迷宫游戏的基本原则。C、能够为自己的迷宫游戏制订规则。

D、通过实践,了解并掌握自顶向下的编程思路。

E、通过自己编写游戏,激发学生学习兴趣,感受成功喜悦。

1、老师展示任务:走迷宫

2、学生讨论分析如何实现此任务

3、任务分解:

(1)跟着鼠标跑的小猫(2)制作迷宫背景(3)显示过关(4)出界就重来

4、程序分析:如右图 辅导小结:

辅 导 计 划

第()周 辅导内容:大鱼吃小鱼 辅导过程:

1、复习上节课的作品,并进行修正

2、学习新的命令

随机数

侦测到鼠标的距离

并利用这两条命令修改上节课的作业。

3、展示任务

4、分析任务:

(1)让学生讨论角色的建构、选择。背景的设置和处理

(2)每个角色程序的初步建构。

(3)自顶向下设计

5、程序设计

大鱼:

小鱼(左)

辅导小结: 辅 导 计 划

第()周 辅导内容:打蚊子 辅导过程:

A、初步掌握分析一个程序的能力。

B、通过实践,了解并掌握自顶向下的编程思路。C、学习广播命令,渗透程序消息机制。

D、通过自己编写游戏,激发学生学习兴趣,感受成功悦。

1、老师提出任务:打蚊子

2、学生讨论分析如何实现此任务

3、任务分解:(1)需要那些角色(2)角色有些什么行为(3)角色之间是否需要通信。

4、程序分析:如右图

辅导小结:

scratch编程教案 篇2

一、Scratch软件的特点

LOGO语言是通过编写命令来进行程序设计的。用命令来编写程序对大部分小学生来说比较枯燥, 也容易出错, 如果教师的讲解又不够生动有趣, 学生就会对程序设计失去兴趣, 从而影响学习的效果。

Scratch是一款图形化编程软件, 它具有直观性和模块化操作的特点, 使得Scratch在程序的操作上比LOGO语言简便得多, 学生不用费心去记各个命令格式、作用、参数类型, 也不需要为输入时的一个小错误导致程序无法运行而伤透脑筋。

Scratch是由美国麻省理工学院开发的一套专为儿童设计的编程软件。它不需要学生编写任何代码, 只要用鼠标拖拽事先准备好的命令组件就可以实现程序的编写, 就像儿童搭建积木一样有趣。即提出创作主题, 然后通过拖拽已定义好的程序模块, 采用搭积木的方式快速实现程序的编写, 而积木的搭建是否合理, 是否达成所定目标, 学生可以在舞台上马上就能看到其效果, 实现了“所做即所得”。同时, Scratch能有效地提升学生的思维能力。

小学阶段的孩子们处于快速成长过程中, 教师不仅要帮助孩子们逐渐建立完整的知识体系, 更重要的是要让他们具备思考、分析及动手的能力, 这才能完善他们的心智。Scratch程序引入课堂, 能很好地实现这个目标。趣味性是决定孩子们是否愿意投入学习的重要因素, 而Scratch正好具有这样的优势, 它极强的趣味性能够对孩子形成很大的吸引力, 让孩子愿意动手, 愿意思考, 也愿意反复探究。虽然Scratch程序有意思, 但各个指令怎么实施, 按怎样的顺序实施, 这都需要学生去探索, 而且自由创作也是学生学习Scratch根本目标, 但提出创意作品的想法并把想法用编程实现是学生自由创作的重难点。这需要教师在教学之初就重视这方面的训练。为了让学生在学习Scratch中, 能真正地爱上它, 笔者在课堂中把学生称作“导演”, 鼓励学生要想成为一个好的导演要先有一个好的剧本, 另外, 要有一个清晰的头脑, 也就是剧本中的演员做什么都要提前进行规划。

二、以《海底世界》为例浅谈Scratch的趣味编程

“ 模仿是手段, 创新是关键”。 但对于刚刚接触Scratch的学生来说, 他们更多的时候是处于一个“模仿”阶段。所以, 在这个阶段更需要教师去鼓励学生的这种模仿, 让他们在模仿中掌握各指令模块的功能, 并能熟练、灵活去使用这些指令模块, 在这个基础上再帮助他们打开思路, 给他们出一些“小点子”, 引导他们去创新。

下面笔者将以《海底世界》这课为例, 来谈谈对用Scratch来进行编程教学的心得。

11.本课的设计初衷

这堂课是在学生初识Scratch时进行的, 经过前一节课的学习, 学生已经对Scratch软件的窗口界面以及角色和造型的设计有了一定的了解。本节课是让学生学会使用“控制”模块库的中“无条件循环”模块, 以及“外观”模块库中的“下一个造型”模块。

22.流程设计与实施过程

《海底世界》一课的教学过程包括五个环节 (如图1) 。

上课伊始, 教师以“海底世界”情境引入新课。展示了一个由Scratch制作的“海底世界”的作品 (如图2) 。

请学生说一说, 在这个作品中都看到了哪些角色, 他们都在干什么呢?

透过观察与同学一起分享几个问题:

(1) 这些角色时而会有不同形式的变化, 这是怎么回事呢?

由此请学生一起来回忆上节课所说的“造型”这一概念。

(2) 想一想我该如何让一个角色的造型发生变化呢, 需要用到哪个指令模块呢?

(3) 在螃蟹和水母的动作中我们发现, 螃蟹是横着走的, 也就是在左右运动, 这是怎么实现的呢?水母做的是上下运动, 这又是如何实现的呢?

(4) 当这些动物碰撞到舞台的边缘时, 又被反弹回来, 这又该用什么模块指令实现呢?

(5) 鲨鱼又是如何实现追赶小鱼的呢?

本节课的知识点通过这五个问题就给贯穿起来了。

因为Scratch软件可以让学生将指令摸块直接拖拽进脚本区, 然后在舞台区马上就能看到角色的表演是否达到要求, 这样就给学生搭建和修改脚本提供了便利的条件。

所以, 教师在引导学生搭建脚本之前, 一定要先引导学生学会“看图说话”, 也就是说将舞台上呈现的“剧情”用语言先说出来, 就如一个导演读剧本一般。把每个角色的动作都用一定的语言描述出来之后再到指令模块区去找寻相对应的模块;同样的道理, 学生在调试程序时也一定要把脚本区的指令模块用自己的语言串连起来, 这样学生在读脚本的过程中就能比较容易地找到脚本区可能出错的指令模块。

比如:学生在搭建鲨鱼这个角色的脚本时就可以这样说 (如图3) 。

当学生把鲨鱼的动作一个个拖拽进脚本区后, 在运行脚本时会发现, 鲨鱼只动了一下, 并没有像预想的那样在海里一直游, 这是怎么回事呢?引导学生再来读脚本, 既然是一直在游, 也就是说是在重复地做着这个动作, 那么, 哪个指令能帮助我们重复做同样的动作呢?通过找寻不难发现“循环指令”模块了。

这样, 通过说“剧本”, 鲨鱼的动作模块就基本完成了。用同样的方法, 可以完成其他动物的脚本搭建。当学生搭建完水母的脚本时, 在运行脚本时会发现水母不象生活中那样上下运动, 而是在海里四处乱跑, 这又是怎么回事呢?通过反复读脚本, 学生没有找到出错的地方。这时需要教师对角色资料区中的三个按钮的作用进行解释。

纵观学生的尝试操作过程, 学生的兴趣和积极性一直都保持在相对较高的程度, 知识点的学习对于学生来说是在无形当中完成的, 这时教师只要做好对这些知识点的总结与回顾就好。

由于学生在范例研究的基础上, 已经取得了一定的经验。在自由创作这一环节中, 有的学生会给自己提出更有挑战性的设计, 也会有一部分学生会进行模仿创作。但不管是模仿创作还是自由创作, 教师都要为他们提供技术支持, 使学生完成创意, 提升他们的创作能力。对于模仿创作的学生, 教师更应提出自己的意见, 帮助他们打开创作思路。

Scratch学习需要学生之间的参与和交流。在学生进行分享交流的过程中, 不仅要引导学生关注作品的闪光点, 以此互相借鉴, 促进学习;同时, 也要注意到作品的不足之处, 并帮助学生来修改程序。为了更好地考察评价学生对这节课的掌握程度, 笔者设计了如下所示的评价表格。

透过“海底世界”这节课, 笔者发现从范例到学生的自主创作, 即使是模仿学生也在积极融入自己的想法, 最后到自己做编剧、导演创作出属于自己的作品并分享交流自己的成果, 在交流中改进作品, 在这整个过程中学生的学习积极性和创作热情都很高涨, 同时, 也让学生在这螺旋上升的学习过程中感悟到了程序设计的思想。

“为创作而教”、“为学生的兴趣而教”, 要求教师在日常的教学中应去积极主动地认识Scratch的教学目标和教学策略, 增加Scratch教学的深度与广度;在教学中引导学生把自己的想法转变为编程的脚本, 并在此基础上帮助学生归纳总结出一些编程技巧, 在实践中培养学生的创造性思维、系统性推理和协同创作的能力。

摘要:《中小学信息技术课程指导纲要》指出, 中小学要“了解程序设计的基本思想, 培养逻辑思维能力”。自从专为儿童设计的编程软件——Scratch于2007年引进国内后, 越来越多的一线教师开始将Scratch引入中小学信息技术课堂, Scratch因此成为信息技术教育的焦点。本文通过一个教学实例来谈谈如何让学生在使用Scratch软件的基础上进行快乐编程。

关键词:Scratch,脚本设计,程序设计,创意

参考文献

[1]吴向东, 王继华.为创作而教:儿童数字文化创作课程的教学方法[J].中小学信息技术教育, 2010, (11) .

scratch编程教案 篇3

《Scratch趣味编程》学习工具由FrontPage制作,界面简洁、操作简便,以Scratch程序设计语言作为教学平台,适合已掌握一定信息技术基础知识和技能的小学高年级学生,有利于学生开展差异性的自主学习。我通过对不同范例的学习和研究,与语文、数学、美术、音乐等多个学科内容整合,选择了适合学生学习的范例,同时也注意到了学生知识的衔接和递增,脚本设计由简单到复杂、由单个到多个,为学生提供了设计风格各异的范例。

● 制作背景

Scratch常被用于创造交互式故事、动画、游戏、音乐和艺术。它不需要像传统编程软件那样逐行地“敲”代码,而是通过拖拽已经定义好的程序模块,采用搭积木的方式快速实现程序的编写。新京版九年义务教育的信息技术教材就将它作为一个新的教学内容选入到小学信息技术教学中,旨在通过Scratch帮助学生进行有效的信息化表达和数字画创作,提升学生从语言到思维、从个人解决问题到团队合作等多方面的能力,学生可以通过互联网分享自己的作品、交换资源、提出问题和寻找志同道合的学友。但Scratch教学也面临着一些困难,就是教师既是教者也是学者,同时又是教育资源的开发者。因此,迫切需要教师探索出一种适合学生发展的Scratch教学方式。为此,根据实际教学的需要,我尝试利用FrontPage软件制作了适合学生自主学习的数字化学习工具《Scratch趣味编程》。

● 设计思路及内容结构

基于新京版九年义务教育的信息技术教材第三册Scratch单元的教学目标,将学生的学习目标制定为:初步接触程序设计知识,了解计算机基本工作原理;掌握Scratch系统提供的常用命令,能够设计简单的电脑动画及游戏;了解编程设计的基本思想和方法;在编程设计活动中培养严谨、求实、质疑、创新的学习态度,激发学习兴趣。《Scratch趣味编程》学习工具为学生自主学习Scratch编程提供了12个范例(如图1),每个范例都有自己的特点。图2为该学习工具的内容结构图。

1.范例制作

范例4:五彩花朵。

猫咪剧场:在这一课中,我们的猫咪剧场要创作一个“五彩花朵”的小游戏。小导演,你准备好了吗?

作品设计:两朵花的花瓣不断旋转着改变。

背景:淡蓝色背景。

角色:花蕊,花瓣1、花瓣2,叶子1、叶子2。游戏流程:在开始创作前,要对整个作品做好规划明确这个作品是要绘制两朵花。两朵花的设计除了颜色和形状外,动作基本是一样的,所以先考虑其中的一朵怎样设计,然后变化一下设计第二朵即可。第一朵花的设计为:出现第一片花瓣,这片花瓣不消失,然后出现第二片花瓣,也不消失,以此类推,接着是第三、第四、第五片花瓣。这些花瓣的颜色各不相同,但都围绕着同一个中心相继出现。通过图3的画流程图的方式来整理思路,就可清晰地看到用了哪些脚本命令。

2.实战演练

针对问题、情境、任务去探究某项程序设计技术的具体应用,培养学生利用算法、程序解决问题的能力,即为学生提供主要的操作步骤,如认识Scratch一课的实战演练。

(1)启动Scratch软件

方法一:单击“开始”→程序→。方法二:双击桌面上快捷图标。

(2)欣赏Scratch内建的范例

Scratch提供了一些范例程序,调入这些程序,学生就能看到利用Scratch设计的动画。打开Scratch程序文件:①单击“文件→打开”菜单,弹出“打开作品”对话框。②依次选择“例子→Games→3 FishChomp”选项,单击“确定”按钮,打开Scratch程序(如图4)。

依次选择“例子→Games”,启动它,就可以玩这个游戏。运行“3 FishChomp”程序:①单击“舞台”右上角的按钮,运行程序。②单击按钮,程序转入“全屏演示”模式。③按照“3 FishChomp”游戏的提示语试着玩一玩。④按ESC键,退出“全屏演示”模式。⑤单击按钮,停止运行程序(如图5)。

(3)退出Scratch软件

和以前学习的软件一样,单击窗口右上角的“关闭”按钮,可以退出软件。由于程序运行后,舞台中角色的位置、角度等状态发生了变化,程序会弹出对话框,询问是否需要保存。由于这些变化不对程序产生影响,因此不必保存。

3.拓展训练

让学生在学习过程中随时尝试,补充技巧,以便自己能够更快、更准、更有效地进行相关操作。针对本课所涉及的命令模块,还提供了一些拓展练习,如范例8“打地鼠”(如上页图6)。

这么流行的“打地鼠”游戏设计起来原来如此简单!其实,很多游戏看起来复杂,设计起来还是很容易的。你可以接着试试第二关、第三关、第四关,只要对上面的设计稍作改变就行了。下面是一些修改建议,试试吧:①设置关卡,在第二关中地鼠的移动速度加快。②设置打中地鼠加分,没打中要减分。③使一定时间内连续打中几个地鼠,可获得玩游戏的奖励时间。④设置在规定时间内完成,过时游戏结束。

4.阅览室

为学生提供与核心技术相关的阅览资料,拓宽学生的视野,以提升信息素养。在阅览室里,学生可以了解前沿的信息技术科学,如范例11“小工具软件的设计——画图软件”。

什么是小工具软件:小工具软件是能帮助用户解决某方面小问题的软件。比如设计一个计时器,当到了一定时间时,响铃提醒;设计一个节拍器,让用户看着屏幕上闪烁的节奏,跟着节拍进行律动;设计一个画图软件,让小朋友用它来作画,等等。这些小工具软件完全可以用我们已经学过的知识设计出来。

小工具软件的规划:要设计一个什么样的小工具软件,事先必须想清楚下面几个问题:①用户是谁?想一想,为幼儿园的小朋友设计,与为同学或者爸爸妈妈设计会有什么不同?调查一下他们的想法是很重要的,毕竟是为他们解决问题嘛!②怎样吸引用户?设计好了小工具软件却没人用是很悲哀的,怎样才能吸引用户的注意呢?用漂亮的外观还是酷酷的功能?③怎样方便用户使用?用户使用起来越简单越好,操作复杂的软件是很难吸引用户的。那么怎样做到这一点呢?可多向好软件学习。④独立设计还是团队合作?根据设计的需要,自己想想吧!⑤根据用户的反馈来改进。设计软件就是为了给用户使用,尊重用户使用的意见是很重要的,学习与用户打交道吧!弄清楚了以上这些问题,设计时就会少走弯路。

5.分享交流

学生在创作中的感悟或者是创作过程中遇到的疑难问题,可以与伙伴们交流、解决,即学生在操作中成功的地方与发现的小技巧都可以在这里与同伴分享,如范例6“猜数字”。

想一想,本节课中用到了哪些命令模块?这些命令模块有什么特点?把你的想法与同学交流:①请同学玩玩你的游戏,提出修改意见。②思考同伴玩游戏后的效果,根据同学的意见进行程序的调整。

● 评价与反思

学习工具是学生开展差异自主学习的平台,借助它可以自主预习、学习、练习,增强了学习的自信心,体验了自主探究的快乐。

通过在校本选修课中的初次使用,根据学生的差异性,我对该学习工具进行了一些改进:针对学困生,提供了范例视频,让学生在视频的帮助下,一步步体验成功;为学有能力者,提供了案例分享,拓展了创新空间,通过推荐书目向学生展示了内容更充实、形式多样的学习资源(如图7)。

在新学期随着新教材的普及运用,我将对课程学习的评价做进一步的研究与补充,以方便学生及时了解自己的学习效果。

● 幕前幕后

正如西蒙·派珀特说的,“好的教育不是如何让老师教得更好,而是如何提供充分的空间和机会让学习者去构建自身的知识体系。”Scratch教学才刚刚起步,很多时候都是在摸索,我的目标是找到一种最适合学生发展的教学方式。而对于这次我们针对教学实际需要而制作的学习工具参与第十二届NOC活动能获奖,可谓是“无心插柳,柳成荫”,这说明NOC活动教师赛项更贴近教学实际。

通过几天紧张激烈的比赛,我了解了全国各地教师的教研动态,了解了交互式电子白板、网络教研等在各地发展的情况,也看到了更多一线教研的变革,增进了与各地区教师之间的沟通。目前,E-class、电子白板、微课、信息技术与课程整合,真是越来越热闹。但在这种情况下,我们更需要冷静思考:一是“某项信息技术或资源是否真正能为教与学服务?”二是“是否用最少的技术或资源,获得最大的教学效益?”只有把“要不要用”与“怎样用”的关系理顺后,我们做出来的东西才是有价值的。

评委印象

《Scratch趣味编程》学习工具属于专题学习网站类。从选材上看,该学习工具紧紧围绕Scratch学习专题展开,具有较强的教学针对性和学习趣味性。时下,很多地区已将适合小学生年龄特征的程序语言,如LOGO、Scratch等纳入小学教材体系。其中,Scratch属于模块化、积木式的程序构建,具有更强的直观性和操控性,学生易于上手,也很受学生喜欢。同时,学习工具选取了主题性、情境性很强的学习案例,如“五彩的花朵”、“小动物过冬”、“打地鼠”、“火上浇油”等,学生的学习兴趣更易得到激发。从设计上看,网页设计界面简洁,网站结构层次清晰。特别是为学生提供了丰富多样的学习内容和学习形式,既有基础性学习内容、实战性引导内容、拓展性阅读内容,又有具体案例分享下载和制作素材提供;既有呈现型学习内容,又有互动性反馈板块,学生能够很好地选择并参与其中。从使用上看,该学习工具操作简便、运用灵活,既可满足课中的辅助学习,又可满足课外的选择学习。

当然,从内容的呈现方式来讲,该学习工具还有进一步改进的空间。我们把Scratch教材简单网页化还远远不够,因为学生在学习过程中,仅靠阅读大量的文本材料,学习兴趣和学习效果会打折扣。如果能够结合当前的微课进行开发,把有关重点、难点、困点的学习视频嵌入其中,学生的学习路径就会更加多样。若能设计在线检测板块,适时地进行学习检测互动,则学习效果会更好。

scratch教案2 篇4

1、模范范例1,初步尝试scratch 软件中“绘制新角色”来创建角色。

2、模仿范例1,初步尝试scratch 软件中角色的造型的添加。

3、模仿范例1,模仿范例中的角色(图一和图二)的脚本的编写。

4、理解外观模块中

图一 图二

和的不同用法。

教学课时: 1课时 学生:6年级

教学过程:

一、创设情景,激发兴趣

师:在scratch 软件里打开范例1,请同学们看,秋千荡了起来,跷跷板翘了起来,我们的校园也有很多娱乐器材,回忆一下,把你最喜欢的校园一角也来做一个动画片。

二、自主学习,探究发现

请同学打开例子中的第一例子,对着例子看,根据老师提供的学习步骤去想:

1、这个动画场景里有几个角色?探究一下这些角色是如何导入的?

2、思考这个动画场景中每个角色有几个造型?如何导入不同的造型?

3、仔细观察每个角色的脚本,用鼠标点击脚本,看角色有什么变化?想一想脚本是如何在控制角色的。

4、脚本中模块有不同的颜色,尝试如何把这些不同颜色的模块堆积起来。

三、完成作品,教师巡视指导。

保存提交。

四、师生共同小结,构建知识(先学后教)

看了大家在创作的过程中,有的同学是用“绘制新角色”的方法设计角色,也有的同学是用“从文件中选择新角色”的方法添加角色;每个角色都增加了不同的造型;

大家应用以下两个脚本控制角色动起来了,请问:两个程式有什么不同?

造型依次切换。

造型可以任意选择,可以跳跃的切换。

四、欣赏作品,交流学习

请1到2位学生,说一说创作过程。

课后反思:

这节课,我采用的是先学后教,我没有做任何的解释,把学习的步骤用大屏幕展示,完全是学生自己先学着做,课堂上我观察到,有一部分学生,关注的是打开每一个例子逐一看,找有兴趣的作品欣赏;一部分学生是按老师的要求,打开范例学着做。有的是在范例的基础上,修改角色,如,在秋千上加小人或动物;在翘翘板上加人物等;也有的在绘制角色。最后,学生的作品中,多数是在范例上修改完成自己的创作。

我发现:学生绘画的基础有差异,绘制的角色不太美和精致;时间不够,角色的绘制上花了很多时间。全班有3分之2的学生上交了的不同层次的作品。

Windows编程教案 篇5

第一课

最简单的Windows程序(2学时)

Windows编程是一个很大的主题,涉及的方面也非常的多。Windows始于90年代,至今Windows编程的发展已经非常成熟了,而单独直接使用API的开发也是越来越少了。因此,市面上很少有泛泛的简单入门级的Windows程序设计了。一个是系统级的Windows编程介绍,如Windows核心编程。一个是方向级的Windows编程介绍如Windows图形编程,Windows网络编程等等。我们这次课的主要参考用书是Windows核心编程,同时也参考了一些其他内容。鉴于教材的价格较贵,同时也需要考虑我们自身的学习内容不一定很多以及学时的原因,就没有定教材。看我的教案吧。

(1)Win32 API API : Application Program Interface。应用程序接口。API就是在进行Windows编程时使用的函数库。本课就是

Windows编程=API+C语言(或者C++语言)(2)开发环境

我校机器上安装了VC++ 6.0。相信这是大家一直以来学习C,C++使用的开发环境。但VC60离我们实在太远了,它是一款90年代的产品,已经近20年的历史了。我们机器里还有VS2005 或 VS2008,那里面的C环境要比VC60强太多了,强烈建议大家使用更高级的平台。本次授课的开发环境有两个。一个是轻量级的DEV C++,一个是重量级的VS2010.简单程序我们都将用DEV C++来实现。

DEV C++是一个非常小的C环境,但性能要优于VC60,调试环境不如VC60。这个环境在我们的共享资源里有,大家可以下载安装。安装过程非常简单,一直下一步即可。

这是其主界面。

(3)最简单的Windows程序

提到最简单的程序,几乎所有的人都会想起经典的HelloWorld。

这不是Windows程序,如果在以前这叫DOS程序,现在叫Windows控制台应用程序。它不算Windows程序,但它很简单的就把Helloword显示到屏幕上了。而Windows程序要想把HelloWorld显示在屏幕上就确实不容易了。

3.1 访问Helloworld网站,因为把Helloworld显示在屏幕上并不容易,我们可以一点一点来,先让Helloworld以文字形式出现在其他地方,这里我们通过访问网站E,HINSTANCE,LPSTR,int nShow)DefWindowProc(HWND,UINT,WPARAM,LPARAM)GetMessage(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax).如果得到WM_QUIT返回0 TranslateMessage(&MSG)DispathMessage(&MSG)BeginPaint(&PAINTSTRUCT)TextOut(HDC,INT,INT,LPSTR,INT)EndPaint(HWND,&PAINTSTRUCT)作业:

自己建立应用,在窗口100,100位置显示HelloWorld 第三课 坐标位置及大小(4学时)

在我们写控制台应用的时候,不能自由的控制输出显示的位置。因此,没有学习过这方面的内容,现在我们创建了窗口,并且在窗口上显示了Hello World。这个过程涉及到很多涉及位置和大小的因素,如窗口的大小,显示的位置,文字显示的位置。说到位置,就涉及定位,说到定位就要说坐标系。在屏幕上显示内容涉及到坐标空间的知识。在Windows应用中坐标空间分如下几部分内容

1、物理坐标空间

物理坐标空间,指的是物理设备上对应的坐标系。如显示器

坐标原点在左上角。如下是一个1024*768的屏幕物理坐标(0,0)(1024,0)

(0,768)

2、设备坐标空间

基于设备上下文指定的坐标空间。如窗口内显示的文本,使用的坐标就是基于窗口内上下文的坐标。

可以看到设备空间是物理空间体系的一个子空间。设备空间可以依赖于一个窗口。换句话可以把设备空间理解为在物理空间上显示的一个对象,其子空间。下面我们通过一个小例子理解物理空间和设备空间

在窗口的标题条,以设备坐标,和物理坐标的形式显示鼠标在窗口内的位置

WndProc处理消息循环

WM_MOUSEMOVE,鼠标移动时消息标识,是个整数。其参数lParam,的第16位代表设备坐标中的X,高16位代表设备坐标的Y。POINT 是结构体。只有x,y两个成员 ClientToScreen,将设备坐标转换为屏幕坐标(物理坐标)sprintf:格式化字符串

SetWindowText:设Window标题

3、页面坐标空间(逻辑坐标空间的一种)

作用,可以任意指定坐标原点,坐标轴方向,比例尺等信息。可以用来与设备无关的大小如厘米,毫米等。

页面坐标叫窗口,其表示有原点(X,Y),宽度,高度组成(WIDTH,HEIGHT)设备坐标叫视口,其表示有原点(x,y),宽度,高度组成(width,height)

页面坐标和设备坐标的变换关系,大写为设备坐标,小写为页面坐标

PX=X+(px-x)*WIDTH/width PY=Y+(py-y)*HEIGHT/height

px=x+(PX-X)*width/WIDTH py=y+(PY-Y)*heigh/HEIGHT

GDI函数使用页面坐标,显示出来时是设备坐标

通过对窗口,是否对应的四个参数的设置,可以实现特殊的变换。页面坐标是逻辑坐标的一种。在这个例子中我们一直使用 MoveToEx(ps.hdc,0,0,NULL);

LineTo(ps.hdc,30,30);划线,MoveToEx是把画笔移动到指定位置(页面坐标),LineTo是从画笔所在位置到目标位置画一条线。

在这个例子中,每次划线前通过设置视口,窗口结果使划线的结果不同。这种形式的坐标转换无法实现旋转

4、世界坐标空间(逻辑坐标空间的另一种)功能:比页面坐标空间方便,可以实现旋转 结构体 XFORM{ FLOAT eM11, FLOAT eM12, FLOAT eM21, FLOAT eM21, FLOAT eDx, FLOAT eDy, } 世界坐标到设备坐标的变换。小写到大写。PX=eM11*px+eM21*py+eDx;PY=eM12*px+eM22*py+eDy;默认为{1,0,0,1,0,0} 和设备坐标相同 {1001dxdy} {mx00my00}缩放 {-100-100}映像

旋转{cos(a),sin(a),-sin(a),cos(a),0,0}顺时针旋转a度 {cos(a),-sin(a),sin(a),cos(a),0,0}逆时针旋转a度

我们下面的例子通过Rectangle(ps.hdc,0,0,50,50);绘制50*50的矩形,用循环配合世界坐标变换绘制特殊的图形

循环20次,每次旋转坐标轴的方向,绘制正方形。总结:

物理坐标指的是屏幕坐标,不能改变坐标轴 设备坐标指的是窗口坐标,不能改变坐标轴

页面坐标和世界坐标均是逻辑坐标,可以改变坐标轴,世界坐标功能更强,可以旋转。理解这些概念的绘图是很重要的。

相关函数

BOOL ClientToScreen(HWND hWnd, LPPOINT lpPoint);设备坐标转屏幕坐标

BOOL ScreenToClient(HWND hWnd,LPPOINT lpPoint);屏幕坐标转设备坐标 int MapWindowPoints(HWND hWndFrom, HWND hWndTo, LPPOINT lpPoints, UINT cPoints);

各个窗口设备坐标之间的转换

BOOL SetWindowOrgEx(HDC hdc, int X,int Y,LPPOINT lpPoint);设置窗口的原点

SetViewportOrgEx(HDC hdc,int X,int Y,LPPOINT lpPoint);设置视口的原点

BOOL SetViewportExtEx(HDC hdc, int nXExtent, int nYExtent,LPSIZE lpSize);设置视口的width,height BOOL SetWindowExtEx(HDC hdc, int nXExtent,int nYExtent, 设置窗口的width,height SetMapMode设置页面坐标的映射模式 SetGraphicsMode设置世界坐标的映射模式 Rectangle绘制矩形,并填充内部 SetWorldTransform设置世界坐标变换 LineTo:换线

MoveToEx:移动画笔

SetWindowText设置窗口标题

LPtoDP(hdc,LPPOINT,int)把逻辑坐标点转换为设备坐标点 作业:

使用movetoex,lineto,LPtoDP及世界坐标变换,绘制正六边形

LPSIZE lpSize);

提示:

画一条水平线后,将坐标原点移动到线的末尾,并将坐标轴旋转60度*n,重复上步 要将坐标移动到线尾需要使用LPtoDP

第四课 色彩及绘制(6学时)

(1)画点

像素:计算机屏幕上的一个点。是计算机屏幕显示的最小单位。点的个数取决于计算机的分辨率。如1024*768,则屏幕由1024*768个点组成。每个点都可以独立的显示一个颜色。计算机能够表示的颜色有256*256*256=16777216种。颜色的表示 COLORREF。定义颜色RGB COLORREF color=RGB(红,绿,蓝)随机绘制颜色点

需要#include srand:随机种子函数,传递的参数不同,可以生成不同的随机数序列

GetTickCount(): API函数,得到系统开机后到现在的滴答数,特点就是每次返回的结果不重复。

两者的配合得到不重复的随机数序列

rand得到函数

SetPixel设置某点的颜色

(2)画线

在以前的例子里我们一直用1个像素宽的黑色实现来画线。现在我们学习创建画笔,用画笔来画线。

步骤

1、创建画笔CreatePen(画笔类型,宽度,颜色)

2、将画笔选入设备上下文SelectObject

3、用画笔绘制

4、将画笔选出设备

5、删除创建的画笔对象

SelectObject是将GDI对象画笔选入设备上下文,并将当前的选出返回。因此我们两次使用SelectObject,最后一个将以前的画笔选入,返回我们创建的,并在下一步删除画笔。

虚线只能支持宽度1.画线函数

Polygon(HDC,LPPOINT,INT).连接指定点,画多边形,封闭。如果画4边形则确认3个点即可。

Polyline(HDC,LPPOINT,INT).连接指定点,画多边,不封闭 MoveToEx:移动画笔

LineTo:用当前的画笔划线

Arc:画圆弧 BOOL Arc(HDC hdc, int nLeftRect, int nTopRect, int nRightRect,int nBottomRect, int nXStartArc,int nYStartArc,int nXEndArc,int nYEndArc);前4个是画圆弧的矩形,后四个指定了弧开始和结束的位置 作业:画一条正弦曲线

使用SexPixel,LineTo,MoveToEx实现

(3)画面

画面就是用画刷来填充 步骤

1、创建画刷CreateSolidBrush(颜色)

2、将画刷选入设备上下文SelectObject

3、用画刷填充

4、将画刷选出设备

5、删除创建的画刷对象

用蓝色画刷填充矩形,矩形的边框是黑色。CreateSolidBrush:创建颜色画刷

Rectangle:绘制矩形,用当前的Pen绘制边框,用当前的Brush来填充矩形内部 FillRect:画刷填充矩形。FillRect(hdc,&RECT,HBRUSH)

使用FillRect不绘制边框,因为参数中有画笔,也不用SelectObject了。Ellipse:椭圆,圆。画边框,填充 Pie:圆饼(4)位图

将文件系统中的位图显示到窗口中。绘制位图步骤

1、根据现有的设备上下文创建兼容的设备上下文

2、加载位图

3、绘制图像

4、删除加载的位图

5、删除兼容的设备上下文

BitBlt是在设备上下文之间拷贝图像的函数,非常常用

在上一个列子的基础上,得到位图的大小并绘制实际大小的位图 作业:

在一个窗口上显示一副位图文件(*.bmp)。(5)字体和文本

创建逻辑字体并显示文本 步骤

1、创建逻辑字体

2、选入字体

3、输出文本

4、选出字体

5、删除字体

另一个与文本绘制有关的功能更强的函数是DrawText 总结:本课介绍了一些基本的绘图操作,其中涉及了较多的函数,这里只是介绍了基本的使用方式和原理。函数 srand rand GetClientRect SetPixel LineTo MoveToEx CreatePen CreateSolidBrush CreateFontIndirect BitBlt SelectObject DeleteObject CreateCompatibleDC LoadImage Rectangle FillRect DeleteDC 等等。

第五课 常用控件的使用(6学时)

在上面的几节课程中我们学习了如何建立Windows 应用,并在图形环境下绘制图形。这些操作都是控制台应用中没有的。本章我们介绍如何在窗口中加入按钮等常规控件,并且处理它们。

一般控件种类,按钮,列表组合,编辑,列表,滚动条,静态文本。控件是一种特殊的窗口。这些特殊窗口的类已经由Windows系统注册了,不需要我们注册。这些类的名字分别为。

BUTTON,COMBOBOX,EDIT,LISTBOX,SCROLLBAR,STATIC(1)创建

任何时候均可,但通常在WM_CREATE事件中处理

WM_CREATE是在窗口创建时触发 WM_DESTORY是在窗口销毁时触发

控件用CreateWindow创建,返回控件窗体的句柄,窗体的类型一定为WS_CHILDWINDOW。附加的类型以或关系叠加。具体要参见MSDN(2)操控

控制这些控件是通过向这些控件的窗体句柄发送特点消息来实现的 如 SendMessage(控件句柄,消息指,参数1,参数2)具体设置参见MSDN 在上面的例子,我们处理下拉列表的时候使用了SendMessage发送消息(3)反馈

我们操作控件会触发控件的事件得到一些反馈,下面介绍如何得到这些反馈。总体上,我们把这些反馈过程叫通知。通知的过程是将反馈发送给父窗体,一般父窗体有两个事件接收控件的反馈

WM_NOTIFY,WM_COMMAND。WM_COMMAND HIWORD(wParam)通知消息号 LOWORD(wParam)控件标识 WM_NOTIFY wParam :控件标识 lParam:NHMDR的指针

比如按钮的单机对应的事件是BN_CLICKED。该事件通过WM_COMMAND通知。

我们把上个例子补充完整,并且为每个控件指定ID,指定的方式是在(HMENU)的后面写个整数,原则上应该不同。

HIWORD,得到一个字的高字节。LOWORD得到一个字的低字节。(4)通用控件

我们上面介绍的是基本的控件,除了这些基本控件外还有一些通用控件。这些控件的使用和处理和基本的控件差不多,但功能更强大。ANIMATE_CLASS : 动画控件,播放AVI动画 DATETIMEPICK_CLASS :日期时间下拉控件 HOTKEY_CLASS :定义热键的控件 MONTHCAL_CLASS : 月份选择控件 PROGRESS_CLASS :进度条控件 REBARCLASSNAME :rebar控件 STATUSCLASSNAME:状态条控件 TOOLBARCLASSNAME :工具条 TOOLTIPS_CLASS :提示控件 TRACKBAR_CLASS :轨迹条 UPDOWN_CLASS :上下箭头

WC_COMBOBOXEX :组合框扩展 WC_HEADER :头控件

WC_IPADDRESS :IP地址控件 WC_LISTVIEW :listview控件

WC_PAGESCROLLER :页滚动控件 WC_TABCONTROL :tabControl控件 WC_TREEVIEW :树视图控件

通用控件在使用前使用InitCommonControlsEx初始化。使用这些通用控件要include 同时在连接时要连接 comctl32.dll

头部

这些控件和IE有关系,根据IE版本不同,控件的外观和功能有区别。

(5)创建菜单

CreateMenu:创建一个菜单

CreatePopupMenu:创建一个子菜单 AppendMenu:向菜单增加项目 SetMenu:将菜单联系到窗口

第六课 进程及线程(2学时)

 进程:是一个正在运行的程序的实例。由两个部分组成

1、一个是操作系统用来管理进行的内核对象。内核对象是系统用来存放关于进程信息的地方。

2、地址空间,每个进行都有自己的地址空间

进程本身不执行代码,进程要至少拥有一个线程,由线程来执行代码。每个线程都拥有自己的CPU寄存器和堆栈。当创建一个进程时系统会自动创建一个主线程。

CreateProcess创建进程

内部执行细节:1 创建一个小的结构存放进程信息分配地址空间

创建一个小的结构存放线程信息

执行C/C++启动代码,最终会调用WinMain或main。结束一个进程 TerminateProcess

TerminateProcess 1 使用ToolHelp遍历系统进程

列举系统全部的进程

需要

#include #include using namespace std;

 线程

线程由两个部分组成 内核对象 线程堆栈,用于维护执行代码时所有的函数参数和局部变量 进程是活波的,进程不执行任何东西,它是线程的容器。线程在进程的地址空间中执行代码。如果一个进程拥有多个线程则这些线程共享进程地址空间内的代码和数据。进程的地址空间要比线程占用更多的系统资源,因此要更多的使用线程。每个线程必须有个入口点函数,主线程是main,WinMain。如果要创建一个线程,则这个线程的函数原型是这样的。DWORD WINAPI ThreadProc(PVOID pvParm){

return value;} 因为线程会共享全局变量,因此多线程应该少使用全局变量 1 线程创建

线程的创建不能直接使用CreateThread API函数。而要使用C编译环境自带的创建进程函数。

#include

unsigned uThreadid=0;uintptr_t hThread=

_beginthreadex(NULL, 0,ThreadProc,NULL,CREATE_SUSPENDED,&uThreadid);第3个参数是线程函数地址,第4个参数是传递到线程的LPVOID,第5个参数为0线程马上运行、CREATE_SUSPENDED需要激活才能运行。最后一个保存线程的ID 进程和线程ID是一个标识。不重复。进程和线程对象是系统对象,关闭这些对象对进程和线程的运行没有影响。

第7课 线程的调度和同步(6学时)线程暂停:

创建时使用CREATE_SUSPENDED创建一个暂停的线程

使用SuspendThread暂停线程

长时间不使用窗体 恢复线程:

ResumeThread

ResumeThread和SuspendThread使用次数要对应。

休眠线程 Sleep(毫秒)线程的同步是比较容易出错的地方,要多多实践和理解。参见线程冲突的例子。

每个线程对变量g累加10000次,创建6个线程,这是其中一次的运行结果。可以看到结果不是60000.对线程冲突问题的解释

一条C的g++对应的汇编指令为3条 mov eax,[g] inc eax mov [g],eax

如果我们创建两个线程,这两个线程将共享上面的代码。如果只有一个CPU的话,那同一时刻只能志执行一条汇编指令。但Windows的调度机制可以保证代码按顺序执行,但不能保证不被打断。举例 g=0 mov eax,[g] //1 eax=0 inc eax

//1 eax=1 mov [g],eax //1 g=1 eax=1 mov eax,[g] //2 eax=1 inc eax

//2 eax=2 mov [g],eax //2 g=2 eax=2 1和2两个线程分别执行上面的3行代码,则g被加了两次,得到2。但实际上这是多线程的特例。真实的情况是CPU下条要执行那个线程的代码是随机的。如下

g=0 mov eax,[g] //1 eax=0 inc eax

//1 eax=1 mov eax,[g] //2 eax=0 inc eax

//2 eax=1 mov [g],eax //2 g=1 eax=1 mov [g],eax //1 g=1 eax=1

线程1在增加后没有及时赋值给g,然后线程2执行。最后g为1。这就是线程没有同步导致的问题,也是我们程序中出现的问题。解决方法(1)原子操作函数

使用InterlockedExchangeAdd,加减

InterlockedExchange 赋值

InterlockedCompareExchange 比较赋值

使用这些函数加减变量,保证只有执行完后其他进程才能进入。

结果是60000了,但是按理应该输出六次“线程运行了结束了”。但只显示两次,其实每次的结果多不会一样。这也是并发带来的问题。

解决方法(2)关键代码段

在使用关键段之前使用该函数

输出了6次,但每次对应的g值不一定以10000递增。如果把进入关键段的位置提前到最前面可以得到常规的理解

这时这6个进程某种意义上没有并发执行。

局限:关键代码段只能在一个进程内使用,没有等待时长的限制容易死锁。解决方法(3)内核对象 具备通知状态的内核对象 进程 线程 作业

文件修改通知 事件

可等待定时器 文件 信标

控制台输入 互斥对象 举个例子

取消注释后,一次显示一个。体现了该函数对线程的控制。

(1)事件控制

尽管WaitForSingleObject可以等待很多对象的反应,但其主要还是用来处理事件等对象。事件是一种内核对象,有两个状态,一个用于表示该事件是自动重置事件还是人工重置事件。人工重置事件等待该事件的线程都会得到通知,自动重置事件只有一个线程会得到通知。另一个是事件的通知状态。一是未通知状态线程等待,一个是已通知状态,线程运行。CreateEvent(NULL,自动(false)还是手工(true),通知(true)未通知(false)。HANDLE CreateEvent(LPSECURITY_ATTRIBUTES lpEventAttributes,BOOL bManualReset,BOOL bInitialState,LPTSTR lpName);最后一个是为事件起个名字,同名事件不能建立两次。保证同名事件只能建立一次,可以为空。SetEvent:设为已通知状态 ResetEvent:设为未通知状态

OpenEvent:打开一个已经存在的时间,返回Handle

创建自动通知,立即通知事件

对自动通知事件SetEvent有意义,对手工通知事件无意义。手工通知同时显示6个窗口,自动通知一次显示1个(2)信标内核对象

使用信标可以确定让几个线程同时运行

CreateSemaphore(NULL,初始数,最大数,名称)OpenSemaphore

最多同时有3个线程运行。(3)互斥对象

互斥对象和关键代码段的作用相同,效率比关键代码段低。但运行不同进程间使用互斥对象,同时可以设置最大的等待时长。互斥对象和其他内核对象的区别,互斥对象可以记录调用的线程ID,一旦线程得到该对象同线程的其他地方的等待将不会等待。CreateMutex(NULL,初始等待,名称)OpenMutex(0,NULL,名称)ReleaseMutex(HANDLE),只能是否本线程得到的对象

《VB编程实现文字闪烁》教案 篇6

授课课题:VB编程实现文字闪烁 授课时间: 授课地点: 授课班级: 授 课 人: 教学目的:

一、认知目标

1、理解文字闪烁程序的设计思想和设计方法

2、理解Select case语句构造多分支程序的方法和实现的技巧

3、理解RGB()函数和RND()函数配合,动态随机生成颜色的方法

二、技能目标

1、熟练使用VB中的Label控件构造程序界面

2、熟练使用格式工具对控件进行排列设置

3、熟练使用编程工具对程序代码进行编写和简单的调试

三、情感目标

1、培养学生的自学能力、自主创意、分析解决问题的能力

2、培养学生的团队合作精神,互相协作完成任务的能力

教学重点:

1、熟练使用VB中的Label控件构造程序界面

2、理解文字闪烁程序的设计思想和设计方法

3、理解Select case语句构造多分支程序的方法和实现的技巧

教学难点:

1、理解文字闪烁程序的设计思想和设计方法

2、理解Select case语句构造多分支程序的方法和实现的技巧

教学方法:直观演示法、案例教学法、分层教学法和兴趣激励法 教学用具:VB开发工具、VB程序案例、多媒体演示系统

学情分析:高二的学生上课纪律较好,比较能够配合教师进行教学;通过大半学期的VB学习,对项目教学法也已经比较熟悉;但大部分学生由于基础知识和学习方法的限制,学习还比较死板,学习方法还只停留在教师教学生学的层面上;学生也不太主动通过摸索、调试自己解决问题。所以本课准备先讲后练,步步引导,并协调好学生自主学习和教师辅助学习的关系,提高学生的主观能动性。

教学过程:

【引入】演示原来讲解过的文字变色的例子和今天要讲解的文字闪烁的例子;提问学生:这两个案例有什么不同。可以调节闪烁的时间,让学生仔细观察。

【预测】学生通过观察大部分都能过发现两个实例的区别。(5分钟)【演示】开始新课,教师先演示Label控件排列文字的方法。

【预测】学生可能有疑问,为什么8个汉字要用8个Label控件呢,这个问题教师主动提出来,学生可以思考以后马上解答,也可以设计完程序以后解答。【讲解】教师讲解核心代码和代码设计思想。该过程是学习程序构造算法的关键,教师有目的地进行引导讲解。该过程以教师讲为主,根据学情进行难度适中的提问,力求让大部分学生理解程序的基本设计思路。(10分钟)

【预测】大部分学生应该能初步理解程序的设计思路。在学生自己练习时让学生自己再去体会。

【摸索】学生开始进行设计,也可以在设计过程中进行简单的学生之间的交流和讨论。

【巡视】教师巡视,视学生的设计情况决定是否终止摸索而再次进行教师统一讲解教学。

【预测】由于学生有实习计划和程序代码,大部分学生都应该能够进行设计,但学..生对程序的理解可能要困难的多。提高程序设计的方法只有两条:多阅读别..............人的优秀程序;自己大胆尝试程序设计。

【建议】成绩比较优秀的学生应该能够完成任务,有部分学生在设计时回出现教学前教师不可预见的错误,如果大部分学生完成任务顺利而教学时间充足,应该把学生中常见的错误和完成好的实例进行展示讲解。教师应该走到学生中去辅助教学。

【练习】尽量能让学生在教师小节前做完设计。

【建议】该过程是学生提升技能,形成能力的关键,应要求学生人人动手,努力设计。(25分钟)

教学评价:

【小节】学生应上传作品和上缴实训报告,教师应结合学生作品对本节内容进行总结。

【预测】有部分学生在设计时会出现教学前教师不可预见的错误,如果大部分学生完成任务顺利而教学时间充足,应该把学生中常见的错误和完成好的实例进行展示讲解。教师应该走到学生中去辅助教学。

scratch编程教案 篇7

我们把Scratch软件引入信息技术课堂,开展游戏化的程序设计教学, 目的就是促进小学生编程思维的发展。但在开展中我们也碰到了许多问题,如缺少合适的教学内容,缺少分类指导,缺少展示平台,缺少交流反馈,缺少互相评价,缺少辅导时间,缺少学生人数等。所以,迫切需要教师在教学中运用新的理念和方法,探索出一条游戏化编程教学的作品创作之路,有效提升学生的编程能力。

选择有趣的教学内容是游戏化编程教学的核心

目前,Scratch教学越来越受到老师们的关注,在新课程浙江摄影出版社《小学信息技术》六年级下册中,正式引入Scratch教学内容,但内容只有五个课时,只是让学生有个初步的了解。完整的Scratch软件操作教程不多见,市场上出现的还有一类Scratch书,是学校教师根据他们在课堂中开展Scratch教学实践的经验编写的。我校在刚引入Scratch教学时,初步挑选了几本, 有《Scratch与创意设计》《Scratch创意动画设计》和《边玩边学Scratch趣味游戏设计》等。我们从这些书中精选了包括基础知识、范例演示、作品创作等几个方面的学习内容,选取了一些有趣又好玩的小游戏。这些作品大部分来自于同龄人的创作, 难度并不大,非常适合学生们去模仿和练习,在初学时特别有效。我们还选取了一些并不完美的游戏作品,还有许多地方需要完善的有趣作品,让学生去分析,让他们提出问题,去学会解决问题和创造性地改进这些不足。

在初识Scratch时,我以《小猫快跑》 为主题,通过组织游戏内容开展教学。

一只威猛的狮子在森林深处巡视着自己的领地。突然,一只小猫闯进了它的领地,狮子勃然大怒,这时小猫发现情况不妙,它能否脱离险境呢?于是“小猫快跑” 的好戏上演了。

用游戏的内容,结合故事情境,让学生初步掌握移动、下一个造型、碰到边缘就反弹和重复执行等指令。

创建合理的分类作品是游戏化编程教学的基础

我们在教学时针对不同年级,选择学生容易接受的知识点。内容是学生比较感兴趣的,这样才能使学生得到更多的收获。

我们根据作品的性质,分为迷宫类、 射击类、益智类和动画类等。我们发现同一类别的作品,在创作过程中它们的指令代码也类似,可以起到举一反三的作用。 分类作品教学可以提升学生的思维能力, 巩固解决问题的能力,这样学生学起来相对轻松。对一些思维开阔的学生帮助更大, 有助于他们创造性地修改作品。

在利用Scratch教学中,学生对迷宫类和射击类的游戏最感兴趣,做出很多有意思的作品,如下表。

编排合适的校本教材是游戏化编程教学的手段

我校自2013年下半年开始着手准备Scratch校本教材的编写。根据Scratch主题研讨和课堂展示中积累的案例材料,认真筛选出适合学生掌握的课堂教学作品范例,旨在让所有学习Scratch的学生都能够对教学内容进行消化吸收。我们通过课堂实践,反复修改,合理编排,初步形成一本适合学生初学的Scratch校本教材。

整本校本教材分为三部分,由初级篇、 中级篇和高级篇组成,每部分有4课时内容, 案例的选取以故事性游戏化的形式呈现, 按照一定的梯度编排,整体上遵循由浅入深、由易到难的原则。教材中呈现的案例全部采用Scratch2.0界面,指令、按钮等图示更清晰。教材中还涉及利用Scratch进行画图和运用变量进行算法设计的高级技巧, 与嘉兴市青少年信息学竞赛相结合,拓宽了学生的视野,有效地培养了编程思维。

搭建丰富的展示平台是游戏化编程教学的保障

和课堂教学一样,展示和评价也是Scratch教学的重要组成部分。通过作品展评、竞赛等多种形式激发学生的表现欲,激励更多的学生投身到这项有意义的活动中来。Scratch的官方网 站http://stats.scratch. mit.edu/,是个想象编程分享的平台。当学生完成自己的作品时,老师指导学生上传到Scratch学习网站上,和网站上世界各地的Scratch爱好者一起分享和交流,也是一个非常好的学习渠道。

我校也为学生搭建了一个Scratch专题网站http://fzpt.hyxyxx.com/scratch, 上面放了许多视频教程、课堂范例、作品欣赏、学生作品等资源。学生利用这个平台,自己就能找到学习的内容,进行操作实践,也可以相互欣赏作品。在这个平台的引导和激励下,学生的兴趣得到极大的提升。

平时,还建立QQ群、论坛等,加强老师和学生、学生和学生之间的联系。用Scratch进行作品创作,从中定会发现错误,听取别人意见,有新的想法,有无数问题自然产生,这是一个不断修改和完善的过程。

每学期我们开展为期一周的Scratch创意作品体验周活动。在向阳Scratch专题网站上展示大量的学生创意作品,邀请全校3 ~ 6年级的同学参加体验活动,充分感受Scratch带给我们的无限魅力,感受创意的无限精彩。通过一段时间的教学,Scratch创作已成为很多学生的最爱,学生创作的很多作品连我们这些老师也佩服不已。

VC图像编程教案 第三章 篇8

VC图像编程教案 第三章

VC图像编程教案 第三章 3 DIB类的高级应用。 3.1 BMP文件结构 BMP文件头数据结构含有BMP文件的类型、文件大小和位图起始位置等信息。 typedef struct tagBITMAPFILEHEADER { WORDbfType; // 位图文件的类型,必须为BM DWORD bfSize; // 位图文件的大小,以字节为单位 WORDbfReserved1; // 位图文件保留字,必须为0 WORDbfReserved2; // 位图文件保留字,必须为0 DWORD bfOffBits; // 位图数据的起始位置,以相对于位图 // 文件头的.偏移量表示,以字节为单位 } BITMAPFILEHEADER; BMP位图信息头数据用于说明位图的尺寸等信息。 typedef struct tagBITMAPINFOHEADER{ DWORD biSize; // 本结构所占用字节数 LONGbiWidth; // 位图的宽度,以像素为单位 LONGbiHeight; // 位图的高度,以像素为单位 WORD biPlanes; // 目标设备的级别,必须为1 WORD biBitCount// 每个像素所需的位数,必须是1(双色), // 4(16色),8(256色)或24(真彩色)之一 DWORD biCompression; // 位图压缩类型,必须是 0(不压缩), // 1(BI_RLE8压缩类型)或2(BI_RLE4压缩类型)之一 DWORD biSizeImage; // 位图的大小,以字节为单位 LONGbiXPelsPerMeter; // 位图水平分辨率,每米像素数 LONGbiYPelsPerMeter; // 位图垂直分辨率,每米像素数 DWORD biClrUsed;// 位图实际使用的颜色表中的颜色数 DWORD biClrImportant;// 位图显示过程中重要的颜色数 } BITMAPINFOHEADER; typedef struct tagRGBQUAD { BYTErgbBlue;// 蓝色的亮度(值范围为0-255) BYTErgbGreen; // 绿色的亮度(值范围为0-255) BYTErgbRed; // 红色的亮度(值范围为0-255) BYTErgbReserved;// 保留,必须为0 } RGBQUAD; 颜色表中RGBQUAD结构数据的个数有biBitCount来确定: 当biBitCount=1,4,8时,分别有2,16,256个表项; 当biBitCount=24时,没有颜色表项。 位图信息头和颜色表组成位图信息,BITMAPINFO结构定义如下: typedef struct tagBITMAPINFO { BITMAPINFOHEADER bmiHeader; // 位图信息头 RGBQUAD bmiColors[1]; // 颜色表 } BITMAPINFO; 3.2 DIB类的Read函数: BOOL CDib::Read(CFile* pFile) { // 1. read file header to get size of info hdr + color table // 2. read info hdr (to get image size) and color table // 3. read image // cant use bfSize in file header Empty; int nCount, nSize; BITMAPFILEHEADER bmfh; try { nCount = pFile->Read((LPVOID) &bmfh, sizeof(BITMAPFILEHEADER)); if(nCount != sizeof(BITMAPFILEHEADER)) { throw new CException; } if(bmfh.bfType != 0x4d42) { throw new CException; } nSize = bmfh.bfOffBits - sizeof(BITMAPFILEHEADER); m_lpBMIH = (LPBITMAPINFOHEADER) new char[nSize]; m_nBmihAlloc = m_nImageAlloc = crtAlloc; nCount = pFile->Read(m_lpBMIH, nSize); // info hdr & color table ComputeMetrics(); ComputePaletteSize(m_lpBMIH->biBitCount); MakePalette(); m_lpImage = (LPBYTE) new char[m_dwSizeImage]; nCount = pFile->Read(m_lpImage, m_dwSizeImage); // image only } catch(CException* pe) { AfxMessageBox(Read error); pe->Delete(); return FALSE; } return TRUE; } 3.3 DIB类的Write函数: BOOL CDib::Write(CFile* pFile) { BITMAPFILEHEADER bmfh; bmfh.bfType = 0x4d42; // BM int nSizeHdr = sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * m_nColorTableEntries; bmfh.bfSize = 0; //bmfh.bfSize = sizeof(BITMAPFILEHEADER) + nSizeHdr + m_dwSizeImage; // meaning of bfSize open to interpretation (bytes, words, dwords?) -- we wont use it bmfh.bfReserved1 = bmfh.bfReserved2 = 0; bmfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * m_nColorTableEntries; try { pFile->Write((LPVOID) &bmfh, sizeof(BITMAPFILEHEADER)); pFile->Write((LPVOID) m_lpBMIH, nSizeHdr); pFile->Write((LPVOID) m_lpImage, m_dwSizeImage); } catch(CException* pe) { pe->Delete(); AfxMessageBox(write error); return FALSE; } return TRUE; } 3.4 明确图像文件 CFile CDib类三者之间的关系 3.5 尝试直接用CDib类的m_lpImage成员读取图像数据。 3.6 尝试通过Write保存图像到另一个位置 3.7 尝试通过Write重写原图像文件(注意保存)

scratch编程教案 篇9

授课学期:2015年度第二学期 课程名称:数据库编程课时安排:专

业:计算机科学与技术班

级:年

级:任课教师:陆汝华

实验 16课时

1班 2013级 实验一 Oracle安装配置与基本操作实验

教学目的要求:

1.掌握Oracle数据库的安装,包括服务器端数据库管理系统安装和客户端工具的安装。2.掌握Oracle数据库的登录、启动和关闭 重点:

Oracle 11g数据库的安装 难点:

服务端和客户端的安装 课时安排:实验2课时

预备知识:

一、安装:

1、选择安装方法:默认为基本安装,一般选择高级安装

2、选择安装类型:企业版 标准版 个人版

一般选择企业版

3、安装位置:即ORACLE基目录和主目录设置

4、先决条件检查

5、选择配置选项:创建数据库

6、选择数据库配置:一般用途/事务处理

7、输入全局数据库名和SID

8、数据库存储选项:数据文件存储位置

9、备份和恢复选项

10、口令

11、概要

点击安装按钮开始安装,直到出现安装结束界面。

二、操作:

1、程序组,系统服务,文件夹目录等的变化

2、从开始进入SQL Plus进行登录操作 用户名:sys as sysdba

3、进入控制台进行操作 https://localhost:1158/em

三、当oracle11g计算机名修改后需要重新配置 1 监听程序配置 本地NET服务名配置 3 控制台重新配置

(1)cmd

(2)emctl start dbconsole 提示:Environment variable ORACLE_SID not defined.Please define it.(3)set oracle_sid=orcl

(4)emctl start dbconsole 提示:OC4J Configuration issue.c:appAdministratorproduct11.1.0db_1/oc4j/j2ee/OC4 J_DBConsole_j1390_orcl not found.(5)复制上述文件改名为:OC4J_DBConsole_j1390_orcl

(6)emctl start dbconsole 提示:EM Configuration issue.c:appAdministratorproduct11.1.0db_1/j1390_orcl not found.(7)emctl start dbconsole 服务已经启动成功。还可以通过修改资料档案库或新建数据库来完成。

实验内容:

1、Oracle服务端软件的安装;

2、Oracle数据库的安装;

3、Oracle数据库客户端的安装;

4、Oracle数据库的登录、启动和关闭等基本操作。实验二 Oracle网络结构与管理实验

教学目的要求:

1.理解Oracle网络服务组成及Oracle NET、监听程序、管理连接器和网络工具的功能和作用;

2.理解服务名、连接描述符、连接标识符等基本概念; 3.掌握Oracle网络在服务器端和客户端的配置方法。重点:

Oracle 服务器端监听程序和网络服务名的配置 难点:

Oracle 服务器端监听程序的配置 课时安排:实验2课时

预备知识:

一、监听程序的配置

1、监听程序配置文件内容

默认路径为%Oracle-Home%networkadmin,存在文件名为listener.ora的配置文件,包含内容:配置监听程序所监听的一个或多个协议地址。配置监听程序所支持的数据库服务信息。设置控制监听程序运行的参数。

2、监听程序配置方法

使用ONCA或Oracle net manager修改配置文件listener.ora的内容,可以配置多个监听程序,ONCA配置方法步骤如下。

(1)欢迎使用(2)监听程序

(3)输入监听程序名称(4)选择协议(5)选择端口(6)配置完成

3、监听程序管理

在Windows环境下,可用命令行程序LSNRCTL(listener control 监听控制)启动、关闭和管理监听程序。

二、命名方法的配置

1、选择命名方法的配置

选择的命名方法记录在sqlnet.ora的文件中,该文件默认路径为networkadmin,默认内容为:

# sqlnet.ora Network Configuration File: D:appAdministratorproduct11.1.0db_1networkadminsqlnet.ora # Generated by Oracle configuration tools.# This file is actually generated by netca.But if customers choose to # install “Software Only”, this file wont exist and without the native # authentication, they will not be able to connect to the database on NT.SQLNET.AUTHENTICATION_SERVICES=(NTS)NAMES.DIRECTORY_PATH=(TNSNAMES, EZCONNECT)

2、配置本地命名方法 本地命名方法将连接标识符到连接描述符的映射关系保存在名称为tnsnames.ora文件中,默认内容为:

# tnsnames.ora Network Configuration File: D:appAdministratorproduct11.1.0db_1networkadmintnsnames.ora # Generated by Oracle configuration tools.ORCL =

(DESCRIPTION =

(ADDRESS =(PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl)))也可通过ONCA进行配置:

(1)选择“本地Net服务名配置”(2)服务名配置(3)服务名(4)选择协议(5)主机名(6)测试

(7)测试成功,可编辑网络服务名

实验内容:

1、对Oracle 服务器端进行监听程序和网络服务名等配置,并查看listener.ora、sqlnet.ora、tnsnames.ora等相关文件和Net Manager等相关界面的数据信息;

2、修改服务端的计算机名,对Oracle进行重新配置,使其能正常工作,同时查看上述相关数据并与之比较变化;

3、使用命令对监听程序进行操作管理。

实验三 Oracle数据库管理实验

教学目的要求:

1.掌握数据库的建立方法。

2.了解手动建立数据库的基本步骤。3.掌握数据库启动、关闭和删除的方法 重点:

数据库启动、关闭和删除的方法 难点:

手动建立数据库 课时安排:实验2课时

预备知识:

一、数据库的建立

(1)DBCA建立数据库

点击:OracleHome、Configuration And Migration Tools、Database Configuration Assistant进入DBCA界面。

(2)SQL命令建立数据库

1、确定数据库名和实例名SID SQL>setenv Oracle_SID=student

2、确定环境变量设置正确

在启动SQL Plus之前,必须正确设置环境变量。如Oracle_sid,Oracle_hom,PATH等。

3、确定DBA认证方式

新建数据库,必须以DBA身份连接,并具有相应的系统权限。

4、创建初始化参数文件

可复制样本初始化参数文件,也可复制其它数据库的初始化 参数文件。

5、创建实例

C:>oradim –NEW –SID student –STARTMODE MANUAL-PFILE=„„INIT.ORA

6、连接到实例

SQL>CONNECT SYS AS SYSDBA;连接正确,则提示connected to an idle instance.7、建立服务器参数文件

SQL>CREATE SPFILE FROM PFILE;

8、启动实例

SQL>STARTUP NOMOUNT;以非加载方式启动实例

9、执行CREATE DATABASE命令

二、数据库的操作(1)数据库的启动

1、启动实例但不加载数据库(NOMOUNT状态)SQL>STARTUP NOMOUNT;SQL>STARTUP NOMOUNT PFILE=„.init.ora;

2、启动实例并加载数据库(MOUNT状态)SQL>STARTUP MOUNT;SQL>STARTUP MOUNT PFILE=„.init.ora;

3、启动实例并加载、打开数据库(OPEN状态)SQL>STARTUP OPEN;SQL>STARTUP;SQL>STARTUP MOUNT PFILE=„.init.ora;SQL>STARTUP PFILE=„.init.ora;

4、数据库启动模式之间的转换

从NOMOUNT状态到MOUNT状态: SQL>ALTER DATABASE MOUNT; 从MOUNT状态到OPEN状态: SQL>ALTER DATABASE OPEN; 只读模式

SQL>ALTER DATABASE OPEN READ ONLY; 读写模式

SQL>ALTER DATABASE OPEN READ WRITE;(2)数据库的关闭

1、正常关闭方式(NORMAL)SQL>SHUTDOWN NORMAL;

2、立即关闭方式(IMMEDIATE)SQL>SHUTDOWN IMMEDIATE;

3、事务关闭方式(TRANSACTIONAL)SQL>SHUTDOWN TRANSACTIONAL;

4、终止关闭方式(ABORT)SQL>SHUTDOWN ABORT;

三、数据库的删除

启动DBCA,选择删除数据库。单击“下一步”,将显示所有可以被删除的数据库例程。

实验内容:

1、使用DBCA建立数据库;

2、使用命令建立数据库;

3、使用DBCA和命令对所建立的数据库进行修改、删除等操作;

4、练习数据库的启动和关闭等操作,重点练习三种启动模式和三种关闭方式,并了解数据库处于各种打开或关闭状态下所能进行和不能进行的基本操作。实验四 Oracle数据库对象管理实验

教学目的要求:

1.了解各类数据库对象的作用。

2.掌握表、视图、索引、序列、同义词等数据库对象的建立、删除、修改和查询等方法。3.掌握表内容的插入、删除、更新和查询等方法。4.掌握表的约束的使用方法 重点:

表内容的插入、删除、更新和查询等方法 难点:

手动建立表、视图、索引、序列等数据库对象 课时安排:实验4课时 实验内容:

1、使用SQL语句创建表(至少包含三种不同类型的字段),使用SQL语句向表中插入数据、修改表中数据、删除表中数据和查询数据。

2、使用SQL语句创建索引、视图。

3、创建序列,并在插入语句中使用序列。实验五Oracle数据库安全管理实验

教学目的要求:

1.了解数据库用户、权限、事务、概要文件、并发和会话等基本概念。2.掌握建立、删除和修改、查询用户等的方法。3.掌握用户授予和回收权限或角色的方法。4.掌握整个数据库安全的综合管理 重点:

用户授予和回收权限或角色 难点:

用户授予和回收权限或角色 课时安排:实验4课时 实验内容:

1、使用命令创建数据库认证用户。

2、为用户授予和回收权限或角色操作。

上一篇:鼓励员工进步的话下一篇:应该有天堂导学案

热门文章
    相关推荐