以调试技术促程序设计课程教学

时间:2022-07-22 08:48:45

以调试技术促程序设计课程教学

摘要:程序设计课程的教学过程中要向学生讲授程序调试技术,学生掌握了程序调试技术后就能够更好地理解程序设计的有关概念、自己解决程序运行时出现中的问题。程序调试技术有助于帮助学生保持对程序设计课程的兴趣,进而促进程序设计课程的教学,提升教学效果。

关键词:程序设计;调试技术;课程教学

中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2017)29-0196-02

一、引言

程序设计课程是计算机相关专业的专业基础课,学生对该课程的学习掌握情况将直接影响其对后续诸多课程的学习。因此,各高校对该课程的教学都相当重视,选配了教学经验丰富、工作认真负责的教师承担该类课程的教学。同时,各高校都不同程度地支持授课教师开展针对程序设计课程的教学改革,探索适应本校学生特点的教学模式,试图通过教学改革、探索出更为有效的教学方法来帮助学生激发学习兴趣、提高学习成绩、为后续课程的学习打下坚实基础。我们三明学院信息工程学院对C语言程序设计课程的教学改革也在探索之中,该项教学改革探索从2011年开始已经坚持了6年,一定程度上提高了学生的程序设计水平,但也发现一些问题。我们在教学过程中发现,学生的程序调试能力亟待提高,我们需要对学生进行程序调试技术的针对性训练,以进一步提高教学效果。

二、讲授和学习调试技术的必要性

有调查表明,教师在程序设计课中主要讲授问题分析的有10.62%,主要讲授算法分析的有23.01%,主要讲语法结构的占61.95%,强调程序调试技巧的只占4.42%。我们学院在《C语言程序设计》课程上的教学也有相似的情况,在教学中教师和学生都强调对问题的分析、算法的设计以及程序设计语法知识的讲授和学习,而忽视了对程序设计中的调试技术的讲授和学习。这就造成学生在学习程序设计过程中当程序运行出现问题时往往不知错误在哪里、也就不知道应该如何解决程序运行时出现的问题。我们在教学过程中发现,学生在完成程序设计练习过程中的错误主要是编译错误和逻辑错误。对于编译错误,编译器能够给出提示,这样的错误学生都能够很好地自己解决。而对于逻辑错误,我们的学生因为不懂程序调试技术对很多的逻辑错误问题都不知如何寻找错误位置,往往对该类错误一筹莫展,坐等教师来帮忙解决问题,从而形成了依赖教师来解决逻辑错误。这对于学生的程序设计能力的提高相当不利,进而影响教学效果。我们知道,程序设计课程是一门实践性很强的课程,需要投入大量的时间进行练习,但如果在练习过程中遇到问题不会解决,会导致学生自信心丧失,以至于对程序设计课程的学习失去兴趣。因此,在程序设计课程中有意识地、系统地教会学生程序调试技术、让学生学会自己解决问题是很有必要的。

三、通过调试技术学习程序设计

调试技术有助于我们的教学,不仅能够帮助学生找到逻辑错误,而且能够帮助我们向学生更为直观地讲授相关的概念,帮助学生理解这些概念。在程序设计课程的学习中,有一些概念的理解对于初学程序设计的学生来说是抽象和困难的,比如变量、数组、函数、作用域、指针等概念。在学习程序设计过程中,学生通过调试其所编写的程序能够看到程序的执行过程,从而理解程序的3种基本结构是如何执行的、函数是如何调用的、指针是如何指向另一个变量等,使得学生真正从数据在内存中的表现的层次来理解程序,进而帮助学生理解程序的本质,引导学生在出现问题时从内存的角度来分析问题的原因,更快地找到问题的源头,进而解决程序出现的问题。

1.常用的调试技术。在程序设计过程中,通过调试程序学生可以了解程序执行的过程。常用的调试技术主要有设置断点、单步执行、观察变量的内存地址和值的变化、进入函数内部执行以观察函数的调用过程等。其中断点的设置又有多种,分为条件断点、地址断点等。在教学过程中,教师提供对调试技术的讲授要使学生能够使用最简单的方法查看关键语法,在调试时设置断点进行调试,指导学生在调试中运用单步执行进行调试,能够在调试中运用输出关键信息进行检查错误。

2.调试技术帮助理解数组的概念。刚接触程序设计课程的学生对数组的理解是存在一定困难的,学生对数组是一段连续的空间、数组的初始化、数组的访问、数组的下标越界等,尤其是对数组名是个地址的理解都或多或少地存在困难。所有这些知识的理解如果不借助调试技术想把它们都解释清楚都会有一定的困难,而通过调试程序、让学生看看内存里面是个什么样则能够很好地帮助学生理解它们。

3.调试技术帮助理解函数参数的传递。函数是程序设计中另一个难以理解的概念,在函数中涉及的参数传递方式、函数的调用、递归函数的调用等也是一个教学难点。通过程序调试技术直观地查看函数的调用过程,了解函数参数传递过程和局部变量的概念。借助程序调试技术可以让学生更加深入地理解参数传递时的传值、传引用和传地址的区别,以及函数的调用包括递归函数的调用。

比如,对于如下一段程序:

int main()

{

int i,j;

i = 1;j = 2;

swap(i,j);

return 0;

}

对于函数的传值调用程序:

void swap(int a,int b)

{

int c;

c = a;a = b;b = c;

}

从watch窗口我们可以发现实参和形参的地址是不同的,从而能够解释传值调用时的特点:数据传递时是复制了一份副本的。如图1、2所示,在main函数中调用swap(i,j)时传递过去的变量i,j的地址是0X0012ff7c和0X0012ff78,而在实际执行swap(a,b)时,参数a,b的地址是0X0012ff24和0X0012ff28,@就说明传值调用时是复制副本来进行的,因此该swap函数并不能实现将i,j的值交换过来。

而对于函数的传引用程序:

void swap(int &a,int &b)

{

int c;

c = a;a = b;b = c;

}

从watch窗口可以发现,传引用调用时形参和实参的地址是相同的,因此在函数调用完成后两个变量的值也就能够交换过来。

四、结束语

调试技术是学习程序设计课程必须要向学生讲授的基本技能,学生掌握了程序的调试技术后就能够在遇到问题时通过调试程序来寻找其中的错误,从而找到解决问题的办法,这有助于学生保持对程序设计的兴趣,进而促进我们的教学。

参考文献:

[1]刘应成.新升本科院校学生程序调试能力的调查研究[J].现代计算机(专业版),2010,(05):120-122.

[2]张秀美,赵旭霞.程序调试技术在C语言函数教学中的应用[J].教育教学论坛,2014,(11):85-86.

Abstract:In the course of programming,we should tell the students how to debug the program. Using the program debugging technique,the students can understand the concept of programming better,and they can solve the running problems of the program better. Debugging technique can help students to maintain interest of programming,and promote the teaching of programming courses,improve teaching effect.

Key words:Programming;Debugging Technique;Course Teaching

上一篇:“浸没式”实践教学环节的探索与实践 下一篇:浅谈工作过程系统化课程设计