算法与程序设计教案

2025-04-14 版权声明 我要投稿

算法与程序设计教案(精选12篇)

算法与程序设计教案 篇1

一、教学目标

1、知识与技能

(1)理解算法的概念,培养学生自我探索信息,高效获取信息的能力;

(2)能初步利用算法解决简单的问题,培养学生的理论联系实际能力和动手操作能力。

2、情感、态度、价值观

学生在学习过程中,通过亲身经历体验获得对此算法的感性认识,培养学生自我获取信息、分析评价信息、、表达呈现信息的能力,进一步提高其信息素养。

二、教学重点难点

重点:算法概念的理解

难点:如何科学合理的选择和设计算法。

三、教学策略与手段

以趣味性问题设置情境,激发学生探索解决问题的兴趣,与学生进行互动探讨,通过Flash演示材料,比较直观地把抽象的问题简单化,使学生的思考逐步深入,从而总结出算法的概念,学会如何设计和选择算法,培养学生自主探究学习的能力。

四、教学过程(1课时)

(一)我们来共同寻找下面一些生活中比较现实的问题的解决方法。【问题一】天下真的有“不要钱的午餐”吗?

某一餐馆门口海报上写着“不要钱的午餐”,规则如下:在三个月内,来宾必须凑够五个人,五人每次来就餐必须按照不同的顺序坐,直到把所有可能的顺序都坐一遍,以后来吃饭就可永远免费”。于是有人想,这太容易了,每人每次坐不同的位置,吃五次不就行了?于是他就叫上自己的朋友参加这项活动,可是,吃了十次之后,还没有吃上免费午餐,这是怎么回事呢?

学生们感觉非常有意思,很快以小组为单位进行热烈的讨论并得出了破解问题的步骤:①第一个座位5个人都有坐的机会②第二个座位只有4个人中的任一个有坐的机会(一个人不能同时坐两个座位)③第三个座位只有3个人中的任一个有坐的机会④第四个座位只有2个人中的任一个有坐的机会⑤第五个座位只有1个人有坐的机会⑥计算:5×4×3×2×1=120⑦得出结论:需要吃120次才有可能吃上免费午餐。

【问题二】有三个和尚和三个妖怪过河,只有一条能装下两个人的船,在河的任何一方或者船上,如果妖怪的人数大于和尚的人数,那么和尚就会有被吃掉的危险。你能不能找出一种安全的渡河方法呢?请写一写你的渡河方案。学生:学生讨论回答。〖展示步骤〗

①两个妖怪先过河,一个妖怪回来; ②再两个妖怪过河,一个妖怪回来; ③两个和尚过河,一个妖怪和一个和尚回来; ④两个和尚过河,一个妖怪回来; ⑤两个妖怪过河,一个妖怪回来; ⑥两个妖怪过河。

【Flash动画展示】通过讨论和动画展示,我们可以知道,计算机解决问题和人解决问题一样需要有清晰的解题步骤。算法就是解决问题的程序或步骤。

(二)【课件展示】算法的概念:

1、广义的算法是指完成某项工作的方法和步骤,在我们日常生活中也经常使用算法,只是没意识到罢了。如:洗衣机的使用说明书是操作洗衣机的算法,菜谱是做菜的算法等等。

2、在数学中,现代意义的算法是指可以用计算机来解决的某一类问题的程序和步骤,这些程序或步骤必须是明确和有效的,而且能够在有限步之内完成。

【小试身手】按照这样的理解,我们可以设计出很多由具体数学问题解决一类数学问题的算

法.下面看一个例子:(要求学生自己考虑并写出具体的算法)

鸡兔同笼问题。一个笼子里有鸡和兔,现在只知道里面一共有17个头,48只脚,鸡和兔各有多少只?试设计一个求解的算法。

【设计意图】求解鸡兔的问题简单直观,却包含着深刻的算法思想。应用解二元一次方程组的方法来求解鸡兔同笼问题。

第一步:设有小鸡x只,小兔y只,则有

第二步:将方程组中的第一个方程两边乘-2加到第二个方程中去,得到,得到y=7; 第三步:将y=7代入(1)得x=10。

【变一变】在笼中有鸡、兔若干,已知有头a个,有脚b只,求各有多少只鸡和兔。

【师生合作】老师带领学生共同书写规范的算法的具体步骤,最后引出算法使用的范围:能解决一类问题,并且能重复使用。

(三)【课件展示】算法的基本特征

①有穷性 ②确定性 ③不唯一性 ④有效性(逻辑性)

1、有穷性:一个算法应该包含有限个操作步骤,而不能是无限的。

2、确定性:算法的每个步骤都应该是明确无误的,不能含义模糊,使执行者无所适从。

3、有零个或者多个输入,有一个或者多个输出

4、有效性:算法中的每一步都应该能有效地执行,执行算法最后应该能得到确定的结果。

【教学总结】

1、本节课通过一些生活中看似简单问题的解决方法和步骤,使学生比较轻松的接受了生活算法的概念,进一步理解了计算机算法的概念。

2、课堂教学的效益取决于学生对所学知识理解了多少,能否用所学知识来解决一些实际问题。本节课的设计突出讲与练的结合,培养学生的动手能力,并且引出学生对下一节课的内容的思考,比较顺利的完成了本节课的教学任务。

算法与程序设计教案 篇2

一、明确教学目标

新课标指出:“算法部分旨在使学生进一步体验算法思想,了解算法在解决问题过程中的地位和作用,并能从简单问题出发,设计解决问题的算法。”递归算法的教学目标是学会用递归算法的思想分析问题。为了实现该目标,很多教师从递归函数代码的理解出发带领学生学习递归算法,而代码的反复调用很容易给学生理解造成困难。笔者认为指导学生利用递归思想来分析问题是最重要的,理解了递归思想以后,代码的编写就变得相对容易了。

二、学生知识准备

所有的知识都不是空中楼阁,必须有一定的前期知识准备。学生开始学习递归算法前应该已经熟练掌握了顺序结构、分支结构、循环结构,对程序设计语言有了一定的了解,能解决一些有一定难度的程序,有一定的分析问题的能力。而且,学生应该已经掌握了自定义函数,包括函数名、函数参数、函数参数之间的传递等知识。

三、理解递归过程

