时间:2024-06-03
何勇
【摘要】 笔者认为在高中程序设计模块教学中教学重点应放在程序算法教学,而语句、语法教学应该是我们程序算法教学的载体。教学中用自然语言描述算法的能力才是我们课堂教学对学生的核心培养目标,只要有一定的语句、语法知识,学生就能把自然语言描述算法用计算机语言表达出来。
【关键词】 高中 信息技术课 编程处理模块 教学设计
【中图分类号】 G633.67 【文献标识码】 A 【文章编号】 1992-7711(2017)05-169-02
1.教学设计应淡化语句教学,注重对算法的教学
教学实例1
怎样求已知两个数中的最大值和最小值?
第一步:給出具体的两个数值(如:9和5),学生可以用数学方法很快比较出来(是9);
第二步:这时把要求提高一些:已知两个数变为A、B,要求学生比较;
学生可能用数学方法进行讨论:A>Bmax为A、min为B
A 第三步:要求学生用代数式把最大值计算出来? 这时学生就出现思考的难点,体会到找不到方法,教师可以把握时机引导一下学生,重点找出两数的关系,得到两个数中的最大值和最小值的关键是两数的差,把最小值加两数的差就能变成最大值,这个问题就解决了:MAX=(A+B+INT(A-B))/2,反知:MIN=(A+B-INT(A-B))/2 对于高中生初学者来说,算法还不在于优,而在于是否容易理解,让学生能接受。 教学实例2 如:编程交换两个变量x、y的值? 有两种算法: 算法1: ①设一个中间变量t,将x中的数据送给变量t,即t=x; ②将y中的数据送给变量x,即x=y; ③将t中的数据送给变量y,即y=t. 在讲授时把这种算法与交换两杯水的实验相结合,使知识通俗一些,学生很容易理解。 算法2: ①x=x+y; ②y=x-y; ③x=x-y. 通过三步计算完成交换,是一种优的算法,学生会是一团雾水,不知所云。所以在教学中要把握算法的深度,循序渐近,以学生理解作为课堂教学的标尺。 2.程序设计教学设计要注意对基本算法的总结 在教学就必须要总结适用于高中生学习的理解的基础算法。 求A、B两整数相除后的整数部分的算法:INT(A/B)*B 求A、B两整数相除后的余数的算法:余数=A-INT(A/B)*B 对一个数X的四舍五入算法:INT(X+0.5) 对一个数X的保留小数位N位并四舍五入算法:INT(X*10^N+0.5)/10^N 计算A、B两数的最大值算法:MAX=(A+B+INT(A-B))/2 计算A、B两数的最小值算法:MIN=(A+B-INT(A-B))/2 提取一个整数A中的十位数数值和百位数数值及N位数数值的算法: 十位数数值=A/10-INT(A/100)*10 百位数数值=A/100-INT(A/1000)*100 N位数数值=A/N-INT(A/(N*10))*N 判断数A为奇数或偶数的算法:奇数:A/2<>INT(A/2) 偶数:A/2=INT(A/2) 判断数A能否被B整除算法:整除:A/B=INT(A/B) 不能整除:A/B<>INT(A/B) 这些算法是后面编程的基础,对这些算法的教学一定要做到从简单到复杂,再与一些具体的程序问题相结合,循序渐近,通过这些算法的讲解和实践,就可以提高学生学习编写程序兴趣,从而树立在程序设计“重算法淡语法”的学习理念。 3.教学设计要注意教学的关键点,知识的突破口 程序设计教学有一些程序思维方式高中生不易理解,这就是教学的关键点,怎样突破这样的教学关健点是我们课堂教学的难点。应紧紧抓住教学设计中的由易到难、循序渐近的法宝。 如:在for-next循环程序教学中,怎样提高到累加应用就是教学中的难点。 在实践教学中可以采用由易到难、循序渐近的方式: 教学实例3 例:计算1+2+3+4的问题? S=0 X=1 S=s+x X=2 ‘关注X的变化可以写为x=x+1 S=s+x X=3 ‘同样可以写为x=x+1 S=s+x X=4 ‘同样可以写为x=x+1 S=s+x PrintS End 引导学生观察X的变化,是一种数数的累加程式,则程序变为 S=0 X=0 X=x+1 S=s+x X=X+1 循环体 (重复执行部分) S=s+x X=X+1 S=s+x X=X+1 S=s+x PrintS End 这样就可以引导学生用学过的for-next循环构建循环简化程序: 明确循环体为:X=X+1 S=s+x 循环次数(循环体出现次数)为4次, S=0 X=0 Fori=1to4
X=X+1
S=s+x
Nexti
PrintS
End
再进一步观察X与i的相似性,把程序间化为:
S=0
Fori=1to4
S=s+i
Nexti
PrintS
End
最后进行扩展求1+2+3+4……+100的和,这样for-next循环程序教学中,怎样提高到累加应用的教学难点就赢刃而解了。
4.培养学生能够独立地编写程序,是教学设计中最大的难点
在课堂教学中,一般采用以下几步措施来逐渐使学生能够独立编一些简单的程序。
第一步精讲例题:详细分析其算法,逐一列出解题步骤,给出完整程序;
第二步让学生阅读程序,写出程序执行结果。这一步十分关键,读懂理解人家的程序是以后自行独立编程的前提,一般精心挑选很多程序题,给学生来阅读理解;
第三步让学生做程序填充题和程序改错题,即给出相应程序,把其中一些关键地方留空,让学生填充,或在程序中提供一些错误语句,要求学生修改正确;
第四步出一些类似例题的编程问题,让学生模仿完成;
第五步让学生独立编写简单的程序。
教学实例4
为了让学生独立解决求s=1-1/2+1/3-1/4+……+1/99-1/100的程序,我首先详细分析了求s=1+2+3+……+99+100的编程,程序如下:
S=0‘S的初始值为0
ForI=1to100step1‘循环100次,步长为1
S=S+i‘循环体
Nexti
Print“S=”;S
End
然后,我將上题中Fori=1to100step1这一语句略作改动
①Fori=1to100step2;求100以内奇数之和
②Fori=0to100step2;求100以内偶数之和
其余不变,让学生阅读程序并分析。
再将上题中S=S+i这一语句改成S=S+1/i,其余不变,那又如何呢?
学生很容易得出程序实际上是求S=1+1/2+1/3+……+1/100,进一步引导学生,这个程序有什么问题?
再引导学生思考,如要求S=1-2+3-4+……+99-100的编程,上题中循环体S=S+i应该怎样改动?结合相关数学知识,学生很自然得到正确结果S=S+i*(-1)^(i+1)。有了上述的层层铺垫,相信学生是能够独立完成s=1-1/2+1/3-1/4+……+1/99-1/100的程序代码设计的。
在程序设计教学中,要明确重算法的设计思想,而在教学的内容和深度上应根据实际情况,不同层次学校的学生差异很大,分别加以调整。让学生了解程序设计过程,重点撑握一些简单的算法设计,能编一些简单的程序。总之,产生结论的推理过程往往比对结论的记忆更重要,掌握积极而活跃的思维方法,才是编程的根本,也是学生终身受用的本领。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!