程序设计课程教学方法探讨

(整期优先)网络出版时间:2021-10-21
/ 2

程序设计课程教学方法探讨

章丽鸿 李琳

广东交通职业技术学院 信息学院 广东广州 510650

摘要: 从实际教学经验中总结如何通过程序设计课程引导学生提升观察问题,归纳总结的抽象思维能力,真正具有独立的学习能力,跟得上时代的发展,知识的更新。

关键词:大专;程序设计课程;抽象思维能力


程序设计语言是计算机专业的学生都应该学习的一门课程,因为这门课程非常训练逻辑思维能力,抽象建模能力以及调试问题解决问题的能力。但是因为大专学生的抽象思维能力普遍不太高,他们更喜欢看得到实物,实际操作的课程,所以对编程这门课程的兴趣不大,学起来比较费力。所以笔者通过实际教学经验试着探讨一下这门课程该如何进行教学才能更好的引导学生训练抽象思维和解决问题的能力。

抽象思维能力是人们在认识活动中运用概念、判断、推理等思维形式,对客观现实进行高度概括总结找到规律的能力。属于理性认识阶段。抽象思维能力能够对客观直观的现象进行观察以及深入的分析拆解,获得远远超出感觉器官直接感知的知识。它是对在事物的本质属性进行分析、综合、比较的基础上,抽取事物的底层规律,撇开其非本质的属性,使得认识从感性的具体进入抽象的规则,形成概念和认识。人们思维的目的就是把握客观事物之间的联系,把握一些事物的变化和另一些事物的变化之间的关系,正是以此为基础人们才能预测将来的变化和引导自己的行为。而学习编程语言就是直接的训练这种抽象思维能力,所以个人认为是一门任何学科的学生都应该要学习的课程。它不能靠死记硬背就能学好,只能真正的提升自己的观察力,归纳总结的能力才可能学好,所以是大学生应该接触了解的课程。

本文以具体的例子来解释如何通过学习编程语言而提升抽象思维能力。如一个常见的例题,请学生们交换两个变量的值,但是不可以引入第三方变量。就会引导学生去观察这两个变量的值会变化,那么能不能在变化的数中间找到不变的规律呢。学生就会发现虽然两个数在变,但是它们的和不会变,找到这个不变的规律,就能解决问题了。变量a=5,b=3。然后让a=a+b,接下来自然b=a-b,就把a的值赋给b了,此时a=8,b=5。再接下来,a=a-b,此时a=3,b=5,就把a和b的值交换过来了。这道题虽然很小,但是很训练抽象思维能力,必须很清晰的一点点的推理,观察两个变量之间的关系,找到不变的规律,才能解决。

那么接下来另一个常见的例题九九乘法表,也可以如此引导学生观察变化的现象,找到不变的规律。如如何生成一个三角形的九九乘法表,很明显用到for for循环嵌套,那么我们可以归纳出for循环的外循环是控制行数的,而内循环是控制每一行的列数,那么九九乘法表必然是九行,自然外循环就是for(int i=1,i<=9,i++),接下来就观察内循环该怎么写,因为内循环的每一行的个数是不一样的,第一行一个数,第二行两个数,第九行九个数,那么就明白内循环的代码必须找到与外循环中变化的i的关系,自然写出来for(int j=1,j<=i,j++)的代码出来,因为从具体的现象我们可以观察到i=1时,最大值j =1, i=2时,最大值j=2 i=9时,最大值j=9,自然就会看到随着i的变化,j的最大值也跟着变化,而且是有规律的,就能通过变化的数值,总结出不变的规律来写出代码。

接下来学习数组排序时,也是一样的引导学生观察变化的现象找到不变的规律来写出算法。如选择排序,将一个数组从小到大排序,选择排序的解决问题的思路是将第一个数与第二个数比较,如果第二个数比我大,就不变,如果第二个数比我小,就交换。接着同样跟第三个数比较,指到跟最后一个数比较,这样经过这一轮就能把最小的数留在数组的第一个位置。以此类推,第二轮将第二个数跟剩下的每一个数比较,结果第二个位置就是第二大的数。全部都比较完了,就把所有数都从小到大排好了。这个过程容易理解,但是学生比较难以把它变成抽象的代码。那么就需要一步步引导学生去写出代码,如第一步将数组的角标进行的每一轮比较都写出来,然后就可以看出来这些角标的变化规律,九行发现随着行数i值的变化,列数j值的变化规律了,就能把j的变化规律用i的表达式写出来,假如有五个数的数组,就会发现第一行,当arr[i]和arr[j]比较时,即i=0时,j是从角标1到4来与之比较。第二行,当arr[i]和arr[j]比较时,即i=1时,j是从角标2到4来与之比较。第三行,当arr[i]和arr[j]比较时,即i=2时,j是从角标3到4来与之比较。第四行,当arr[i]和arr[j]比较时,即i=3时,j是从角标4到4来与之比较。那么就能观察出i和j 虽然看上去一直在变化,但是中间是有不变的规律的,代码就出来了。就能写出for(int i=0,i<=arr.length-1,i++)的外循环和for(int j=i+1,i<=arr.length,j++)的内循环代码了,那么整个算法最核心的逻辑就写出来了。学生在这样一一步步的观察推理的过程中就能通过变化的参数找到不变的规律,而这就是很好的训练思维的方式。而这种能力用在任何学科的学习上都是通用的。

所以引导学生去写出代码时,不能就让学生死记硬背写出代码来,要引导学生培养观察问题,归纳总结的抽象思维能力。而这种抽象思维能力才是大学生需要培养的能力。以往很多学生觉得好像大学学了很多课程,但是毕业时什么都不会。就是因为平时的学习都是死记硬背,并没有通过这些知识来训练归纳总结的能力,那么就很容易忘记了,而如果通过学习知识训练了观察现象,透过变化的现象看到本质不变的规律的归纳总结的能力,那么应该越学习,这种能力越强,就不会出现说毕业时好像什么都没有学到的空虚的感觉了,应该有很扎实的能力提升的感觉才对。

本文是笔者在实际教学过程中的经验的归纳总结,课程内容可以少而精,没必要为了灌输更多的知识点而忽略了其中对于学习方法的引导,导致学生只能死记硬背,而无法深入去通过知识学到真正的学习方法和自学能力。因为信息化社会中知识更新换代很快,就算开再多课程,灌输再多知识点也不可能跟得上知识更新的速度,所以不如注重引导学生提升观察问题,归纳总结的抽象思维能力,才能真正有独立的学习能力,才能跟得上时代的发展,知识的更新。

作者简介:

章丽鸿(1980-),女,安徽安庆人,汉族,硕士学历, 计算机网络方向。 

李琳(1983-),女,陕西西安人,汉族,硕士学历, 计算机网络方向。