首页 理论教育 信息技术辅助算法教学的应用探讨 

信息技术辅助算法教学的应用探讨 

时间:2023-02-11 理论教育 版权反馈
【摘要】:信息技术辅助算法教学的应用探讨陈迪一、研究背景算法设计具有极强的逻辑性,能够培养和提高学生的逻辑思维能力和分析问题、解决问题的能力。因此,大多数信息技术教师都会选择VB语言或C语言辅助算法教学。

信息技术辅助算法教学的应用探讨 

信息技术辅助算法教学的应用探讨 陈 迪

一、研究背景

算法设计具有极强的逻辑性,能够培养和提高学生的逻辑思维能力和分析问题、解决问题的能力。而单纯地研究抽象的算法理论,对于大多数从未接触过算法知识的高中生而言,自然是相当枯燥且不便于理解的。因此,大多数信息技术教师都会选择VB语言或C语言辅助算法教学。但笔者根据教学经验及对学生的调查发现,学生对程序设计的兴趣远不如Flash,这从历次学生的选课情况也可以明显地看出——选修Flash制作的学生远远多于选修程序设计的学生。这也许与网络普及使Flash在学生中的知晓度较高有关。“兴趣是最好的老师”,学生对所学内容产生了兴趣,就能积极参与到课堂教学中,学习也会获得事半功倍的效果;反之,如果学生对所学内容不感兴趣,将导致学习效率低下。为了让学生乐于学习算法设计,笔者开始探究如何将学生感兴趣的Flash结合到算法教学中去。

二、信息技术在算法教学中的应用

ActionScript是Flash专属的程序设计语言,它能让我们在制作Flash动画时,具有极大的设计弹性与发挥空间。ActionScript是根据JavaScript标准所设计的。从严格意义上说,它只是一种解释式的描述语言,不是程序设计语言,但它却具有一般程序设计语言的基本特性,如:它可以使用变量数组、函数、子程序等,有各种判断、循环等丰富的控制结构。它的语法规则并不像一般程序设计语言那样十分严格,但却可以制作出一般程序设计语言不擅长的漂亮界面,易学且具有相当的吸引力。笔者在实践中发现,用它来辅助算法教学,不但有利于学生掌握抽象的算法思想,而且对学生将来学习其他程序设计语言也具有一定的帮助与启发作用。

高中算法教学的核心内容是顺序、分支、循环三种算法基本结构,以及枚举、递推等一些常用算法的应用。Flash中的ActionScript可以实现教学中可能涉及的各类算法,还可以引导学生自己设计界面及其实现形式,发挥学生的创造力,提高他们的审美情趣。在教学中,笔者逐渐总结出了Flash中两大算法的实现形式。

(一)类C语言输出

Flash软件中,为方便设计人员对ActionScript语句进行调试,引入了trace命令。此命令可用于程序解析,并把结果输出在Output窗口中。这个功能一般用于测试影片时检查影片的运行状况,尤其是变量的变化情况等,但这恰恰可以用来实现最基本、最简单的输出功能。

案例1

法设计要求:交换两个变量值。

算法实现步骤:新建一个Flash文件,在时间轴第一帧添加如下Action指令:

a=2;b=3;                //为变量a,b分别赋初值2,3

trace(a);trace(b);trace("");  //输出a,b的值,并换行

temp=a;a=b;b=temp;          //此三步完成交换两变量值

trace(a);trace(b);        //输出a,b的值

其中,“;”表示语句结束。此程序代码较简单,因此将多行语句放在一行上书写,使程序更紧凑。写完代码后,按〈Ctrl〉+〈Enter〉键测试影片即可。

从此例中可以看到,程序的写法基本是类C语言的方式,但比起C语言或VB语言,输出语句的格式要简单得多,而且更重要的是,变量并没有被声明。在Action-Script中,变量的使用并不很严格,不必对变量(包括变量类型及访问权限等)进行强制声明。可以用var命令声明变量为局部变量,若是未声明,则默认为全局变量。当然,对于一般的小程序,可以将所有变量都作为全局变量使用,而省去声明。这些对于初学者来说,都能减少出错的机会。