兴趣是最好的老师,越难理解的知识点越需要抓住学生的兴趣点。对于递归算法的学习,我们可以先让学生玩“汉诺塔”游戏。让他们把塔盘从少到多慢慢增加,一边玩一边总结游戏攻略。通过老师的引导及动画课件,学生应该可以总结出“N个塔盘从A移动到C”的问题可以转换成三个小问题:1.把N-1个塔盘从A移动到B;2.把第N个塔盘从A移动到C;3.把N-1个塔盘从B移动到C。教师只要适时地加以总结:“要想解决复杂问题,可以先把复杂问题转化成简单问题,把问题化解到最小,简单问题解决了,那复杂问题也随之解决。”并给出递归算法的概念:“直接或间接调用本身的算法”,以及递归算法的核心思想:递归分为两个部分,一是递推:大事化小;二是回归:由小及大。当然,教师也可以用“从前有座山”这个大家耳熟能详的故事加以补充说明。

四、把握分析思路

在学生初步了解递归思想后,教师不应急着进入代码的讲解,可以引导学生用递归思想来分析问题,从简单到复杂,从具体到一般。可以从分析求5!开始,分析并总结出求N!的方法。在讲解的过程中,教师可以借助黑板来板书分析思路。(如图)

当分析完5!的求解过程以后,教师可以让学生分析讨论出数学模型,其中包括:递归公式和边界条件

这是一个典型的双分支选择结构语句,可以用IF语句来实现。

五、结合分析完成代码

在学生分析透彻以后,可以让学生试着根据以往的函数知识完成代码的编写。这时可以利用“半成品”的形式,主要是让学生填写递归函数的主体(判断语句)。然后,教师结合代码再次说出递归的过程,学生的印象就很深刻了。这里学生可能会在两个地方出错:1.写成fac (n)=fac (n-1)*n,解释:函数的调用只能在表达式中,而等号是赋值语句,左边只能是变量而不能是表达式。2.函数数据类型和接受返回值的变量数据类型不符,解释:赋值语句等号左右两边数据类型必须相同。

六、适时巩固知识

N!数学模型讨论出以后,学生和教师一起经历了问题分析的过程。这时教师可以适当小结递归概念、递归核心思想、递归边界条件,来帮助学生巩固所学知识。

然后,学生可以用斐波那契数列来进行练习。之所以用斐波那契数列来练习,是因为这个数列学生能很快找到规律,但又因为有两处调用,有一定的难度提高。

当然还是采用从具体到一般的方法,先在学案上分析第5项的数的求法,同时请两位学生到黑板上来分析。再根据分析讨论出递归公式和边界条件(右图为笔者上课时学生书写的学案)。对这道题目的板书分析,以后在总结递归的缺点(重复调用)时也是可以利用的。

七、适当提高应用

在信息技术学科中,学生的能力存在较大差异。而递归算法又在理解上有一定的难度,自然学生达到学习目标的情况也会有所差异。英国现代教育学家沛·西能在《教育原理》中说:“一切教育努力的根本目的应该是帮助学生尽可能达到最高的个人发展。”所以,分层教学在信息技术中会经常运用到。本课内容可以采用难度稍高一点的递归题目作为提高题。笔者在教学的时候采用的是小球自由落体作为分层教学中的提高部分,同时采用小组讨论的形式完成该题的分析。有些教师会让学生编写“汉诺塔”程序,笔者觉得难度太大,会把学生难住,造成学生产生排斥心理。

总之,递归法的教学重点必须落在“算法”上而不是“代码”上。只要学生会用递归算法分析问题,那递归算法的代码就很容易写出来。而只有当学生会用算法的思想分析问题,他们才能真正地体验到算法的魅力,进而爱上《算法与程序设计》这门课。

参考文献

[1]算法与程序设计.教育科学出版社.

算法与程序·程序框图 篇3

[开始] [产生0~1之间的两个随机数 分别赋给[xi,yi]] [输出[P]][结束] [是][否] [是]

A. [P=N1000] B. [P=4N1000]

C. [P=M1000] D. [P=4M1000]

2. 执行如图所示的程序框图,输出的[S]的值为( )

[开始] [输出[S]][结束] [否] [是]

A.1 B. [23] C. [1321] D. [610987]

3. 如图所示的程序框图中,令[a=x,b=-x,][c=12x+1],若给定一个[x]值,输出的结果仅仅适合[12x+1],则这样的[x]的取值范围是( )

[开始] [输出[a]][结束] [是][否] [输入[a,b,c]] [是] [否]

A. [-∞,-23] B. [-23,2]

C. [-23,2] D. [2,+∞]

4. 如图所示,程序框图的输出结果是( )

[开始] [输出[S]][结束] [否] [是]

A. [16] B. [2524] C. [34] D. [1112]

5. 执行如图所示的程序框图,如果输出的[S=3],那么判断框内应填入的条件是( )

[开始] [输出[S]][结束] [否] [是]

A. [K≤6] B. [K≤7]

C. [K≤8] D. [K≤9]

6. 执行如图所示的程序框图,如果输入的[N=10],那么输出的[S]的值为( )

[开始] [输出[S]][结束] [否] [是] [输入[N]]

A. [1+12+13+…+110]

B. [1+12!+13!+…+110!]

C. [1+12!+13!+…+110!+111!]

D. [1+12+13+…+110+111]

7. 如果执行如图所示的程序框图,输入正整数[N]([N]≥2)和实数[a1,a2,a3,]…,[aN],输出[A,B],则( )

A. [A+B]为[a1,a2,a3,]…,[aN]的和

B. [A+B2]为[a1,a2,a3,]…,[aN]的算术平均数

C. [A]和[B]分别是[a1,a2,a3,]…,[aN]中最大的数和最小的数

D. [B]和[A]分别是[a1,a2,a3,]…,[aN]中最大的数和最小的数

[开始] [输出[A,B]][结束][是][否] [输入[N1,a1,a2,a3,…,aN]] [是][否] [是][否]

8. 如图,[x1,x2,x3]为某次考试三个评阅人对同一道题的独立评分,[p]为该题的最终得分,当[x1=6,x2=9,p=8.5]时[x3]等于( )

[开始] [输出[p]][结束] [否] [是] [输入[x1,x2]] [输入[x3]] [是][否]

A. 11 B. 10 C. 8 D. 7

9. 执行如下图所示的程序框图,输入[l=2,][m=3,][n=5],则输出的[y]的值是 .

[开始] [输出[y]][结束] [否] [是] [输入非负整数[l,m,n]] [否][是]

算法与程序设计教案 篇4

教学目标

1、使学生理解、掌握加法结合律.

2、能够应用加法的交换律和结合律进行简便计算.

教学重点

对加法结合律的理解、掌握和应用.

