1. 引言
C语言程序设计课程是计算机专业的基础课程之一,也是我院开设的八大核心课程之一,是计算机专业学生学习的第一门编程类课程。在谭浩强老师出版的《C程序设计(第五版)》教材 [1] 中,主要介绍了顺序结构、选择结构、循环结构、数组、函数、指针和文件等方面的内容 [1] 。针对各个知识点,教材中设计了一些例题来帮助学生理解。但是,如何对这些内容融会贯通,将各个知识点有效结合,并能够提高学生的编程能力,是本课程一直探索的关键。
经过多年的实践验证,好的实例是学生能够更好地学习C语言课程的关键。因此,如何设计一套实例,将课程的各个知识点由浅入深地衔接起来,让学生可以真正感受到这些知识点在实例中的逐步应用,是本文的主要研究内容。通过课堂实践检验,该实例的应用有助于提升教学效果。文献 [2] 也提出一套案例教学方法,但本文中的实例设计方法更强调知识点逐步结合的过程,并且可以覆盖更广泛的知识点。
2. C语言课程实例设计方法
2.1. C语言课程知识体系
本课程的知识点主要包括顺序结构的程序设计、选择结构的程序设计、循环结构的程序设计、函数、指针、结构体、文件等方面的知识,目标是使学生能够熟练地阅读和运用结构化程序设计方法来设计、编写、调试和运行C语言程序。具体知识点描述如表1所示,其中3~10是讲授的重点。
Table 1. The knowledge system of C language programming course
表1. C语言程序设计课程知识体系
2.2. C语言课程实例设计方法
本文提示的实例设计方法,秉持着两点原则:1) 强调知识点逐步结合的过程,从简单实例开始,随着学生不断深入的学习过程,逐步扩展实例;2) 尽可能覆盖更多的知识点。实例设计过程如下:
1) 设计一个实例,输入一个年份和月份,显示该月有多少天。这个实例主要用到选择结构,1,3,5,7,8,10,12这些月份是31天,4,6,9,11是30天,2月份正常是28天,若是闰年,则是29天。该实例的代码如下:
2) 在该实例的基础上进行扩展,输入一个年、月、日,计算该天是一年中的第多少天,这样就融入了数组和循环结构两项知识点。设计一个数组m,里面存放12个月的天数。通过循环来计算该天是一年中的第多少天。扩展后的代码如下:
3) 继续扩展该实例,引入基于函数的模块化程序设计方法,将闰年的判定方法写成一个函数,天数的计算则用另一个函数来描述。扩展后的代码如下:
4) 继续扩展该实例,融入指针知识点,通过指针变量pt来指向数组m的首元素,并使用指针来操作数组元素,扩展后的代码如下:
5) 继续扩展该实例,融入结构体知识点,将年、月、日封装成一个结构体类型。在上述实例基础上,定义一个叫做date的结构体,该结构中包含年、月、日三个成员,扩展后的代码如下:
6) 继续扩展该实例,融入文件知识点。在上述实例的基础上,将一组日期信息存入到文件中,并从文件中读取日期信息,并根据日期信息,计算该天是一年中的第多少天。其中,需要增加日期存储到文件的函数和从文件读取日期的函数,并设计菜单界面,让用户选择相应的操作(1、存储日期;2、读取日期;3、天数计算)。扩展后的代码,本文不详细给出。从实例设计角度,扩展后的实例融入了选择结构、循环结构、数组、函数、指针、结构体和文件等知识点。通过与2.1节中的课程知识体系对比,该实例基本覆盖了所有核心知识点。
经过几轮授课,在针对各个知识点学习的基础上,结合本文提出的循序渐进扩展式实例,可以让学生感受到各个知识点的综合使用方法,更重要的是,可以让学生感受到这些知识点逐步结合的过程。实际授课表明,这种循序渐进扩展式实例更有助于学生去学习C语言,学习效果更佳。
3. 结束语
好的实例是学生能够更好地学习C语言课程的关键,2017年起,在北京信息科技大学计算机学院的学生中应用本文所设计的一套实例,结合教材的使用,可以进一步提升学生的学习效果,加强学生对知识点的理解和融会贯通。今后,将进一步提升实例的综合性、趣味性,从而提高学生的学习兴趣。
基金项目
北京信息科技大学教改项目(2018JGYB13)。