“算法与程序设计”教学的几点体会
2016-12-12姚帅华
姚帅华
摘 要: 算法与程序设计是高中信息技术中对学生思维严谨性要求较高的一个模块,虽然不在必修课之列,但是对学生的逻辑能力的提高有非常大的帮助。在学生学有余力的条件下,做好“算法与程序设计”教学,将会使学生的学习能力得到发展。
关键词: 信息技术 高中教学 心得体会
算法与程序设计这个模块在高中的教学体系中不在主流之列,涉及信息技术程度较深。但是算法与程序设计的内在逻辑却是高中的关键思维,在数学必修3中算法设计成了独立的一章,占有较大比重。笔者以VB语言为例,从实例教学、上机训练、设计提高三个方面,分享在教学过程中的一点心得体会。
一、呈现实例,确立概念
在大家的印象中,程序设计就是所谓的敲代码,一行一行,无穷无尽。事实上程序设计相互独立且相互联系。代码的意义在于实现某一项功能,众多功能就组成了一个程序。因此程序设计的教学也是模块化的,呈现一个个实例,让同学们明确程序的概念。
以一个求平均成绩的程序为例。求平均成绩的算法比较简单,核心算法是一个加法配合除法。这是一个非常简单的例子,但是涉及基本概念,可以作为一个实例呈现给学生。具体代码如下:
Dim a As Integer,b As Integer,c As Integer,d As Integer,e As Integer,f As Integer
a=Val(InputBox(“输入语文成绩”)),b=Val(InputBox(“输入数学成绩”)),c=Val(InputBox(“输入英语成绩”)),d=Val(InputBox(“输入物理成绩”)),e=(a+b+c+d),f=e/4,Print“总成绩;”;e,Print“平均成绩;”;f,End Sub
在这个例子中,我先明确vb语言的概念。首先dim是进行定义的动作,后面紧跟的就是变量。一个程序离不开变量,当然也就离不开dim语句。a,b,c,d就是本程序中的变量,变量起到传递值的作用,是程序中的“搬运工”。“as”后就是变量的类型,在本程序中变量类型为“integer”,即整数型变量。接下来的几个带有“=”号的语句,就是本程序中实现功能的主要语句,不同的程序有着各种各样的形式。在这一部分,通常是一些功能性的函数和赋值。明确这个概念,程序设计的主体框架就能建立起来了。在程序的最后,往往有“print”等语句进行输出,形式不一而足。“End Sub”则是整个程序的结束,没有实际的功能,而作为一个间隔的符号。
初识VB语言,很多概念一拥而入,实在难以掌握概念。对于基础的概念定义来说,算法与程序设计中的说法比较抽象,难以把握其中的内涵。因此,从多个方面来讲,用一个实例进行概念的认知,是非常必要的。
二、上机作业,强化练习
程序设计有个显著的特点,就是严密性。找“bug”(漏洞)是程序设计中最令人头痛的事情,而且非常浪费精力。对于VB程序设计来说,严密设计还可以用电脑程序来辅助。正因为这样,程序设计不能与上机实验分割开来。
以VB程序调试功能为例。我在教学过程中反复强调上机操作的重要性。然而在课堂上我只能精心讲解案例,介绍基本操作,留给同学们的时间很少。在上机课上的时间也很有限,因此我特别重视上机实验这段时间。我设计了一些上机任务,供同学们在上机时强化练习。其中,我突出说明了调试对于上机操作的作用。由于程序设计的代码繁多,我也不可能把同学们各自的“bug”都找出来,因此调试是一种自主评判、修正的方式,适合同学们在作业中加以运用。在正常视图下,点击菜单栏中的“视图”按钮或者按下快捷键“F8”,即可开始逐语句调试程序。如果被调试语句有问题,字体就会被标红,我们需要对标红的语句进行仔细审查,对与该语句相关的语句要检查是否逻辑有误。调试是上机作业中一项必备的技能,让程序实现功能,调试无误后,该程序基本就可以确认合格了。
三、课程设计,巩固技能
(一)理解范例,完善思维。
课程设计是程序设计的最终考核。高中阶段的算法与程序设计学习,只需停留在了解的层面就可以了,课程设计的要求只是能够独立设计一个简单的小应用。这种应用与单独的程序不同,有着高度的独立性,对学生的思维严谨性有着更高的要求。
以期末考试成绩统计软件作为一个讲解的范例。下面是部分代码:
Private Sub fenshu_KeyPress(Index As Integer,Key Ascii As Integer),If KeyAscii<48 Or KeyAscii>57 Then,If KeyAscii=46 Then,KeyAscii=46,Else,KeyAscii=0,End If,End If,End Sub
这段代码的作用是将输入文本框中的内容限制为小数和小数点。其实从全局来看,限制文本形式是一个非常精细的环节。但是输入内容如果不加限制,那么影响到的是数据源,最后成绩计算会出现问题。程序设计者当然知道成绩输入框要输入数字,那么设计者在调试的过程中会想当然地输入数字进行调试,从而忽略限制文本形式的问题。那么这样的话,整个程序设计出来,肯定是要出现问题的。讲课程设计就要讲它的注意点,注意点其实就是一些想不到的细节。
(二)自主设计,拓展提高。
课程设计是综合技能的考验,学生最终的目标是自主完成。当然,完成课程设计,即独立完成一个简单应用的全部代码和组件,还是有一定难度的。这部分教学还是以拓展提高为目的,不做硬性要求。
在基本的教学任务完成之后,我还安排了课程设计。设计以简单功能的应用为主,并且各个题目都有近似的范例作为参考,基本就是照猫画虎。课程设计的选题有很多,功能也各具特色,激发了同学们的兴趣,其实无论结果,这就已经达到教学目的了。不加入“考试”这种压力元素,课程设计其实是一个完美的结课手段。大部分同学都运用“排比”的手法堆积语句,就可以实现程序的基本功能。例如:
If song.Value=True Then,Label.FontName=“宋体”,End If,If fangsong.Value=True Then,Label.FontName=“仿宋”,End If
简单的排比语句,加上细节修饰,完成课程设计问题不大。
自主课程设计本身不是一项考核,更像一个引导。一行行敲代码看不到希望,将代码组成一个小应用,就增强了学生的成就感。任何学习都离不开自主,让学生渐渐独立思考,才是最终的教学目标。
参考文献:
[1]浦晓英.案例教学法在高中算法与程序设计中的应用探索[J].中小学电教,2014(3).
[2]赵楠楠.高中《算法与程序设计》课程教学的改革[J].科技风,2014(18).