教学难点

加法结合律的运用.

教学步骤

一、铺垫孕伏.

1、什么叫加法交换律?用字母如何表示?

2、根据运算定律在下面的()里填上适当的数.

43+67=()+()35+()=65+()

()+18=19+a+100=()+()

3、下面各等式哪些符合加法交换律?

270+380=390+260 20+50+80=20+80+50

a+400=400+a140+60=60+140

谈话引入:以上,我们运用了加法的意义及交换律解决了一些问题,那么关于加法还有没有其他的规律性知识?这些知识又有什么用途呢?这节课我们继续学习这方面的知识--加法结合律和简便运算.(板书课题)

二、探究新知.

(一)教学例3、观察下面每组的两个算式,它们有什么样的关系?

(12+13)+14○12+(13+14)

(320+150)+230○320+(150+230)

1、教师提问:(1)上面等式两边算式有什么相同点?有什么不同点?

相同点:都有三个加数,左右两边的三个数相同;

不同点:加的顺序不同.

(2)每组两个算式的结果怎样?用什么符号连接?每组算式说明什么?

2、归纳加法的结合律.

3、用字母表示加法结合律.

如果用字母a、b、c分别表示3个加数,怎样用字母表示加法结合律呢?

教师板书:(a+b)+c=a+(b+c)

等号左边(a+b)+c表示先把前两个数相加,再同第三个数相加.

等号右边a+(b+c)表示先把后两个数相加再用第一个数相加.

a、b、c表示的数是什么范围的数?

4、练习:根据运算定律在下面的□里填上适当的数.

(25+68)+32=25+(□+□)

130+(70+4)=(130+□)+□

(二)教学简便算法.

应用加法结合律我们可以改变一些数的运算顺序,但应用加法交换律更主要的一点是可以使一些计算简便.

1、例4计算480+325+75

教师提问:同学们想要计算480+325+75,怎样计算比较简便?为什么?应用了什么运算定律?(学生试算)

教师板书:

480+325+75

=480+(325+75)

=480+400

=880

2、例5计算325+480+75

教师提问:这道题怎样算比较简便?为什么?应用了什么运算定律?(集体订正)

325+480+75

=325+75+480

=(325+75)+480

=400+480

=880

教师提示:哪一步可以省略?

325+480+75

=325+75+480

=400+480

=880

3、比较例4、例5在应用运算定律方面的不同.

例4没有调换加数的位置,直接应用了加法结合律进行了简算;

例5要使325与75相加,则必须先应用加法交换律将75交换到480的前面,再应用加法结合律简算.

4、反馈练习:137+31+63,怎样计算比较简便?用了什么定律?

5、想一想,过去哪些计算应用了加法的结合律?

(在做口算加法时应用了加法结合律)

如:36+48

36+48=36+(40+8)=(36+40)+8=76+8=84

教师说明:根据加法结合律不仅可以做口算加法,还使一些计算简便.简算时要注意数字特点.

三、巩固发展.

1、根据运算定律在下面的□填上适当的数.

369+258+147=369+(□+147)

(23+47)+56=23+(□+□)

654+(97+a)=(654+□)+□

2、下面哪些等式符合加法结合律?

a+(20+9)=(a+20)+9

算法与程序设计笔试题 篇5

给出一个合适的任务执行顺序。请详细描述你的算法思路(如需要,可给出伪代码来辅助描述),并分析其时间和空间复杂度。(20分)

2.编写函数:

统计在某段英文文本完整句子的数目,文本只包括大小写英文字母、空格、点(.)、逗号(,)。

《算法的设计与描述》教学设计 篇6

一、教材内容、学情分析(1)教材分析

本节内容为教科版算法与程序设计第一章第二节,通过1.1 节的学习,学生已经了解了计算机解决问题的基本过程,并知道算法是程序设计的灵魂,只要算法正确,就可以用任何一种语言编写程序,再加之本节的学习,更加加深的学生对算法的了解。为后续章节学习程序设计、算法的程序实现打下一定的基础。(2)学情分析

此阶段学生为高二第一学期的学生,在高一的基础上已经对计算机的基本操作及信息的获取处理方法有了一定的掌握。数学方面也已经具备了函数、数列等方面的知识,能够解决计算机中遇到的一些问题。但我校学生很大一部分都是农村学生,基础差,知识的掌握程度差,所以要更加注重基础,课堂用例不能太难,注重循序渐进的教学,分层教学。

二、教学目标

知识与技能:进一步理解什么是算法,知道算法的多样性;能够对设计的算法做简单的评价;学会利用自然语言、流程图和伪代码来描述算法。

过程与方法:培养学生用算法描述问题的能力和正确解决问题的过程。

情感态度价值观:使学生养成遇到问题,找出算法,分析算法的意识。培养学生的高阶思维能力,如综合、评价、分析、思辨。

三、教学重难点

重点:用自然语言流程图伪代码描述算法

难点:用流程图描述算法

四、教学方法及策略

本节课主要通过大量实例及一题多解的方法,帮助学生理解学习,对比式学习,问题引导,先实例展示,后讲解,后总结的方法,适合学生的学习认知顺序,是知识点之间的衔接浑然天成。由易到难的顺序,不至于使学生产生思维跨度。知识点纲要、图文并茂、表格的形式使知识点形象直观容易理解。适当的讨论交流学习,让同学们很好的纠正自己的错误。以上各种方法让学生学会如何利用自然语言、流程图和伪代码来描述算法。引课实例为“农夫过河”的趣味游戏,它一方面可以激发学生的学习兴趣,另一方面可使学生清楚算法的概念,学会利用自然语言描述算法的方法;第一个实践活动“找出1+2+3+……100的方法”,让同学们对不同的算法进行比较,能对不同的算法做出评价,感受算法的多样性与复杂性;第二个实践活动“用自然语言描述求解ax+b=0的过程”,进一步巩固自然语言的描述方法,为后面的学习用流程图描述做铺垫;流程图学习阶段,与自然语言描述进行对比,贯之以实践三“读解一元二次方程流程图,填空”,典型的数学问题,使学生掌握用流程图描述算法的方法;伪代码学习阶段,采用循序渐进的方法,引导学生学习,冠之以实例帮助学生理解。最后对知识点进行小结,完成课后实践

五、教学过程 1.课堂引入

老师:由“农夫过河”游戏引入:算法的概念,算法是程序设计的灵魂,找到合适的算法是程序设计的前提 , 算法的设计分为两个内容:一是寻找一种方法;二是描述实现这个方法的步骤,我们这节课的重点是学习如何描述算法。算法特征的讲解。

