论文部分内容阅读
【摘要】目前C语言的教学多数都是按照教材章节来进行授课,讲解对应的知识点,缺少对C语言整体结构的讲解,也缺少对结构化程序设计思维的培养。基于全程案例教学可以有效地解决这一问题,在一个学期讲解一个完整的案例,如学生成绩管理系统,让学生自主分析一个相对完整的案例,然后分组实现整个系统的设计工作。这样可以比较充分地培养学生分析问题和设计程序的能力,同时培养学生的结构化程序设计思维。
【关键字】案例教学 C语言程序设计 课程改革
【中图分类号】TP311.1-4;G642.0
程序设计方法大体上分成两种:一种是结构化程序设计,一种是面向对象程序设计。结构化程序设计思想的原则是:自顶向下,逐步求精,模块化。绝大多数高校对学生进行结构化程序设计思维培养都是通过“C语言程序设计”课程进行的,但是多数课堂在进行“C语言程序设计”课程时都是按照教材的章节进行讲解[1][2],对C语言缺少一个整体的设计,并且实例之间都是离散的,没有关联,这样对于学生形成结构化程序设计思维造成了很大的困难。学生在学习“C语言”之后,往往知道其中的一些概念,如数组、结构体、指针、函数等等,会使用的就会减少一部分,而对“C语言”能够有一个整体的理解,对结构化程序设计思维有深入了解的,能够独立编程[3]的就少之又少。
为了培养学生的“结构化程序设计思维”,让学生对“C语言”有一个整体的掌握,并且能够熟练使用“C语言”进行程序设计,我们采用“全程案例式”教学方式进行C语言程序设计课程改革。
所谓“全程案例式”C语言程序设计教学是指在C语言的教学过程中从头到尾选用一个典型案例,如“学生成绩管理系统”,仿照教务管理平台对学生成绩进行管理。这样的案例学生非常了解,能够对其中的角色功能有明确的认知,这样就很容易分析清楚整个系统的功能模块构成,在此基础上对各个功能模块和数据类型进行设计,从而培养学生的结构化程序设计思维。
一、问题分析
教学人员对教务管理平台都不陌生,在分析问题的时候可以让学生自己设定学生成绩管理系统的角色和功能,然后实现。一般情况下,学生成绩管理系统可以分成三种角色,一是管理员,主要负责访问成绩管理平台成员数据的增、刪、改、查等操作,二是教师,主要负责学生成绩的录入、修改、查看等操作,三是学生,可以查看自己的成绩信息。同时三种成员都可以修改自己登陆平台的密码,功能模块划分如图1所示。通过对系统功能模块的划分,可以让学生理解结构化程序设计“自顶向下,逐步求精,模块化”的程序设计思想,并在此基础上,开发对应的功能函数。
二、学生分组
将学生分组,如25名同学分成5组,每组5人,有一位组长。每组分别独立完成以上教务管理平台中对应的功能模块,可以根据本组的讨论有所增删。这样每位同学平均完成两个功能模块,从而保证在课堂教学时间能够完成该项目。组长负责整个案例的任务分配,同时解决小组成员实施时遇到的技术问题,当然组成的最后成绩也会较高。
三、教学内容
仿照工程化的思路,如设计一个产品,需要有工人、原材料、工人。工人使用工具按一定的步骤加工原材料得到一个一个的零件,再将这些零件有机地组装起来就会形成一个产品。C语言的教学内容也可以按照以上思路进行分解,首先要有人,即程序员也就是学生;原材料是C语言的数据类型,包括基本类型(整型、实型、字符型、枚举型)、构造类型(数组、结构体、共用体)、指针类型和空类型;工具是运算符,用来操作某种类型的数据;操作步骤包括顺序结构、选择结构和循环结构;程序员使用工具按照一定的步骤加工原材料就能够得到一个零件,即函数;再将这些函数按图1进行组装就能够形成最后的学生成绩管理系统的源文件,同时能够对存储在外部文件中的人员数据等信息进行访问。[4]
将C语言的教学内容按照内在逻辑分成五大部分,学生容易理解并掌握。
四、教学方式
在教学上,采用“全程案例教学”,第一节课就开始写代码。开发工具可以使用C-Free、Dev-C++、Visual C++等,让学生理解C语言、C++语言和开发工具的区别。
根据问题的需要,首先要设计一个“学生成绩管理系统”的欢迎界面,通过该界面的设计讲解顺序结构,尤其是输出语句的使用。接下来应该是用户权限选择,如“1、管理员 2、教师 3、学生”,这就要用到选择结构,讲解if语句和switch语句。此时要在选择语句中使用一些数据类型,因此可以在此处讲解基本数据类型(字符型、整型、实型、枚举型)。在用户进行选择时要进行选择数据的输入,此时讲解输入语句。此时的程序只能进行一次用户的选择,如果想再次选择则需要重新执行程序,在此处可以进行循环结构的讲解,可以多次选择用户,直到用户自己退出程序为止。在循环结构中要用到相关的表达式,可以在此处进行表达式的讲解。当然,也可以先讲解基本数据类型和表达式,之后再进行顺序结构、选择结构、循环结构的设计。
在选择了相应的用户权限之后,就要执行对应的用户功能,如管理员功能、教师功能、学生功能等。此时给学生讲解程序设计中的模块,即函数,让学生深刻理解模块的概念及实现方式。在进入到相应的函数之后,如学生函数,此时应该确认学生的身份是否合法,通过键入如学号和密码来验证该学生是否合法,如合法则可以查询成绩,如不合法则重新登陆或退出。而学生的信息适合使用结构体类型数据来存储,很多学生信息则需要用结构体数组来存储,在此处给学生讲解构造数据类型(结构体、共用体、数组),通过学生结构体数组来模拟数据库表,在此处给学生讲解相关的数据库知识。学生功能包括成绩查询和修改密码两部分,所以要写两个相关的子函数,此处深入讲解函数的相关知识,如函数的调用、参数传递等。这部分是学生成绩管理系统的核心功能,工作量较大。
在完成相关数据的存储之后,发现关机之后数据就没有了,通过回顾内存与外存的区别,所以要把数据库存储在外存储器上,这就要用到文件。建立若干个文件用来存储管理员、教师和不同班级学生的记录(可用二维数组或多维数组来区别系或班级等),通过对文件的读写来实现对数据库数据的存取,基本达到学生成绩管理系统的使用目标。 在这个过程中,除了必要的知识介绍外,重在培养学生的结构化程序设计思维,理解C语言的几大组成部分并熟练使用,同时养成设计代码的规范性。
五、考核方式
全程采用案例教学就不适合出试卷进行考核,因此在考核方式上更适合过程化考核[5]。我们将考核内容分成两个部分,平时考核占60%(出勤占20%,平时训练占80%),最终考核占40%(小组考核占50%,个人考核占50%)。这样可以弱化对知识点的考查,重在考查学生对程序的分析与设计的能力。
六、实践教学
在实践教学环节(课程设计[6])可以安排类似的管理系统供学生分析和设计,此时每组要求选择不同的系统进行设计,每组独立设计系统功能框图、分工并实现,从而巩固并强化课堂所学的内容。
七、第二课堂
第二课堂可以参加相关的学科竞赛,如“ACM大学生程序设计竞赛”、“蓝桥杯全国软件和信息技术专业人才大赛”等学科竞赛,从而开阔学生的视野,加强学生的实际编程能力。当然,如果想参加相关的学科竞赛,还需要有一定的数据结构知识和算法知识,这需要对学生进行相关的培训或由学生自学完成。这对于学生是一次很好的升华,学生获得的相关学科竞赛读书对于将来的就业是一个很好的准备。
综上,通过一个典型案例将C语言程序设计课程内容有机地组织起来,将C语言教学内容分成五大部分,使学生容易理解并形成一个较强的印象。在实验室教学,人手一机,边讲边练,重在培养学生分析问题和设计程序的能力,培养学生的结构化程序设计思维。
参考文献
[1]蒲海波 兴趣驱动的案例教学在C语言教学中的应用[J]计算机光盘软件与应用 2013年第7期:192-193
[2]丁海燕 高级语言程序设计案例教学模式的探讨[J]计算机教育2011年第8期: 65-68
[3]吴美红 基于CDIO模式的案例教学在C语言程序设计中的应用[J]电脑知识与技术 2013年第11期:2632-2633
[4]李伟光 提高C语言实际应用能力的研究与实践[J]煤炭技术2012年11期:242-243
[5]薛小锋 案例教学在非计算机专业C语言程序设计教学中的应用[J]江苏技术师范学院学报2010年第4期:80-82
[6]張波 模块化案例教学在C语言程序设计课程中的应用[J]计算机教育 2009年第21期:62-65
【作者简介】:李伟光(1979年7月),男,硕士研究生,副教授,长春光华学院计算机科学与技术系主任,研究方向模式识别,
张勇(1974年8月),女,博士,教授,长春光华学院电气信息学院院长,研究方向模式识别。
【关键字】案例教学 C语言程序设计 课程改革
【中图分类号】TP311.1-4;G642.0
程序设计方法大体上分成两种:一种是结构化程序设计,一种是面向对象程序设计。结构化程序设计思想的原则是:自顶向下,逐步求精,模块化。绝大多数高校对学生进行结构化程序设计思维培养都是通过“C语言程序设计”课程进行的,但是多数课堂在进行“C语言程序设计”课程时都是按照教材的章节进行讲解[1][2],对C语言缺少一个整体的设计,并且实例之间都是离散的,没有关联,这样对于学生形成结构化程序设计思维造成了很大的困难。学生在学习“C语言”之后,往往知道其中的一些概念,如数组、结构体、指针、函数等等,会使用的就会减少一部分,而对“C语言”能够有一个整体的理解,对结构化程序设计思维有深入了解的,能够独立编程[3]的就少之又少。
为了培养学生的“结构化程序设计思维”,让学生对“C语言”有一个整体的掌握,并且能够熟练使用“C语言”进行程序设计,我们采用“全程案例式”教学方式进行C语言程序设计课程改革。
所谓“全程案例式”C语言程序设计教学是指在C语言的教学过程中从头到尾选用一个典型案例,如“学生成绩管理系统”,仿照教务管理平台对学生成绩进行管理。这样的案例学生非常了解,能够对其中的角色功能有明确的认知,这样就很容易分析清楚整个系统的功能模块构成,在此基础上对各个功能模块和数据类型进行设计,从而培养学生的结构化程序设计思维。
一、问题分析
教学人员对教务管理平台都不陌生,在分析问题的时候可以让学生自己设定学生成绩管理系统的角色和功能,然后实现。一般情况下,学生成绩管理系统可以分成三种角色,一是管理员,主要负责访问成绩管理平台成员数据的增、刪、改、查等操作,二是教师,主要负责学生成绩的录入、修改、查看等操作,三是学生,可以查看自己的成绩信息。同时三种成员都可以修改自己登陆平台的密码,功能模块划分如图1所示。通过对系统功能模块的划分,可以让学生理解结构化程序设计“自顶向下,逐步求精,模块化”的程序设计思想,并在此基础上,开发对应的功能函数。
二、学生分组
将学生分组,如25名同学分成5组,每组5人,有一位组长。每组分别独立完成以上教务管理平台中对应的功能模块,可以根据本组的讨论有所增删。这样每位同学平均完成两个功能模块,从而保证在课堂教学时间能够完成该项目。组长负责整个案例的任务分配,同时解决小组成员实施时遇到的技术问题,当然组成的最后成绩也会较高。
三、教学内容
仿照工程化的思路,如设计一个产品,需要有工人、原材料、工人。工人使用工具按一定的步骤加工原材料得到一个一个的零件,再将这些零件有机地组装起来就会形成一个产品。C语言的教学内容也可以按照以上思路进行分解,首先要有人,即程序员也就是学生;原材料是C语言的数据类型,包括基本类型(整型、实型、字符型、枚举型)、构造类型(数组、结构体、共用体)、指针类型和空类型;工具是运算符,用来操作某种类型的数据;操作步骤包括顺序结构、选择结构和循环结构;程序员使用工具按照一定的步骤加工原材料就能够得到一个零件,即函数;再将这些函数按图1进行组装就能够形成最后的学生成绩管理系统的源文件,同时能够对存储在外部文件中的人员数据等信息进行访问。[4]
将C语言的教学内容按照内在逻辑分成五大部分,学生容易理解并掌握。
四、教学方式
在教学上,采用“全程案例教学”,第一节课就开始写代码。开发工具可以使用C-Free、Dev-C++、Visual C++等,让学生理解C语言、C++语言和开发工具的区别。
根据问题的需要,首先要设计一个“学生成绩管理系统”的欢迎界面,通过该界面的设计讲解顺序结构,尤其是输出语句的使用。接下来应该是用户权限选择,如“1、管理员 2、教师 3、学生”,这就要用到选择结构,讲解if语句和switch语句。此时要在选择语句中使用一些数据类型,因此可以在此处讲解基本数据类型(字符型、整型、实型、枚举型)。在用户进行选择时要进行选择数据的输入,此时讲解输入语句。此时的程序只能进行一次用户的选择,如果想再次选择则需要重新执行程序,在此处可以进行循环结构的讲解,可以多次选择用户,直到用户自己退出程序为止。在循环结构中要用到相关的表达式,可以在此处进行表达式的讲解。当然,也可以先讲解基本数据类型和表达式,之后再进行顺序结构、选择结构、循环结构的设计。
在选择了相应的用户权限之后,就要执行对应的用户功能,如管理员功能、教师功能、学生功能等。此时给学生讲解程序设计中的模块,即函数,让学生深刻理解模块的概念及实现方式。在进入到相应的函数之后,如学生函数,此时应该确认学生的身份是否合法,通过键入如学号和密码来验证该学生是否合法,如合法则可以查询成绩,如不合法则重新登陆或退出。而学生的信息适合使用结构体类型数据来存储,很多学生信息则需要用结构体数组来存储,在此处给学生讲解构造数据类型(结构体、共用体、数组),通过学生结构体数组来模拟数据库表,在此处给学生讲解相关的数据库知识。学生功能包括成绩查询和修改密码两部分,所以要写两个相关的子函数,此处深入讲解函数的相关知识,如函数的调用、参数传递等。这部分是学生成绩管理系统的核心功能,工作量较大。
在完成相关数据的存储之后,发现关机之后数据就没有了,通过回顾内存与外存的区别,所以要把数据库存储在外存储器上,这就要用到文件。建立若干个文件用来存储管理员、教师和不同班级学生的记录(可用二维数组或多维数组来区别系或班级等),通过对文件的读写来实现对数据库数据的存取,基本达到学生成绩管理系统的使用目标。 在这个过程中,除了必要的知识介绍外,重在培养学生的结构化程序设计思维,理解C语言的几大组成部分并熟练使用,同时养成设计代码的规范性。
五、考核方式
全程采用案例教学就不适合出试卷进行考核,因此在考核方式上更适合过程化考核[5]。我们将考核内容分成两个部分,平时考核占60%(出勤占20%,平时训练占80%),最终考核占40%(小组考核占50%,个人考核占50%)。这样可以弱化对知识点的考查,重在考查学生对程序的分析与设计的能力。
六、实践教学
在实践教学环节(课程设计[6])可以安排类似的管理系统供学生分析和设计,此时每组要求选择不同的系统进行设计,每组独立设计系统功能框图、分工并实现,从而巩固并强化课堂所学的内容。
七、第二课堂
第二课堂可以参加相关的学科竞赛,如“ACM大学生程序设计竞赛”、“蓝桥杯全国软件和信息技术专业人才大赛”等学科竞赛,从而开阔学生的视野,加强学生的实际编程能力。当然,如果想参加相关的学科竞赛,还需要有一定的数据结构知识和算法知识,这需要对学生进行相关的培训或由学生自学完成。这对于学生是一次很好的升华,学生获得的相关学科竞赛读书对于将来的就业是一个很好的准备。
综上,通过一个典型案例将C语言程序设计课程内容有机地组织起来,将C语言教学内容分成五大部分,使学生容易理解并形成一个较强的印象。在实验室教学,人手一机,边讲边练,重在培养学生分析问题和设计程序的能力,培养学生的结构化程序设计思维。
参考文献
[1]蒲海波 兴趣驱动的案例教学在C语言教学中的应用[J]计算机光盘软件与应用 2013年第7期:192-193
[2]丁海燕 高级语言程序设计案例教学模式的探讨[J]计算机教育2011年第8期: 65-68
[3]吴美红 基于CDIO模式的案例教学在C语言程序设计中的应用[J]电脑知识与技术 2013年第11期:2632-2633
[4]李伟光 提高C语言实际应用能力的研究与实践[J]煤炭技术2012年11期:242-243
[5]薛小锋 案例教学在非计算机专业C语言程序设计教学中的应用[J]江苏技术师范学院学报2010年第4期:80-82
[6]張波 模块化案例教学在C语言程序设计课程中的应用[J]计算机教育 2009年第21期:62-65
【作者简介】:李伟光(1979年7月),男,硕士研究生,副教授,长春光华学院计算机科学与技术系主任,研究方向模式识别,
张勇(1974年8月),女,博士,教授,长春光华学院电气信息学院院长,研究方向模式识别。