若将上例改为a,b初值由输入而得,则只须在舞台中添加两个文本框,在属性面板中将它们改为Input Text,分别取实例名为a_txt和b_txt;再分别添加边框线,使得运行程序时能看到输入框;设置好字体、字号等文本框属性后,再添加一个按钮,并删除原来第一帧中的Action代码;最后,在按钮上添加如下Action指令(算法流程图如图1所示):

on(release){         //为按钮添加动作

  a=Number(a_txt.text);  //将a_txt文本框中输入内容赋值给变量a

  b=Number(b_txt.text);  //将b_txt文本框中输入内容赋值给变量b

  trace(a);trace(b);trace("");

  temp=a;a=b;b=temp;

  trace(a);trace(b);

}

img59

(www.xing528.com)

图1 实现交换两个变量值的算法流程图

教师可以再要求学生在此基础上完善、美化界面,如在界面中加上一些提示文字、背景等,增加学生探究的兴趣。随后,教师可提高算法难度,如改成根据所输入的数据求和、求平均值,甚至将数据从2个增加到3个、4个,甚至更多。

案例2

算法设计要求:已知某地出租车车费的计价规则为:3公里以内(包括3公里)为10元,超出3公里的部分每公里增加2元。实现根据输入的路程输出车费的算法。

算法实现步骤:新建一个Flash文件,在舞台中添加一个输入文本框(Input Text),命名为s_txt;设置文本框属性后,再添加一个按钮,并在按钮上添加如下Action指令(算法流程图如图2所示):

on(release){

 distance=Number(_root.s_txt.text);  //以下为if…else条件判断语句

 if(distance〈=3){

  money=10;

 }else{

  money=10+(distance-3)*2;

 }

  trace("车费为"+money+"元!");

}

img60

图2 计算出租车车费的算法流程图

(二)舞台界面交互输出

用trace命令输出结果虽然方便,但无法设置输出界面,只能在测试状态下才能使用,且无法脱离源文件而仅通过运行swf文件在Flash Player中看到输出结果。若要解决这一问题,则须使用第二种方式,即在舞台上显示输出结果。

案例3

算法设计要求:对案例2中的算法作修改,使输出结果显示在舞台界面中。

算法实现步骤:在舞台上添加一个文本框(文本框长度稍长些)用以显示输出结果,在属性面板中将其改为动态文本Dymanic Text,实例名为ans_txt,设置适当的字体、字号、颜色等。然后将原来添加在按钮中的“trace("车费为"+money+"元!");”指令改为如下语句:

ans_txt.text="车费为"+money+"元!";  //设置ans_txt文本框的显示内容

教师可以要求学生用类似的方法修改图1所示的算法,还可将案例2中的题目作进一步修改,提高算法难度,如:“当路程超过10公里时,超过部分每公里3元;若要计算等候时间,则每等候5分钟车费增加2元。”教师可以提示学生用if…else(if…else)…条件判断,以及再增加一个输入文本框以接收等候时间等,组织学生讨论这些问题的解决方案。最后,教师要留给学生一些思考的空间,将自己的成果加以完善、美化。另外,教师可设立一些激励机制,如让学生相互比较、评价,选出最佳的算法实现方案,学生会很乐意去完成这些任务。

教师还可以引导学生利用ActionScript中if…else(if…else)…,switch…case…等分支判断,以及for,while,do…while等循环语句,实现更多、更复杂的算法。

本文所述仅是笔者初步探索Flash辅助算法教学的心得。学生只须掌握Flash的一些简单操作,便有能力完成上述这些例子。算法和程序设计有着密切的联系,教师在教授算法的同时,也要让学生了解如何实现算法。教师还可以采取一些教学策略激发学生的兴趣,比如以上案例中所运用的“小步子”教学法,将教学目标分成几个阶段,在学生完成基本要求的基础上逐步提高难度,引导学生进入更有挑战性的学习,使学生在逐步完成各阶段目标的过程中,不断感受到成功的喜悦和学习的乐趣。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