学生:玩趣味游戏,找出解决农夫过河问题的方法和步骤,理解算法的概念,特征,地位。

设计意图:通过游戏,激发学生的学习兴趣,顺理成章的引入对本节内容的学习。适当的扩展算法的特征,帮助学生理解。2.学生自主讨论完成实践活动一

学生讨论:学生找出求解“1+2+3+4……+100”的不同算法,看看哪种算法的效率高,体会算法的多样性与复杂性。

老师总结结论。3.用自然语言描述算法

老师讲授:

(1)自然语言 —— 人们日常生活中使用的语言。

(2)自然语言的特点:通俗易懂,缺乏直观性,不简洁,且易产生歧义。如很多同学的描述语句和说法相差较大。使用自然语言的注意事项:描述要尽可能精确,详尽。

学生活动: 实践活动二:用自然语言描述求解ax+b=0的过程,巩固所学,为学习流程图做一定的铺垫。4.流程图描述

老师活动:

用自然语言描述算法比较容易接受,但叙述冗长,容易产生 “ 歧义 ”。下面我们再来学习另外一种最常见的算法描述方式——流程图。

(1)给学生展示求解方程ax+b=0的流程,对比自然语言描述,产生共鸣。(2)结合具体实例讲解组成流程图的各种元素,之后列出组成流程图基本元素。(3)总结流程图优缺点:用流程图描述算法直观易懂、逻辑关系清晰,不容易产生歧义。

(4)结合求解ax2+bx+c=0的流程图,巩固讲解流程图相关知识。

学生活动:

(1)看解ax+b=0的自然语言和流程图,感受流程图描述的优势,完成对比表格。(2)实践活动三:读解一元二次方程流程图,填空。

设计意图:由简到难,逐步引导,图文并茂,帮助理解,对比学习,产生共鸣。

5.用伪代码描述算法

老师活动:

(1)伪代码表示举例讲解

(2)两个实例讲解

①判断某个数是否偶数

②伪代码描述求解ax+b=0的过程(3)总结式讲解

伪代码(Pseudocode)是介于自然语言和计算机程序设计语言之间的一种算法描述。它也是专业软件开发人员描述算法的一种常用方法。没有严格的语法限制,书写格式也比较自由,描述的算法简单、易懂,容易修改,且容易转化为程序语言代码。

学生活动:听老师讲解,在老师的引导下,完成对两个实例的讲解,对知识点的掌握 6.课堂总结

(1)算法是指解决问题的方法和思路。(2)算法的特征(2)描述算法的形式有多种,常用的有自然语言、流程图和伪代码。展示同一个问题的三种描述方法,学生对比感受,起到对知识点升华的作用。(3)好的算法需要我们分析、比较、挑选。

六、教学反思

通过本节的教学好的地方在于:以游戏的方式引课,调动学生的学习兴趣。整堂课贯穿着大量的实例帮助学生学习巩固,实例都是由易到难,老师适当引导,帮助各类学生理解,充分的考虑到学生的学情。在讲解三类方法时,始终都是对比式学习,并没有把某个知识点孤立起来。适当的给学生扩展了一些知识点。整堂课程脉路比较清晰。再者就是课堂气氛比较活跃。

不足之处就是:课堂有些地方语言不够精炼。学生活动不是很充分,学生活动的设计不是很到位,课堂上老师与学生的互动较少。学生与学生之间的互动交流也较少,由于受到学生基础的限制,如打字,有部分学生没有很好的完成实践活动。有些知识点没有讲透。由于实践贯穿在课堂,学生做完后只是做了简单的评价,没有详细的评价,课后也没有系统的评价,没能给学生纠正出常见的错误,实践活动的重难点也没有突出出来,没有把知识点做出全方位的诠释。

《算法与程序设计》教学初探 篇7

本模块由“计算机解决问题的基本过程”、“程序设计语言初步”和“算法与问题解决例举”三个主题组成。

通过本模块的学习可以锻炼学生的逻辑思维能力, 使学生思考问题时更加科学严密和细致全面。

我们知道“算法与程序设计”这个模块的教学一直存在“难教”、“难学”的问题。程序设计本身存在抽象、枯燥、逻辑思维性强的特点。能否找到一套有效的教学方式, 使学生在学习过程中既能掌握高级编程语言的知识, 又能灵活运用高级语言进行程序设计一直是高中信息技术教师努力的方向。总结这个模块的教学, 从教材内容处理、教学方法和策略及应用实例三个方面来探讨本模块的教学。

一、教材内容处理

“计算机解决问题的基本过程”主题是整个模块的起始篇, 计算机解决问题的基本过程是重点。本主题中的内容比较抽象, 建议结合实例讲解这部分内容, 教师不妨提供多个简单的例子让学生分组进行讨论, 如:猜数字游戏、倒油问题、密码锁问题, 等等。教学时不要进行实例代码的分析, 也不要展开深入探讨, 建议将第三个专题中的算法的概念提到这个专题来讲, 结合实例讲解计算机解决问题的步骤, 理解算法的概念和算法的表示方法。

“程序设计语言初步”中程序设计基本思想、结构化编程三大类型是教学重点, 也是难点。这个主题中基本数据类型、常量、变量、数组、函数等都是一些新概念, 理论性较强、枯燥, 容易引起学生厌学情绪, 但这些知识却是用计算机解决问题的基础。建议让学生了解程序设计最基础、最核心的内容, 增强学生学习的自信心, 利用可视化的界面, 提高学生兴趣。在教学内容的安排上可以采取“按需分配”的策略, 常用的、要用的先讲, 难用的, 用不着的后讲。例如:基本数据类型中, 重点介绍实型、整型、字符串型、布尔型等常用数据类型, 货币型、日期型等不常用的类型可以暂不做介绍。

如果选用的是Visual Basic语言作为程序设计学习的语言, 将会涉及到很多控件的运用, 以及属性、事件、方法等专业概念的问题。对于控件的介绍要避免“求全”。同样遵循按需的原则, 要用的控件先讲, 例如:标签、文本框、按钮等。特别是Timer控件, 可以先讲解, 因为学习了Timer控件后就可以实现很多有趣的程序了, 例如:“捉蝴蝶”、“进度条”等。另外, 也要避免所有程序只用标签、文本框、按钮, 建议可以在不同的程序中采用不同控件, 不断增加新控件的学习, 也能使程序的界面更美观, 布局更合理。例如:“图片浏览器”实例中可以增加列表框控件和下拉列表框控件的学习。

