c语言程序设计实验报告
实验二 循环结构程序设计
班级 2012196 学号 201219628 姓名 李明月
一、实验目的
(1)掌握用while语句,do-while语句和for语句实现循环的方法;(2)掌握循环结构的嵌套;
(3)掌握break语句和continue语句的使用方法。
二、实验内容及步骤
1.相传国际象棋是古印度舍罕王的宰相达依尔发明的。舍罕王十分喜欢象棋,决定让宰相自己选择何种赏赐。这位聪明的宰相指着8×8共64格的象棋盘说:陛下,请您赏给我一些麦子吧,就在棋盘的第一个格子中放1粒,第2格中放2粒,第3格放4粒,以后每一格都比前一格增加一倍,依此放完棋盘上的64个格子,我就感恩不尽了。舍罕王让人扛来一袋麦子,他要兑现他的许诺。国王能兑现他的许诺吗?
程序1:试编程计算舍罕王共要多少粒麦子赏赐他的宰相,这些麦子合多少立方米?(已知1立方米麦子约1.42e8粒)总粒数为:sum=1+2+22+23+„+263 程序代码:
#include
for(i=1;i<=63;i++)//用for循环语句实现循环运算 { t=t*2;sum+=t;//循环表达式 } printf(“总麦粒数为:%fn”,sum);v=sum/1.42e8;printf(“折合体积为: %f立方米n”,v);//对结果进行输出
return 0;} 运行结果:
2.求完数。
程序2:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6的因子为1,2,3,而6=1+2+3,因此6是“完数”。编程找出1000之内的所有完数,输出所有的完数(要求:一行显示6个数);
程序代码:
#include
sum=0;for(j=1;j
if(i%j==0)
{
sum=sum+j;
} } if(sum==i)
{ printf(“ %d”,i);
n=n+1;
if(n%2==0)
printf(“n”);
} } printf(“n”);return 0;} 运行结果:
3.打印九九乘法表
程序3:编程输出如下上三角形式的九九乘法表。2 3 4 5 6 7 8 9-------n“);for(i=1;i<10;i++)//i { for(j=1;j<=i;j++)// printf(” “);for(j=i;j<10;j++)//j printf(”%-2d “,i*j);// printf(”n“);}
代表行 输出空格达到来使得向右对齐代表列
输出行与列的乘积 3 1 2 3 4 5 6 7 8 9
运行结果:
三、问题讨论
break语句和continue语句在循环结构中使用时有何区别?举例说明。
break语句是跳出整个循环过程,不再判断执行循环的田间是否成立,并且break语句不能用于循环语句和switch语句之外的任何其他语句中。而continue语句则只是结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。
例子:
#include
printf(”%d“,i);} printf(”n");return 0;} 输出:
但是换成break之后:
四、实验心得
在C语言实验中,主要是引导学生突破传统的思维方式,培养学生读、写程序和调试程序的能力以及提高上机的学习兴趣和自主实验的方法技巧等。以下是笔者结合教学实践,从几个方面总结如何加强实践环节的教学。
1 编写符合学生实际情况的实验讲义,注重学生综合实验能力的培养
目前,C语言实验方面的教材和参考资料很多,但是绝大部分内容广泛,针对性不强,不好直接拿来当作学生的实验指导书,主要有以下几个原因:第一,学生没有明确的实验目标,实验兴趣不大。上机时一些学生无所事事或玩游戏,不但害了自己,还影响其他同学。第二,现有教材中上机实验都立足于C语言本身的一些语言规则,和实际开发脱节,没有较容易理解和生动有趣的范例,比较死板、枯燥。第三、现有实验大多注重语句、语法等,没有把编程解题思路和程序测试等放在首位,对学生分析问题和解决问题的能力训练不够。为此,教师需要结合自己的教学经验,针对专业特色和教学要求编写针对性较强的实验指导书,以达到以下几个目的:(1)每个实验目的明确;(2)明确实验预习内容,让学生每次实验都作好预习准备;(3)实验指导部分重在指出此次实验的重点内容、不易理解和易出错的环节,而不是理论教材的重复讲述;(4)精选实验题目,以达到每一道题都能体现一个或多个知识点,并较多地设置“陷阱”,尽量让学生出错,把问题留给学生去思考和解决。根据难易程度分必作题和选作题,必作题要求在上机时间内完成,选作题供学有余力的同学参考,以满足不同层次学生的需求。
2 规范实验活动过程,量化评分标准
学生是实验的主体,要提高实验教学效果,学生必须要对实验有足够的兴趣和重视。然而,认为实验课无关紧要的思想还是比较普遍,因此作为实验教师就应当制定一些规章制度来规范整个实验过程,在C语言实验教学过程中实验教学过程中主要从以下几个方面进行规范。
2.1 检查实验预习报告
由于是程序设计课程,如果学生上机时才来思考、写程序和调试,绝大部分同学根本不能完成实验任务,甚至根本没法动手。为了提高实验教学效果,在自编的实验指导书中设有“预习与思考”内容。要求学生在上课之前思考相关问题并将“实验内容”部分的源程序写好。每次上课前,老师严格检查实验预习报告,凡没有预习的同学一律不允许进实验室。这样,可以促使学生对相关的内容进行一定时间的预习和思考,实验教学效果较明显。
2.2 严格考勤制度和实验现场考评
在实验教学过程中应注意培养学生的动手能力、独立科研能力及合作精神,绝不允许“一人动手大家看”这种“放羊式”现象出现。学生在做完实验后都必须由教师检查其结果,打分后方可离开,凡无结果或结果不理想者,必须补做或提供条件让其重做,促使学生在实验中勤动手,也使学生们具有成就感。对于部分综合型的实验尤其强调分工合作,实行小组长负责制,争取小组成员一起协调配合完成。
2.3 认真批阅实验报告加强反馈
每次实验结束,要求学生上交实验报告。对每一份实验报告都认真批阅,在不正确的地方作出批注,并提示学生错误的原因让他进一步思考;对表现好的学生下评语给予鼓励。这样做有几个好处:(1)能够检验学生上机实践的效果;(2)能及时发现和校正学生所出现的问题;(3)能够激发学生对此门实验课程的学习兴趣;(4)老师能清楚地了解学生对相关知识的掌握情况,教学更加有针对性。实践证明,认真批阅实验报告后,下次同学们上机时会更认真,所写的实验报告更工整、规范。
2.4 量化评分标准
实验课不同于理论课,实验操作能力是评价学生成绩的一个主要方面,不能仅以试卷的形式来评分,因此需要制定了严格的评分标准,将学生们在课堂上的表现以分数形式量化,比如可这样规定(实验成绩30分):其中操作和实验结果10分、实验报告5分、实验考试5分、提问5分、纪律5分:包括迟到早、旷课、环境整洁等。这样可以让学生有紧迫感,杜绝“放羊”现象的发生。
3 改革实验教学方法
在以前的实验教学中,老师在上机之前将实验过程中可能涉及到的问题先作讲解,在实验过程中,当学生问到问题时,马上给出正确的解决方案,甚至帮学生将问题解决,很少让学生去思考。这样可能下次学生遇到相同的问题时仍然没法解决。然而,学生在整个实验过程中,是否积极开动脑筋,所收到的效果是大不一样的。现在,在教学过程中切实采用“启发式”教学方法,主要体现在:(1)在课前,针对本次实验的内容提出几个问题让学生思考后作答,这样就会促使学生应用所学过的理论知识对教师所提的问题积极思考,并通过实验来验证解决;(2)对学生在实验过程中所遇到问题,并不马上将解决的方法都告诉学生,而是引导学生分析,在什么情况下才会出现这种错误,如果要解决它有哪几种思路,留几分钟的时间给学生自己思考。比如针对以下3个C语句:int b=7;float a=2.5,c=4.7;a+(int)(b/3*(int)(a+c)/2)%4,让学生计算表达式的值并上机验证。采用的教学方法是先让学生用笔计算,之后上机验证,看两个结果是否一致。一般会发现一部分学生出错,就可提出以下几个问题供他们思考:(1)整个表达式的结果是int型还是float型?(2)(int)(a+c)的结果是多少?是整型还是实型?(3)两个整型数据相除结果是什么类型?(4)“%”运算符的功能是什么?左右两边的数据要求是什么类型?
比起“填鸭式”的灌输,“启发式”教学方法可以让学生积极开动脑筋思考,对本实验的理解就会更加深刻,学到的知识也更扎实。
4 设计综合性的实验
以往大多数同学在学完C语言后,普遍反映能看懂例题,但遇到实际问题就无从下手,这主要是教材上的例题缺少实际意义。为此,我们可以设计短期任务与长期任务结合的上机内容。以一个大题目作为长期任务,再按不同功能模块分解开来,形成一个个短期任务。每一章学过之后要求完成一项或几项编程作业,而各章的编程作业不是孤立的,而是相互联系的,实际上它们都是一个较大型较复杂程序的组成部分。这样就可以使学生的任务形成一种连贯性,在整个学科的学习过程中始终都有一个总任务的驱动,而学生又在一个又一个短期任务的驱动下,体验着一次又一次迈向成功的喜悦。例如,以“学生成绩管理系统”为课程设计的长期任务,从常用输入/输出语句printf和scanf开始,让学生编写主函数并在主函数中调用若干个空函数形成一个文本型菜单的雏形;学习常用数据类型后,再编写一个验证密码输入的函数;选择结构后,要求编写一个菜单选取函数;循环控制和数组后,要求建立班级课程的成绩输入输出函数;学完结构体类型后,要求使用结构体数组来存储和处理学生的信息;学习链表后,要求利用单链表动态管理学生的成绩;最后在“文件”这一章,要求利用文件操作完成学生成绩管理。当学完整个课程,完成了平时要求的各项编程作业之后,就会发现,原来自己完成的远不是零碎的程序段,而是在制作程序的各个部件,只要通过简单的程序拼装,就可以构成一个比较复杂的程序。这也在潜移默化中培养了学生采用各个击破的方法解决实际问题的意识。最后,学生从整体的角度来审视整个程序的设计,并通过上机进行综合调试,达到提高编程能力的目的。
5 采用协作方式的实验组织形式
协作学习由David W.和Roger R.Jonson教授提出,是学生以小组形式参与、为达到共同的学习目标、在一定的激励机制下最大化个人和他人习得成果,而合作互助的一切相关行为。协作学习是一种通过小组或团队的形式组织学生进行学习的一种策略。小组成员的协同工作是实现班级学习目标的有机组成部分。小组协作活动中的个体(学生)可以将其在学习过程中探索、发现的信息和学习材料与小组中的其他成员共享,甚至可以同其他组或全班同学共享。在此过程中,学生之间为了达到小组学习目标,个体之间可以采用对话、商讨、争论等形式对问题进行充分论证,以期获得达到学习目标的最佳途径。学生学习中的协作活动有利于发展学生个体的思维能力,增强学生个体之间的沟通能力以及对学生个体之间差异的包容能力。此外,协作学习对提高学生的学习业绩、形成学生的批判性思维与创新性思维、对待学习内容与学校的乐观态度、小组个体之间及其与社会成员的交流沟通能力、自尊心与个体间相互尊重关系的处理等都有明显的积极作用。
采用协作方式来组织实验,是值得广大教师探讨并推广的一种形式。在C语言实验教学过程中,在尊重学生个体差异和一人一机基础上,利用局域网,将学生分成小组进行协作实验,将实验心得体会、结论等在网上共享。改变以前那种各自为阵,互不往来的实验组织方式。协作学习对提高学生的学习业绩、形成学生的批判性思维与创新性思维、对待学习内容与学校的乐观态度、小组个体之间及其与社会成员的交流沟通能力、自尊心与个体间相互尊重关系的处理等都有明显的积极作用。
6 结束语
C语言的实践教学在该课程的教学过程中占有举足轻重的地位,本文通过对C语言课程多年的教学经验和教学改革的实践和体会,提出了增强实践教学和加强学生动手能力的培养想结合的思想,使学生在实践教学的同时,也锻炼和培养了都手能力,为大学计算机语言课程的实践教学提出了一个新的思路和方法。当然,对于实验课的教学,还有许多方面需要我们进一步完善和提高。
摘要:《C语言程序设计》是高校计算机教学的一门基础课,实验教学在其中占有非常重要的地位。本文就如何强化C语言实验教学进行了探索,并提出了一些可行的方法。通过教学实践表明,这些方法和措施能有效地提高教学效果以及学生的动手能力。
关键词:C语言,实验教学改革,探讨
参考文献
[1]谭浩强.C程序设计(第二版)[M].北京:清华大学出版社,1999.
关键词:C语言实验教学;教学改革;教学设计;教学流程
中图分类号:G642.0 文献标识码:A
一、引言
C程序编写能力是要靠大量的练习学会的,只有让学生多多动手,他们才会对程序设计语言感兴趣。因此在C语言课程教学中应该重视实验课。但是,目前C语言实验课的教学存在着以下弊端:第一,在教学理念上重视理论教学,轻视实验课的练习。第二,在实验课教学过程中教师往往放任学生自由上机,学生只能被动地编写教师提供的程序清单对编程知识缺少深入思考。第三,在实验课的教学过程中,学生之间缺少交流。而在实际的程序开发行业中所有开发人员是需要相互合作的。基于以上因素需要对C语言实验课的教学过程进行改进。
二、C语言实验课教学目标的确定
教学目标就是教学的一个标准,教学目标规定了教学要达到的程度,它是教师教学和学生学习的依据,教学目标的制定可以克服教学的盲目性,在教学过程中占有重要的地位。因此,C语言实验课教学首先要确定教学目标。
C语言实验课教学目标的制订要从认知领域、动作技能领域和情感领域这三个方面来确定。例如对于C语言课程中的“控制结构”这部分的实验内容其实验目标确定如下:在认知领域方面,学生要理解基本的解决问题的技巧,理解计数控制循环和标记控制循环;在动作技能领域方面,学生能够熟练掌握自顶向下逐步求精算法设计,能够熟练应用if语句,if/else语句和switch语句来实现选择结构,能够应用while语句,do/while语句和for语句实现程序循环结构,学生可以使用++、--、赋值和逻辑运算操作符,在循环语句中能够应用break语句和continue语句来控制程序的结构;在情感領域方面,要培养学生认真学习、严谨求实、实事求是和勇于探索的科学精神和态度。
三、确定C语言实验课的操作流程
为了上好C语言实验课,并且能够完成制订好的教学目标,需要根据C语言实验课的具体题目可以将实验课教学过程分为三大部分进行:课前部分、课中部分和课后部分。其具体的操作流程如下图所示:
C语言实验课操作流程图
在上图中,课前教学部分、课中教学部分和课后教学部分都要按照实验教学目标来制定。课前教学部分是在课堂讲授课程完毕之后并且在实验课进行之前进行的,在这部分中主要是要对所讲授课程的知识点进行巩固,并对实验课涉及的知识进行预习。教师在设计实验题目时要设计好学习环境,利用良好的环境调动学生学习的积极性。在实验课学生现场自主编程中,可以发现C语言的语法错误和逻辑错误,提高学生自己分析和解决问题的能力。在这个过程中,教师要给予学生必要的指导和帮助。在协助学习实验题目过程中,教师要确定协作小组让学生共同完成学习目标并将个人习得成果转化为大家习得成果,并且教师要对不同的学习任务进行选择,要设计好实验课程的协作环境,保证实验课程的顺利实施,最后要对实验教学效果进行评价,以此来刺激教学的进行。
四、结论
在C语言实验课的教学中,要充分尊重学生学习活动的主体性地位。所以在大学C语言程序设计这门课程的实验教学中采用了以学为主的教学设计方案,这样可以促进学生独立分析问题的能力,充分调动学生学习的兴趣和主动参与意识。
参考文献:
[1]吴文虎.计算机程序设计基础课程改革[J].中国大学教学,2004(02).
[2]乌美娜.教学设计[M].北京:高等教育出版社,1994.
[3]孙可平.现代教学设计纲要[M].西安:陕西人民教育出版社,1998.
一、、for(i=0;i T[2*d]=' Scanf(“%s”,&s)、#define ARR-SIZE 80; Inverse(char a); Str[i]=str[j]; 3、int f=1; 二、1、i<=n S+x[i] i2—i1+12、#include String strTemp[i] J++; 2、求圆环的面积。(函数的嵌套调用;定义求圆的面积和圆环面积实现)#include } float area_ring(float x,float y){ float c;c=fabs(area(x)-area(y));return(c);} float area(float r){ return(PI*r*r);} 3、设计求n!的函数(分别使用连乘和递归法)再调用函数求x!-y!+z!。递归 #include t*=i;return t;} void main(){ { unsigned int n;printf(“input a unsignded interger number:n”);scanf(“%d”,&n);printf(“%d!=%10ldn”,n,fac(n));} { (四)一、实验目的 1.掌握C语言中函数和模块 2.掌握怎样定义函数,如何调用或使用函数,如何声明函数 3.掌握函数的参数,了解在函数调用时,参数是如何传递的 4.在使用函数的过程中怎样确定函数的参数 5.如何使用局部变量和全局变量 二、实验内容 1.偶数判断 描述: 编写一个用户自定义函数,该函数有一个整型参数,函数的功能是:当这个整型数的值是偶数时,函数的返回值为0,当这个整型数的值是奇数时,返回值为1。编写一个程序,从键盘输入m个整数,分别调用用户自定义函数来判断这m个整数的奇偶性。 输入: 第一行为一个整数m,表示要判断m个整数的奇偶性;紧接着是m行,每行一个整数。 输出:有m行,分别对应输入的第2到第m+1行的整数的奇偶性 样例输入: 2 1 6 样例输出: 奇数 偶数 ·程序代码: #include“stdio.h” int isEven(int a){ if(a%2==0) return 1;else return 0;} int main(){ int m,i,b;scanf(“%d”,&m); for(i=1;i<=m;i++) { scanf(“%d”,&b); if(isEven(b)==1) printf(“偶数n”); else printf(“奇数n”); } return 0;} 2.温度转换 描述: 编写一个用户自定义函数,函数的功能是:将华氏温度转F换为摄氏温度C。转换公式为:C=5*(F-32)/9。编写一个程序,输出指定范围的华氏温度与摄氏温度的对照表,其中华氏温度步长为4。 输入: 两个空格隔开的整数n,m(且0 #include “stdio.h” float conver(int f){ return 5*(f-32)/9.0;} int main(){ int n,m,i;scanf(“%d%d”,&n,&m);for(i=n;i<=m;i+=4) printf(“%d%10.2fn”,i,conver(i));return 0;} 3.最大值函数 描述:编写一个用户自定义函数,该函数有三个整数参数,函数的功能是:求解这三个整数的最大值,函数的返回值为三个参数的最大值。编写一个程序,从键盘输入任意5个整数,分别两次调用用户自定义函数来求出这5个整数中的最大值。 输入:第一行为N,表示有N组数据,接下来是N行,每行是5个用空格隔开的整数(在VC++6.0 int范围)。输出:有N行,每行是对应输入的5个整数的最大值。样例输入: 3 1 2 3 4 5 5 4 3 2 1 1 2 5 3 4 样例输出: 5 5 5 ·程序代码: #include “stdio.h” int max(int a, int b, int c){ int t;t=a;if(b>t) t=b;if(c>t) t=c;return t;} int main(){ int n,a,b,c,d,e,i;scanf(“%d”,&n);for(i=1;i<=n;i++){ scanf(“%d%d%d%d%d”,&a,&b,&c,&d,&e); printf(“%dn”,max(a,b,max(c,d,e)));} return 0;} 4.三位数数字排序 描述: 对于给定的若干个三位正整数,将它们的各位上的数字按由小到大的顺序输出。要求,写一个函数,能将其整型参数的各位数字按照由小到大进行输出。主函数完成对输入的若干个三位数,分别调用该函数,完成指定的输出。输入: 若干行,每行有一个三位正整数,输入为0结束。输出: 有若干行,依次对应于非0的整数,将相应三位正整数的数字由小到大输出,数字间没有空格。 样例输入: 123 987 670 0 样例输出: 123 789 067 ·程序代码: #include “stdio.h” int main(void){ int n,a[4],xx,sum;scanf(“%d”,&n);while(n!=0){ int i,j; for(i=1;i<=3;i++) { a[i]=n%10; n/=10; } for(i=1;i<=3;i++) { for(j=i;j<=3;j++) { if(a[i]>a[j]) { xx=a[j]; a[j]=a[i]; a[i]=xx; } } } for(i=1;i<=3;i++) } { printf(“%d”,a[i]);} printf(“n”); scanf(“%d”,&n);} return 0;5.排列数计算 描述: 表示从m个元素中抽出n个元素的排列的个数。 计算公式为:编写一个用户自定义函数,该函数有一个整数参数,函数的功能是求解这个整数的阶乘,函数的返回值为这个整数的阶乘。编写一个程序,从键盘输入m、n值,分别两次调用用户自定义函数来求解 : 多行测试数据,每行两个用空格隔开的整数,0 0 表示结束。 输出: 有多行,对应于非0 0行的排列值。 样例输入: 5 3 8 2 0 0 样例输出: 60 56 ·程序代码: #include “stdio.h” int main(void){ double n,m,t;double x1,x2,i,k,kk;scanf(“%lf%lf”,&m,&n);while(n!=0&&m!=0){ x1=1; /*if(m { t=m; m=n; n=t; } */ for(i=1;i<=m;i++) { x1*=i; } k=m-n; x2=1; for(i=1;i<=k;i++) { x2*=i; } kk=x1/x2; printf(“%.0lfn”,kk); scanf(“%lf%lf”,&m,&n);} return 0;} 6.素数对 描述: 哥德巴赫猜想大家都知道一点吧.我们现在不是想证明这个结论,而是想在程序语言内部能够表示的数集中,任意取出一个偶数,来寻找两个素数,使得其和等于该偶数.做好了这件实事,就能说明这个猜想是成立的.由于可以有不同的素数对来表示同一个偶数,所以专门要求所寻找的素数对是两个值最相近的,而且素数对中的第一个数不大于第二个数.输入:输入中是一些偶整数M(6 #include “stdio.h” int prime(int n){ int i;for(i=2;i if(n%i==0) return 0; return 1;} int main(){ int m,i;while(scanf(“%d”,&m)==1)for(i=m/2;i>=2;i--) if(prime(i)&&prime(m-i)&&i!=m-i) { printf(“%d %dn”,i,m-i); break; } return 0;} 7.函数表达式计算 描述:计算下列表达式的值: 输入:输入x和n的值,其中x为非负实数,n为正整数。输出:输出f(x,n),保留2位小数。样例输入: 3 2 样例输出: 2.00 ·程序代码: #include “math.h” #include “stdio.h” /* f(x,1)=sqrt(1+x);f(x,2)=sqrt(2+sqrt(1+x))=sqrt(2+f(x,1));f(3,x)=sqrt(3+sqrt(2+qrt(1+x)))=sqrt(3+f(x,2));......f(x,n)=sqrt(n+f(x,n-1));*/ double f(double x,int n){ if(n>1) return sqrt(n+f(x,n-1));else return sqrt(1+x);} int main(){ int n;double x;scanf(“%lf%d”,&x,&n);printf(“%.2fn”,f(x,n));return 0;} 8.递归公约数 描述:递归形式的公约数定义如下: 使用此定义求两个整数的最大公约数。 输入: 有多行,每行为两个用空格隔开的整数。 输出: 对应的有多行,每行为对应输入的两个整数的最大公约数。 样例输入: 12 6 9 5 11 3 样例输出: 6 1 1 ·程序代码: # include “stdio.h” int gcd(int m, int n){ if(m%n==0) return n;else gcd(n,m%n);} int main(void){ int a,b;while(scanf(“%d%d”,&a,&b)==2){ 教学是根据特定目标培养人才的主要形式和手段。C程序设计实验教学一般分为如下三部分:布置实验内容、学生自主实验、教师剖析讲解, 这是教师“教”与学生“学”的有机结合, 学生在教师有目的、有计划的指导下, 积极、主动的掌握学科相关知识。我们往往将这样的教学过程界定为传统教学[1]。近年来, 伴随着各门各科课程改革的深入实施, 传统教学过程中许多教学理念已经不能完全适应时代的要求[2], 譬如以知识传授作为学生学习的主要途径, 在教学效果评价上重结果轻过程, 这种凡事以教师为中心的方法, 扼杀了学生的主观能动性, 学生成为知识的被动接受者, 不利于学生创造性思维及学习兴趣的培养, 因此有必要对传统的教学过程进行改革[3]。本文针对传统C语言程序设计教学过程中存在的问题, 将“有效教学理论”引入到C语言实验教学过程中去, 对教学方法及教学内容作出一系列的改革, 并进而形成一个完整的C程序设计实验教学体系。 2 有效教学理论的立足点 有效教学理论要求教师遵循教学活动的客观规律[4], 以促进学生的学习与发展为目的, 以尽可能少的时间、精力和物力取得尽可能多地教学效果, 从而实现特定的教学目标[5]。根据上述目标要求, 教学过程的设置应当考虑到如下几点内容。 (1) 设计出教者与学者均能安心的人际关系和学习环境, 营造出人性化的理解和相互信赖的班级气氛, 培养学生团队合作的精神, 团队中的同学之间彼此信任, 彼此依赖, 为团队而战, 不再是单打独斗; (2) 学习的内容、方法和评价方式均适于学生, 研究教学过程, 注重教法的选择和学法的指导。所选教学案例要符合学生的实际情况, 内容要涵盖理论课所有知识点, 对学生的作业要做正确的评价, 不能完全根据参考答案来, 对进步大的同学要给予鼓励; (3) 在活动性的学习过程中, 学生能够积极主动地参与。每个学生在锻炼的过程中能够充分发挥自己的想象力、创造力, 教师要给学生创造展示自我的空间, 使学生在练习的过程中真正发挥主体作用。同时, 根据每个学生的性格特点, 让其参与到团队实践中去, 扮演不同的角色, 从而提高学生的学习兴趣和解决问题的热情。 3 C语言实验课程中的有效教学设计 C语言程序设计是一门实践应用性较强的学科, 在日常的教学过程中需要不断强化实验环节, 让学生在操作实践过程中不断地发现、分析和解决新问题。为了实现上述目标, 教师在教学过程中必须要结合有效教学理论的要求, 努力改进教学方法。 3.1 上好第一堂实验课 教师在课前设计好一个用C语言开发的软件, 该软件应该包括C语言程序设计的主要知识点 (如一个简单的学生管理系统) 。在上第一次实验课的时候, 教师向学生展示该功能软件, 并简单介绍实现该软件所用到的程序设计知识点, 让学生充分理解到“通过学习这门课程可以实现这样的软件”。最后向学生详细介绍本学科的实验课程设置。这一举措将会激发学生浓厚的学习兴趣, 同时也将克服长久以来植根于学生心中“程序设计学为何用”的心里障碍。 3.2 选择合适的教材 教材的选择是教学改革的关键, 良好的教材能唤起学生的学习欲望、引导学习方法、巩固所学知识等。C语言程序设计是一门以培养学生程序设计基本方法和技能为目标, 以实践能力为重点的特色鲜明的课程。为此, 其教材内容需要能够反映本学科的基本原理、技术和方法在相关现实领域中的典型应用。经过多年的课程建设, 由本校王创伟教授所撰写的教材《程序设计基础———从问题到C语言程序》在教学内容、教学方法上作出新的改进, 以学生成绩管理系统的程序设计为主线, 以编程应用为驱动, 通过实例和问题引入内容, 重点讲解程序设计的思想和方法, 并穿插讲解相关的理论知识内容。本教材侧重培养学生从实际问题空间向程序设计空间转换的能力, 让学生领会到C语言知识是一种工具, 利用这个语言工具进行有效的“程序设计”才是本课程设置的核心理念、 3.3 采用“2+2”教学模式 传统的教学过程以“教师教”为主要方法, 学生鲜有机会主动参与到教学实践中去。为了充分激发学生的学习兴趣, 自2009年9月起, C语言程序设计课程全部教学环节被安排在实验室中进行, 每个教学阶段均采用“2+2”模式 (即2节理论+2节实验) 。前2节课主要是教师结合案例讲授相关的理论知识点, 后2节让学生编程实现相应的功能。由于C语言程序设计课程主要面向本专业一年级学生, 其专业基础相对比较薄弱, 对于程序设计的概念还没有十分深入的理解, 所以在理论知识讲解中, 教师要注意突出语言特色, 充分运用形象思维讲授知识点。教学中应该尽量用一些直观形象的比喻来解释一些抽象的概念。例如, 在讲解变量的时候, 可以将变量比喻成一个“房间”, 变量的值就相当于“房间”中的东西, 而指向某变量的指针就相当于房间的门牌号, 通过这些形象直观的比喻, 学生理解起来就比较容易了。在实验环节中要求学生利用所掌握的知识点分阶段的实现学生成绩管理系统, 对于部分与管理系统联系不是十分密切的知识点, 教师可以布置一些常用项目案例让学生来实现, 从而充分调动起他们的学习主动性与积极性。 3.4 加强实验环节管理, 注重学生团队合作能力培养 目前, 国内软件企业需要的计算机专业人才, 除具备熟练的专业素质外, 更重要的是拥有良好的沟通能力, 在传统教学过程中, 这一点被绝大多数教师所忽略。 实验环节是考查学生是否能够熟练运用C语言语法解决实际问题的一个重要途径。传统的实验过程以教师为主导, 一位教师辅导几十位学生, 教师为学生实验过程中出现的问题进行解答。这样的模式存在许多的弊端, 譬如由于课堂时间有限, 教师无法即时解答每个学生提出的问题, 这样会导致部分学生不能继续进行实验, 长此以往会让他们产生厌学的情绪, 并对程序设计这门课程彻底丧失信心。针对这样一些情况, 在实际的实验教学课程中, 采用分组进行的方法, 每4位同学组成一个小组, 对于程序设计过程中某位同学不能解决的问题, 先让其进行小组内讨论, 如果小组内无法解决, 再由教师为小组成员讲解。在此过程中, 还要求小组内成员做好必要的实验笔记, 对于实验过程中遇到的典型问题做相关的记录。这一举措既能及时解决问题, 提高实验效率, 又能培养学生之间的团队协作能力。 4 结束语 基于本校计算机专业C语言程序设计教学的实际情况, 立足于有效教学理论, 对C程序设计实验环节的教学方法进行了一系列的改革。实践表明, 上述改革措施对加深课程理解、培养学生兴趣和提高教学质量有着显著的效果。随着计算机专业基础课程群改革的深入开展, 基于能力和素质培养为基本目标的有效教学理论必将体现出其极大的优势, 作为高校教师的我们必将竭尽全力地为培养高素质的优秀人才而努力。 参考文献 [1]王希杰, 王瑞庆.C语言教学改革的几点建议[J].中国科技信息, 2006 (24) :213-214. [2]宋楚平, 李少芹.C语言教学改革的思考[J].职业教育研究, 2005 (2) :84-85. [3]李丽萍, 王冬梅C语言教学改革的探索与实践[J].辽宁工业大学学报, 2009 (58) :114-115. [4]余文森.论有效教学的三大理论基础[J].课程教材教法.2012 (32) :15-21. 关键词 C语言 软件编程 实验探讨 中图分类号:TP3 文献标识码:A 1 C语言的概述 在各种计算机编程语言中,C语言属于一门高级语言,它是一切计算机语言的基础,拥有高级语言和低级语言的特点,灵活方便,简洁紧凑;而且它的语法限制不严格,程序员在设计时程序书写自由。不仅能够编写系统软件,同时还可以编写应用软件,能够适应于多种操作系统,应用广泛,可移植性强。总之,C语言对于信息技术的发展具有十分重要的作用和价值。 2基于C语言的计算机软件编程实验研究 2.1C语言的编程技巧 (1)灵活运用指针 在C语言编程的时候,指针是一种特殊类型的变量,它能够帮助程序员有效的表达和解决程序设计过程中遇到的复杂问题,熟练掌握指针是必要的。指针具有三要素:指针名以及指针类型和值。在编程时,指针和一般变量名相同,但是在类型以及值上具有区别,另外,指针不仅能够被用于表示数组,还可以被作为函数的参数返回值。 (2)C 语言的特有函数 在C语言编程的时候,有时需要用到一些特有函数。函数都具有一定的功能,同时函数名也反映了该函数的功能。在进行函数定义时,程序员需要把函数的名字、返回值类型以及参数名等各项都进行定义。另外,因为库函数是由C 编译系统提供的,这些函数均是系统首先定义好的,在程序调用的时候,程序员只需利用“#include 指令”把与之相关的头文件包含到所用文件中即可。 (3)算法技巧 在程序设计的过程中,算法是程序的灵魂,因此,掌握一定的算法技巧是必不可少的。通常情况下,算法不仅可以用自然语言表示,有的时候也利用流程图表示。需要注意的是,利用流程图表示算法时,程序设计员必须熟练掌握常用的流程图符号。且“数学乃是计算机之母”,牢固的数学知识同样能够提升编程效率。 (4)位运算以及文件知识 相比其他计算机高级语言的运算方法,位运算作为C 语言的重要特色,具有独特性和唯一性。位运算是以二进制位为对象,然后结合相关程序要求进行各种运算。文件包含有数据文件以及程序文件,是计算机不可缺少的,程序设计员在进行编程时,需要把所写的程序存储的文件之中,这样可以便于程序员查找数据,提升查找效率。 2.2 C语言和汇编语言混合的程序设计案例分析 (1)混合的软件编程方法 随着信息技术的不断发展和应用,在软件开发过程中,大多时候需要使用两种语言混合编程,有效地提高了程序的开发效率。通常情况下,混合的软件编程方法有两种,具体如下: ①把汇编语句嵌入C语言程序中。例如,把asm汇编语句嵌入到C语言源程序中:/*把5送到ax寄存器*/当把一组汇编语句嵌入到C语言源程序中,则需要利用大括号把嵌入程序给括起来:在本次的实验之中,在进行程序嵌入时,有其固定的格式,需要在嵌入的各行代码之前加“asm”关键字,也可以直接在asm代码块中放入汇编语句。但是程序设计者在进行嵌入时,一定要注意满足以下条件:汇编语言指令代码中关键字asm必不可少,且要放在指令代码之前;嵌入汇编语言指令代码能够和正常C语言程序混合,但是C语言的分隔符“;”必不可少;嵌入汇编语言时C语言的注释分界符必不可少,分别是“/*”和“*/” 。 ②首先编写C语言程序以及汇编程序,然后独立编译目标代码模块,最终进行链接。 首先,在进行混合编程时,C语言程序能够调用汇编语言的各种子程序以及其定义的变量,同时,C语言编写的函数以及定义的变量等也可以被汇编语言调用。而且混合编程的过程中,一个任务往往是由若干个功能模块组成,且不同的功能模块均是利用合适的语言进行独立编程,且以函数的形式存在。因此,程序设计者要根据每一模块的特点选择相应的语言和语言编程系统进行独立编程,并形成目标文件,继而连接目标文件,形成完整的可执行文件。在混合编程的过程中,设计者需要注意五个问题:参数传递问题;寄存器的使用问题;存储模式;变量以及函数的调用问题;子程序的返回值问题。其中,关于参数传递问题,在进行C语言程序调用汇编程序时,必须遵从参数传递原则,利用堆栈把参数传递给汇编程序。例如,在C语言程序中含有函数:voidaa(char*p,inti),这个函数是利用汇编语言进行编写的,如果编译是在小内存模式下实施的,系统在进行调用时,则写成aa(&q, n);运行时程序首先把n压入堆栈,然后再把&q压入堆栈,当参数传递过来并被汇编语言的子程序取得时,BP寄存器便被用作基地址寄存器,实现对栈中所存数据进行存取操作。 (2)混合的软件编程实例分析 程序的主要功能是在五个数中寻找最小数,有主程序“min.c” 以及汇编子程序“qiumin.asm”这两个部分组成。其中主程序是利用C语言编写,汇编子程序是利用汇编语言编写,被主程序调用,主要于完成寻找最小数。程序代码如下: /*文件名为:min.c*/ /*声明qiumin为外部函数*/ 利用C语言和汇编语言混合的编程方法,能够实现应用程序局部满足高运行速度的要求,但是在具体的运用之中,程序设计者仍需要注意寄存器分配以及内存模式等因素对于程序的影响;且在运行时,因为程序设计语言之间存在相互调用的外部接口,故可以实现外部调用。 参考文献 在这个星期里,我们专业的学生在专业老师的带领下进行了c语言程序实践学习。在这之前,我们已经对c语言这门课程学习了一个学期,以下是小编为大家整理分享的c语言实验报告分析总结。欢迎阅读。 c语言实验报告分析总结1 在科技高度发展的今天,计算机在人们之中的作用越来越突出。而c语言作为一种计算机的语言,我们学习它,有助于我们更好的了解计算机,与计算机进行交流,因此,c语言的学习对我们尤其重要。 在这个星期里,我们专业的学生在专业老师的带领下进行了c语言程序实践学习。在这之前,我们已经对c语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,的在运用起来的时候还是感到很棘手,毕竟,万事开头难嘛。 由于时间的关系,我们的这次实践课程老师并没有给我们详细的介绍,只是给我们简单的介绍了几个比较重要的实际操作。包括了程序模块处理.简单界面程序.高级界面程序.程序的添加修改.用程序做一元线性回归处理以及用c语言程序来画粒度分布图等这几样比较重要的时间操作。 上机实验是学习程序设计语言必不可少的实践环节,特别是c语言灵活、简洁,更需要通过编程的实践来真正掌握它。对于程序设计语言的学习目的,可以概括为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。 学习c程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间。因为学时所限,课程不能安排过多的统一上机实验,所以希望学生有效地利用课程上机实验的机会,尽快掌握用c语言开发程序的能力,为今后的继续学习打下一个良好的基础。为此,我们结合课堂讲授的内容和进度,安排了12次上机实验。课程上机实验的目的,不仅仅是验证教材和讲课的内容、检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面: 1.加深对课堂讲授内容的理解 课堂上要讲授许多关于c语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。然而要使用c语言这个工具解决实际问题,又必须掌握它。通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握c语言的语法规定。对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,这是由于大部分学生是初次接触程序设计,缺乏程序设计的实践所致。 学习c语言不能停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题。即把c语言作为工具,描述解决实际问题的步骤,由计算机帮助我们解题。只有通过上机才能检验自己是否掌握c语言、自己编写的程序是否能够正确地解题。 通过上机实验来验证自己编制的程序是否正确,恐怕是大多数同学在完成老师作业时的心态。但是在程序设计领域里这是一定要克服的传统的、错误的想法。因为在这种思想支配下,可能你会想办法去”掩盖”程序中的错误,而不是尽可能多地发现程序中存在的问题。自己编好程序上机调试运行时,可能有很多你想不到的情况发生,通过解决这些问题,可以逐步提高自己对c语言的理解和程序开发能力。 2.熟悉程序开发环境、学习计算机系统的操作方法 一个c语言程序从编辑、编译、连接到运行,都要在一定的外部操作环境下才能进行。所谓”环境”就是所用的计算机系统硬件、软件条件,只有学会使用这些环境,才能进行程序开发工作。通过上机实验,熟练地掌握c语言开发环境,为以后真正编写计算机程序解决实际问题打下基础。同时,在今后遇到其它开发环境时就会触类旁通,很快掌握新系统的使用。 3.学习上机调试程序 完成程序的编写,决不意味着万事大吉。你认为万无一失的程序,实际上机运行时可能不断出现麻烦。如编译程序检测出一大堆错误。有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。程序的调试是一个技巧性很强的工作,对于初学者来说,尽快掌握程序调试方法是非常重要的。有时候一个消耗你几个小时时间的小小错误,调试高手一眼就看出错误所在。 通过这次为数不多的几天计算机实践学习,我们了解了一些关于c语言的知识,理解巩固了我们c语言的理论知识,着对我们将来到社会工作将会有莫大的帮助。同时它让我知道,只要你努力,任何东西都不会太难! c语言实验报告分析总结2 一周的C语言实训,虽然时间略显仓促,但却让我学到了很多实际运用的技能! 一、心得与感想 首先,在实训中的第一步是编写功能较为单一的小程序,虽然是小程序,但所用的知识却都是我们本学期学习的重点知识。在做题的过程中让我们把这些知识复习了一遍,强化了知识! 其次,这次作中所碰到的题目,在实训中已经接触过,所我们都比较深知这些题目的要求和算法,因次在编写小程序时比较快,而且算法也是比较简化,运算准确。鉴次我明白很多编程题要经过多次编写修改与调试,才会得到最简略的算法。 再次,平时我们学C语言视乎都是为了考试或者做一些比较常规的题目,而这次实训却给我们的将所学知识运用于解决实际问题的机会,让人更有激情,这就是编写软件的在雏形,也让我们感受到了编写软件程序的乐趣。但是不仅仅是如此,更为重要的是在运用所学知识的过程中,记住这些知识,并能够广泛的运用! 虽然我这次是编写一个菜单的程序,但是如果我么留心的话,我们身边有许多电子设备都是内置有程序的,我们也可以在此次专题实训过后,自行确定其他的专题进行编写程序,这样可以让我们的知识更加深化丰富! 这次实训似乎是对我巨大的考验,程序在不慌不忙的进行着,按照我自身的进度,提前完成是没有问题的,但是很多客观条件让我不得不在最后的时间里才上交的作业。每当我把程序写完以后,却由于每一台电脑的识别格式不一样而导致我所写的文件一次次的被损坏,尽管这样,我仍然没有放弃,最后还赶在截止时间到来之前上交了我的作业! 这一次编写大作业的程序又让我感受到学程序可以锻炼缜密的思维了。因为平时练习的都是小程序,所以句段比较少,一些错误都很容易被检查出来,但是这次实训却是上百段的语句,难以检查,似乎也没有经验去怎么检查,那一刹那感觉到很急,但又不知如何是好,可是又不轻易的向老师询问,因为好像蛮简单,相信自己能够检查出来,所以我一般都是独立思考的完成的,只有少部分是在老师和与同学讨论下完成的。 在编写程序中,真的是细节决定成败,因为不管程序的语句是多是少,但是只要有一条语句或语法不正确,就不能使程序得到所需要的结果。没能够使自己编写出来的程序等到想要的结果,意味着这是一个不理想的程序,对于本次编写来说则是失败的。 实验六 函数 掌握函数实参与形参的对应关系以及“值传递”的方式; 3 掌握函数递归调用的方法; 二 实验内容 编写两个函数,分别求两个正整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个正整数由键盘输入。 【提示】设有两个正整数m和n ⑴ 实验四介绍了求最大公约数的算法,也可以用递归的方法求最大公约数。设hcf(int m,int n)是用来求m和n的最大公约数h函数,k=m%n,则: hcf(n,k)hnk0k0⑵ 若最大公约数为h,则最小公倍数为:m*n/h。 实验时,完成以下两个函数的定义,使之和主程序构成完整的程序,实现题目的要求。#include 完整程序如下: #include int lcd(int m,int n,int h)/* 求最小公倍数的函数 */ { return(m*n/h);} main(){ int m,n,h,l;printf(“请输入两个正整数m、n:”);scanf(“%d,%d”,&m,&n);h=hcf(m,n);printf(“%d和%d的最大公约数是:%dn”,m,n,h);l=lcd(m,n,h);printf(“%d和%d的最小公倍数是:%dn”,m,n,l);} 运行结果如下图: 编写求n!的函数f(int n),在主函数中输入两个整数m、n,然后调用函数求: Cnmm!n!(m-n)!【注意】函数f的类型应用long或double。 程序如下: #include void main(){ long m,n,c;printf(“请输入两个整数”); scanf(“%d,%d”,&m,&n);c=f(c);m=m*(m-1)n=n*(n-1)c=m/(n*c)printf(“组合为%dn”,c); } 有一个字符串,输入一个字符,编写函数dstr将输入的指定字符从字符串中删去。#include 完整程序如下: #include 关键词:C++;程序设计;教学方法;教学改革 0引言 C++语言运用范围非常广,在软件设计、网络通讯、游戏娱乐等等领域都能涉及到,也是当前世界上使用最广的编程语言。但是行业的发展受到多方面局限,人才的缺失是行业发展最大的阻碍,许多高校都意识到这个问题,相继的开始《C++语言程序设计》课程,主要就是让计算机专业的人才能够多涉及这方面课程,提高学生的自主学习与独立思考能力,增加就业的几率。传统教学方式,存在教学目标不清晰以及教学方式古板的问题,很多学生对这门学科的重要程度认知不足,教学方式与内容的乏味让学生对此课程并无多大兴趣。本文是根据多年来的经验总结以及市场调查,从教学目标与内容多方面进行研究,以此追求有效的教学改革。 1教学中存在的普遍问题 1.1学生学习目标不明确 教学的主要目的是为了培养学生的兴趣以及软件编程能力,提高学生的独立思考、分析与解决问题的能力,提高就业的几率。以往的课程都是由不同教师来传授,每一个教师都只关注自己本科教学,并没有从全局效果分析,学生对自己的学习目标不明确,导致学习兴趣降低。没有目标的学生犹如行驶中迷失了方向的帆船,不知所措。当学生对自己的学习有了清晰的规划,就会不断朝着目标的方向努力前进。 C++涉及的概念都是较为复杂的,在学习过程中灵活多变,出错可能性非常大,可以说想要学好此课程是相对较难,所以很多学生都产生退却念头;同时C++不仅是纯对象语言,当中还涉及到程序设计语言,面对对象并不是单一的。这种特性导致了C++语言与C语言能够兼容存在。两种语言之间有时不需修改就能够使用,所以在刚开始学习时,学生觉得相对简单。[1]。然而,这两种语言也必然存在不能共通之处,学生要真正掌握两种不同的语言,就必须对其进行对比,找到其相同之处和不同点。 1.2教学重点偏向语法,课后延伸匮乏 在语言教学中侧重与语法[2]。在传统的教学当中,不管是老师教授还是教材讲解,都是先把概念推从出去,再理解规则,最后用案例讲解。概念知识相对来说不仅枯燥,要想记住也是较难的,在教学过程中,要引起学生兴趣非常难。虽然传统教学中有案例分析,但是案例分析都是各自孤立的,只是针对某一部分的知识,学生无法从中感受到实际运用价值。枯燥无味的文字不仅不能引起学生的学习兴趣,反而会让他们觉得反感。被动地接受理论知识只会让学生很快就忘记了教学内容,只有生动的教学方式才能激发起学生的兴趣。 教材课程中有课时限制,所以教学过程基本上都是从语法、规则、案例等等形式来落实。每一堂课讲解的时间都有限,再加上教师的课前准备不足,那么这堂课的实际效用就非常低。如果在课后没有进行延伸与巩固,那么学生要掌握更深层次的知识是不可能的。在这种情况下,学生掌握的知识只是皮毛,甚至可以说有些接收能力比较差的学习是掌握不了课堂知识。如果没有进行课后巩固,基本上这堂课的知识就是一闪而过了。对于老师传授的知识,学生不可能过目不忘,因此,只有不断对知识进行巩固和复习,才能让学生牢牢记住知识。 1.3教学方式无结合企业实际需要 学生在C++语言的学习中,通常都是局限在一部分知识中,并没有顾全大局的理念。传统的教学都是采用循序渐进的形式,每一节课都给学生灌输新概念、新规则,学生没办法从所有学习的知识中进行融合使用。[3]。就算是在教学中加入了大量的实验课程,也只是围绕某一个章节某一个知识进行实验安排。这种实践课程也只是一时兴趣,学生在学习一段时间后就会产生厌倦,学到的知识进而就无法使用到企业公中。单调的教学模式显然已经让学生失去了兴趣,这对于提升学生的思考能力和动手能力毫无帮助。每一个学生在毕业后都会步入社会,因此,了解社会环境和企业对于人才的要求对于学生来说尤为重要。如果教师一味地向学生传授课本知识,即便学生能够牢牢记住这些理论知识,也不知道如何将其应用到实际操作中。因此,在教学过程中,教师应该注重理论与实际的相互结合,把学生培养成为综合型的人才。 2教学改革策略 针对上述对C++语言教学存在问题的概述,本文从以下几个方面进行策略研究,在实际使用中也取得了不错的反馈。 2.1明确学习与教学目的 学习的动机是学生能够持续进行的基础,完成整个学习与巩固过程都需要学习动机来维持。现在大学生在学习过程中会考虑到今后就业方向,如果在课堂当中能够开展与今后就业相关的内容,那么学生会非常重视这次学习,效果自然就非常明显。对于不同的教学内容,学生往往会表现出不一样的兴趣程度,因此,老师首先要了解学生在学习过程中最为关注的问题,并且针对这些问题设计和安排教学内容。学生对于感兴趣的教学内容往往会表现出更强的积极性和主动学习性,学习效果也会有所提高。结束校园学习后的学生都会走向社会,他们对于未来的就业环境和企业的人才需求表现出更强的兴趣,因此,老师在教学过程中可以适当插入这部分的内容。 2.2教学内容要结合整体与具体两个方面 教材的编排几乎都是从概念、规则、举例这样的形式,但是知识的分散导致每一个章节的内容都联系不上,学生感受不到整体的编程效果。所以,在教学当中,应该注重整体到具体的方式,让学生能够先了解整个C++编程过程,然后再在每一个程序中融入教学内容,把教学具体到每一个知识点中,巩固学生的知识能力,学生在学习完所有知识后就已经完成整个设计。这种教学思路对程序类型的课程学习有极大作用。教学首先必须具备清晰的规划,才不会显得杂乱无章。教师应当确定一个大致的教学方向,然后再对教学内容展开详细的安排,在规划教学内容时,必须充分考虑不同学生对于教学任务的完成程度,从而对教学内容的难度进行适当的调整,尽可能地让更多的学生掌握教学内容。 2.3教学方法注重同中求异、异中求同 教学当中注重同中求异,异种求同的话,能够让学生抓住事物的本质,对事物的理解加深,有利于思维拓展。为了能够让学生的学习更加深入,可以用对比学习的方式,这样的教学效果会更加好。比如说,把c++语言与C语言进行对比教学,这样学生不仅能够学习到新内容,还能够巩固旧知识,得到双收益效果。其实两种语言在设计思路上有较大差异,一种是面对程序语言,把数据与数据捆绑起来,另一种是面对整个过程的语言设计,用分块的模式教学。教学内容的不同并不是意味着教学方法也截然不同,把相似的内容集中起来教学,有利于学生更好地把握知识,采用不同的方法对相同的内容进行教学,有助于老师找到教学中的平衡点,发现更合适的教学方法。 2.4校园学习与企业联合,为就业作准备 很多计算机相关专业的学生为了能够快速就业,在校园里就会选择去外面机构培训。当然培训并不意味就是能提高就业率,主要还是看学生的态度以及掌握情况。如果在高校的C++语言学习中,可以用校园与企业合作的方式来教学,在教学当中可以加入机构培训的方式;在每一次学完知识后就加入实践活动,对于今后的就业帮助极大。同时,提高学生的学习能力以及适应能力方面也有很大帮助。学校更加注重的是理论知识的传授,而企业更加注重的是实际的操作,企业提出人才要求,学校能够更加有针对性地为学生制定学习任务,从而让学生更好地掌握相关的专业技能,让自己离开校园后尽快适应到社会的工作中。 3结语 本文提出了《C++语言程序设计》课程的教学改革思路,通过教学方法、模式的改变,来激发学生的学习兴趣与能力培养,用校企联合的方式来为今后就业奠定基础,累积学生经验的同时还能提前模拟就业。有教学实验证明,这些教学改革方式是能够在一定程度上提高教学效果,并且对编程类型的课程来说都有极大的借鉴作用。传统的教学方式显然已经不能满足人们日益增长的需求,社会环境是不断进步的,竞争是越来越激烈的,为了使学生具备更强的社会竞争力,学校必须转变教学方法,一方面要让学生掌握基础的理论知识,另一方面需要注重学生的操作能力培养。总体来说,就是要理论知识与实践操作相互结合,培养全能型的学生,对他们的知识掌握以及今后的就业都有极大帮助。 参考文献: [1]杨庚.面向对象程序设计与C++语言[M].北京:人民邮电出版社,2012. [2]杨杰,陈雪兆.《C++程序设计》教学中存在的问题及改进建议[J].湖南科技学院学报,2013,11(26):190191. 1 实验项目的重新设计 现今很多C语言程序设计的教科书都有配套的实验教材, 而为了书籍的发行, 多数出版社都提供网上免费教学资源的下载, 其中就包含了实验题目的答案。教师确定了教材, 学生们很容易就能找到习题和实验题目的答案, 于是造成了部分学生的不劳而获, 可能就不会真正自己编程了。即使有些老师是用自行编写的实验教材, 实验也常常是立足于C语言本身的一些语言规则, 配合每一章所学的内容在计算机上进行实践, 形式无变化;多数实验项目所涉及的知识面较狭窄, 缺少综合性, 又没有较容易理解和生动有趣的范例, 学生感到比较死板、枯燥。缺少兴趣、课程难学、形式单一、题目无味, 都是实验项目设置的不合理造成的, 这样不利于学生及时掌握和巩固知识, 学习难度较大, 教学效果也不可能提高, 更不可能培养学生发现问题、分析问题、解决问题的研究能力和创新能力[1], 这就需要探讨实验项目的重新设计问题。 1.1 优化实验教学内容, 编写适宜的实验指导书 实验教学是为了提高学生的实践能力和应用能力, 应该能满足不同层次学生自主学习的需求, 课程的实验教学内容需进行优化改革。为此, 笔者提出用任务驱动的思想设计实验项目, 以大带小, 大任务除了分解为小任务外 (在2.2节具体讨论) , 还设置一些辅助实验题。这些题目可以是课堂例题的扩充, 比如循环结构中教材例题求自然数1-100的和, 可以扩充为求自然数前n项的和、求其中奇数和或偶数和。题目也可以是一些有趣的数学题目, 比如求水仙花数、求自然数的因子等;还可以是一些实际应用题目, 如计算出租车车费、求学生考试最高分最低分和平均分、猜数游戏等。这些小的题目, 可以对大任务的完成起到知识补充、辅助作用。 以上实验内容的设计需要教师自行编写实验指导书, 而不是采用与C语言课程教材配套的实验指导书, 因为这些指导书往往配有答案, 学生拿到指导书后, 看有答案, 常常不经过自己思考就将书上的程序录入进去, 绝对不利于学生的自主学习。因此, 编写适宜的实验指导书是很有必要的。指导书应按照上述实验内容, 对每个实验做出要求, 包括实验目的、知识点要求、能力要求和实验题目等, 另外, 还应编写教学和实用的C语言编译器的使用方法, 总结出学生常见的编辑和调试错误, 供学生参考。 1.2 运用“任务驱动”法, 精心设计每一个实验 实验项目的设计要尽可能切合实际且生动有趣。以任务驱动主导的实验课在实验内容的安排上, 不再以知识点作为主线索, 而是改用以任务为线索串联知识模块, 组成实验内容。 表1是以一个大任务“通讯录管理系统”作为长期目标, 将该任务按不同功能模块分解, 形成几个短期任务, 共12次实验。每次实验, 学生就围绕着这些任务来做, 由于这些小任务不是孤立的, 而是相互联系的, 是一个较大型较复杂程序的组成部分, 学生整个学期的实验过程中始终都有一个总任务在驱动, 而每一个短期任务, 都使学生由易到难、循序渐进地向成功迈进。这期间, 学生不仅能主动地发现问题、探索知识、解决问题, 更能从中得到正确的编程思想, 逐步培养独立探索、勇于创新的能力[2]。为了使部分基础较差的同学一样能跟上教学步伐, 实验在分组设计上采用初期每人一组, 中后期2人一组的方式。 2 教师角色的新定位 传统实验教学中, 教师的角色是“教育者”, 教师常常是把实验过程、注意事项等讲得很详细, 学生实验时只是按照实验步骤被动地进行, 缺少独立思考和尝试的机会, 主动性得不到发挥。高校教学改革呼唤教师角色的新定位, 按照上述C语言实验教学的思想, 教师的角色也应该从传统的“教”转变为新时期的“导”, 从较为单一化向多样化转变[3]。 在学习活动中, 学生是学习的主体;教师是客体, 是学生认识和发展的向导和顾问, 要指导学生顺利地掌握知识和合乎规律地去发展自己[4]。在C语言实验教学中, 教师应该是学生学习方法的指导者、学生思维的引导者、学习热情的激发者和学习过程的合作者。 2.1 教师是学习方法的指导者 C语言的实践环节, 是特别提倡自主学习和实践的, 教师在实验课上, 要指导学生如何分析与题目有关的信息和资料, 对所要解决的问题提出各种假设并进行验证;要引导学生学会运用学过的知识解决实际问题, 在实践中学到知识, 在知识中体验实践;要教导学生勤思索、善动脑、重创新, 在知识的掌握上做到举一反三、触类旁通。另外, 教师要鼓励学生独立思考、敢于质疑, 要亲自动手编制程序和调试程序, 不怕出错。在老师的指导和帮助下, 学生能够真正找到一个适合自己的学习C语言的方法, 就是教师最大的成功。 2.2 教师是学生思维的引导者 C语言的学习对于初学者来讲是有一定难度的, 而程序设计又要求程序编制者要有清晰的思路, 这对学生的思维方式有一定高度的要求。教师要注重引导学生对于疑难问题的求解, 关键是找到解决问题的切入点、突破点;而在解决问题时教师扮演的是一个调味师的角色, 针对问题的求解作适当的点拨, 以启发学生思维。比如学生常用数学的思路解决程序上的问题, 这是一种思维方式的错误, 教师一定要让学生真正了解程序设计语言的工作过程, 从而建立“计算机程序”的思维方式方法, 这样才能在真正意义上学会编程。 2.3 教师是学习热情的激发者 热情和兴趣是学习最好的动力。教师要在实践教学中点燃学生学习的热情和智慧的火把, 学生就会学得乐、学得快、学得好。当学生遇到问题时, 教师要善于诱导学生正确分析问题、积极查找资料、通过上机实践、查错纠错, 最终解决问题, 改灌输式、说教式教学方法为启发式、引导式方法, 努力唤醒和激发学生的积极性和主动性, 引导和促进学生的独立思索和创新意识。 2.4 教师是学习过程的合作者 C语言课程的实践环节在机房完成, 实验课的大部分时间是学生的自主学习和实践, 教师以“导”为主。然而现今时代, 是讲究沟通合作的时代, 这点在C语言的实验课上也可以得到体现。基于以上讨论的三种教师角色, 第四种角色“学习过程的合作者”是不言而喻的。启发和引导式的教学、任务驱动的实验项目, 决定了教师与学生有一种互动关系, 他们需要思想交流和情感沟通。实验教学过程中, 师生会共同面对同样的问题, 他们可以共同讨论、共同思考、共同探索, 在合作中共同学习和进步。 3 结束语 综上所述, 是笔者在C语言程序设计实验教学中的一些研究和探索。C语言程序设计课程是计算机专业学生非常重要的专业基础课, 强调实践, 注重培养学生的编程能力。通过对该课程实验项目的重新设计、教学方法的改进和教师角色的新定位, 从而不断完善实验教学模式, 培养学生较强的编程能力和程序设计思维能力, 最终实现在实验教学中培养学生分析问题与解决问题的能力、自主学习能力、独立思索能力和开拓创新能力。 参考文献 [1]陈静.C语言程序设计实验教学改革初探---以阜阳师范学院为例[J].阜阳师范学院学报 (自然科学版) , 2008 (12) :83-84 [2]侯建花, 杨长青.“C语言程序设计”实验教学的改革与实践—以淮海工学院为例[J].计算机教育, 2010 (1) :114-115 [3]沈徽青, 程雁雷.如何应对高校教师角色和期望的多样性[J].中国大学教育, 2006 (12) :32-33 【c语言程序设计实验报告】推荐阅读: c语言程序设计实验11-19 C语言图形程序设计报告10-13 C语言程序设计教学改革总结报告01-21 c语言设计程序11-11 c语言递归程序11-06 c语言源程序10-03 c语言程序设计作业三06-24 c语言程序设计基础题10-28 c语言程序设计补充题11-17 c语言程序设计大作业11-21c语言实验报告 篇5
C语言实验报告(四) 篇6
c语言程序设计实验报告 篇7
c语言程序设计实验报告 篇8
c语言程序设计实验报告 篇9
c语言程序设计实验报告 篇10
c语言程序设计实验报告 篇11
c语言程序设计实验报告 篇12