论文部分内容阅读
摘要:指导大学生参加全国软件设计大赛后启发很多,深切体会到C程序设计课程教学运用案例式教学方法的重要意义,案例式教学方法对培养和提高学生的编程能力、逻辑思维能力和创新能力可以起到积极的作用。文章从多角度举例说明了案例式教学方法在教学中的具体应用。
关键词:C程序设计;案例式教学;计算思维
中图分类号:TP312
1C程序设计课程的重要地位
我院从2008年以来,积极响应教育部和陕西省教育厅的有关教学改革的文件精神,全面修改各个专业的人才培养模式,对教学的研究与改革如火如荼地展开。尤其是指导学生参加全国软件设计大赛之后,深深体会到传统的教学方法已远不能适应软件设计的要求,针对C语言程序设计课程的教学方法,应用案例式教学方法,才能推动了教学质量的提高,才能使学生学到的知识适应软件设计的发展。
教学实践证明,C程序设计课程对引领学生进入软件设计行业、掌握基本程序概念和算法原理、产生程序设计兴趣和爱好、完成从传统科学的思维方式向计算思维方式的转变、培养学生编程意识、形成编程风格、提高编程能力等,起着决定性的作用。因此,加强对C程序设计课程的教学与研究至关重要。
2案例教学法的基本思想
目前,案例教学方法被广泛应用于医学、法学和管理学等学科的教学之中。案例教学模式是一种互动式的教学方法,以案例分析为基础,解决问题为主线,教学内容围绕案例的讨论、分析逐步展开,通过对案例的剖析,激发学生的求知欲,调动学生的积极性,使学生主动地思考,让学生充分讨论并发表各自的见解,教师适时引导和评判,最后总结相关的知识点。案例是实现案例教学的前提和基础,教学案例并不是简单的举例,可以是典型的算法范例,可以是软件项目中的一个模块,一个部分,也可以是企业招聘软件人才的考题。教学过程中始终贯穿以案例分析讲解为基础,以讲解相关知识点为主线,以启发学生理解和掌握知识点为目的。
3案例教学法在C程序设计教学中的实践
案例教学的一般过程是“提出案例-案例分析-要点讲解-知识点导入-模仿-应用”。
3.1通过案例突出常用的算法
程序设计课程中算法是设计程序的根本,算法是运用计算机解实际问题的步骤。程序是根据计算机的算法,再结合具体的高级语言编写语句代码。C程序设计课程中,常用的算法有:求累加和,求阶乘,求极值,求闰年,求素数,求最大公约数,求方程组的解,求方程的解,冒泡排序算法,迭代算法,穷举算法,递归算法等。应该在每个案例中贯穿一个或两个算法,在案例中突出讲解算法的归纳和运用。从课程开始讲授就要培养学生重视算法和逐步掌握算法。穷举算法是将事物变化的各种可能性全部罗列出来,即对各种组合的遍历,这种算法的实用价值高,具有广泛的应用,2013年蓝桥杯软件设计大赛的考题中有很多题目都涉及到穷举算法和递归算法。例如:求21位花朵数、猜算式、汉诺塔、字符排列、逻辑推理等问题。递归算法是很抽象的,学生很难把大问题分解为处理方法类似的小问题,教学中我们应用两种算法对比的方法,给学生重点讲清楚递归算法的分解方法和递归的出口方法。如下案例:求a,b最大公约数。
通过以上两种算法的比较,给学生讲清楚递归调用算法中形参b就是迭代算法中的r=a%b,递归调用语句:gcd(b,a%b);中就包含着{a=b;b=r;},出口语句:if(b==0) return a;就等价与r==0时停止循环,输出最大公约数b,在递归调用算法中递归调用语句:gcd(b,a%b)所以return a就相当于迭代算法中的最大公约数b;这样对比式讲解递归算法,对学生的理解有很大帮助。
3.2通过案例逐步建立计算思维的思想
计算机解题的算法虽然来源于数学,但又要结合计算机是由超大规模集成电路设计的特点,计算机内存空间的变量总是新值代替原来的值(旧值),计算机具有逻辑判断能力。观察下面的算式:* * × * * = * * * 。它表示:两个两位数字相乘,结果是3位数。其中的星号(*)代表任意的数字,可以相同,也可以不同,只要不是在首位的就可以是0。当然,满足这个要求的算式很多,要求:所有星号所代表的数字全都是奇数。满足这个要求的算式就不多了。比如:13x15=195案例的任务是:编写程序,找到所有可能的情况。输出的结果中,每个情况占用1行,不需要考虑不同情况如何排序问题。每行的格式如:13x15=195
在这个案例中用到穷举法,并没有高深的数学知识,只要把数学问题转变为计算机的算法,即计算思维的过程,a,b,c,d,e,f,g每个变量代表一个*号,取值不能为0,(a*10+b)代表第一个两位数:**,(c*10+d)代表第二个两位数:**,(e*100+f*10+g)代表等式右边的三位数***。逻辑条件是上述等式成立(a*10+b)*(c*10+d)==(e*100+f*10+g),每位数字必须是奇数的逻辑条件:(a%2!=0&&b%2!=0&&c\%2!=0&&d%2!=0&&e%2!=0&&f%2!=0&&g%2!=0)
3.3通过案例增强应用能力
在教学中精选案例,应注重案例的实用性、趣味性、综合性,能达到立竿见影、事半功倍的教学效果。譬如:在讲述关系运算、逻辑运算时,列举的例子通常是简单的关系运算或者关系运算的逻辑组合,虽然容易理解,但缺乏趣味性,难以引人入胜。我们可以引入一些逻辑推理题,使得案例具有知识性,具有实用性、具有趣味性。逻辑推理题如下:共有10名学生:A、B、C、D、E、F、G、H、I、J有可能参加本次计算机竞赛,也可能不参加。因为某种原因,他们是否参赛受到下列条件的约束:
1.如果A参加,B也参加;2.如果C不参加,D也不参加;
3.A和C中只能有一个人参加;4.B和D中有且仅有一个人参加;
5.D、E、F、G、H中至少有2人参加;6.C和G或者都参加,或者都不参加;
7.C、E、G、I中至多只能2人参加 8.如果E参加,那么F和G也都参加。
9.如果F参加,G、H就不能参加 10.如果I、J都不参加,H必须参加
请编程根据这些条件判断这10名同学中参赛者名单。如果有多种可能,则输出所有的可能情况。每种情况占一行。参赛同学按字母升序排列,用空格分隔。比如:C D G J。
在这个案例的讲解中,让学生理解十个约束条件的逻辑表达式的表示方法,穷举算法编程能解决问题,递归算法编程也能解决这个问题,经过对比使学生开阔思路,扩展实际应用能力。
4结束语
教学实践证明,采用案例教学,将抽象的概念、枯燥的语法、繁多的算法,转化为一个个具体生动的实例,再加上学生多阅读、多思考、多练习,就能够很好地解决高职教育中学生知识水平难于提高的问题,使C语言程序设计课程达到良好的教学效果,从而使后续的程序设计类课程教学游刃有余。
参考文献:
[1]程立倩.C语言程序设计案例教程[M].北京:北京邮电大学出版社,2012
[2]刘克成.C语言程序设计[M].北京:中国铁道出版社,2010.
[3]李文虎,徐明星.程序设计基础(第3版)[M].北京:清华大学出版社,2010.
作者简介:张玉林(1950.11-),男,陕西商州人,系主任,副教授,本科,研究方向:计算机在数据库方面的应用。
关键词:C程序设计;案例式教学;计算思维
中图分类号:TP312
1C程序设计课程的重要地位
我院从2008年以来,积极响应教育部和陕西省教育厅的有关教学改革的文件精神,全面修改各个专业的人才培养模式,对教学的研究与改革如火如荼地展开。尤其是指导学生参加全国软件设计大赛之后,深深体会到传统的教学方法已远不能适应软件设计的要求,针对C语言程序设计课程的教学方法,应用案例式教学方法,才能推动了教学质量的提高,才能使学生学到的知识适应软件设计的发展。
教学实践证明,C程序设计课程对引领学生进入软件设计行业、掌握基本程序概念和算法原理、产生程序设计兴趣和爱好、完成从传统科学的思维方式向计算思维方式的转变、培养学生编程意识、形成编程风格、提高编程能力等,起着决定性的作用。因此,加强对C程序设计课程的教学与研究至关重要。
2案例教学法的基本思想
目前,案例教学方法被广泛应用于医学、法学和管理学等学科的教学之中。案例教学模式是一种互动式的教学方法,以案例分析为基础,解决问题为主线,教学内容围绕案例的讨论、分析逐步展开,通过对案例的剖析,激发学生的求知欲,调动学生的积极性,使学生主动地思考,让学生充分讨论并发表各自的见解,教师适时引导和评判,最后总结相关的知识点。案例是实现案例教学的前提和基础,教学案例并不是简单的举例,可以是典型的算法范例,可以是软件项目中的一个模块,一个部分,也可以是企业招聘软件人才的考题。教学过程中始终贯穿以案例分析讲解为基础,以讲解相关知识点为主线,以启发学生理解和掌握知识点为目的。
3案例教学法在C程序设计教学中的实践
案例教学的一般过程是“提出案例-案例分析-要点讲解-知识点导入-模仿-应用”。
3.1通过案例突出常用的算法
程序设计课程中算法是设计程序的根本,算法是运用计算机解实际问题的步骤。程序是根据计算机的算法,再结合具体的高级语言编写语句代码。C程序设计课程中,常用的算法有:求累加和,求阶乘,求极值,求闰年,求素数,求最大公约数,求方程组的解,求方程的解,冒泡排序算法,迭代算法,穷举算法,递归算法等。应该在每个案例中贯穿一个或两个算法,在案例中突出讲解算法的归纳和运用。从课程开始讲授就要培养学生重视算法和逐步掌握算法。穷举算法是将事物变化的各种可能性全部罗列出来,即对各种组合的遍历,这种算法的实用价值高,具有广泛的应用,2013年蓝桥杯软件设计大赛的考题中有很多题目都涉及到穷举算法和递归算法。例如:求21位花朵数、猜算式、汉诺塔、字符排列、逻辑推理等问题。递归算法是很抽象的,学生很难把大问题分解为处理方法类似的小问题,教学中我们应用两种算法对比的方法,给学生重点讲清楚递归算法的分解方法和递归的出口方法。如下案例:求a,b最大公约数。
通过以上两种算法的比较,给学生讲清楚递归调用算法中形参b就是迭代算法中的r=a%b,递归调用语句:gcd(b,a%b);中就包含着{a=b;b=r;},出口语句:if(b==0) return a;就等价与r==0时停止循环,输出最大公约数b,在递归调用算法中递归调用语句:gcd(b,a%b)所以return a就相当于迭代算法中的最大公约数b;这样对比式讲解递归算法,对学生的理解有很大帮助。
3.2通过案例逐步建立计算思维的思想
计算机解题的算法虽然来源于数学,但又要结合计算机是由超大规模集成电路设计的特点,计算机内存空间的变量总是新值代替原来的值(旧值),计算机具有逻辑判断能力。观察下面的算式:* * × * * = * * * 。它表示:两个两位数字相乘,结果是3位数。其中的星号(*)代表任意的数字,可以相同,也可以不同,只要不是在首位的就可以是0。当然,满足这个要求的算式很多,要求:所有星号所代表的数字全都是奇数。满足这个要求的算式就不多了。比如:13x15=195案例的任务是:编写程序,找到所有可能的情况。输出的结果中,每个情况占用1行,不需要考虑不同情况如何排序问题。每行的格式如:13x15=195
在这个案例中用到穷举法,并没有高深的数学知识,只要把数学问题转变为计算机的算法,即计算思维的过程,a,b,c,d,e,f,g每个变量代表一个*号,取值不能为0,(a*10+b)代表第一个两位数:**,(c*10+d)代表第二个两位数:**,(e*100+f*10+g)代表等式右边的三位数***。逻辑条件是上述等式成立(a*10+b)*(c*10+d)==(e*100+f*10+g),每位数字必须是奇数的逻辑条件:(a%2!=0&&b%2!=0&&c\%2!=0&&d%2!=0&&e%2!=0&&f%2!=0&&g%2!=0)
3.3通过案例增强应用能力
在教学中精选案例,应注重案例的实用性、趣味性、综合性,能达到立竿见影、事半功倍的教学效果。譬如:在讲述关系运算、逻辑运算时,列举的例子通常是简单的关系运算或者关系运算的逻辑组合,虽然容易理解,但缺乏趣味性,难以引人入胜。我们可以引入一些逻辑推理题,使得案例具有知识性,具有实用性、具有趣味性。逻辑推理题如下:共有10名学生:A、B、C、D、E、F、G、H、I、J有可能参加本次计算机竞赛,也可能不参加。因为某种原因,他们是否参赛受到下列条件的约束:
1.如果A参加,B也参加;2.如果C不参加,D也不参加;
3.A和C中只能有一个人参加;4.B和D中有且仅有一个人参加;
5.D、E、F、G、H中至少有2人参加;6.C和G或者都参加,或者都不参加;
7.C、E、G、I中至多只能2人参加 8.如果E参加,那么F和G也都参加。
9.如果F参加,G、H就不能参加 10.如果I、J都不参加,H必须参加
请编程根据这些条件判断这10名同学中参赛者名单。如果有多种可能,则输出所有的可能情况。每种情况占一行。参赛同学按字母升序排列,用空格分隔。比如:C D G J。
在这个案例的讲解中,让学生理解十个约束条件的逻辑表达式的表示方法,穷举算法编程能解决问题,递归算法编程也能解决这个问题,经过对比使学生开阔思路,扩展实际应用能力。
4结束语
教学实践证明,采用案例教学,将抽象的概念、枯燥的语法、繁多的算法,转化为一个个具体生动的实例,再加上学生多阅读、多思考、多练习,就能够很好地解决高职教育中学生知识水平难于提高的问题,使C语言程序设计课程达到良好的教学效果,从而使后续的程序设计类课程教学游刃有余。
参考文献:
[1]程立倩.C语言程序设计案例教程[M].北京:北京邮电大学出版社,2012
[2]刘克成.C语言程序设计[M].北京:中国铁道出版社,2010.
[3]李文虎,徐明星.程序设计基础(第3版)[M].北京:清华大学出版社,2010.
作者简介:张玉林(1950.11-),男,陕西商州人,系主任,副教授,本科,研究方向:计算机在数据库方面的应用。