中学信息技术课程中程序设计课型教学探究

2019-12-09 01:55严树周雪莹严函
广西教育·B版 2019年8期
关键词:逻辑思维程序设计算法

严树 周雪莹 严函

【摘 要】本文论述中学信息技术课程中程序设计课型的教学策略,针对学生在学习算法与程序设计课时欠缺符号和概念的理解能力、欠缺将复杂问题分解的能力、阅读程序代码能力差和缺乏调试修改程序代码的能力等问题,提出形象直观引入概念、垂直分解问题、掌握程序阅读技巧、用错纠错学会调试等适用于算法与程序设计的教学策略。

【关键词】中学信息技术课程 程序设计 教学策略 算法  逻辑思维

【中图分类号】G  【文献标识码】A

【文章编号】0450-9889(2019)08B-0151-03

信息时代,信息技术成为学科与学科之间的桥梁,尤其是算法与程序设计这一部分的内容,可以最大化地训练学习者的逻辑思维能力,如果学生能很好地掌握,那么就能更好地辅助其他重点学科尤其是数理化的学习。近年来,广东、四川、福建、北京、湖南、浙江等地都将算法与程序设计纳入高中会考内容,由此可知其越来越占据着重要地位。中学信息技术课堂中算法与程序设计这一模块内容主要集中在高中阶段,其内容难度大且比较枯燥。因此,研究如何在算法与程序设计这一模块的教学中采用好的教学策略有着重要的意义。

一、算法与程序设计教学中存在的问题

(一)欠缺符号和概念的理解能力。在信息技术学科里,抽象对象或者说抽象符号占据了绝大部分,抽象对象一般只存在于意识之中,对意识中的对象进行运用,需要有一定的中介,各种符号系统就充当了思维媒介的角色。在信息技术科学或者数学中,想要表示某一具体算法或程序时,就需要借助符号或概念来表示。算法在本质上蕴含着一种符号化抽象思维的特质,因此算法与程序设计的符号有些与数学上的符号表示是相同的,但是所蕴含的含义却是大相径庭。例如,变量的赋值号意义与数学等号含义在表现形式上是一样的,但是意义却是不一样的,如果理解不清楚,往往容易出现知识的负迁移。一般负迁移的产生常在两种学习相似又需要差别对待的情境下,但是符号抽象概念的理解能力欠缺的学生,往往就会在相近的两种知识中产生混淆,因而对学习产生了阻碍作用。

(二)欠缺将复杂问题分解的能力。分解问题能力是算法与程序设计的一种重要的逻辑思维能力,学生在处理一些问题时,如果问题太难太复杂,要想他们一下子就能想出问题的解决策略,比较难做到,而且还会打击学生学习的积极性。这时候就要把复杂整体问题分解成多个子问题。算法与程序设计中,学生遇到的问题经常是难度大而且复杂的,需要很强的逻辑思维能力。因此,如何在教学中培养学生分解问题和培养学生解决问题的逻辑思维能力成了当务之急。

(三)程序语言与日常使用的语言存在差异。程序语言是计算机能够识别并执行程序的语言,本身就具有抽象性。要将自然语言的描述转换为严谨的程序,这是学生最难跨越的地方。根据调查和上课的反馈发现,有学生不知道该如何将自己的想法转换为代码。例如有的学生一到自己编写代码时,总是问老师有没有这样的例题或者程序模板,还有的学生会做题但就是不知道怎么写代码。

(四)缺乏调试修改程序的能力。程序调试时主要存在以下问题:

1.编辑错误。所谓编辑错误,就是在代码窗口输入程序代码时,编程环境会自行检查语法,当没有输入一句完整的代码或者所输入的关键词有误时,编程环境都会自动跳出一个错误提示窗口,提示学生修改所出现的错误。

2.编译错误。在写好程序时,都会先进行编译,当学生点击“启动”按钮运行程序时,编写好的代码被进行编译,此时出现的错误就称之为编译错误。当学生没有严格遵循编程的语法和规则时,就会出现编译错误。

3.运行错误。当编写好的代码正在运行且被编程环境检测期间,一个语句试图执行一个原本就不能执行的操作时,运行错误就会呈现。这种错误从代码表面上是无法识别出的,只有当学生运行程序时才能够检测到。这类错误,學生比较难发现。

