论文部分内容阅读
摘 要:高中信息技术中的算法与程序设计是抽象性、逻辑性很强的学习内容,很多學生在学习过程中没有掌握好算法的解题思维,往往会失去兴趣,甚至放弃了算法与程序设计的学习。本文针对二轮选考的学生情况,从多个方面探讨了如何重新唤醒学生对算法学习的兴趣,有效地进行算法与程序设计的二轮复习。
关键词:高中信息技术;算法与程序设计复习
在浙江省新高考改革的背景下,我校的高二学生在今年的4月份参加了高中信息技术的第一次选考,考得不理想的学生马上又投入到第二轮的复习当中。我们必须要好好思考,考的不理想的原因,这样才能有效指导我们的下一轮复习,使接下来的复习更具有针对性。于是我让所有学生都把自己选考的成绩报告单下载下来,成绩报告单上反映的问题和我们预想的一样,算法与程序设计这一部分失分非常严重。接下来,我对学生进行了一些简单的问卷调查,并且对部分学生进行了个别交流。我发现,大部分学生对算法与程序设计越来越不感兴趣,在老师们讲授这方面的知识时,他们根本没有认真听讲,有些学生甚至是完全放弃的状态,算法成了他们学习信息技术的最大障碍。
如何才能让这部分学生对算法重拾兴趣,跨过这道最难的屏障?我做了一些尝试,具体如下。
一、复习基础知识从零开始,获得解决问题的成就感
参加二轮选考的大多数学生,基础知识薄弱,有些甚至于基本的标准函数,运算符都不认识几个,或者只是有一些模糊的印象。这些基本的知识如果没有掌握,要他们写出语句是肯定不可能的,所以只能是零起点复习。我想既然学生不能用程序直接进行编程解决实际问题,那么培养学生的算法思维就从算法常见的表示方法——自然语言入手,不着急引入程序,而是从最基本的算法的思想开始。多举出一些他们非常熟悉的生活、学习中的例子,让他们开口讲,讲第一步做什么,第二步做什么……他们都会讲的头头是道。比如让学生讲如何求解最大公约数和最小公倍数的问题时,可以先引导学生进行讨论和分析,他们就会讲的很好。然后要不时的鼓励他们,使他们循序渐进地重拾兴趣。复习VB的基本的语法知识时,先细致的讲解,从VB的界面,到每一种基本控件的属性、用法和异同,到运行、调试和保存的方方面面。而对于一些记忆性的知识点,比如复习标准函数、运算符、表达式等用法的时候,也要尽量包含在解决具体问题的例子当中,这样不至于让学生学习起来太枯燥,而消磨掉兴趣。
二、培养学生的习惯性思维到算法的思维
我前面提到,让学生用自然语言来描述求最大公约数的算法,他们能顺利的解决。学生用的方法是欧几里得算法,又叫辗转相除法,他们的习惯性思维就是数学的解题方法,我们就要从习惯性思维入手。这样既让学生体验了解题的成就感又培养了他们解析算法的思维。接下来,我又向他们介绍了用《九章算术》中“更相减损术”的方法来求解两个数的最大公约数,尝试多种解题方法,可以让学生逐步形成算法的思维方式,构成清晰的多种方法解决问题的思维结构。
但是算法的思维和我们的习惯性思维也不是完全一样的,它不能完全以我们常规解决问题的方法来进行思考。高中的学生具备一定的思维能力,并且一开始的时候,学生是习惯以自己的思维方式来解程序的,这样往往会导致片面,容易出现问题。比如,我们在一开始学习用FOR循环语句来实现1+2+……+100的累加时,学生习惯性的解题方法是用(1+100)*50来实现,而不是循环累加的方法。如果一直用习惯性思维来解决问题,就会造成后面学习的困难。
三、举一反三,拓宽解题思路
举一反三是培养学生算法解题能力的一种有效方法,可以加深学生对所学知识的深刻理解,也可以发展学生对算法思维的熟练运用。
数据的排序算法是教材中非常重要的算法思想,教材中要求学生掌握冒泡排序和选择排序的基本思想和程序实现,并且要会熟练应用,这就要求拓展学生举一反三的运用能力。比如,冒泡排序中教材的主要程序是自下而上进行冒泡,外层循环控制冒泡的遍数,内层循环控制数据的比较交换过程。学生要熟练掌握冒泡排序算法的基本思想、具体过程以及代码的特征。同时也能掌握从上往下的冒泡排序过程和程序实现方法。教学时可以把两段程序放在一起进行比较,加深理解异同点。还有冒泡排序的运行遍数由外层循环控制,N个数要排序N-1遍后就成为有序的数列,如果题目循环的终值不是N-1,那么就要注意循环执行遍数对结果的影响;再有就是冒泡排序的优化思维,可以进行判断,如果一遍排序过程中没有数据的交换就说明数据已经全部有序,不需要执行完所有的程序,退出循环的执行等。
要实现举一反三的目的,就要在“一”上下功夫,对一要进行深化,这样才能实现知识的拓展、延伸,技巧的迁移,达到触类旁通的效果。
四、划分结构,个别推敲
在技术的选考中,一个半小时内要完成信息和通用的所有题目,时间上是很紧张的。比如今年浙江省4月份的技术卷的第17题,该如何在有限的时间内解决最后这个选考程序题。首先,虽然是作为最后一个压轴题,但并不是每一空都是很难的,比方这个17题的第一空就是简单的,抓住题目给的实例,分析问题,读懂题目后不去读程序也是能做出这个填空的;其次,看到程序后千万不要逐行逐句去阅读程序,我们根本没有那么多的时间,所以第一件事情就是先把整个程序的结构进行划分,然后理清每一个划分的程序段的作用和目的;最后,抓住划线处的程序填空进行前后推敲,分析寻找各个变量之间的相互关系,跟踪主要变量值的变化,找出规律,确定答案。
我觉得除了让学生探讨问题的解决方法和技巧之外,还要让他们多接触一些生活中常见的典型例子。比如巧填九宫格、打字训练器、ISBN号码、按身高排队等。要是能让学生从中体会到算法的真正魅力,算法也就不会那么难了吧。
二轮选考的学生个体差异很大,而算法与程序设计教学也一直存在“难教”和“难学”的问题,这是由于程序设计本身抽象、枯燥,逻辑思维性强。我们的整个复习的教学过程要根据学生的实际水平,并且要符合学生的认知规律,让学生小步成功,缓慢形成清晰的算法思维结构,使学生能静下心来分析程序,乐于学习,这是值得我们不断思考和研究的课题。
参考文献:
[1]徐强.《让学生乐于学习算法与程序设计》.
关键词:高中信息技术;算法与程序设计复习
在浙江省新高考改革的背景下,我校的高二学生在今年的4月份参加了高中信息技术的第一次选考,考得不理想的学生马上又投入到第二轮的复习当中。我们必须要好好思考,考的不理想的原因,这样才能有效指导我们的下一轮复习,使接下来的复习更具有针对性。于是我让所有学生都把自己选考的成绩报告单下载下来,成绩报告单上反映的问题和我们预想的一样,算法与程序设计这一部分失分非常严重。接下来,我对学生进行了一些简单的问卷调查,并且对部分学生进行了个别交流。我发现,大部分学生对算法与程序设计越来越不感兴趣,在老师们讲授这方面的知识时,他们根本没有认真听讲,有些学生甚至是完全放弃的状态,算法成了他们学习信息技术的最大障碍。
如何才能让这部分学生对算法重拾兴趣,跨过这道最难的屏障?我做了一些尝试,具体如下。
一、复习基础知识从零开始,获得解决问题的成就感
参加二轮选考的大多数学生,基础知识薄弱,有些甚至于基本的标准函数,运算符都不认识几个,或者只是有一些模糊的印象。这些基本的知识如果没有掌握,要他们写出语句是肯定不可能的,所以只能是零起点复习。我想既然学生不能用程序直接进行编程解决实际问题,那么培养学生的算法思维就从算法常见的表示方法——自然语言入手,不着急引入程序,而是从最基本的算法的思想开始。多举出一些他们非常熟悉的生活、学习中的例子,让他们开口讲,讲第一步做什么,第二步做什么……他们都会讲的头头是道。比如让学生讲如何求解最大公约数和最小公倍数的问题时,可以先引导学生进行讨论和分析,他们就会讲的很好。然后要不时的鼓励他们,使他们循序渐进地重拾兴趣。复习VB的基本的语法知识时,先细致的讲解,从VB的界面,到每一种基本控件的属性、用法和异同,到运行、调试和保存的方方面面。而对于一些记忆性的知识点,比如复习标准函数、运算符、表达式等用法的时候,也要尽量包含在解决具体问题的例子当中,这样不至于让学生学习起来太枯燥,而消磨掉兴趣。
二、培养学生的习惯性思维到算法的思维
我前面提到,让学生用自然语言来描述求最大公约数的算法,他们能顺利的解决。学生用的方法是欧几里得算法,又叫辗转相除法,他们的习惯性思维就是数学的解题方法,我们就要从习惯性思维入手。这样既让学生体验了解题的成就感又培养了他们解析算法的思维。接下来,我又向他们介绍了用《九章算术》中“更相减损术”的方法来求解两个数的最大公约数,尝试多种解题方法,可以让学生逐步形成算法的思维方式,构成清晰的多种方法解决问题的思维结构。
但是算法的思维和我们的习惯性思维也不是完全一样的,它不能完全以我们常规解决问题的方法来进行思考。高中的学生具备一定的思维能力,并且一开始的时候,学生是习惯以自己的思维方式来解程序的,这样往往会导致片面,容易出现问题。比如,我们在一开始学习用FOR循环语句来实现1+2+……+100的累加时,学生习惯性的解题方法是用(1+100)*50来实现,而不是循环累加的方法。如果一直用习惯性思维来解决问题,就会造成后面学习的困难。
三、举一反三,拓宽解题思路
举一反三是培养学生算法解题能力的一种有效方法,可以加深学生对所学知识的深刻理解,也可以发展学生对算法思维的熟练运用。
数据的排序算法是教材中非常重要的算法思想,教材中要求学生掌握冒泡排序和选择排序的基本思想和程序实现,并且要会熟练应用,这就要求拓展学生举一反三的运用能力。比如,冒泡排序中教材的主要程序是自下而上进行冒泡,外层循环控制冒泡的遍数,内层循环控制数据的比较交换过程。学生要熟练掌握冒泡排序算法的基本思想、具体过程以及代码的特征。同时也能掌握从上往下的冒泡排序过程和程序实现方法。教学时可以把两段程序放在一起进行比较,加深理解异同点。还有冒泡排序的运行遍数由外层循环控制,N个数要排序N-1遍后就成为有序的数列,如果题目循环的终值不是N-1,那么就要注意循环执行遍数对结果的影响;再有就是冒泡排序的优化思维,可以进行判断,如果一遍排序过程中没有数据的交换就说明数据已经全部有序,不需要执行完所有的程序,退出循环的执行等。
要实现举一反三的目的,就要在“一”上下功夫,对一要进行深化,这样才能实现知识的拓展、延伸,技巧的迁移,达到触类旁通的效果。
四、划分结构,个别推敲
在技术的选考中,一个半小时内要完成信息和通用的所有题目,时间上是很紧张的。比如今年浙江省4月份的技术卷的第17题,该如何在有限的时间内解决最后这个选考程序题。首先,虽然是作为最后一个压轴题,但并不是每一空都是很难的,比方这个17题的第一空就是简单的,抓住题目给的实例,分析问题,读懂题目后不去读程序也是能做出这个填空的;其次,看到程序后千万不要逐行逐句去阅读程序,我们根本没有那么多的时间,所以第一件事情就是先把整个程序的结构进行划分,然后理清每一个划分的程序段的作用和目的;最后,抓住划线处的程序填空进行前后推敲,分析寻找各个变量之间的相互关系,跟踪主要变量值的变化,找出规律,确定答案。
我觉得除了让学生探讨问题的解决方法和技巧之外,还要让他们多接触一些生活中常见的典型例子。比如巧填九宫格、打字训练器、ISBN号码、按身高排队等。要是能让学生从中体会到算法的真正魅力,算法也就不会那么难了吧。
二轮选考的学生个体差异很大,而算法与程序设计教学也一直存在“难教”和“难学”的问题,这是由于程序设计本身抽象、枯燥,逻辑思维性强。我们的整个复习的教学过程要根据学生的实际水平,并且要符合学生的认知规律,让学生小步成功,缓慢形成清晰的算法思维结构,使学生能静下心来分析程序,乐于学习,这是值得我们不断思考和研究的课题。
参考文献:
[1]徐强.《让学生乐于学习算法与程序设计》.