c语言课程实训报告(精选8篇)
c语言课程实训报告 篇1
昆明理工大学城市学院
课程设计报告
课 程 名 称: 课程设计题目: 姓
名:
系:
专
业: 年
级: 学
号: 指 导 教 师:
C语言设计课程设计
万年历
信息工程系
计算机科学与技术
2012
2013 年月 12 日
任 务 书
实训的目标
1.进一步培养学生结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解。
2.针对C语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。
3.掌握C语言的编程技巧和上机调试程序的方法。4.掌握程序设计中的常用算法。
任务名称:万年历
项目功能:
1、能够显示当前月的日历以及标志出当前日期。
2、可以翻页、翻年。
3、可以输入年月日查看输入的年月的日历。
4、拥有记事本的功能。
教师签名:
目录
一、实训要求:................................................................................................................4 1.掌握时间函数的运用。................................................................................................4 2.掌握在WinTC下的动画制作。...................................................................................4 3.掌握bioskey和随机函数的运用。.............................................................................4 4.学会边界的判断。........................................................................................................4 5.掌握链表和文件。........................................................................................................4 6.综合所学内容编写一个程序。....................................................................................4
二、实训题目:.......................................................................................................................4 1.①给出时间计算与几天的差值;②给出天数计算日期;③给出两个日期计算差值。4
2.①让一个圆在屏幕上动起来;②制作一个太阳、地球、月亮的动画。................4 3.①区域内有障碍物使方块不能穿过;②小球在区域内运动,碰到边界后随机改变方向继续运动。...................................................................................................................4 4.①创建一个结构体;②创建链表并输出;③删除已有链表中的一个节点;④在已有链表中增加一个节点。...................................................................................................4 5.万年历............................................................................................................................4
三、实训过程:.......................................................................................................................4 1.时间函数:....................................................................................................................4 思考过程:.......................................................................................................................4 2.动画制作:....................................................................................................................4 思考过程:.......................................................................................................................4 障碍物(边界判断)...........................................................................................................4 思考过程...........................................................................................................................4 链表及文件:.......................................................................................................................4 思考过程...........................................................................................................................4 1.课程设计:万年历(带记事本功能)........................................................................5 ① 思考过程.....................................................................................................................5 ②源代码:.......................................................................................................................5 ③ 运行结果...................................................................................................................10
四、实训心得:.....................................................................................................................11
一、实训要求:
1.掌握时间函数的运用。
2.掌握在WinTC下的动画制作。3.掌握bioskey和随机函数的运用。4.学会边界的判断。5.掌握链表和文件。
6.综合所学内容编写一个程序。
二、实训题目:
1.①给出时间计算与几天的差值;②给出天数计算日期;③给出两个日期计算差值。2.①让一个圆在屏幕上动起来;②制作一个太阳、地球、月亮的动画。
3.①区域内有障碍物使方块不能穿过;②小球在区域内运动,碰到边界后随机改变方向继续运动。
4.①创建一个结构体;②创建链表并输出;③删除已有链表中的一个节点;④在已有链表中增加一个节点。5.万年历
三、实训过程:
1.时间函数:
a)思考过程: 第一小题:先把系统当前时间用time函数转换成秒,再把输入的天数用24乘3600秒转换成秒,再与系统当前的秒数相加减,最后用ctime函数以字符串输出。第二小题:调用localtime取得系统当前年月日,然后把当前年月日提取出来用自己输入的年月日进行替换,用mktime把该年月日转换成秒,然后再把系统当前时间转换成秒,两个秒数进行相加减,把加减后的结果除以(24*3600)就得到相差的天数。第三小题和第二小题同理,输入两个日期、转换成秒以后相加减,最后除以(24*3600),就得到了两个日子相差的天数。
2.动画制作:
思考过程:做个循环,先用白色画一个圆,然后再用背景色画一个圆把当前圆覆盖,然后改变圆心,然后在画圆再覆盖~最后循环完之后,再用白色在用位置画个圆,因为不这样干的话,屏幕上就没有最好运行的位置了…第二小题同理~ 障碍物(边界判断);
① 思考过程:第一小题:判断出上下左右移动的时候能运动的范围(即控制外边界),然后再把范围内的某些不能通过的点的范围找出来,把他们分别排除在外,其他的坐标点就是可以任意移动的了,用bioskey计算按下的键的键值,然后判断可以移动之后,就在当前位置用背景色画一个方框,然后在移动之后的位置用白色画方框和障碍物等。第二小题划定一个匡,然后在匡的范围再把小球的半径减去,就是最后小球能运动的范围了…然后我设置的是让小球逆时针转动,然后用随机函数(系统时间做种子)来控制小球偏移的位置(或者说角度)。
链表及文件: ① 思考过程:第一个问题需要做的是结构体的认识并运,定义一个结构体,然后输入内容,然后再输出之前输入的内容。第二个问题则是创建链表并输出,将一个节点分成了两份,一边是指针域,一边是数据域,而指针域,指针域是下一节点的地址,我把头结点不存储数据,以方便之后两题的操作;第三个问题是删除链表,首先定义一个空的字符串,P,P1,P2,把头指针赋值给P,随后让用户输入要删去数据的名字,储存在字符串中,利用strcmp函数进行查找,随后如果第一个有数据的节点就符合要求,就把第二个节点的地址赋值给头节点的指针域后跳出循环,如果不是第一个节点符合要求就执行循环,让P赋值给P2,再把p->next赋值给P,这时P就到了下一个节点,再把p->next赋值给P1,也就是让P1得到第三个节点的首地址,P指向第二个节点,P2指向第一个节点,再进行循环,还是没找到就把P,P1,P2同时向后移动一个节点,如果找到了,就把P2的值赋给p->next,再把p->next的值赋给P,这时P就回到了上一个节点,再把p->next直接指向P1,就把中间的那个节点跳过,完成了删除功能;第四个问题则是增加节点,同样定义一个整型数据(即学号),P,P1,P2,P3,让用户键入想要添加的位置,之后让头指针赋值给P,p->next就赋值给P1,也就是让p1指向下一个节点,随后执行循环,让用户输入想学号和每个节点内的学号比较,如果找到了,就创建一个新的链表,并让P3指向它,让用户输入添加的信息,并且把p->next赋值给P2和P,这是P就到了下一个节点,再把p->next赋值给P1,也就是让P1指向第二个,P和P2都指向第一个,返回循环,如果符合要求就让p3->next指向P1,p2->next指向P3,这样,新的节点就进入了链表中,满足要求,最后在主函数中先输入数据,然后执行一个死循环,让用户选择功能,如果选择1就删除一个节点,选择2就增加一个节点,选择0就跳出循环结束程序。1.课程设计:万年历(带记事本功能)
① 思考过程:用localtime取得当前的系统时间,并且提取出年月日,然后把公元元年到今年一月一日前的天数计算出来,把这个天数除7取余为a,然后就获得了今年元旦前的一天是星期几。然后循环、从一月循环到当前月的上一月的最后一天,在这个循环中,循环一次a+1;当a=7时a置零,这个是用来计算当前月的上一月的最后一天是星期几,然后从新在次循环外另开一个循环来输出当前月的日历,并标记出今天用()标记,然后用bioskey读取用户按下的键值,并实现相应的翻页、标记特殊日子、记事本、从新输入年份等功能…
②源代码:
#include
/*计算公元元年到某年某月的时间*/ void f1(long int t,long int n,int y,int r);
/*按日历模式输出要得到的那个月的日历*/ void w();
/*当前月的日历*/ void s();
/*输入某个年份和月份*/ void m(long int n,int y,int r);
/*记事本功能的函数*/
struct jishiben
/*记事本的结构体定义*/ {
long int a;
char name[100];};
void w()
/*输出当前月的日历*/ {
int y,r,a,b,c;
/*分别定义月份日期以及记录键值记录日期以及某月最后一天*/
long int n;
/*定义年份的变量*/
time_t timep;
struct tm *p;
time(&timep);
p=localtime(&timep);/*取得当地时间*/
printf(“%d--%d--%d n”,(1900+p->tm_year),(1+p->tm_mon), p->tm_mday);/*输出当前的年月日*/
n=(1900+p->tm_year);
/*获得当前年份*/
y=(1+p->tm_mon);
/*获得当前月份*/
r=p->tm_mday;
/*获得当前的是几号*/
for(;;)
{
printf(“jin tian shi %d--%d--%d n”,(1900+p->tm_year),(1+p->tm_mon), p->tm_mday);
/*输出当前年月日*/
f(n,y,r);
/*调用函数f获得某年某月的日历*/
printf(“an fang xiang jian ke tiao jie nian huo yuen”);
printf(“ru xu shu ru nian fen qing an hui ge jian n”);
printf(“ruo xu shi yong ji shi ben qing an hui chen”);
if(y==1||y==3||y==5||y==7||y==8||y==10||y==12)c=31;
if(y==4||y==6||y==9||y==11)c=30;
if(y==2&&(((n%4==0)&&(n%100!=0))||((n%100==0)&&(n%400==0))))c=29;
if(y==2&&((n%4!=0)||((n%100==0)&&(n%400!=0))))c=28;
/*判断月份及最后一天*/
a=bioskey(0);
/*取得按下的键值*/
if(a==18432)n=n-1;
/*按方向键向上则年份减一*/
if(a==20480)n=n+1;
/*按方向键向下则年份加一*/
if(a==19200){y=y-1;if(y==0){y=12;n=n-1;}}
/*按方向键向左则月份减一*/
if(a==19712){y=y+1;if(y==13){y=1;n=n+1;}}
/*按方向键向右则月份加一*/
if(a==18488){b=r;r=r-7;if(r<1)r=b;}
/*按小键盘8则上一周*/
if(a==19509){b=r;r=r+7;if(r>c)r=b;}
/*按小键盘5则下一周*/
if(a==19252){b=r;r=r-1;if(r<1)r=b;}
/*按小键盘4则上一日*/
if(a==19766){b=r;r=r+1;if(r>c)r=b;}
/*按小键盘则下一日*/
if(a==7181)m(n,y,r);
/*调用m函数 进行记事本功能*/
if(a==3592)s();
/*按回格键调用函数s 出入年份和月份*/
if(a==283)exit(0);
/*按esc键 直接退出程序*/
system(“CLS”);
} } void f(long n,int y,int r)
/*计算公元元年一月一号到某年的天数n y r为年月日*/ { long int i,t;
/*定义 i为循环变量
t为天*/ t=0;for(i=1;i if(((i%4==0)&&(i%100!=0))||((i%100==0)&&(i%400==0)))/*判断闰年*/ t=t+366; if((i%4!=0)||((i%100==0)&&(i%400!=0))) /*判断平年*/ t=t+365; if(t%7==0) /*为防止数据过大 所以当t除7的余数是0的时候,让t=0;*/ t=0;} f1(t,n,y,r); /*调用函数f输出某月的日历*/ } void f1(long int t,long int n,int y,int r) /*按日历模式输出某月的日历n y r为年月日*/ { int i,j,k,a; /*a为记录星期的*/ a=t%7;for(i=1;i /*循环到某月的前一个月*/ { for(j=1;;j++) { a=a+1; if(a==7)a=0; if((i==1||i==3||i==5||i==7||i==8||i==10||i==12)&&j==31)break; if((i==4||i==6||i==9||i==11)&&j==30)break; if(i==2&&(((((n%4==0)&&(n%100!=0))||((n%100==0)&&(n%400==0)))&&j==29)||(((n%4!=0)||((n%100==0)&&(n%400!=0)))&&j==28)))break; } } printf(“%ld nian %d yue ri lin”,n,y);printf(“ 1 n”);printf(“MON TUE WED THU FRI SAT SUNn”);for(k=0;k ”);for(j=1;;j++) /*按日历模式输出某月*/ { if(j==r)printf(“(%2d)”,j); /*标记出当前的日子以及特殊的日期*/ else printf(“ %2d ”,j); a=a+1; if(a==7){a=0;printf(“n”);} /*当循环一个星期以后,输出一个换行符*/ if((y==1||y==3||y==5||y==7||y==8||y==10||y==12)&&j==31)break; if((y==4||y==6||y==9||y==11)&&j==30)break; if(y==2&&(((((n%4==0)&&(n%100!=0))||((n%100==0)&&(n%400==0)))&&j==29)||(((n%4!=0)||((n%100==0)&&(n%400!=0)))&&j==28)))break;/*判断这个月的最后一天时跳出循环*/ } printf(“n”);} void s() /*输入年月的函数*/ { long int n;int y,r,a;for(;;){ printf(“qing shu ru nian he yuen”); scanf(“%ld%d”,&n,&y); if(y<12&&y>0)break; /*判断输入的月份是否正确*/ else printf(“yue fen shu ru cuo wun”);} for(;;){ r=0; /*这里不需要标记处某天,所以令r=0*/ f(n,y,r); /*调用函数f来输出需要的某月的日历*/ printf(“an fang xiang jian ke tiao jie nian huo yuen”);printf(“ru xu shu ru nian fen qing an hui ge jian n”);printf(“an r jian fan hui dang qian yuen”);a=bioskey(0);if(a==18432)n=n-1; /*按方向键上键 则年份减一*/ if(a==20480)n=n+1; /*按方向键下键 则年份加一*/ if(a==19200){y=y-1;if(y==0){y=12;n=n-1;}} /*按方向键左键月份减一*/ if(a==19712){y=y+1;if(y==13){y=1;n=n+1;}} /*按方向键右键 月份加一*/ if(a==283)exit(0); /*按esc退出程序*/ system(“CLS”); /*清屏*/ if(a==4978)w(); /*按小写的r 则调用函数w显示当前月的日历*/ if(a==3592)s(); /*按回格键 调用它自己 从新输入一个年月*/ } } void m(long int n,int y,int r){ long int c; /*c是用来计算结构体长度的*/ long int s=r+100*y+10000*n; /*转换年月日 例如2013-7-10 就转换成20130710*/ struct jishiben kefu; /*定义结构体*/ FILE *fp; /*定义文件指针*/ c=sizeof(struct jishiben);/*计算结构体需要的长度*/ system(“CLS”); /*清屏*/ if((fp=fopen(“qw2.txt”,“a+”))==NULL) /*判断这个文件是否存在*/ {printf(“da kai shi bai qing xian chuang jian gai wen jiann”);exit(-1);} else { for(;!feof(fp);){fread(&kefu,sizeof(kefu),1,fp);if(kefu.a==s)break;} /*筛选数据*/ if(kefu.a==s) { printf(“ri qi %ld---%s n”,kefu.a,kefu.name);} /*若得到了需要的数据 则显示出来*/ else /*否则录入数据*/ { /*录入前先把文件关闭掉 然后再从新以追加方式打开*/ fclose(fp); fp=fopen(“qw2.txt”,“a”); fseek(fp,-c,2); printf(“qing shu ru xing xi n”); kefu.a=s; /*令长整型变量等于s 方便筛选*/ printf(“qing shu ru nei rongn”); printf(“%ldn”,kefu.a); gets(kefu.name); /*输入字符*/ fwrite(&kefu,c,1,fp); /*把数据写入*/ } getch(); fclose(fp); /*关闭文件*/ } w(); /*返回w函数再进行相应的操作*/ } int main(){ w(); /*调用函数w来开始第一次运行*/ getch();} ③ 运行结果 按回车实现记事本功能: 按回车返回记事本: 在特殊日子下按回车,查询是否有要做的事情: 四、实训心得: 通过为期三个星期是实训,让我收获很多,比之前在课堂上的对c语言的理解更加的深刻了。在第一周学习了时间函数的使用和用c语言来画动画;第二周学习了怎么创建和使用链表、并且学习了文件的操作,虽然在文件操作方面我学习的还是不是很熟练,但是还是能够自己写个记事本了~最后一周,我们自己写了自己的课程设计,在课程设计的过程中,不断加强自己的程序的功能,这对我们来说虽然有些难度,但是经过自己的努力,还是实现了一些曾经自己都不敢接触的东西。这次的实训,让的对c语言有了更加深刻的理解、增加的对c语言的兴趣,并且比之前更加的能够熟练的使用c语言了;我相信在以后对c的更深入的学习和c++、java的学习中,我也能够通过实训加强自己的~ C语言程序设计课程是计算机及相关专业的基础课程, 授课对象是大学一年级学生, 要求学生掌握C语言的语法规则, 掌握结构化程序设计思想, 培养学生用程序解决实际问题的能力[1]。C语言课程一般采取“18周理论课 (3节) +上机课 (2节) ”的教学模式[2,3]。这种教学模式课时很多, 但效果并不理想, 主要原因有: (1) 课堂教学主要围绕C语言的语法规则进行, 上机作业主要针对理论知识, 知识点缺乏关联, 学生学习起来比较枯燥; (2) 不利于学生实际动手能力。针对以上原因, 笔者所在学院对C语言课程教学进行了改革, 压缩理论授课课时, 专门安排两周在机房集中进行实践环节, 完成完整的项目开发。素质教育强调培养学生的创新精神和实践能力, 加强实践教学环节对计算机语言类课程教学尤其重要。 1 集中实训安排 (1) 项目选题。在集中实训中, 考虑到大一学生第一次做完整的项目, 缺乏项目经验, 由教师统一定题, 引导学生完成系统模块开发。实际教学中, 学院选用的题目为计算机与信息工程学院资料室图书管理系统开发, 该系统可对图书期刊资料进行统一管理, 并提供借阅服务。系统有3种权限用户:管理员、操作员、读者 (包括教师和学生) 。具体如下: (1) 管理员完成录入图书信息, 查找图书信息 (包括按书号查找/按书名查找/查看已借阅图书/查看未借阅图书/查看所有图书) , 修改图书信息 (包括按书名修改、按书号修改、删除所有图书、按书号删除图书、按书名删除图书) , 建立读者信息库并维护读者信息, 修改管理员密码并分配操作员权限, 维护系统留言板等; (2) 操作员可对图书实施借阅和归还操作; (3) 读者 (教师和学生) 可查询图书信息, 查看图书排行榜、留言板, 并可通过留言对所借阅图书进行评价。系统数据采用两个二进制文件分别保存图书信息和读者信息, 采用文本文件分别保存管理员密码和操作员密码。如系统退出, 数据不会丢失;程序运行过程中, 若原始数据变更, 会即时写入文件。 (2) 安排项目进度。项目开发进度安排如图1所示。 系统主菜单运行界面和借阅功能界面分别如图2、图3所示。 (3) 项目小组建立。采取4人一组的形式, 为能更好地培养学生的动手能力, 要求每个学生完成完整的系统开发, 小组成员互助互教。鼓励学有余力的学生将系统功能进一步完善、扩展, 给学生自由发挥的空间, 激发学生学习兴趣。 2 实训效果 实训效果主要体现在以下几个方面: (1) 学生能通过集中实训更好地理解知识点。学生较好掌握了常见的几种数据类型;对三种结构 (顺序结构、选择结构、循环结构) 的运用也很到位;对函数定义、函数调用有更深刻的理解;能灵活运用数组和单链表存储结构体类型数据, 并对这些数据进行复杂的逻辑操作;对指针的理解也不再局限于课本中的规则和注意事项, 可有针对性地运用, 灵活运用参数;熟练调试程序中的错误。 (2) 学习积极性高, 主动性强。通过体验程序的运行效果, 学生对编程表现出浓厚的兴趣, 部分学生主动与老师探讨模块开发思想, 提出见解;程序出现问题时, 尝试自己解决或与小组成员讨论解决;能查阅资料解决遇到的问题。学生学习态度和原来的单纯课堂教学有了很大进步, 由被动接受学习转向主动学习, 自觉地担负起学习的责任。实训中, 不少同学提出了自己对C语言教学的一些建议, 比如建议成立C语言课程兴趣小组, 增加讨论课, 在实训中开发更多的项目, 可以自己选题等。这些意见的提出, 体现了学生学习的主动性和积极性。 (3) 增强了教师和学生之间的互动交流。通过实训, 授课教师可以更好地了解学生在思考什么, 知识掌握的程度, 使教学更有针对性。同时, 学生也愿意与老师交流。实训结束后, 进行了随堂调查。某班级调查表 (部分) 统计结果如表1所示。 单位:% 从调查表统计结果可以看出, 学生对集中实训的教学效果较为满意。实训提高了学生的编程能力, 加强了学生对C语言知识体系的理解和掌握, 调动了学习热情。 3 结语 通过集中实训, 激发了学生学习积极性和主动性, 使学生学以致用。实践教学有利于加快知识向能力的转化[4], 良好的实训效果必须以扎实的理论教学为前提, 而理论教学的最终目的是让学生具备项目开发能力。理论教学和实训, 二者相辅相成, 在加强实训教学环节的同时, 需巩固学生对知识点的掌握。 摘要:C语言课程为计算机专业必修课, 结合教学实践, 提出“理论教学+集中实训”的教学模式, 通过集中实训可加深学生对知识点的理解, 提高编程能力。 关键词:C语言课程,实训,理论教学,教学模式,编程能力 参考文献 [1]陈红红.融入软件工程思想的C/C++实训教学模式[J].计算机教育, 2011 (17) :60-62. [2]廖骏杰.提高高校C语言教学质量方法探讨[J].软件导刊, 2011 (11) :120-123. [3]肖潇, 贺细平.C语言程序设计教学探索[J].计算机教育, 2011 (5) :65-68. 【摘要】说明编写同时适合“中职升本”、“专升本”和“高中升本”三种学历层次起点学生的教材的必要性,根据不同起点的学生培养目标不同从而实施多层次差异化教学的需要,教材内容分基础篇、进阶篇和综合篇三篇,不同篇章适合不同学历层次起点的学生。 【关键词】多层次起点 差异化教学 中职升本 立交桥 【基金项目】2015年桂林电子科技大学海洋信息工程学院教育教学改革项目、2015年广西高等教育教学改革项目(2016JGA)、2015年桂林电子科技大学校级教育教学改革(电子与信息工程示范特色专业及实训基地建设专项)。 【中图分类号】G64【文献标识码】A 【文章编号】2095-3089(2016)09-0210-02 0.引言 桂林电子科技大学北海校区自从2013年建立海洋信息工程学院以来,逐步形成了职业教育多层次衔接贯通“立交桥”的应用型技术技能型人才培养模式,在“中职升本”、“专升本”和“高中升本”的多层次起点的学生培养过程中探索分层“因材施教”、“分设目标发展”的培养思路,不断探索专业结构的优化与教学内涵的建设,这其中的一个重要内容就是针对不同层次学生的差异化教学和相应的教材建设。 目前专门针对“中职升本”学生的教材还比较少,传统本科教材并不适合理论基础薄弱的“中职升本”学生使用,本科教学也不宜使用理论深度不够的高职教材,这也使得我们必须加快建设适合“中职升本”学生教材的步伐。 鉴于我院多层次衔接贯通“立交桥”的应用型技术技能型人才培养模式,若每门课的教材均按“中职升本”、“专升本”和“高中升本”三个层次分开建设,将是一件非常麻烦的事情,那么如何编写一本同时适合三种学历层次起点学生的教材呢?本文以C语言程序设计实验实训教材建设为例进行阐述。 1.三种学历层次起点学生的特点 1.1“中职升本”学生的特点 实践动手能力普遍较强,但是未读过高中,理论(特别是英语和数学)基础较弱,缺乏逻辑思维的训练,部分同学主观上虽然在努力学习,但思维不够活跃,跟不上教师讲课和训练思路,这部分学生的培养目标为高级技师。 1.2“专升本”学生的特点 读过高中,计算机相关专业的学生有一定的编程基础,学习程序设计但是专科阶段的学习偏重实践,理论基础相对较弱,这部分学生的培养目标为开发工程师。 1.3“高中升本”学生的特点 一般来说理论基础较好,理解能力相对较强,教师讲过的知识能很快理解并掌握,为“学有余力”类型。但是这部分学生在高中阶段主要是进行理论学习,故实践动手能力相对较弱,这部分学生的培养目标为算法设计、开发工程师。 2.适合三种学历层次起点的C语言程序设计实验实训教材建设 根据多层次差异化教学的需要,教材内容分基础篇、进阶篇和综合篇三篇,不同篇章适合不同学历层次起点的学生,其学习的先后关系如图1所示: 每个实训项目前除了提出实验目的和要求,还对相关知识点进行详细地阐述,并给出相应的例子,使得学生在进一步夯实理论基础的前提下再做实验,并反过来通过实验更好地掌握理论知识。 (1)基础篇 针对初学者,从C语言的基础开始,使略有计算机基础的人都能容易地学会C语言编程,该篇内容对于“中职升本”、“专升本”和“高中升本”三种学历起点的学生均适用。 (2)进阶篇 在原有基础上介绍了C语言的复杂运用,高级编程技巧等,适用于“专升本”和“高中升本”学生。本篇需要学生具备一定的数学基础和逻辑思维能力。 (3)综合篇 从C语言综合实训角度出发,使读者了解使用C语言进行系统设计,游戏开发,图形绘制的相关内容,适用于“高中升本”学生。本篇需要学生具备较好的数学基础和较强的逻辑思维能力。 主要实验实训内容如表1所示: 需要说明的是,每篇内容的适用对象并不是绝对的,仅供教师在教学时进行分层授课有一个参考。教师在给不同学历层次起点学生授课时对学生所掌握的内容可以有相应不同的要求,但是对于三种层次所有学有余力的学生来说,则应多加鼓励,可以引导“中职升本”学生根据自身的接受能力、理解能力主动学习进阶篇和综合篇,也可以引导“专升本”学生根据自身的努力情况及后续学习状态选择综合篇进行学习。 3.结论 C语言是一门通用计算机编程语言,应用广泛。下面是小编为大家整理的关于c语言课程设计的设计报告,欢迎大家的阅读。 高等职业教育的目标及侧重点不同于普通高等教育,其培养的学生在毕业后应能直接上岗,具有熟练的实践操作技能。教育部《关于以就业为导向深化高等职业教育改革的若干意见》中指出,高职教育应“坚持培养面向生产、建设、管理、服务第一线需要的‘下得去、留得住、用得上’,实践能力强、具有良好职业道德的高技能人才”。 因此,加强实践性课程教学,对保证人才培养质量显得尤为重要。我院为贯彻《关于全面提高高等职业教育教学质量的若干意见》精神,针对区域经济发展的要求,灵活调整和设置专业课程,以就业为导向,加快专业课程对应的课程设计改革。目前,我院按照由浅入深、不断深化的教学规律,构建了实践教学三层次四环节的实践课程体系。实践教学三层次包括基本技能、专业拓展、综合创新,四环节包括实验、实习实训、设计和课外实践。“C语言课程设计”是我院信息类专业的必修专业基础课程设计,在“C语言程序设计”课程教学结束后的下一学期进行,历时2周,40学时。课程开设的目的在于培养学生分析问题和解决问题的能力,为学生提供一个动手、动脑、独立实践的机会。 21项目教学法“项目教学法”是基于建构主义教学理论的一种教和学的模式。著名的瑞士心理学家皮亚杰认为,知识不是通过教师传授得到的,而是学生在一定的情境下,借助他人的帮助,利用必要的学习资料,通过意义建构的方式而获得的。美国项目管理专家约翰·宾认为:“项目是要在一定时间里,在预算规定范围内需达到预定质量水平的一项一次性任务。” “项目教学法”是通过实施一个完整的项目而进行的教学活动,旨在把学生融入有意义的任务完成的过程中,让学生积极地学习,自主地进行知识的建构,在课堂教学中把理论与实践教学有机地结合起来,充分发掘学生的创造潜能,提高学生解决实际问题的综合能力。因此,在教学活动中,教师将需要解决的问题或需要完成的任务以项目的形式交给学生,在教师的指导下,以小组工作方式,由学生自己按照实际工作的完整程序,共同制定计划,共同或分工完成整个项目。 在项目教学中,学习过程成为一个人人参与的创造实践活动,注重的不是最终的结果,而是完成项目的过程。在高等职业技术教育中,项目是指以生产或制作一样具体的、具有实际应用价值的产品的工作任务。在技术领域,很多小产品或一些复杂产品的模型都可以作为项目,如:在信息类专业,可以开展微机组装、网站建设、信息管理系统开发、局域网构建、单片机制作、多媒体课件制作等项目;在电子类专业,可以开展报警器、LED、门铃、家电组装等项目;在商业、财会和服务行业,所有具有整体特性并有可见成果的工作也都可以作为项目,如商品展示、产品广告设计、营销策划等。 22项目教学法的基本特征项目教学法与传统的教学法相比,有很大的区别,主要表现在改变了传统的3个中心:以教师为中心转变为以学生为中心;以课本为中心转变为以“项目”为中心;以课堂为中心转变为以实际经验为中心。项目教学法具有以下特点: 实践性。项目“源”于企业,项目的主题与真实世界密切联系,由浅入深,选择的项目具有典型性、实用性。 自主性。提供学生根据自己的兴趣选择内容和展示形式的决策机会,让学生能够自主地进行学习,从而有效地促进学生创造能力的发展。 发展性。长期项目与阶段项目相结合,构成了实现教学目标的认知过程。 评价特殊性。项目型教学的评价注重学生在项目活动中能力发展的过程,测评内容包括学生参与活动各环节的表现及作业质量,避免了传统的一张试卷定成绩的弊端。测评可以采用自评、小组评、教师综合评等方法。教师只有明确并抓住项目化教学特点,才能更好地完成教学目标。 31教学内容为了更好地开展课程设计教学,经过多次实践和摸索,总结出学生在具体实施项目中一般存在2个方面的知识不足: 第一,在教学内容上,由于前导课程在教学上受学时影响,很多教师对指针、结构体、共用体和文件基本操作的知识介绍不甚完善、系统,更难谈上辅以实例加以消化。对此,针对学生在这些知识点上的掌握程度,利用4~6个学时,实施区别式的、辅导性的、实例化教学。 第二,学生对项目管理知识知之甚少,针对此情况,采用2个阶段实施有别于常规教学的补课行动。第1阶段为项目准备阶段,利用2~4个学时,安排曾经做过项目且做得比较好的学生,现身介绍项目的准备工作、项目实施过程要完成的工作、项目验收及作业提交的工作等。在学生介绍中,教师穿插讲解,辅以点评。第2阶段为项目实施阶段,教师应针对学生发生的问题,及时给予指导,直到学生弄懂为止。 32教学要求切实保证教学质量和教学效果,本着“学以致用”的原则,要求学生做到以下3点:第一要做到“学有三备”,即:在项目实施前做好知识储备,在项目实施中做好安全防备,项目结束时做好被评准备。第二要写好“三书一报告”。“三书”即每个项目组要做需求规格说明书、概要设计说明书、详细设计说明书,“一报告”即人人都要做课程设计报告。第三要做“四自”参与者。“一自”即自律,要求学生自觉履行学生守则和项目实施有关规则,不迟到、不早退、不缺席,实施点名制度,若无特殊原因,有5次旷课者自愿以重修论处;“二自”即自尊,要求学生尊重知识、尊重学习规律、尊重项目组成员、尊重教师、尊重自己;“三自”即自信,要求学生相信自己能够按时、按量、按质完成工作内容,遇到困难时,沉着、冷静,理性地寻找问题解决的办法;“四自”即自强,要求学生不满足自己已有的成绩和以往与课题项目组共同取得的成绩,用创新和超越的思想,做出比以前哪怕是前进一小步的事情。同时也要求教师做好相应的工作,如做好项目整体规划、精心准备、努力激发学生参与行为、为人师表、表扬为主、批评为辅、多分析、精点评等。 33项目实施进程项目教学法是一种生动、灵活、多样化的教学方法。在项目实施过程中,既不能生搬硬套地利用一个时间标准,又不能影响项目实施的整体进程,因此对时间的灵活处理是非常关键的,也是值得商榷的。 34明确项目内容,帮助学生立项立项首先要审题。当学生拿到项目列表时,最不能忽略的问题,就是提醒学生审题。审题恰当对学生以后开展各项工作是关键。审题时,学生首先要考虑自己的长、缺处,做到扬长避短,也就是说审题就是学生自己审自己完成该项目有多大的能力,有没有信心。只有学生明白自己,才可以避免以后实施项目过程中走弯路。同时既要建议学生在组建项目组时,考虑所在组的其他学生的长处和短处,又要尽量避免使被学生认定的差等学生没人愿意与其组合,而成绩好的学生又抱团的现象发生。 根据近几年带课程设计的经验,关于如何合理选择项目,建议教师应从学生的角度考虑以下4个因素,协助学生做好选题: 规模。项目规模太大会影响项目的完整性,项目规模太小难以体现课程的实践性。 难度。项目难度一定要适中,既要激发学生学习的兴趣又不能影响学生的自信心。 实用性。项目的选择应该是现实世界真实的工作任务,具有一定的现实和实用性。 TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议。其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;而UDP则不为IP提供可靠性、流控或差错恢复功能。一般来说,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。TCP支持的应用协议主要有:Telnet、FTP、SMTP等;UDP支持的应用层协议主要有:NFS(网络文件系统)、SNMP(简单网络管理协议)、DNS(主域名称系统)、TFTP(通用文件传输协议)等。 面向连接的TCP “面向连接”就是在正式通信前必须要与对方建立起连接。比如你给别人打电话,必须等线路接通了、对方拿起话筒才能相互通话。 TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,我们这里只做简单、形象的介绍,你只要做到能够理解这个过程即可。我们来看看这三次对话的简单过程:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。 TCP协议能为应用程序提供可靠的通信连接,使一台计算机发出的字节流无差错地发往网络上的其他计算机,对可靠性要求高的数据通信系统往往使用TCP协议传输数据。 面向非连接的UDP协议 “面向非连接”就是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。这与现在风行的手机短信非常相似:你在发短信的时候,只需要输入对方手机号就OK了。 UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去。 UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。比如,我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常,其实“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。例如,在默认状态下,一次“ping”操作发送4个数据包(如图所示)。大家可以看到,发送的数据包数量是4包,收到的也是4包(因为对方主机收到后会发回一个确认收到的数据包)。这充分说明了UDP协议是面向非连接的协议,没有建立连接的过程。正因为UDP协议没有连接的过程,所以它的通信效率高;但也正因为如此,它的可靠性不如TCP协议高。QQ就使用UDP发消息,因此有时会出现收不到消息的情况。 第2章 程序设计部分 2.1 设计目的 通过本课程设计,在学习《计算机通信与网络C》课程的基础上,进一步深入理解计算机通信与网络的基本理论及其协议,进一步熟练掌握UDP、TCP Client/Server模式的数据通信原理,熟悉进程通信的所要解决的问题,掌握网络通信的程序编程技术。 2.2 设计要求 1)Java语言支持TCP/UDP及其上层的网络设计,所设计的网络通信应用系统建议采用Java语言利用Eclipse集成开发环境编程实现。课程设计按下述步骤进行: ①利用socket编程方法,编写一个TCP、UDP Client/Server模式的通信程序。②调试并运行自己编写的实现程序。 ③了解TCP、UDP Client/Server模式的工作原理,比较二者的不同,如出现异常情况,在课程设计报告中写出原因分析。 ④备份保留程序代码电子文档,以备教师随时检查。 2)Client/Server网络通信程序设计内容要具体详实,具有一定的编程工作量(程序代码一般应在100行以上)和技术难度。 3)在课程设计报告中,通过截屏图给出Client/Server网络通信或手机收发电子邮件的运行结果。 4)对课程设计进行总结,写出符合规范格式要求的课程设计报告。课程设计报告撰写要求如下: ①每个学生必须独立完成课程设计报告。 ②课程设计报告书写规范、文字通顺、图表清晰、数据完整、结论明确。③课程设计报告后应附参考文献。 ④提供电子文档资料。例如程序源代码、设计思路、功能结构图或程序流程图等。⑤附录:给出程序源代码(可附主要部分或代表自己编程特色的代码)。 ⑥课程设计报告封面按照学校统一要求格式编写,并装订成册。要求书面工整、美观;如果条件许可,最好打印装订成册。 2.3 设计原理 TCP通信流程: UDP通信流程: 2.4 设计方案 Socket连接: 根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。 服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。 客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。 连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。 第3章 程序设计实现部分 3.1 C语言的网络功能与编程简介 网络编程,一定离不开套接口;那什么是套接口呢?在Linux下,所有的I/O操作都是通过读写文件描述符而产生的,文件描述符是一个和打开的文件相关联的整数,这个文件并不只包括真正存储在磁盘上的文件,还包括一个网络连接、一个命名管道、一个终端等,而套接口就是系统进程和文件描述符通信的一种方法。目前最常用的套接口是字:字节流套接口(基于TCP)和数据报套接口(基于UDP),当然还有原始套接口(原始套接口提供TCP套接口和UDP套接口所不提供的功能,如构造自己的TCP或UDP分组)等。 3.2 系统原理框图 3.3 程序设计 服务器端: #include return; } if(LOBYTE(wsaData.wVersion)!= 1 || HIBYTE(wsaData.wVersion)!= 1){ WSACleanup(); return; } SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0); SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY); addrSrv.sin_family=AF_INET; addrSrv.sin_port=htons(6000); bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); listen(sockSrv,5); SOCKADDR_IN addrClient; int len=sizeof(SOCKADDR); while(1) { SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len); char sendbuffer[100]; sprintf(sendbuffer,“Welcome %s here”,inet_ntoa(addrClient.sin_addr)); send(sockConn,我是沈郁,strlen(我是沈郁)+1,0); char recvchar[100]; recv(sockConn,recvchar,100,0); printf(“%sn”,recvchar); closesocket(sockConn); } } 客户端: #include int err;wVersionRequested = MAKEWORD(1, 1);err = WSAStartup(wVersionRequested, &wsaData);if(err!= 0){ return;} if(LOBYTE(wsaData.wVersion)!= 1 || HIBYTE(wsaData.wVersion)!= 1){ WSACleanup(); return; } SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr=inet_addr(“127.19.226.97”);addrSrv.sin_family=AF_INET;addrSrv.sin_port=htons(6000);connect(sockClient,(SOCKADDR *)&addrSrv,sizeof(SOCKADDR));char recvBuffer[100];recv(sockClient,recvBuffer,100,0);printf(“%sn”,recvBuffer);send(sockClient,“This is Kary”,strlen(“This is Kary”)+1,0);closesocket(sockClient);WSACleanup();} 3.4 调试结果 服务器: 3.5 课程设计总结 通过本次计算机网络课程设计,我更加充分的理解了课本上的知识,并能够加以扩展,从而应用于实践当中,这几天的课程设计令我受益匪浅,很多平时模棱两可的知识点都认真复习并实践了。本次课程设计是运用Visual C++6.0作为开发平台以及进行编写程序, 在此设计过程中主要经过了审题、需求分析与可行性研究,然后形成设计思路,设计所要实现的功能,最后进行程序的编写与调试,这个过程是不断出现问题并不断的进行修改,深深的感受到亲自动手实践的重要性。在实验的过程中发现学好基础理论知识的重要性,在设计过程中,不断遇到问题,通过老师和同学的帮助,解决了过程中出现的各种问题。 通过本次课程设计,我发现了自己的不足,希望在以后的学习中能够加强学习,提高实际应用能力,和解决问题的能力。 附录: 参考文献 1.(美)Andrew S.Tanenbaum 著,熊桂喜 王小虎译。计算机网络。北京:清华大学出版社,1998年7月第1版。 2.计算机网络原理与技术。刘化君 编著,高电子工业出版社,2012年6月第2版。3.计算机网络与通信。刘化君等编著,高等教育出版社,2011年6月第2版。4.C程序设计。谭浩强著,清华大学出版社,2005年7月第3版。 实验目的1)使用if语句计算分段函数 2)熟练掌握for语句和while语句编写简单的循环程序 3)学习简单的程序调试方法 编程题 1.编写程序显示0至50之间的所有奇数。(用while循环语句与for循环语句 两种方法实现。 2.从键盘输入两个整数m和n(m Enter 2 numbers: 5 7 The sum of the numbers in the range 5 to 7 is: 18 辽宁机电职业技术学院各电气类专业都开设《单片机原理与接口技术》课程。由于现在单片机编程使用C语言, 因此增设了《单片机C51程序设计》课程, 那么《C语言程序设计》作为其先导课程, 它的开设就是十分必要的。该课程已是计算机程序设计语言类专业基础课。 一、《C语言程序设计》课程的改革 《C语言程序设计》作为一门专业基础课, 其教学要真正体现“专业”、“基础”的特点。因此, 在教学中一直探索两个问题, 一是如何让学生能轻松掌握C语言的基本语法知识、程序结构等程序设计的基础;二是如何使学生学以致用, 能根据设计要求, 熟练地使用C语言进行程序设计, 并熟练调试程序, 为后续课程学习和应用打下基础。前者是知识的传授问题, 后者是应用能力的培养问题。 在传统的教学过程中, 教学出发点是学习语言, 注重C语言的语法学习, 将学生陷入繁琐的语法学习中, 过分强调了知识的传授, 而没有注重学生能力的培养。因此, 学生普遍反映C语言枯燥、难学, 学完也还是不会独立编程, 更不知道和自己的专业以及后续课程有什么联系, 当然也培养不了学生分析问题、解决问题等应用能力。我院在《C语言程序设计》课程实施中, 对教学模式、教学内容、教学方法等进行了改革。 二、《C语言程序设计》课程采用项目教学法的实施过程 将项目教学法应用于《C语言程序设计》课程教学, 为了达到既能让学生掌握C语言基础知识, 又能培养学生的能力, 我们采取任务驱动法, 即以项目为驱动力, 从分析任务开始, 讲解完成任务所需要的编程知识和技能, 在讲授知识点过程中, 引发学生解决实际问题, 最后, 以小组讨论形式共同设计制作完成项目。具体实施过程如下:设计具体教学项目, 分析建立能力模块, 构建内容体系结构, 见表1。 项目教学的具体实施是教师和学生共同参与的教学行为 (见图1) 。通过教学过程设计流程图, 直观地说明在实施项目教学中, 教师行为、学生行为与教学活动的具体关系和项目教学过程的具体步骤。 三、实施过程中注意事项 为了达到项目教学的知识目标和能力目标, 在实施项目教学的过程中, 需要注意以下事项: 1. 合理选择教学项目 教学项目选择是实现教学目标的关键, 因此, 在选择项目时, 我们考虑了以下问题:所选项目是否包含C语言编程的关键知识点;所选项目是否是现实的、实用的;所选项目是否能充分实现学生能力的培养;所选项目能否调动学生学习的积极性;另外, 项目的难度是否适中。 2. 教师要发挥好协助作用 项目教学要以学生为中心, 充分发挥学生的主动性、创造精神及自我评价能力。教师要给学生创造学习的环境, 提供学习资源, 另外在项目实施过程中, 教师的指导作用是不可忽略的, 教师要积极参与到学生的讨论中去, 并能在每个项目结束时给出正确的学习效果评价。 3. 学习效果评价一定要合理 要以学生完成项目的综合情况来评价学生学习效果, 评价内容包括学生参与各环节的表现、完成作业的质量, 另外还要注重学生在项目实施过程中能力的发展。要适时鼓励学生, 支持学生对所学内容及学习过程的思考, 鼓励他们多提出问题、分析问题、解决问题, 发挥他们学习的主动性、积极性。片面的、不正确的评价可能会阻碍学生的思考, 或削弱学生的学习自信心。 改革后的《C语言程序设计》课程, 使学生通过项目编程, 掌握语言的编程知识, 培养了编程实践能力, 同时也培养了分析问题、解决问题的能力, 发挥了创新和协作精神。 参考文献 关键词 C语言 实验课程 实验教学改革 中图分类号:G420 文献标识码:A 0 前言 C语言具有过程性、程序化的特点,同有具备高级语言和汇编语言的双重优点,运用C语言不仅能编写操作系统软件,还可以开发各个领域的应用软件。因此,更好地掌握好C语言,可以为进一步学习掌握C++/VC++,JAVA,数据结构等后续相关课程奠定良好的基础。理论教学在C语言课程教学过程中只能让学生学习基础知识,真正地让学生将理论课所学的内容应用到实际当中则是通过实验教学。只有依据学生的具体特点,采用恰当的教学模式、教学方法手段对学生逐步引导、启发学生,才能培养他们较高的逻辑思维能力和编程思想,最终达到C语言课程开设的最终目的。 1 当前高职教育中C语言实验课存在的问题 (1)学生综合能力薄弱。高职院校的学生一般高考分数比较偏低,学习能力和自我控制能力比较差,且综合分析能力及逻辑思维能力要比本科层次的院校学生低一些,因此在大一学习C语言尤其是上好编程实验课程有一定的难度。 (2)理论课时远大于实验课时。在不少高职院校,学校为了完成理论课程的教学计划,不重视实验课程的开设情况,私自缩减其课时数,从而减少了学生亲自动手编程操作的机会,进而降低了其编程思想的培养和编程能力的提高。 (3)实验类型单一。在高职C语言的实验教学过程中,实验类型主要是一些验证型的实验,缺乏设计型实验,学生只是简单地验证一些理论结果,这不利于培养学生主动思考问题的能力、逻辑思维能力和编程能力。 (4)实验环境相对落后。不少高校目前C语言的编译软件还在用DOS下的TC,该环境界面是纯英文,学生运行一系列的DOS命令都比较困难,并且TC本身也不支持鼠标操作,中文输入不方便,但仔细分析调试程序时会产生诸多英文提示,给学生学习带来不便,且全国计算机等级考试环境是VC++6.0,若长期使用TC的环境也不利于将来学生参加等级考试上机实践环节的顺利通过。 (5)实验内容与现实应用脱节。学生的实验内容仅仅停留在教材理论内容的验证,只能达到对基础知识的巩固和掌握,但由于实验内容与现实应用项目脱节,最终导致学生失去学习编程语言的兴趣,并降低了其编程创新能力和学以致用的综合应用能力。 (6)实验课前准备不足,课程效果无法量化。教师在课前会向学生说明应准备的内容,但并没有及时检查和督导,使得学生上机时缺乏明确的量化指标。另外,期末总成绩与上机情况没有直接挂勾,学生在思想上没有压力,也就没有动力,导致学生上机前准备不充分,上机时不抓紧时间,因此无法真正提高上机调试程序的能力。 (7)教师对实验过程监管不力。部分教师认为实验课就是布置好作业,让学生自我练习,自我验证就可以,不能及时指导学生在实验过程中出现的问题,不能及时总结归纳,把共性的错误加以纠正与提醒,大大降低了实验的目的和效果。 2 高职C语言实验课教学改革措施 (1)认真分析教学对象,能准确把握学生的学习能力和学习程度,主动拉近教与学的距离,让学生由被动学习转变为主动学习,增强其学习C语言的兴趣及积极性,真正做到因材施教,最终达到较好的学习效果。 (2)结合国内外优秀编程语言的实验教学方法和模式,以及C语言课程多年的教学实践经验,将理论课和实验课的比例设置成1:1。 (3)任课教师应认真设计好每一个实验模块、实验过程,有效地将理论内容融入到实验课中,实验过程中多结合现实项目需求进行有针对性的练习加以巩固,从而增强学生的学习积极性。 (4)改进C语言的编译环境,选用WINDOWS下的编译软件,比如WIN—TC或VC++6.0,WIN—TC的操作界面不一样,但内核实质上和TC是完全一样的,在WINDOWS下编辑TC代码,充分利用WINDOWS的剪贴版,可以很方便地输入和显示汉字等,使用VC++6.0可以让学生提前多接触等级考试环境,有利于学生的考试过关率提升。 (5)习题量化。在学生上机过程中,要求他们一定的时间内独立完成所布置的任务,然后老师再进行现场指导,及时纠正学生习题中的错误并公平公正地打分,做为平时成绩,以便成为本课程总成绩的评分依据。在学生上机之前可以先把实验内容告诉学生,让他们课前做好准备工作。这样不仅可以使学生互抄作业、不求甚解的弊端降到最低,还可以使教师掌握学生的真实学习状况。 (6)转变学生课堂角色。将实验课交给学生,真正体现学生主体地位,整个实验过程,教师只起到辅助作用,先由学生自主实验,发现问题后提倡学生相互交流沟通,小组讨论解决问题的方法,并让学生自己以教师的角色讲解相应知识点。这不仅有利于培养学生的团队协作精神,还能锻炼学生的逻辑思维能力和语言组织表达能力,对学生将来走上工作岗位奠定了坚实的基础。 3 C语言实验课教学改革的效果 (1)学生学习兴趣和积极性显著提高。因为能在实验课过程中真正体现所学理论知识,并能将其应用到现实问题的解决过程中,学生能感觉到学有所用,能做到学以致用,这些都显著提高了其学习C语言的课堂听课质量。 (2)实验课上机效率明显提高。若学生未能及时将所编写程序顺利通过老师的检查,该学生的此次作业则视为没成绩,学生在上机过程中争分夺秒地学习,根本没有多余时间上网玩游戏,更有甚者在下课后仍要进行调试程序,这会使实验课上机效率得到明显提高。 (3)通过实验课的辅导,任课老师能更深入地了解学生的学习情况,有利于进行个别辅导,这样更具针对性,也能够了更加公正客观地对学生的成绩作出评定,与此同时可以调动学生学习的主动性和积极性,利于学生自主学习。 (4)学生通过在实验课上的自我练习、沟通交流和问题讲解,真正感觉到自主学习的乐趣,并不断全面提升了自己的综合素质,对将来走出校门、走向工作岗位更加信心满怀。 实践证明,这些措施有效实施后,明显提高了同学们掌握并应用C语言的能力和上机调试程序的水平。实行教改措施,对学生而言,提出了更加严格的要求,势必会更加严格要求任课教师和实验教师的各方面能力,其工作量也会随之增加,教师要付出比平时更多的心血才能胜任。 参考文献 [1] 陈国英.提高计算机语言课上机实践教学的改革与实践[J].洛阳农业高等专科学校学报,2002(4). [2] 谭浩强,张基温.C语言习题集与上机指导[M].高等教育出版社,1993. [3] 张震.论课堂教学的信息沟通与教学效果的提高[J].山东师大学报,1998(3). 【c语言课程实训报告】推荐阅读: C语言课程08-31 c语言课程心得07-23 c语言课程设计106-20 C语言课程设计选题09-15 c语言程序设计课程教学大纲20107-26 A01_C语言程序设计课程说明05-14 C语言,基础实训教程,第一章答案07-05 c语言实验报告内容07-10c语言课程实训报告 篇2
c语言课程实训报告 篇3
c语言课程设计设计报告 篇4
c语言课程实训报告 篇5
c语言课程实训报告 篇6
《C语言程序设计》课程的改革 篇7
浅析高职C语言实验课程教学改革 篇8