4.逻辑错误。学生编写好代码,能运行并输出结果,但是所产生的结果与预期的不一样,这时候就是程序逻辑出现错误了。对于逻辑上的错误,编程环境是无法检测出来的,因此也没有提示信息,只能通过学生认真分析检查程序并进行调试修改,这对学生来说难度最大。

二、解决学生学习中难点的教学策略

(一)形象直观引入概念。形象直观地引入概念,即是将所提出的问题与学生所熟悉的生活案例进行形象生动的类比,引入概念;或者运用直观教具、视频、图片、PPT 展示及手动操作等,加深学生对概念的形象认识,将所学概念的本质理解得更为透彻。

例如在变量讲解的教学过程中,教师可以具体形象地联系实际进行教学,让学生先对知识进行感性认识,做到形象直观教学,重视揭示新知识的本质特征,加强学生对新知识的感性认知,克服知识负向迁移的影响,然后才能够在自己的大脑里形成经验和知识。

变量是某个空间的标识符,是代表某个空间的名称,在程序执行过程中,变量的值总是在变化,是新值代替旧值的过程。在程序设计过程中就需要这样的临时空间来存放中间结果和最终运算结果,而且变量是程序运行的一个动态的、可变的管理过程,不能够只是停留在表面语句解释上。但是临时空间这个概念,是看不见摸不着的,是抽象的,只有靠学生自己去想象,才能理解。显然,如果老师对变量的解释就是这样一句话带过的话,缺乏抽象思维的学生就不能理解。我们可举电脑室的管理方式这样一个例子。首先,先让学生明白变量就是某个空间位置的标识符,在日常管理中用标识符来表示空间位置的管理方法是经常用到的,给学生看表1这样的表格。

学生看到这个表格就会知道这是三年来机房的使用情况,使用时,将某个空间用 303 号和 304 号分别表示某个空间位置,而学生是随着时间的推移是在变化着的,同一个机房,因为年度不一样,使用的学生也不一样,新一个班的学生进来,老的班级学生就要出去了,这是一个动态的管理过程。

通过这样进行比较形象化知识,将知识形象化来揭示其本质特征,克服知识负迁移对思维的阻碍作用,学生能顺利地对新知识进行辨别和记忆以及运用,理解赋值过程是一个动态的过程,而赋值号也不是等号的概念。因此在教学中尤其是抽象难理解的新概念新知识,教师一定要想方设法将知识形象化和具体化,联系实际生活,直观教学,攻破难点。

(二)垂直分解问题,培养编写程序的逻辑思维能力。垂直分解就是把一个学生认为难以解决的复杂问题,分解成一连串上下联系紧密的问题。一般下一个问题的条件要从上一个问题的结果中寻找。因此,下一个问题能否解决取决于上一个问题解决的程度。垂直分解的关键点在于准确找到将问题分解的“连接点”,而分解问题的连接点寻找,一般是依于靠个人观察题目、联想、经验、比较、总结得出。将复杂问题通过垂直分解成若干个小问题,从而降低问题解决的难度,有利于问题的解决。

例如,在“循环结构”的学习过程中,首先提出一个问题,让学生用循环结构画出 200 个同心圆。这样一个复杂的问题一提出,学生就会觉得过程很复杂,不知道该从哪儿下手。此时,教师可以先让学生写出画一个圆的程序,那么学生就会知道用 Circle 函数绘制一个圆,教师再呈现程序,学生可以猜出程序的各个参数的含义。学生通过改程序的参数,可以在不同的位置画出半径大小不一样的圆。接着,教师再让学生画5个同心圆,学生就会想到重复编写五次画圆的程序。此时,教师给出的后一个问题和前一个问题就通过了相类似程序代码这一“连接点”连接起来。教师再对后一个问题进行提示、点拨,告诉学生凡是需要重复性的工作,计算机都会有自己的方法,也就是使用循环结构。接着跟学生展示使用循环结构画五个同心圆的程序代码,学生观察代码,教师再向学生展示使用循环结构画 10个同心圆的代码。学生分析教师给的代码,能够立刻领悟。