“算法与问题解决例举”中用典型的算法思想解决问题是教学重难点, 本主题是以前面两个主题为基础的。对于不同版本的教材, 可以根据实际教学适当地调整教学顺序, 建议依据课时以及学生认知水平适当进行教学内容的删减。选取几个容易理解又典型的算法思想来讲解, 例如:穷举算法在生活中有很多应用的实例, 例如:密码的暴力破解, 查找罪犯指纹, “超女”海选等, 学生比较容易理解和掌握;解析法在数学科目中经常涉及到, 也是比较容易掌握的算法之一。

二、教学方法和策略

教学方法是教学目标达成的重要因素, 当然, 没有最好的教学方法, 只有适合的教学方法。“任务驱动”、“情境教学”都 是本模块 教学中常 用而且有 效的教学 方法。巧设情境, 布置任务, 在教学过程中设置一个情境, 让学生融入进去, 有利于调动学习的主动性。

例如:在学习“用穷举算法解决问题”时, 创设这样的情境, “达·芬奇家的保险柜长期不用, 密码忘了, 达·芬奇找到一个密码纸, 显示密码有五个数字, 但是, 其中有两个数字模糊不清了。不过达·芬奇记得密码同时是他和他母亲生日的倍数。他的生日是7月8日, 他母亲的生日是6月7日。我们能不能帮助达·芬奇找回保险柜密码, 打开保险柜呢?”, 这个任务取名叫“达·芬奇密码”, 同名的电影和小说会引起学生的共鸣, 一下就吸引了他们的兴趣。让学生试着解开这个密码, 由于数据量大, 自然而然就想到用计算机运算速度快的特点去解决这个问题, 虽然密码的可能性比较多, 但却是有范围的, 自然地引出穷举算法使用的两个关键:数据范围和条件。学生通过这个实例很容易就理解了穷举算法的思想和解题关键, 编写程序就不是问题了。

高中学生的起点水平参差不齐, 建议采用分层策略设计教学任务。分层次教学承认学生的差异, 符合因材施教的原则, 分层次教学面向全体学生, 使教学尽量适合大多数学生的发展需要和实际水平, 这也符合学生的心理需求, 能激发学生的自信和兴趣。建议教师在布置教学任务时, 可以设计基础题和拓展题两种难度不同的任务, 基础题主要用于基础任务和基础技能的训练, 一般的学生基本能完成, 作为学生必须要完成的任务;而拓展题是课堂相关知识的拓展或创新, 学有余力的学生可以尽量完成, 这样设计兼顾了不同层次学生的需求, 不至于在课堂上造成能力强的学生无所事事的现象。

例如:在分支结构中, 《碰碰球》的实例属于基础题, 只要用分支语句判断窗口的边界就可以实现, 而由它演变而来的《接球游戏》则难度要提升一些, 不光要进行窗口边界的判定, 还涉及到接球挡板的边界判定, 挡板与键盘的交互的设定等, 这就要求学生有较高的能力。

实践证明, 基础薄弱的学生完成基本任务后, 很有满足感;基础好、学有余力的学生对拓展任务很感兴趣, 不仅完成, 还对界面和功能进行进一步的优化。当然, 这对教师前期的备课工作也是一种挑战。

“算法与程序设计”模块是一个过程性的教学, 是需要学生积累的一个过程。教师可以引导学生经历“理解——模仿——创新”这样的一个学习过程。要知道学生通过理解程序, 才能感知程序要做什么, 以及结果会是什么, 才能体验算法的奇妙, 熟悉程序的流程。理解后学生就可以模仿, 先学会走, 再学会跑, 学好了基础才能灵活运用、创造和创新。

三、实例选择

教学中实例的选择非常重要, 可以说是一节课成败的关键。而在实例选取中经常会有这样两个误区。一类是过分简单, 一眼就能看出答案, 对这类实例学生会产生疑问:“为什么这么简单的问题还要用计算机来做?”;一类是数学课上的数学题, 信息技术教师去上数学课, 无疑是没什么优势的。

兴趣是学习最好的老师, 是学生积极求知的诱因, 当学生对所学的内容产生浓厚兴趣时, 自然便能主动参与到教学过程中来, 主动构建知识。信息技术教师在选取实例的时候要尽量做到贴近生活, 有趣味性, 同时也要简单, 便于理解和实现。例如:“猜数字”、“QQ秀”、“遥控机器人”、“换位思考”、“捉蝴蝶”、“自制屏幕保护程序”、“碰碰球”等实例, 这些实例界面美观, 有趣又生动, 最主要的是这些实例是学生能力范围内可以实现的。

每个实例中都包含了不同的知识点和教学内容, 可将教学引向寓教于乐的良性循环中。

摘要:“算法与程序设计”模块的教学是信息技术教师经常探讨的一个话题。教师如何教, 学生如何学, 怎样让教师轻松地教, 让学生轻松地学?本文从模块的内容和目标谈起, 在多年实践的基础上总结了该模块教学的一些经验, 提出了“寓教于乐”的教学理念, 希望能给信息技术教师以帮助。

关键词:算法与程序设计,教学研究,教学探索

参考文献

算法与程序设计教案 篇8

【关键词】算法与程序设计;Visual Basic;探索;整合;创新思维

“万事开头难”,程序设计尤其如此。首先,对于几乎没有相关知识背景的高一学生而言,编制一个完整的程序必须先了解程序的基本结构,掌握常量、变量和表达式等概念,学会输入、输出、赋值等语句的格式,这些内容枯燥而难以记忆。其次,由于计算机在计算方面的独特优势,使计算机解决问题的技术思维方式和学生一向习惯的数理逻辑思维方式有所不同,这也给学生的学习带来了困扰。

针对上述问题,笔者做了如下尝试:

一、大胆处理教材,整合课本知识,激发学生的学习兴趣

笔者所在地区信息技术学科使用粤教版教材,高中《算法与程序设计》选修模块中选用Visual Basic语言描述算法。VB中的对象主要用于构建界面,而具体程序功能的实现则要编写代码行,因此任何一个完整的应用程序都不可能只用对象或只用语法。教材中第二章《程序设计基础》讲述VB语言基础知识和程序的基本结构及相关语句的格式。第三章《可视化编程》讲述VB中对象的使用。笔者认为在讲授时不宜将两者分开,要把VB面向对象的程序设计方法,事件驱动的编程机制贯穿于整个教学过程中。将这两块内容有机结合起来展开教学。在教学过程中,笔者始终坚持以学生已有的知识为基础,打破以课本知识的逻辑结构为顺序组织课堂教学的模式,先不讲基本概念,改用从简单的实例人手,通过让学生观看、模仿,在实际操作中去探究和领悟这些概念,并适时地加以归纳总结,让学生在轻松愉快的气氛中接受新知识。比如,在讲到循环结构中DO——LOOP语句和FOR——NEXT语句的用法时,我用DO——LOOP语句的4种形式和FOR——NEXT语句实现求解N!的过程,让学生去观察、领悟它们的异同。

