何美
摘要:C语言是面向过程的程序设计语言,学生在学习过程中不容易提起学习兴趣。采用项目教学让学生通过完成一个个项目来激发学生的学习兴趣,同时达到知识点的学习和巩固,并且提高了学生的动手能力和分析问题的能力。
关键词:项目;教学;C语言;应用
中图分类号:G424 文献标识码:A 文章编号:1009-3044(2018)01-0134-02
Abstract: C is a process oriented programming language, and it is not easy for students to arouse their interest in learning. Using project teaching, students can stimulate their interest in learning by completing a project. At the same time, they can achieve the learning and consolidation of knowledge points, and improve the students' practical ability and ability to analyze problems.
Key words: Project; teaching; C language; application
《C语言程序设计》课程是计算机类学生专业必修基础课,对学生后续课程的学习有至关重要的作用。我认为在教学过程中,老师怎么讲、讲什么是重要的,而学生学到什么、收获什么是更重要的,为了让学生学习的积极性、主动性得到充分发提高和调动,在讲授该课程时不断把现实生活中的问题引入课堂用程序解决。把理论和实践很好的结合起来,注重培养学生分析问题、解决问题的能力。
由于C语言程序设计是面向过程的,学生在学习过程中容易提不起学习兴趣,为了提高学生的学习兴趣,在本课程的教学中,我采用项目教学的方法,让学生通过完成一个个项目来达到知识点的学习和巩固,经过几年是实践,发现这样的方法很有成效。
在该课程的第一次课上,我首先展示一个用C语言编写的学生成绩管理的系统,告之学生学完这门课,这个小系统他们就可以编写完成。这样让学生明确学习的目标,知道学了这门课可以做些什么。在学习的过程中,把项目进行分解,通过设计与知识点有关的子项目一个一个循序渐进来实现。具体如下:
项目一:实现学生成绩管理系统的界面的输出,如图1。这是在介绍了C语言的上机调试步骤后让学生实现。教师讲解上机调试步骤并演示让屏幕输出“我的名字是***”等案例,学生在练习上机调试简单C程序后,就要完成项目一。这个阶段主要是掌握C的上机运行步骤、编写C程序注意事项,并且对简单C程序的组成有了认识,同时对输出函数printf()有了初步理解。通过讲解C语言中的数据类型、常量、变量、各种表达式、输入、输出、顺序结构等知识后,让学生用4个同学的成绩做案例,实现成绩的输入、输出、求平均成绩等。
项目二:由于项目一仅仅实现的是界面的输出,如何实现界面中菜单的选择和菜单功能? 引入分支结构的学习,学生掌握了分支结构后。结合学生的实际情况,先让学生实现菜单的选择如图2,此时学生可使用多分支的if...elseif …else ,也可以使用switch case实现。实现菜单的选择后,如何实现菜单的功能,把完成的4个同学成绩管理案例的程序代码放入分支菜单1中,就可实现该菜单的功能。这一过程加深学生对分支的理解。菜单2、3功能的实现引入分支的嵌套知识,教师讲解分支嵌套相关知识和案例后,学生使用分支嵌套就可以实现菜单2、3的功能。
项目三:目前由于该程序菜单选择仅仅只能选一项,通过实现选择多项如图3来引入循环的讲解,学生可以通过使用循环语句如:while、do while、for 、goto等实现如图3的功能。
项目四:通过前面的项目的编写,学生到现阶段已经掌握了C语言中的基本知识和三个结构(顺序、分支、循环),学生由于自己写出的程序能实现该系统小部分功能,此时学生会收获到一些成就感,学习兴趣得到提高。但是他们写的学生成绩管理系统仅仅实现的是4个同学的管理,并且在管理时非常的不方便,一个班级至少有50个以上的同学,我们不可能定义50个变量,通过观察这些变量,发现这些变量具有相同的数据类型,并且数据需要多次使用。由此引入了数组的讲解,讲解完数组定义、引用等知识点后,学生使用数组改写该程序,此时便可以根据实际需求数灵活定义人数,如50个学生的3门课程的成绩可定义为:
#define M 50
char stuname[M][20];stunumb[M][20];float c[M],jave[M],ps[M]。
项目五:随着程序功能的不断完善,程序变得庞大与臃肿,有可能是一个小小的语法错误,但查找与改正起来需要花很多时间与精力。程序可读性降低,维护也变得困难,通过分析可以发现,该系统中的菜单选项都是一个个具有独立功能的,能不能把这些具有独立功能的代码分离出来呢?引入函數的讲解。通过讲解函数的定义、调用等知识后,让学生把菜单功能中的代码使用函数实现。这样既可以巩固之前的知识,又把函数加以练习。同时提高了程序的可读性、可维护性。
项目六:学生在使用数组后,发现姓名、学号、各科成绩都是用不同类型的数组来实现,由于这些数组之间没有直接的联系,要保证姓名、学号、成绩的一致,在操作上必须要非常谨慎。但在实际中一个学生的姓名、学号、成绩是息息相关的,能不能存储在一个变量里呢?此时引入结构体的知识,在讲解了结构体定义、引用和有关案例后,学生使用结构体改写程序。如50个学生的3门课程的成绩可定义为:#define M 50
struct student{ char stuname [20];char stunumb [20];float c;float jave;float ps}renshu[M]。
项目七:程序在使用结构体后更便于处理,但是由于该变量较“胖”,在进行学生信息处理时会浪费资源,由此引入指针的讲解。让学生使用指针操作改善该程序。
项目八:学生做到项目七后,该系统的功能全部可以实现,同时程序也得到完善,但目前还存在一个问题,程序每次的运行都要重新录入数据,数据记录不能保存。如何保存数据记录,由此引入文件的讲解。讲解完文件的有关知识后,让学生用文件来优化该程序。
通过这样一个大项目下的若干子项目,循序渐进的让学生掌握了C语言中的常量、变量、表达式、输入、输出、顺序结构、分支结构、循环结构、结构体、指针、文件等知识。同时也提高了学生的动手能力和分析问题的能力。
参考文献:
[1] 高维春.C语言程序设计项目教程[M].北京:人民邮电出版社,2013.
[2] 谭浩强.C程序设计[M].4版.清华大学出版社,2012.
[3] 刘枧,张宜坤.C语言程序设[M].北京:人民邮电出版社,2011.endprint