将比较难以理解的问题分割成为前后关联的小问题,问题之间的设计具有层次性和系统性,从简单到复杂。学生在解决这些问题的过程中,教师慢慢帮助学生层层推进,引导学生由基础、简单的问题不断思考,建构出相应的模型。在不断使用同一种问题解决思路解决问题的过程中,学生的能力将呈螺旋式上升,有助于锻炼逻辑思维。以后再遇到复杂的问题时,学生就可以有序地、符合思维逻辑地解决,不至于束手无措。

(三)让学生多阅读程序,熟悉程序语言。既然计算机程序是一门语言,那么它就有语言的共性。学生在编写代码时,也知道代码的基本语句,但是却无法独立地编写出代码。教师在教学中,首先,可以培养学生阅读程序的能力,让学生多观察一些程序代码,并要求学生给每一句代码都注释,不知道意思的可以自行查阅。一些专有的循环体和结构可以摘抄一下,观察多了,自然就会形成一种条件反射,先写什么后写什么,学生脑子里就会有一个明确的思路。

其次,教师要求学生在自己写代码时,一定要言之有据,每写一句代码,自己都要能解释出来该句话的意思。程序代码的编写其实是一门艺术,如果学生养成良好的编写习惯,不仅能让自己对新问题自动生成一种解决思路,还能使代码逻辑更加严谨,修改更容易、更好理解。这样坚持一段时间,学生基本能克服程序语言表达的障碍。

(四)用错纠错,学会调试。当学生在向教师请教程序调试问题时,教师可以先观察这些错误,若是很简单很明显的错误,比如字母打错,或者中英文符号切换用错,那么教师可以让同桌之间互相检查。若是学生自己或相互讨论找出了原因,他们不仅觉得很有成就感,而且对这一程序会有新的认识,今后编写代码也不容易犯相同的错误。

同时,学生若是提问比较难发现而又是很典型的问题,教师可以用错纠错,引导学生自己去发现错误。如何用错纠错呢?在教学时,教师要做到以下三点:第一,巧妙设置“错误”,因势利导。根据以往的教学经验,教师知道学生在编程时哪个地方容易出现错误,那么就可以将这个错误抛给学生,学生发现这个问题与自己的想法冲突时,就会想知道问题出现在哪,增强学生的求知欲望。第二,典型错误,集体纠正,比如循环语句用成了选择语句或者属性设置错误,这些都是典型错误,可以集体纠正。那么不管是犯错的学生还是纠错的学生,在以后的编写程序中都会多留一个心眼,考虑问题也会更加全面。第三,正误对比,促进转化。在教学中,教师在纠正学生的错误时,一定要将正确的程序和错误的程序都执行一遍给学生看,然后将学生错误的代码进行分析,修改后执行一下,让学生对比修改前和修改后的程序,学生自己就能发现问题在哪儿,进一步修改自己的代码。学生发现自己写的代码在哪一点错了,会比教师指出来还要记忆深刻。

中學信息技术课程中程序设计教学法研究任重道远,算法与程序设计的教学策略更要不断改变、不断创新,以学生为主,不断研究、不断尝试,找到适合学生个体差异和符合算法与程序设计内容的教学策略,让学生爱上学习。

【参考文献】

[1]范雪飞.高中学生算法学习的困难分析与对策研究[D].延边:延边大学,2010

[2]曹红玲.研究程序设计中的并发复杂性[J].计算机光盘软件与应用,2013(4)

[3]马小龙.VB程序设计中“五步教学法”的应用研究[J].实验室科学,2011(2)

【基金项目】2016年度玉林师范学院高等教育本科教学改革工程项目“教育技术学(信息技术)专业师范生教学技能训练与考核标准研究”(2016XJJGZX14)。

【作者简介】严 树(1982— ),女,湖北嘉鱼人,教育技术学硕士,玉林师范学院教育科学学院讲师,研究方向:信息技术教育与应用。

(责编 江月阳)

猜你喜欢
逻辑思维程序设计算法
基于OBE的Java程序设计个性化教学研究
项目化教学在Python程序设计课程中的应用
C++程序设计课程教学改革研究
医学专业“Python程序设计”课程教学改革总结与思考
Travellng thg World Full—time for Rree
学习算法的“三种境界”
算法框图的补全
算法初步知识盘点
浅析例题法在高中物理学习中的应用
通过认知规律进行逻辑思维训练刍议