二、重视实践活动环节,通过实例教学法训练学生的创新思维,培养学生的创新能力

创新思维是指人们在提出问题和解决问题的过程中,能够产生新成果的思维活动。发散思维、类推思维、求异思维等都是行之有效的创新思维形式。

VB 是一门实践性很强的课程,实例教学法是笔者在本模块教学中的常用方法。以教学的内容为依据,选择一些接近学生的生活,有趣的、有实际意义的小程序为实例。通过对实例进行理论分析,指导学生模仿,通过知识再现达到在实践中领悟知识,开拓设计程序的思路。在V B编程中,循环结构是程序设计中学起来很费劲但不可或缺,对于多重循环更不容易弄清其流程。这时可以在课堂上以现实中的问题为例子向学生提问,例如:时针每走过一格,分针将会走过多少格?秒针又会走过多少格?根据日常生活中的情况,可以形象地把分针、秒针和时针的运动打比方,这就是三重循环嵌套。

教师鼓励学生针对实例独立思考解决问题的算法,逐步引导他们改变以往单一的、逻辑的、线性的思维方式,多角度、多侧面、多方位地考察问题,并在实践活动中,借助程序的编译反馈信息检验思维成果。通过设计程序解决问题是培养学生的创新思维的途径之一。例如:在排序算法一节的教学过程中,就可以让学生思考对一组数据进行排序的多种方法(冒泡排序,选择排序,快速排序等等)从而训练学生的创新思维,培养学生的创新能力。程序设计算法中的枚举法、分治法、递推法、递归、动态规划法等等,都是对学生创新思维的有效的训练方法。

三、采用小组互助的学习方式,培养团队精神,提高协作能力

将学生分为若干组,安排一些小组的任务,让多人在一起协商、协作来完成任务,学会团队协作、集体决策,不仅适用于《算法与程序设计》的学习,还适用于日常后生活与其他学科的学习。组织学生进行研讨,在思想的碰撞中往往会产生智慧的火花。

如:学习过程的定义与调用:

教师在上机课时采用小组互助的学习方式,让组内同学互相帮助,共同提高。

教师给出上课时的教学任务:编写一个判断素数的公有过程,调用素数过程,实现①产生一个三位随机素数数组x(10);②验证一个大于2的偶数可以表示为两个素数之和;③找到四位正整数中的超级素数。

这些任务数量较多而互相有关联,小组成员内部分工,每两位同学至少独立完成其中一个小任务,然后小组成员将小任务汇总,积极讨论难点,共同攻克,使得大家不断提高能力与学习效率。

基本流程:

(1)教师下达任务后,学生完成组内分工。

(2)学生6-8人一组,每位学生首先完成所自己所分配到的任务,如组内成员遇到难点,要求组内其他同学相互协作,提供必要的帮助,如果互相讨论之后还是无法解决,则应由组长请教老师,再由组长教给其他组员。

(3)各小组成员经过任务汇总,完成整个教学任务。

(4)各小组推选代表展示成果。

(5)课后小组成员可以继续深入讨论学习。

采用小组互助式教学,营造出自由宽松的氛围,学生拥有高度的参与性、自主性,激发了学生的学习兴趣,调动了学习积极性。小组成员互相学习、互相沟通、互相帮助、互相督促。让学生在学习中学会了怎样与人交往;学会正确认识自我,尊重关心他人;学会取人之长,补己之短;学会宽容、忍让、分享。能做到倾听别人的正确见解,并予以采纳;能了解别人的困难所在,并给予帮助;能发现别人的优点,并不吝赞赏。学生在学习过程中提高了人际交往能力。

算法设计与分析课程论文 篇9

经过多轮的教学实践发现,学生之间水平参差不齐是教学过程中面临的最大问题。随着高校招生规模的不断增大,不同学生之间在基础知识、智力水平、兴趣爱好、学习动机和学习方法上存在较大的差异性。相同的教学内容,对于一些基础较好的学生来说理解难度不大,但对于一些基础较弱的学生来说,则难以理解。因此,如何尊重学生个性差异、发展学生个性特长,在考虑学生整体发展的同时兼顾学生的个性特长发展,从而最终提高各个层次学生的综合素质是算法设计与分析课程的教学改革实践中需要重点关注的问题。

通过多次与学生的深入交流发现,学生在这门课程的学习过程中面临如下问题:

1)课程教学内容难度高。课程需要学生掌握常见的算法设计策略,如分治法、动态规划法和贪婪法等,对设计出的算法能进行正确性证明和复杂度分析。很多知识点抽象层次高,需要学生具备一定的数学分析能力,同时,通常算法内部逻辑比较复杂,因此需要学生具备较强的编程功底。笔者在讲授这些知识点时,均假设学生具备一定的数学分析能力和编程基础,但实际情况却不容乐观,很多学生在大一和大二的时候并未重视相关课程的学习,很多知识点都已经还给授课老师,在课堂上需要花费一定时间帮助学生回忆这些知识点。同时,部分学生因编程经验较为匾乏,难以顺利地将伪代码转化成可运行的程序代码。

2)学生问题求解能力弱。为辅助学生对知识点的理解,授课老师一般在实例选择时均采用一些经典实例,例如归并排序、最小生成树等。这些问题在一些预修课程(例如高级程序设计语言或数据结构)中均进行过讲解,因此理解起来难度不大。但是,学生在上机实践时,面对老师布置的新问题,却很难将学到的知识进行灵活运用,难以选择合理的算法设计策略,并借助熟悉的高级编程语言去解决。

