论文部分内容阅读
当今,信息技术在人类生活的各个领域发挥着巨大的、难以估价的作用,可以说正确运用信息技术已成为现代人必须具备的基本技能之一。在这种时代背景下,《普通高中技术课程标准(实验)》(信息技术)选修模块《算法与程序设计》明确了Visual Basic简明程序设计的地位和作用。该模块旨在培养学生的逻辑思维能力,通过程序设计的教学让学生更深入地理解计算机的工作原理,初步学会程序设计的一般方法,并了解用程序设计的方法解决实际问题的几个基本步骤,从而为更深入的学习打下基础。
消除程序设计中的几个误区
绝大部分高中学生是初次接触高级程序设计语言,常常有很多认识方面的误区。
误区一:只要将问题给计算机,计算机就能够自动处理问题。例如,判断数A是奇数还是偶数,学生往往认为将数A输入到计算机中,它就会自动给出答案,其实不然。所谓计算机自动给出答案其实要通过预先编好的程序(如果数A除以2的余数为零即为偶数,否则为奇数),最终才能实现计算机自动处理问题。所以,我们要让学生认识到要计算机解决某一问题,就必须编写相应的程序,正确地写出求解步骤,使得计算机如我们所希望的自动处理问题。这就是计算机算法的精髓。
误区二:在学习程序设计语言时误把算法当做数学方法,认为只要数学好,学计算机程序设计就没问题。当然,数学会对程序设计有所帮助,但两者还是有明显不同的。数学解题步骤是数学上的各种算法,而程序设计更要求人们注重逻辑思维、会分析和综合。例如,怎样将一组数据按从小到大排序?这里我们要用到数学中的数与数比较大小的问题,同时还要注意数与数之间的联系,即将最小的排在最前面,其次是第二小数,依次类推。我们要让学生知道算法不单是指数值计算,还有大量的非数值的计算,如排序、查找、检索信息、判断和决策等。用计算机编写程序,实际上是为某一项应用,把问题划分为一个个小的模块,分为各个功能去做。这种逐步分解、按步骤加以说明的过程,实质上是表达思想的能力。
误区三:忽略算法重视语句。学生在编程过程中往往不是把注意力放在所要解决的问题上,而是把注意力放在该用什么语句上。这好比在写英语作文时,不去表达思想,而是在想要用哪个单词、要用哪种语法。试想这怎么能写好作文呢? 在布置学生编程时许多学生并没有掌握算法的精髓,而是在那里东抄一段程序西抄一段程序,就认为完成了编程。这样编写的程序是牛头不对马嘴。 所以,编程序是要学语言,但决不是为语言而语言,用语言为了表达思想意图,更准确解决实际问题才是最重要的。我们要强调的是表达能力,也就是逻辑思维表述的能力。所以教师在学习过程中要时刻引导学生认识到“语法本身只是一个外壳,算法才是其中的灵魂”。
在授课过程中教师要注意使学生消除以上误区,正确引导学生对结构化设计语言的认识。
化抽象概念为易懂的生活实例
刚开始学习程序设计总让人感觉是枯燥、难懂的。那么,在程序设计教学过程中,教师如何化枯燥为生动、化难懂为易懂呢?其中运用形象比喻就是一个很好的方法。形象比喻是我们日常描述事理的基本方法,通过在教学过程中使用大量的形象比喻,化晦涩的抽象概念为易懂的生活实例,消除学生在学习程序设计时的畏难情绪,往往能达到事半功倍的效果。
例如,讲解对象三要素——属性、方法和事件时,书本上给出的具体定义为:把属性看作对象的性质,把方法看作对象的动作,把事件看做对象对外部操作的响应。这样的定义比较抽象,在实际学习过程中学生很难分清什么是属性、什么是方法、什么是事件,往往一堂课下来晕头转向。那么怎样使学生更容易理解其含义呢?其实,我们可以列举身边的事例,如小孩玩的气球同样具有属性、方法和事件。气球的属性包括可以看到的一些性质,如它的直径和颜色以及其他描述气球的状态的属性,如充气或未充气。气球还具有本身所固有的动作,如放气的方法(排出气球中的气体)和上升的方法(放手让气球飞走)。气球还有预定义的对某些外部事件的响应,如气球对刺破它的事件响应是放气,对放手事件的响应是升空。另外就是,讲解过程中注重理论联系实际。例如,在讲解程序的三种基本结构时,教师可以列举身边具体事例或与其课程相关的内容。
例1:顺序结构。
一列火车在某地时的速度为V0=40Km/h,以加速度a=0.15m/s2加速行驶,求2min后的速度v和距开始点的距离s。
例2:分支结构。
输入一个学生的成绩,对其进行等级评定。90分及以上为“优”,80~89为“良”,70~79为“中”,60~69为“及格”,60分以下为“不及格”。通过成绩作为条件来判断最终的结果。
例3:循环结构。
为校园歌手大赛设计一个评分程序。10名评委,去掉一个最高分、一个最低分,计算平均分。
在教学过程中教师要强调理论联系实际,引导学生注意寻找、发现身边的实际问题,进而设计出算法和计算机程序去解决这些问题。通过这一些事例的讲解使得学生容易理解和接受。
循序渐进增加程序的难度
在学习过程中,书本中的程序相对来说比较简单,但是对于初次接触这种结构化设计语言的学生还是不能够完全理解掌握,例如循环语句,对于该语句的语法一定要讲解透彻,书中的例题是求(s=1 2 3 …… 100)自然数和的程序。在学生充分掌握这个程序的同时,为了加深对该程序的理解,可以通过在原有程序的基础上逐渐更改和增加条件的方法来提高同学的综合编程能力。教师可以对原程序作以下几种修改。
(1)求1到n之间所有数的和(任意自然数n从键盘输入)。
(2)求1到100之间所有奇数的和(1 3 5 …… 99)。
(3)求1到100之间所有偶数的和(2 4 6 …… 100)。
让学生自己思考并且通过上机调试程序。
第一题中要运用到前面所学的知识,即InputBox输入语句,循环的终值可以通过该语句从键盘输入;第二题和书本中例题基本相同,只要将循环的步长改为2即可;第三题在第二题的原有基础上只需要修改循环语句中循环变量的初值即可(初值为2)。在学生编写程序的同时教师从旁引导学生观察程序中的一些关键点的变化,综合运用以前所学的知识,从而进一步掌握for……next循环。通过这一系列深入浅出的练习使学生的综合编程能力得以提高。
上述所解决方案看似是简单程序,但做起来往往要费不少周折,包括设想、写程、调试、修改、成功。而学生在具体实现过程中,常有“山重水复疑无路,柳暗花明又一村”的感觉,不断油然而生的成就感,大大激发了学生的求知欲,使得他们的创造性得到淋漓尽致的发挥,思维能力得到跳跃式的提高。
高中阶段的程序设计主要是培养学生的逻辑思维能力,了解程序设计的基本思想。只要我们在平时教学中抓住了这一基本点,授之学生的就是“渔”,而不是“鱼”。
消除程序设计中的几个误区
绝大部分高中学生是初次接触高级程序设计语言,常常有很多认识方面的误区。
误区一:只要将问题给计算机,计算机就能够自动处理问题。例如,判断数A是奇数还是偶数,学生往往认为将数A输入到计算机中,它就会自动给出答案,其实不然。所谓计算机自动给出答案其实要通过预先编好的程序(如果数A除以2的余数为零即为偶数,否则为奇数),最终才能实现计算机自动处理问题。所以,我们要让学生认识到要计算机解决某一问题,就必须编写相应的程序,正确地写出求解步骤,使得计算机如我们所希望的自动处理问题。这就是计算机算法的精髓。
误区二:在学习程序设计语言时误把算法当做数学方法,认为只要数学好,学计算机程序设计就没问题。当然,数学会对程序设计有所帮助,但两者还是有明显不同的。数学解题步骤是数学上的各种算法,而程序设计更要求人们注重逻辑思维、会分析和综合。例如,怎样将一组数据按从小到大排序?这里我们要用到数学中的数与数比较大小的问题,同时还要注意数与数之间的联系,即将最小的排在最前面,其次是第二小数,依次类推。我们要让学生知道算法不单是指数值计算,还有大量的非数值的计算,如排序、查找、检索信息、判断和决策等。用计算机编写程序,实际上是为某一项应用,把问题划分为一个个小的模块,分为各个功能去做。这种逐步分解、按步骤加以说明的过程,实质上是表达思想的能力。
误区三:忽略算法重视语句。学生在编程过程中往往不是把注意力放在所要解决的问题上,而是把注意力放在该用什么语句上。这好比在写英语作文时,不去表达思想,而是在想要用哪个单词、要用哪种语法。试想这怎么能写好作文呢? 在布置学生编程时许多学生并没有掌握算法的精髓,而是在那里东抄一段程序西抄一段程序,就认为完成了编程。这样编写的程序是牛头不对马嘴。 所以,编程序是要学语言,但决不是为语言而语言,用语言为了表达思想意图,更准确解决实际问题才是最重要的。我们要强调的是表达能力,也就是逻辑思维表述的能力。所以教师在学习过程中要时刻引导学生认识到“语法本身只是一个外壳,算法才是其中的灵魂”。
在授课过程中教师要注意使学生消除以上误区,正确引导学生对结构化设计语言的认识。
化抽象概念为易懂的生活实例
刚开始学习程序设计总让人感觉是枯燥、难懂的。那么,在程序设计教学过程中,教师如何化枯燥为生动、化难懂为易懂呢?其中运用形象比喻就是一个很好的方法。形象比喻是我们日常描述事理的基本方法,通过在教学过程中使用大量的形象比喻,化晦涩的抽象概念为易懂的生活实例,消除学生在学习程序设计时的畏难情绪,往往能达到事半功倍的效果。
例如,讲解对象三要素——属性、方法和事件时,书本上给出的具体定义为:把属性看作对象的性质,把方法看作对象的动作,把事件看做对象对外部操作的响应。这样的定义比较抽象,在实际学习过程中学生很难分清什么是属性、什么是方法、什么是事件,往往一堂课下来晕头转向。那么怎样使学生更容易理解其含义呢?其实,我们可以列举身边的事例,如小孩玩的气球同样具有属性、方法和事件。气球的属性包括可以看到的一些性质,如它的直径和颜色以及其他描述气球的状态的属性,如充气或未充气。气球还具有本身所固有的动作,如放气的方法(排出气球中的气体)和上升的方法(放手让气球飞走)。气球还有预定义的对某些外部事件的响应,如气球对刺破它的事件响应是放气,对放手事件的响应是升空。另外就是,讲解过程中注重理论联系实际。例如,在讲解程序的三种基本结构时,教师可以列举身边具体事例或与其课程相关的内容。
例1:顺序结构。
一列火车在某地时的速度为V0=40Km/h,以加速度a=0.15m/s2加速行驶,求2min后的速度v和距开始点的距离s。
例2:分支结构。
输入一个学生的成绩,对其进行等级评定。90分及以上为“优”,80~89为“良”,70~79为“中”,60~69为“及格”,60分以下为“不及格”。通过成绩作为条件来判断最终的结果。
例3:循环结构。
为校园歌手大赛设计一个评分程序。10名评委,去掉一个最高分、一个最低分,计算平均分。
在教学过程中教师要强调理论联系实际,引导学生注意寻找、发现身边的实际问题,进而设计出算法和计算机程序去解决这些问题。通过这一些事例的讲解使得学生容易理解和接受。
循序渐进增加程序的难度
在学习过程中,书本中的程序相对来说比较简单,但是对于初次接触这种结构化设计语言的学生还是不能够完全理解掌握,例如循环语句,对于该语句的语法一定要讲解透彻,书中的例题是求(s=1 2 3 …… 100)自然数和的程序。在学生充分掌握这个程序的同时,为了加深对该程序的理解,可以通过在原有程序的基础上逐渐更改和增加条件的方法来提高同学的综合编程能力。教师可以对原程序作以下几种修改。
(1)求1到n之间所有数的和(任意自然数n从键盘输入)。
(2)求1到100之间所有奇数的和(1 3 5 …… 99)。
(3)求1到100之间所有偶数的和(2 4 6 …… 100)。
让学生自己思考并且通过上机调试程序。
第一题中要运用到前面所学的知识,即InputBox输入语句,循环的终值可以通过该语句从键盘输入;第二题和书本中例题基本相同,只要将循环的步长改为2即可;第三题在第二题的原有基础上只需要修改循环语句中循环变量的初值即可(初值为2)。在学生编写程序的同时教师从旁引导学生观察程序中的一些关键点的变化,综合运用以前所学的知识,从而进一步掌握for……next循环。通过这一系列深入浅出的练习使学生的综合编程能力得以提高。
上述所解决方案看似是简单程序,但做起来往往要费不少周折,包括设想、写程、调试、修改、成功。而学生在具体实现过程中,常有“山重水复疑无路,柳暗花明又一村”的感觉,不断油然而生的成就感,大大激发了学生的求知欲,使得他们的创造性得到淋漓尽致的发挥,思维能力得到跳跃式的提高。
高中阶段的程序设计主要是培养学生的逻辑思维能力,了解程序设计的基本思想。只要我们在平时教学中抓住了这一基本点,授之学生的就是“渔”,而不是“鱼”。