论文部分内容阅读
【摘要】在程序设计教学过程中,如何解决程序设计本身枯燥、难懂这个问题,找到一条比较新颖的教学方式,一直是广大计算机教师颇感兴趣的课题。本文结合实例展示了体悟教学法、问题教学法和条件迁移教学法在程序设计教学过程中的一些具体运用,并对在程序设计过程中如何培养同学们的逻辑思维能力和抽象思维能力给予了适当的关注。
【关键词】程序设计 对象 教学法
国家新的《基础教育课程改革纲要(试行)》指出:“改变课程过于注重知识的传授的倾向,强调形成积极主动的学习态度,使获得基础知识和基本技能的过程同时成为学会学习和形成正确价值观的过程。”。我们从整体上来理解这段话,它强调课程的功能要从单纯注重知识的传授转变为体现引导学生学会学习、学会做人、学会生存;对学生的关注要从更多的关注学习结果转变为关注学生学习的过程和方法。根据这个原则,我在对本届高一年级同学组织有关VB程序设计方面的课堂教学时,做了以下几点尝试:
一、打破课本原有以知识的逻辑结构体系为顺序组织课堂教学的方式,以学生的已有知识为基础,按照学生的认知规律,遵循先易后难、先具体后抽象的原则,通过观看、模仿、理解、总结、提高五个阶段进行教学。我校高中《信息技术课》课本中有关VB程序设计方面的教学内容,象大多数教授程序设计的课本一样,一开始介绍诸如算法、流程图的画法、对象、对象的属性、方法和事件等等一系列的在程序设计中比较抽象难懂的概念,然后介绍程序的建立和运行,最后介绍VB语言基础、分支结构、循环结构和数组。从知识的逻辑结构体系考察,这样安排无可非议,但从学生的认知规律考虑,我认为把一些难懂的、晦涩的、抽象的东西放在开始来学习有两点弊端:(1)学生在毫无知识背景的前提下,要完全理解这些概念比较困难;(2)容易伤害同学们学习编程的积极性。受到一些语言知识书籍从介绍一个小实例开始来引入的启发,我决定对本届高一学生开始不讲基本概念,而是和我一起做,在做中由同学们自己在直观上先去体悟这些概念,然后在时机成熟时再和同学们一起归纳总结。所以在组织本章课堂教学时,我采用了自然过渡、类比等方法,和同学们首先一起探讨了VB软件的打开、程序的建立和保存、软件界面等方面的知识,由同学们自己探索着找出VB操作和以前所学软件的异同点。由于同学们已经学过Word应用软件,对这些相似的操作已非常熟悉,所以操作起来得心应手。然后,我给出一个求任意两个整数的加法实例,让同学们和我一起做:(1)在当前窗体内添加了三个标签、三个文本框和两个命令按钮;(2)按照如下表格设计各对象的属性:
缺省的对象名 设置的对象名 属性名 设置值
Form1 frmaddCaption求和
Label1 lblaCaption 输入被加数
Label2 lblbCaption 输入加数
Label3 lblc Caption 和为:
Text1 txta Text (空白)
Text2 txtb Text (空白)
Text3 txtc Text (空白)
Command1 cmdadd Caption计算
Command2 cmdend Caption结束
(3)在命令按钮“cmdadd”上双击鼠标左键,输入如下程序:
txtc.text=val(txta.text)+val(txtb.txt)
关闭程序编辑窗口,回到界面设计界面,在命令按钮“cmdend”上双击鼠标左键,输入如下语句:
end
关闭程序编辑窗口,按F5键运行程序。
在操作的过程当中,教师不用讲解每件事的含义,同学们通过完成任务很自然地就会体会出什么是对象,什么是对象的属性和方法,如何在界面内添加对象、设置事件等等。在此基础上,教师适当的引导同学们归纳总结一下,一切都迎刃而解。按照学生的认知规律组织教学和重视同学们的知识结构体系的建立并不是相互对立的,相反,最终同学们能否在头脑中建立完整的学科体系对于其本身能否对所学的内容有比较深刻的理解起着极为关键的作用,问题的关键在于这种学科结构体系的建立是通过外部手段强加给他们的,还是在同学学习的过程中自然形成的。
二、注意通过一系列问题的引动,来激发学生的学习主动性和加深对一些概念的理解。有一些概念之间的差别和程序的设计步骤如果只通过教师讲述,同学们在字面上可以接受,但在理解深度上往往难以达到令人满意的效果,如果能设计出一系列问题,让同学们在解决问题的过程中自己去体验,情况将完全是另一个样子。比如,为了让同学们切身感受整型变量、单精度变量、双精度变量所能保存数据范围的不同,我为同学们设计了一个如下的实验过程,首先让同学们模仿求1到50之间所有自然数的方法,在窗体的Click事件中编写一段程序,求5!,通过实验,同学们很快编写好如下程序:
dim I as integer
dim x as integer
x=1
for I=1 to 5
x=x*I
next I
print“x=”;x
按F5键运行,得出5!的正确结果。然后我让同学们把程序少许做一下修改,求10!,这时很多同学认为这还不是小菜一碟,迅速将程序修改为如下形式:
dim I as integer
dim x as integer
x=1
for I=1 to 10
x=x*I
next I
print“x=”;x
按F5键运行,结果同学们发现屏幕上并没有如预期想象的那样给出正确结果,而是显示出一个错误对话框,含义为“数据溢出”,同学们百思不得其解。这时教师提示同学们将程序做一点修改,把变量X定义为单精度,试试看运行情况如何:
dim I as integer
dim x as integer
x=1
for I=1 to 10
x=x*I
next I
print“x=”;x
再按F5键运行,计算机给出正确结果,不过结果的表达方式发生了变化。教师要求同学们再对程序做少许修改,求100!:
dim I as integer
dim x as integer
x=1
for I=1 to 100
x=x*I
next I
print“x=”;x
按F5键运行,同学们发现计算机又显示“数据溢出”。这时大家都猜测到问题可能又是出在变量所定义的数据类型上,纷纷要求老师给出办法。教师要求同学们对程序再做一点修改,把X定义为双精度变量:
dim I as integer
dim x as integer
x=1
for I=1 to 100
x=x*I
next I
print“x=”;x
再按F5键运行,计算机给出正确结果,问题解决。到此为止,教师的教学目标已基本达到。但为了进一步使同学们认识到计算机所能处理数据的范围和理论上我们所能处理数据范围的区别,可以要求同学们试着用计算机求10000!,此时大家发现PC计算机已无计可施。在本例中,程序整体变化不大,占用时间也不多,但通过如此一个操作过程,同学们对整型数据、单精度实型数据和双精度实型数据之间的区别一目了然。另外,由于一切都要求同学们自己动手动脑设计,他们在操作过程中探究和解决问题的积极性、学习的主观能动性得到了调动。
三、在教学过程中,注意通过在书本原有程序的基础上逐渐改变和增加条件的方法来提高同学的综合编程能力。例如,同学们在学习FOR……NEXT循环时,书本内给出了一段求前100项自然数和的程序。这段程序在同学们弄懂FOR……NEXT循环之后,理解起来是并不困难的,为了提高同学们的编程能力,我要求同学们对原程序做如下几种变化:
(1)求1到100之间所有偶数的和,要求跳数为2。
(2)求1到100之间所有偶数的和,要求跳数为1。
(3)在程序运行过程中任意输入一个自然数n,求1到n之间所有偶数的和。
这里第一小题和书本原程序相比难度不大,只要将循环的跳数改为2即可,在模仿的前提下同学们就可以完成。第二小题增加了难度,在编程过程中,需要做两点变化,一要将循环变量的变化范围变为从1到50,二要修改循环语句中的通项,将循环语句变为S=S+2*I。要做到这些变化,需要同学们对for……next有比较深刻的理解。第三小题在第二小题的基础上又增加了一点要求,即循环变量的终止值需用变量n来表示,二需要在程序的前面增加一条定义变量n的语句,三需要使用InputBox语句在程序运行的过程中将终止值输入给变量n,这三点要求同学们能够把以前所学的知识综合起来运用,对刚刚学习编程的高一同学来说这还是有一定难度的,但通过练习同学们的综合编程能力可以得到训练提高。
四、引导同学们在学习编程的过程中养成运用动态思维判断程序是否正确的习惯。这种习惯的养成,对培养学生的逻辑思维能力和抽象思维能力有非常重要的作用。为了达到这个目的,在程序设计教学中可以有意识地在以下几个方面给予比较多的关注:(1)对于一些比较简单的程序要求同学们直接写出结果;(2)对于有循环或判断结构的程序,要求同学们根据条件一步步向前走,把循环过程写下来;(3)故意给出一些错误的程序,给同学们设计一些陷阱,让同学们自己去发现;(4)让同学们把书本中程序编写错了的地方改正过来。
总之,教学有法,教无定法,只要教学得法。高中程序设计教学的主要目标是为了使同学们了解现代程序设计理论中的面向对象编程和结构化程序设计等基本思想,培养现代程序设计过程中所需要的一些基本能力。围绕着这个目标,在保护同学们学习积极性的前提下,按照同学们的认知规律组织教学,一切可行的教学方法都可以在我们的教学过程中加以运用。
参考文献:
1、董南萍《关于学生程序设计能力的培养》《辽宁教育学院学报》1999年9月16期。
2、李春香《高级语言程序设计课教法浅探》《河北广播电视大学学报》2000年3月5卷1期。
3、罗小平《高级语言程序设计中若干重要细节的设施》《广东农工商管理干部学院学报》2000年11月16卷4期。
(作者单位:262700山东省维坊市科技职业学院中计算机软件学院)
【关键词】程序设计 对象 教学法
国家新的《基础教育课程改革纲要(试行)》指出:“改变课程过于注重知识的传授的倾向,强调形成积极主动的学习态度,使获得基础知识和基本技能的过程同时成为学会学习和形成正确价值观的过程。”。我们从整体上来理解这段话,它强调课程的功能要从单纯注重知识的传授转变为体现引导学生学会学习、学会做人、学会生存;对学生的关注要从更多的关注学习结果转变为关注学生学习的过程和方法。根据这个原则,我在对本届高一年级同学组织有关VB程序设计方面的课堂教学时,做了以下几点尝试:
一、打破课本原有以知识的逻辑结构体系为顺序组织课堂教学的方式,以学生的已有知识为基础,按照学生的认知规律,遵循先易后难、先具体后抽象的原则,通过观看、模仿、理解、总结、提高五个阶段进行教学。我校高中《信息技术课》课本中有关VB程序设计方面的教学内容,象大多数教授程序设计的课本一样,一开始介绍诸如算法、流程图的画法、对象、对象的属性、方法和事件等等一系列的在程序设计中比较抽象难懂的概念,然后介绍程序的建立和运行,最后介绍VB语言基础、分支结构、循环结构和数组。从知识的逻辑结构体系考察,这样安排无可非议,但从学生的认知规律考虑,我认为把一些难懂的、晦涩的、抽象的东西放在开始来学习有两点弊端:(1)学生在毫无知识背景的前提下,要完全理解这些概念比较困难;(2)容易伤害同学们学习编程的积极性。受到一些语言知识书籍从介绍一个小实例开始来引入的启发,我决定对本届高一学生开始不讲基本概念,而是和我一起做,在做中由同学们自己在直观上先去体悟这些概念,然后在时机成熟时再和同学们一起归纳总结。所以在组织本章课堂教学时,我采用了自然过渡、类比等方法,和同学们首先一起探讨了VB软件的打开、程序的建立和保存、软件界面等方面的知识,由同学们自己探索着找出VB操作和以前所学软件的异同点。由于同学们已经学过Word应用软件,对这些相似的操作已非常熟悉,所以操作起来得心应手。然后,我给出一个求任意两个整数的加法实例,让同学们和我一起做:(1)在当前窗体内添加了三个标签、三个文本框和两个命令按钮;(2)按照如下表格设计各对象的属性:
缺省的对象名 设置的对象名 属性名 设置值
Form1 frmaddCaption求和
Label1 lblaCaption 输入被加数
Label2 lblbCaption 输入加数
Label3 lblc Caption 和为:
Text1 txta Text (空白)
Text2 txtb Text (空白)
Text3 txtc Text (空白)
Command1 cmdadd Caption计算
Command2 cmdend Caption结束
(3)在命令按钮“cmdadd”上双击鼠标左键,输入如下程序:
txtc.text=val(txta.text)+val(txtb.txt)
关闭程序编辑窗口,回到界面设计界面,在命令按钮“cmdend”上双击鼠标左键,输入如下语句:
end
关闭程序编辑窗口,按F5键运行程序。
在操作的过程当中,教师不用讲解每件事的含义,同学们通过完成任务很自然地就会体会出什么是对象,什么是对象的属性和方法,如何在界面内添加对象、设置事件等等。在此基础上,教师适当的引导同学们归纳总结一下,一切都迎刃而解。按照学生的认知规律组织教学和重视同学们的知识结构体系的建立并不是相互对立的,相反,最终同学们能否在头脑中建立完整的学科体系对于其本身能否对所学的内容有比较深刻的理解起着极为关键的作用,问题的关键在于这种学科结构体系的建立是通过外部手段强加给他们的,还是在同学学习的过程中自然形成的。
二、注意通过一系列问题的引动,来激发学生的学习主动性和加深对一些概念的理解。有一些概念之间的差别和程序的设计步骤如果只通过教师讲述,同学们在字面上可以接受,但在理解深度上往往难以达到令人满意的效果,如果能设计出一系列问题,让同学们在解决问题的过程中自己去体验,情况将完全是另一个样子。比如,为了让同学们切身感受整型变量、单精度变量、双精度变量所能保存数据范围的不同,我为同学们设计了一个如下的实验过程,首先让同学们模仿求1到50之间所有自然数的方法,在窗体的Click事件中编写一段程序,求5!,通过实验,同学们很快编写好如下程序:
dim I as integer
dim x as integer
x=1
for I=1 to 5
x=x*I
next I
print“x=”;x
按F5键运行,得出5!的正确结果。然后我让同学们把程序少许做一下修改,求10!,这时很多同学认为这还不是小菜一碟,迅速将程序修改为如下形式:
dim I as integer
dim x as integer
x=1
for I=1 to 10
x=x*I
next I
print“x=”;x
按F5键运行,结果同学们发现屏幕上并没有如预期想象的那样给出正确结果,而是显示出一个错误对话框,含义为“数据溢出”,同学们百思不得其解。这时教师提示同学们将程序做一点修改,把变量X定义为单精度,试试看运行情况如何:
dim I as integer
dim x as integer
x=1
for I=1 to 10
x=x*I
next I
print“x=”;x
再按F5键运行,计算机给出正确结果,不过结果的表达方式发生了变化。教师要求同学们再对程序做少许修改,求100!:
dim I as integer
dim x as integer
x=1
for I=1 to 100
x=x*I
next I
print“x=”;x
按F5键运行,同学们发现计算机又显示“数据溢出”。这时大家都猜测到问题可能又是出在变量所定义的数据类型上,纷纷要求老师给出办法。教师要求同学们对程序再做一点修改,把X定义为双精度变量:
dim I as integer
dim x as integer
x=1
for I=1 to 100
x=x*I
next I
print“x=”;x
再按F5键运行,计算机给出正确结果,问题解决。到此为止,教师的教学目标已基本达到。但为了进一步使同学们认识到计算机所能处理数据的范围和理论上我们所能处理数据范围的区别,可以要求同学们试着用计算机求10000!,此时大家发现PC计算机已无计可施。在本例中,程序整体变化不大,占用时间也不多,但通过如此一个操作过程,同学们对整型数据、单精度实型数据和双精度实型数据之间的区别一目了然。另外,由于一切都要求同学们自己动手动脑设计,他们在操作过程中探究和解决问题的积极性、学习的主观能动性得到了调动。
三、在教学过程中,注意通过在书本原有程序的基础上逐渐改变和增加条件的方法来提高同学的综合编程能力。例如,同学们在学习FOR……NEXT循环时,书本内给出了一段求前100项自然数和的程序。这段程序在同学们弄懂FOR……NEXT循环之后,理解起来是并不困难的,为了提高同学们的编程能力,我要求同学们对原程序做如下几种变化:
(1)求1到100之间所有偶数的和,要求跳数为2。
(2)求1到100之间所有偶数的和,要求跳数为1。
(3)在程序运行过程中任意输入一个自然数n,求1到n之间所有偶数的和。
这里第一小题和书本原程序相比难度不大,只要将循环的跳数改为2即可,在模仿的前提下同学们就可以完成。第二小题增加了难度,在编程过程中,需要做两点变化,一要将循环变量的变化范围变为从1到50,二要修改循环语句中的通项,将循环语句变为S=S+2*I。要做到这些变化,需要同学们对for……next有比较深刻的理解。第三小题在第二小题的基础上又增加了一点要求,即循环变量的终止值需用变量n来表示,二需要在程序的前面增加一条定义变量n的语句,三需要使用InputBox语句在程序运行的过程中将终止值输入给变量n,这三点要求同学们能够把以前所学的知识综合起来运用,对刚刚学习编程的高一同学来说这还是有一定难度的,但通过练习同学们的综合编程能力可以得到训练提高。
四、引导同学们在学习编程的过程中养成运用动态思维判断程序是否正确的习惯。这种习惯的养成,对培养学生的逻辑思维能力和抽象思维能力有非常重要的作用。为了达到这个目的,在程序设计教学中可以有意识地在以下几个方面给予比较多的关注:(1)对于一些比较简单的程序要求同学们直接写出结果;(2)对于有循环或判断结构的程序,要求同学们根据条件一步步向前走,把循环过程写下来;(3)故意给出一些错误的程序,给同学们设计一些陷阱,让同学们自己去发现;(4)让同学们把书本中程序编写错了的地方改正过来。
总之,教学有法,教无定法,只要教学得法。高中程序设计教学的主要目标是为了使同学们了解现代程序设计理论中的面向对象编程和结构化程序设计等基本思想,培养现代程序设计过程中所需要的一些基本能力。围绕着这个目标,在保护同学们学习积极性的前提下,按照同学们的认知规律组织教学,一切可行的教学方法都可以在我们的教学过程中加以运用。
参考文献:
1、董南萍《关于学生程序设计能力的培养》《辽宁教育学院学报》1999年9月16期。
2、李春香《高级语言程序设计课教法浅探》《河北广播电视大学学报》2000年3月5卷1期。
3、罗小平《高级语言程序设计中若干重要细节的设施》《广东农工商管理干部学院学报》2000年11月16卷4期。
(作者单位:262700山东省维坊市科技职业学院中计算机软件学院)