3)学生自主学习意识薄弱。该门课程本身课时较少(仅有犯学时),其中8学时为上机实践,在剩余的24学时内,仅能讲授基本的算法设计与分析策略。学生即使了解常见的算法设计与分析方法,但现实生活中问题千变万化,更需要学生灵活使用学到的知识。因此,要提高学习效果和实践能力,需要学生在课外花费更多时间,阅读相关资料和进行大量编码。但是,授课过程中发现,真正能够完成自主学习的学生并不多。一方面,很多学生长期受应试教育的影响,习惯于填鸭式的教学模式,同时,学习时具有较强的功利性,很多学生普遍有应付考试和及格万岁的思想,有的学生甚至为了应付老师的作业检查,大量抄袭作业,仅做一些表面上的修改来敷衍了事。另一方面,即使有少量同学对新知识比较好奇,愿意自己去积极探索,但在选择相关经典资料时经验不足、效率较低,因此,需要有经验的老师进行有效引导。

目前高校很多教室都配有多媒体设备,造成大部分专业课程均采用多媒体课件方式进行授课。多媒体课件虽然具有丰富的表现力、良好的交互性和较高的共享性,但与其他核心专业课程相比,算法设计与分析课程的理论程度更高,数学推导较多,因此笔者认为,采用板书为主的教学方式可能会效果更好。为验证该推测,对Leiserson教授和Demaine教授开设的麻省理工学院公开课的在线视频进行分析,发现他们在授课时,绝大部分教学内容均采用板书方式进行讲解,通过在黑板上一步一步地推导,在一些关键节点上与学生充分交互,使得学生可以更好地掌握算法设计与分析过程中的一些重要技巧。笔者在实际教学中通过精心设计板书,取得了较好的课堂效果。

综上所述,在学生水平参差不齐的情况下,针对算法课程教学中存在的问题,提出了一系列教学改革措施以提高不同层次学生的计算机问题求解能力。其中将教学问题与教学改革措施的对应关系,以及教学改革措施与不同层次学生的对应关系进行总结。而且具备良好的交叉学科基础和文化底蕴,能培养出满足市场需要的复合型人才。

算法设计与分析课程的心得体会 篇10

以最少的成本、最快的速度、最好的质量开发出合适各种各样应用需求的软件,必须遵循软件工程的原则,设计出高效率的程序。一个高效的程序不仅需要编程技巧,更需要合理的数据组织和清晰高效的算法。这正是计算机科学领域里数据结构与算法设计所研究的主要内容。一些著名的计算机科学家认为,算法是一种创造性思维活动,并且处于计算机科学与技术学科的核心。

在计算机软件专业中算法分析与设计是一门非常重要的课程,很多人为它如痴如醉。很多问题的解决,程序的编写都要依赖它,在软件还是面向过程的阶段,就有程序=算法+数据结构这个公式。算法的学习对于培养一个人的逻辑思维能力是有极大帮助的,它可以培养我们养成思考分析问题,解决问题的能力。

如果一个算法有缺陷,或不适合某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂性和时间复杂度来衡量。算法可以使用自然语言、伪代码、流程图等多种不同的方法来描述。

计算机系统中的操作系统、语言编译系统、数据库管理系统以及各种各样的计算机应用系统中的软件,都必须使用具体的算法来实现。

算法设计与分析是计算机科学与技术的一个核心问题。因此,学习算法无疑会增强自己的竞争力,提高自己的修为,为自己增彩。

那么,什么是算法呢?算法是指解决问题的方法或过程。算法满足四个性质,即输入、输出、确定性和有限性。为了了解算法,这个学期马老师带我们走进了算法的世界。

马老师这学期提出不少实际的问题,以及解决问题的算法。我在此只说比较记忆深刻的问题,即0-1背包的问题。

0-1背包问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。问题的名称来源于如何选择最合适的物品放置于给定背包中。

首先,0-1背包问题具有最优子结构性质和子问题重叠性质,适于采用动态规划方法求解。动态规划算法与分治法类似,其基本思想是将待求解问题分解成若干个子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,用动态规划法求解的问题,经分解得到的子问题往往不是互相独立的,若用分治法解这类问题,则分解得到的子问题数目太多,以至于最后解决原问题需要耗费过多的时间。动态规划法又和贪婪算法有些一样,在动态规划中,可将一个问题的解决方案视为一系列决策的结果。不同的是,在贪婪算法中,每采用一次贪婪准则便做出一个不可撤回的决策,而在动态规划中,还要考察每个最优决策序列中是否包含一个最优子序列。

用动态规划法解决问题的思路如下:

最优决策序列由最优决策子序列组成。假设f(i,y)表示剩余容量为y,剩余物品为i, i+1, „, n时的最优解的值,即:

f(n,y)= Pn,if y≥Wn f(n,y)= 0, if 0≤y≤Wn 和

f(i,y)=max(f(i+1,y),f(i+1,y-Wi)+Pi)y≥Wi f(i,y)=f(i+1,y)0≤y≤Wi 这个方程非常重要,基本上所有跟背包相关的问题的方程都是由它衍生出来的,所以有必要将它详细解释一下:“将前i件物品放入容量为y的背包中”这个子问题,若只考虑第i件物品的策略(放或不放),那么就可以转化为一个只牵扯前i-1件物品的问题。如果不放第i件物品,那么问题就转化为“前i-1件物品放入容量为y的背包中”,价值为f[i-1][y];如果放第i件物品,那么问题就转化为“前i-1件物品放入剩下的容量为y-Wi的背包中”,此时能获得的最大价值就是f[i-1][y-Wi]再加上通过放入第i件物品获得的价值Pi。

用贪心算法解决问题的基本思路如下:

由所有解元素组合成问题的一个可行解;从问题的某一个初始解出发逐步逼近给定的目标,以尽可能快的地求得更好的解。当达到某算法中的某一步不能再继续前进时,算法停止。

实现该算法的过程: 从问题的某一初始解出发;while 能朝给定总目标前进一步do求出可行解的一个解元素;

该算法存在问题:首先不能保证求得的最后解是最佳的;其次不能用来求最大或最小解问题,并且只能求满足某些约束条件的可行解的范围。

回溯法是一个既带有系统性又带有跳跃性的的搜索算法。所以0-1背包问题也可以用回溯法解决。其基本思路是可先将物品依其单位重量价值从大到小排序,此后只要顺序考察各物品即可,这是为了便于计算上界。在实现时,由bound计算当前结点处的上界。在搜索解空间树时,只要其左儿子节点是一个可行结点,搜索就进入左子树,在右子树中有可能包含最优解是才进入右子树搜索。否则将右子树剪去。

算法与程序框图例析 篇11

例1 下列说法正确的是 .

1任何一个算法都离不开顺序结构;2循环结构中必须有条件结构,条件结构中也一定有循环结构;3任何一个算法都必须同时含有三种基本逻辑结构;4三个基本逻辑结构都只有一个入口,一个出口.

解析 1任何一个算法都离不开顺序结构是正确的;2前一句是对的,后一句应为条件结构中不一定有循环结构;3一个算法应根据需要合理选择三种基本结构,并非必须全部包含,故说法错误;4不能将判断框的出口和条件结构的出口混淆,一个判断框有两个出口,而一个条件结构只有一个出口,说法正确. 综上所述正确的说法有14.

例2 设计一个算法,使得任意输入两个数,按从大到小的顺序输出,并画出程序框图.

解析 用[a],[b]表示任意输入的两个数,为了节约变量,把它们重新排列后,仍用[a],[b]表示,并使[a≥b].

算法步骤如下:

第一步:输入两个数[a],[b];

第二步:比较[a],[b],并且把大者赋给[a],小者赋给[b];

第三步:按顺序输出[a],[b].

程序结构如图1:

图1

例3 程序框图2表示的算法运行的结果为 ;其功能为 .

图2

解析 第一次运行,当[i=2]时,

[a=22],[S=1+22<31],[i=i+1=3].

第二次运行,当[i=3]时,

[a=32],[S=1+22+32<31],[i=i+1=4].

第三次运行,当[i=4]时,

[a=42],[S=1+22+32+42<31],[i=i+1=5].

第四次运行,当[i=5]时,

[a=52],[S=1+22+32+42+52>31],[i=i+1=6].

因为[S>31],所以终止程序,此时[i=4] ,输出4.

故运行的结果为4,其功能为求出[1+22+32+⋅⋅⋅][+n2<31]成立的[n]的最大整数值.

例4 某超市促销,规定购买货物满200元或超过200元,优惠3%,不足200元不予优惠. 输入一个顾客购物的总价,计算顾客实交的购物款,并画出程序框图.

解析 根据题意,设顾客购买货物的总价为[x]元,则顾客实交的货物款为[y=x,(x<200),x(1-3%),(x≥200),]程序框图如图3:

算法与程序设计教案 篇12

相比较而言,在选修模块当中《算法与程序设计》模块比《网络技术》模块思想性更高、系统性更严、灵活度更高、难度要求也更深。因此,复习工作必须讲究技巧性,不能用题海和死记硬背方式来训练学生。

一、复习要明确主线,狠抓基础

课本章节设置无疑是科学的,但问题是复习过程是不是也一定要按照这样的安排来照搬宣科?经过分析,笔者认为学生毕竟已经对编程有了初步了解,因此,如果还是按照课本安排的次序和内容一一宣讲,肯定是针对性不强、效率不高。我们必须要从知识点中找出重中之重,然后归纳出一条鲜明的、简洁的主线。这样复习具有针对性,才能事半功倍。

算法与程序设计课程其实有两个层面的要求:一是学生要有算法思想,二是学生要有编程技能。算法思想,即先做什么后做什么,这样要靠平时的熏陶和养成;编程技能,是对编程语言的运用能力,这是学生最薄弱的地方,因为知识点多、散,平时复习巩固的时间又少。绝大多数学生编程能力差,所以,我们的复习工作要在编程语言上下大功夫。

另外,对于相对较难的模块应该如何对待?比如说递归、排序等。一些教师给学生复习的过程中,会过于注重这些,花好多课时在这些难点上。笔者认为,从目前学业水平测试对高中学生的要求来看,只要他们具有上述思想理念,能解决基本问题就可以了。比如递归,只要能用来解决如10的阶乘、斐波那契数列求解等经典问题足矣。所以,复习应抓基础,不要死抠难点,不能把难点作为复习中的主要环节。

在上学年的复习中,我们教研组制定了复习主线:数据类型与变量常量定义(含数组)→基本控制语句→基本运算与内部函数→常用控件及用法→经典题型练习。依据复习主线,教学安排就显得很简洁、紧凑,基础重点也显得很突出。

二、复习要注重细节,少出错误

复习计划的简洁并不意味着课堂无具体内容,恰恰相反,一些关键环节我们要多讲、多留意细节。

比如:数据类型的复习环节,是不是把课本上的vb数据类型表让学生背熟就可以了呢?之前笔者就经常碰到学生不明白“123”和123有什么区别,常问“1234”内容中包不包含引号,为什么有时候非要用val等等。是学生没去看数据类型表吗?显然不是。这就是一些细节问题,是我们没有把数据类型中容易出错的理解点破。

再比如就有学生总不理解for-next循环语句中最后循环变量的值为什么要超出终值,这是他没有学会语句语法格式吗?这是对于程序控制结构运行过程不了解,是我们只注重语法结构而忽略重点讲解程序执行过程的后果。

还有学生给文本框中赋内容,不管文本框有没有、名称是什么,直接写label1.caption=”XXX”。教师要强调:对于对象属性的设置一定要先看看对象的名称。

三、复习要把握规律,善于分类

学生对编程学得如何,最终是要看应用的,在测试中就是看题目会不会解,所以,适当的训练做题必不可少。由于信息技术学业水平测试采用的是题库方式,因此,很多教师建议采用题海战术,多做题目必能“提高水平”。但笔者是反对题海战术的,因为它效率低、学生学得也痛苦,更何况题库是不断更新和扩充的。如何让学生学得轻松、快乐是我们一直追求的目标。复习的最后一个环节经典题型练习就是为避免学生打题海战而设置的。

要想让学生免于题海之苦,教师就必须深入题海对题目类型分类,总结出一些规律性的东西。

比如:我们备课组就把题目归纳出几类常用题型:(1)打印题型;(2)累加累乘类型;(3)控件属性修改类型;(4)穷举搜索类型。

针对打印题型,我们给出的一般规律是:

(1)双重循环。

(2)外层循环次数等于行数。

(3)内层循环具体打印每行图形,循环次数一般为行数的表达式(一般能回答出第i行打印几个图形即可)。

(4)内层循环中的print语句最后不能回车,需要加;(或者,)。

(5)内层循环结束要回车,一般固定有print。

针对累加累乘题型,我们给出的一般规律是:

(1)要定义累加器变量或累乘器变量。

(2)累加器变量或累乘器变量要赋初值,注意累乘器变量不能为0。

(3)已知累加或累乘范围的,用for-next结构,循环体内一般为s=s+i或s=s*i型。

(4)未知累加或累乘范围的,用do-loop结构,特别要注意循环条件的临界状态(如能不能等于)。

上一篇:致中国移动巴中公司的感谢信下一篇:小学六年级题记的范文