c语言程序设计实验报告范文

时间:2023-11-21 14:14:10

c语言程序设计实验报告

c语言程序设计实验报告篇1

关键词:C语言;程序设计;互助学习;教学改革;趣味学习

中图分类号:TP312.1-4;G652

C语言作为一种功能强大的通用编程语言,被广泛应用于系统和应用软件的开发[1-2],大多数计算机专业将其作为第一门程序设计语言。

对于初学者,C语言具有抽象、使用灵活等特点,这给程序的编写、调试、阅读带来了许多不便;在编写代码的过程中容易遇到难以下手、语法、系统等问题,很容易使学生失去兴趣[3-4]。

针对学生学习C语言存在的困难,分析了困难的内在原因,对现有的C语言程序设计课程实验课程进行改革,充分调动学生对C语言学习的积极性、主动性和参与性。

1 C语言学习困难的内在因素分析

对于初学者,往往觉得C语言学习比较困难,其原因主要包括:

1.1 专业背景不充分

初学者对计算机基础知识了解不够充分;没有深刻理解现代计算机的体系结构――von Neumann体系结构的核心思想――存储程序思想。如果不能很好地理解基础知识,必然使程序设计停留在一个比较浅显的层面,不能体会程序设计的艺术性、创造性等独特魅力。

1.2 文科式学习方法

学生对计算机专业的学习方法还停留在“文科”学习方法,症状表现为:上课能听懂,书上的例题也能看明白,可是到他们自己动手做编程时,却不知道如何下手。其所谓的看懂听明白,只是用文科的方法记忆或了解肤浅的语法知识。C语言程序设计是一门工科性课程,如果没有深刻地理解C语言的语句的执行过程是不会编写程序解决实际问题的。“纸上谈兵”式的光学不练是学不好C语言的,只有使用C语言自己编写代码解决了实际问题的学习方法才是正确的方法。

1.3 算法分析不够

初学者认为计算机是“全能的”,计算机就能自动完成事情。而事实是:现在的计算机智商几乎为0,要想让计算机完成预先给定的任务,就必须告诉计算机“做什么”以及“怎样做”。因此问题解决就是设计一个做事情的步骤,告诉计算机第一步做什么,第二步做什么,…,最后一步做什么。而人是通过程序设计语言来引导计算机完成这些工作,因此还需将每步实现转换为具体实现的程序代码,其中需要涉及对步骤过程进行抽象、总结、发现这些步骤过程中的规律等,而这一步往往是计算机编程的最难一步,恰恰是这一步使得大部分学生“知难而退”,从而造成学生不想学程序设计的最主要的原因。

2 C语言编程能力逐步提高步骤

C语言作为一门实践性很强的课程,实践能力的培养是学好C语言的关键环节,为了提高学生的编程能力,将C语言程序设计过程分为如下4步:

第1步:验证性练习。这一步要求学生首先把书本上的例程读懂,然后按照教材上的程序实例进行原样输入,运行一下程序是否正确。

这一步要求:基本掌握C语言编程软件的使用方法,熟练地输入、编辑C程序;初步记忆所学章节的知识点、养成良好的C语言编程风格。输入程序前,要让学生知道程序中包含的变量个数、变量类型、每个变量“扮演”几个角色、每条语句的功能、整个程序算法思想是什么、第一步做什么,第二步做什么,直到最后一步做什么都应该清清楚楚,只有这样才是真正的代码输入,而不是“打字练习”。遇到错误时,从第一条错误开始逐条进行修改,每改正一个错误就立即编译直到程序运行成功为止。

第2步:局部改动。在第1步输入的C程序代码的基础上进行试验性的修改并运行,看看程序结果发生了什么变化,分析结果变化的原因,加深对所学知识点的理解。这一步和第一步是同步进行的,实现“输入”加深知识的记忆,“修改”加深对知识的理解。记忆和理解是相辅相成的,相互促进。

如:编写程序实现1+2+3...+100之和。

#include

void main()

{int i,sum=0; //变量定义

for(i=1;i

sum=sum+i;

printf("sum=%d\n", sum); //结果输出

}

第1次:将for(i=1;i

第3步:照葫芦画瓢。在书上已有例程的基础上,设计出具有相似功能的程序。比如:书上例程给出了求1―100的和,在给学生布置上实验作业时,可以布置求2+4+6+…+100、或求1*2*3*4*…*n等相类似的实验作业。这样,学生就能在求和程序的基础上就行小幅度的改进,实现新的程序设计。

第4步:进阶提高。经过上述过程,学生已经基本掌握了C语言,就可以研读别人编写的C语言经典程序,学习他人解决问题的方法和程序设计的技巧,提高自己的程序设计能力。在此基础上,逐步用C语言解决一些实际问题。

3 C语言实验课程改革

由于编程是一件相对比较枯燥和烦闷的工作,而学生又处于青春活动期,因此在C语言实验课程中根据学生的特点,进行如下改变:

3.1 趣味+实际应用编程

兴趣是最好的老师,激发学生学习兴趣是教学成败的关键[5],可激发学生的兴趣,提高学生学习的主动性和积极性。在计算机程序设计中恰当地引入趣味性的数学知识,如:我国古代数学名的数学问题:百钱买百鸡、36人搬36块砖等问题。同时,可将现实生活中的一些实际问题,如给定打电话的时间(单位:秒),计算每次打电话的费用。通过引入趣味数学和实际应用问题,锻炼了学生的编程能力,又解决了学生认为学习C语言不能解决实际问题的苦恼。

3.2 题目分级

根据实验编程题的难度大小,分为:初级、中级、和高级3个等级。其中,初级难度的程序设计题目一般比较简单,包括内容为书上的例程、和例程相类似的题目,初级难度题目评分区间为0-70分。中级难度的编程题的难度逐渐提高,学生根据相关的背景知识,做一定的分析就可比较容易地将程序编写出来,如对于循环语句部分:设计进制转换程序、求素数等问题,中级难度题目评分区间为70-90分。高级难度编程题目的难度较大,需要做大量的分析、较好的编程技巧才能,如:约瑟夫问题、螺旋矩阵等,高级难度题目评分区间为90-100分。

对于不同难度的题目分别给出3-5个实验内容,学生可根据自身的学习情况,选择不同难度的题目进行编程(至少要选择初级难度的题目完),这样既考虑了学生的实际学习情况,给予不同的选择。同时,对于有能力的学生,在完成一定难度的设计题目后,可申请向高级难度题目进发,只要能完成高级难度题目,其评分就按高级难度分值重新评定,促进学生的自主学习。

3.3 分组+“陪审”

为充分体现学生在学习中的主导地位,在实验中引入了分组模式。以小组为单位对案例进行分析、探讨,激发他们解决问题的灵感和方法;让小组的人在不同的程序题目中分别扮演不同角色(如题目分析、程序设计、程序测试、文档编写),充分调动学生学习的积极性和参与性。

在实验课程中,每次随机抽取3-5个小组来向全班同学讲解题目设计思路、想法、程序代码等内容(为充分调动每个同学的积极性,防止部分同学的懒惰型,每次讲解的人不同),让剩余的每个小组随机抽取1人组成“陪审团”对讲解小组进行评价和提问(包括设计的原理、代码等),并给出讲解小组的成绩。实践中表明,最佳的学习小组合作人数应在4到6人之间。

3.4 综合试验

在C语言程序设计第一节课时,布置5-7个综合性试验,如“学籍管理系统”、“职工管理系统”、机房收费系统“等,每个小组选择1个完成。综合试验融合了C语言程序设计的所有知识点,编制一个超过200行左右的代码对学生是一个大的挑战,需要学生考虑方方面面的东西,如界面的友好性,数据合法性验证等,既锻炼了学生分析问题、解决问题的能力,又锻炼了学生编写小规模代码和文档书写能力。

3.5 实验报告

文档书写也是一个编程人员必备的能力,因此,每次实验需要学生编写一个实践报告,报告的主要内容包括:实验的目的和内容;算法或关键技术介绍、实验代码、实验过程代码出错原因、分析及修改;多组测试数据及对应的测试结果、算法的可能改进、体会及编程心得。通过实践报告的撰写,促进学生对算法的进一步思考,进一步熟悉C语言的语法知识,培养高效、精炼的编程风格。

4 结束语

本文针对学生学习C语言方法的缺点,提出了通过四步来逐步提高学生的编程能力;提出了对编程题目进行分为初、中、高三级,提出趣味编程、以及分组+“陪审”模式的实验改革。实际教学证明,这些方法能充分调动学生学习C语言的积极性、参与性,学生编程能力有较大提高。

参考文献:

[1]维基百科.C语言[EB/OL].http:///wiki/C%E8%AF%AD%E8%A8%8

[2]Kernighan B W,Ritchie D M.The C Programming Language (2nd Edition)[M].New York:Prentice Hall,2001.

[3]陈庆利.基于工程实践能力培养的C语言教学改革[J].计算机光盘软件与应用,2013(21):215-216.

[4]侯宏霞.提高“C语言程序设计”课程教学质量的探索与实践[J].内蒙古师范大学学报:教育科学版社,2012(01):131-133.

[5]赵君,钟良骥,卢社阶.C语言教学方法的探索―基于学习兴趣的教学改革[J].湖北科学院学报,2013(03):85-87.

作者简介:陈庆利(1975-),男,四川眉山人,副教授,博士,研究方向:数字图像处理。

作者单位:乐山师范学院 计算机科学学院,四川乐山 614004

c语言程序设计实验报告篇2

[关键词]教学现状 教学内容 教学方法

[中图分类号]G633.67 [文献标识码]A [文章编号]1009-5349(2012)08-0171-01

c语言是在国内外广泛使用的一种计算机语言。近年来,c语言不仅为计算机专业工作者所使用,许多高等学校在非计算机专业也开设了c语言课程。全国计算机等级考试也将c语言列入了考试范围,所以学习c语言已经成为广大学生的迫切要求。那么如果更好地在师专院校开展c语言课,值得很多人思考与探索。

一、c语言教学现状

c语言课程教学的宗旨,不仅是让学生能够掌握高级语言的知识,重点是通过学习基础知识掌握程序设计的思想与方法,能够灵活应用高级语言完成程序设计。

教学现状:在实际教学过程中教师依旧以讲授为主,更多注重于语句、语法细节的教学,缺乏对学生编程意识的开发和引领,对教学实践环节重视不够,导致学生只会独立的语句,不能够自主上机编程,即使开设实践课,学生当成自由活动课,达不到实践课预期的效果。

学习现状:很多学生一接触语言类课程就产生畏惧感,面对用英语编写的复杂的数学问题,一开始就失去了学习兴趣。

上好第一节课。在第一节课成功激发学生的求知欲和兴趣是最重要的,学生刚入学对本门课程一无所知,对后续课程的影响也很惘然,所以与其匆忙完成教学任务,不如在本门课的重要性、学习方法以及引发学生学习兴趣方面下工夫。

例如,我为了激发学生兴趣,在课上先安装了一个小游戏,轻松的音乐,唯美的画面,立刻收到预期效果,在学生们惊诧的目光中,我导课说:“如今市场上卖的电脑游戏,手机游戏大都是用c语言编辑的。”接着我从专业角度来描述c语言,告诉他们学好c语言的重要性。

当然了,泛泛地把c语言的重要性做抽象的总结,不如给出具体的例证。所以我向同学展示了书上几个实例,当看到几个简单的语句输入后运行却出来很复杂的结果,很多学生们有了很强的好奇心,顺势而下,引领学生进入c语言的学习中。

二、c语言教学的新探索

(一)教学设计要突出程序设计课程的特点

c语言课程的学习有其自身的特点,听不会,也看不会,只能练会。在c语言教学中采用了以程序设计为主线,以案例教学为驱动的方式,可以快速地把学生带进编程世界中,围绕程序设计来开展知识点的教学。

例如:首先展示一个简单的程序。输入两个数然后输出两个数的和,当我把完整的程序写出来后进行简单的运行,观察结果,然后通过更改每个语句来体会每个语句的含义,最后以程序设计为主线分析每个语句,在实践中掌握语言知识,培养程序设计的基本能力,并逐步理解和掌握程序设计的思想和方法。所以教学设计的重点应该是培养学生的编程能力,教学也要以程序设计为中心来组织内容。

(二)从学生的角度来设计教学

包括教学内容、教学方法、课堂教学的组织。人之初,性本善,性相近,习相远。教不严,师之惰。此外,学生之间的差异性也需要在教学中考虑。现在的学生遇到编程上的困难,更多的是选择逃避而不是迎难而上。他们首先想到就是“我不会”,然后是给自己找到很多理由。对于这一点,我们应该采用的方式是降低编程题的难度,教学中尽量采用鼓励方式。从简单入手,逐步提高,另外针对不同的学生设计的编程题目也要精心设计。

(三)启发式教学,实例引领

在c语言教学的教学过程中,采用启发式教学将算法融入语言教学中,以通俗易懂的例子为引导引出语法规则,然后以总结的形式讲解语法知识,使学生在解决实际问题中学习。

例如:在介绍循环结构介绍时,很多老师往往直接写出规范的语法结构,然后让学生生搬硬套编程。我们可以这样:第一步:让学生输出数字1,学生很快写出printf输出语句。第二步:提高难度输出2,依次输出3,4,5,学生也很容易用5个printf语句实现。第三步:提出问题,我如何输出1到10000所有的数呢?这个问题引发思考,分析要输出的次数等问题,用这种启发式教学和实例引领的方法使学生不仅能够理解循环结构的语法知识,从学生只把注意力放在语法上,而转到算法的设计上来,开拓了学生思维,提高了编程能力。

(四)加强实践教学环节

学习c语言程序设计应该充分重视上机试验环节,上机试验不仅是为了使学生检查自己编写程序的正确性,更重要的是让学生掌握c语言程序上机操作要领和调试程序的技术,积累经验。1.强调上机前的基础知识复习。上机课要求学生尽量不带书本,在上机课之前把相关基本操作认真复习,杜绝上机照书本敲代码,教师不要解答有关基本操作方面的问题,目的是提高学生独立思考,理论联系实际的能力。2.采用配套的平时编程测试体系和考核体系。让学生平时自觉地编程,并以学生做题的数量和通过率来衡量,以此来获得平时成绩,这样能够调动学生学习的积极性。尽量减少书面作业的数量,更多提供上机作业,独立思考,在一次次调试中理解每个语句的含义。3.填写实验报告。每节实验课要求学生认真填写实验报告,通过填写实验报告来总结一节课的成败得失,总结编程经验。

三、结束语

相信随着教学改革和每位教师的深入研究,我们能够使c语言课在师专院校更好地开展。

【参考文献】

[1]何钦铭,颜辉.C语言程序设计.高等教育出版社,2009.

[2]谭浩强.C程序设计.清华大学出版社,2005.

[3]冯君,薛红芳.探索C语言教学方法.福建电脑,2007(7):

c语言程序设计实验报告篇3

关键词:C语言;教学方法;趣味性;情境教学;实验教学

C语言是一种通用性计算机程序设计语言。对于学生来说,学好了C语言,再进一步深造C++/VC++,JAVA等语言,就有了坚实的基础。但目前很多学生在学习《C语言程序设计》后,感觉读程序还能凑合,编程则“难于上青天”,无从下手,部分学生仅仅是为应付考试而死记硬背程序,完全背离了中职教育的初衷。因此,在从事对口单招C语言教学中,我越发觉得对学生进行编程能力的培养是很重要的。结合近几年的教学实践,我觉得应该在以下几个方面重点培养。

一、上好第一堂课,诱导与激发学生的学习兴趣

如何上好第一堂课是至关重要的。因为学生都是初次接触C语言,C语言对他们来说是神秘的,“兴趣永远是最好的老师”,有了兴趣他们才会积极主动地去学习,所以我觉得第一堂课应为“趣味C语言入门课”。

1.明确C语言的地位

教师可以用最通俗的语言,以讲故事的方式向学生展示计算机以及程序设计的无穷魅力,让学生了解计算机对人类生活的影响,它是如何获得这种魔力的,程序设计扮演什么样的角色,程序设计语言是怎样的语言,怎样驾驭程序设计语言,从而成为“编程高手”等。

2.强调C语言的重要性

C语言是学生今后学好后续专业课的基础,比如数据结构、VB、VC++、JAVA等。虽然程序设计语言更新很快,但一旦真正掌握了程序设计思想和理念,具备了真正解决实际问题的能力,即使语言再更新但程序设计的本质是不会变的。

3.传授C语言的学习方法

C语言是一门实践性较强的课程,要理论联系实践,加强学生动手能力和解决问题能力的培养,在学习方法上给予学生指导,告诉学生如何自学、如何听课、如何动手实践,明确一点:“C语言不是看会的,也不是听会的,必须是亲自动手实践练会的”。从而强调实践的重要性。

二、以问题为核心组织课堂教学,采用灵活多样的课堂教学方法

C语言课堂教学应充分发挥其解决实用问题的导向作用,进行理实一体化教学,有机地将理论与实践结合起来,通过设计巧妙的教学内容,充分调动学生的积极性,让学生的思维围绕教师的思维而运动。要让学生感觉到所学知识能解决实际问题,通过一些有趣实用的例子去引导学生学习,在学生的思维中留下一定的期望与神秘感,促使学生驱动自己的好奇心,从而充分调动学生主动学习的欲望。

1.理论联系实际,激发学习兴趣

在教学中,我经常以讲故事、做游戏等形式,选取一些有趣的C程序经典例子穿插在课堂教学中,大大提高了学生的学习兴趣。

例如在讲函数时,如果直截了当引入函数的概念,就不会引起学生的兴趣,也不会让学生认识到函数在程序设计中的重要性。我从《三国演义》故事开始讲起,《三国演义》中有这样一段描写:懿问曰:“孔明寝食及事之繁简若何?”使者曰:“丞相夙兴夜寐,罚二十以上皆亲览焉。所啖之食,日不过数升。”懿顾谓诸将曰:“孔明食少事烦,其能久乎?”此话音落不久,诸葛亮果然病故于五丈原。“食少”可能因为身体欠佳,而“事烦”则纯粹是诸葛亮自己给自己套上的枷锁。他的行事原则就是“事无巨细”,“事必躬亲”,落得个手下一帮能人无从发挥,新人没有锻炼机会,自己却积劳成疾,最后“蜀中无大将,廖化当先锋”。从管理学的角度是极其排斥这种做法的,认为工作必须分工,各司其职,每人发挥专长。其中的思想,在程序设计里也适用。

自然而然地得出结论:程序设计就像一门艺术,主要体现在算法设计和结构设计上。就如同建筑,假如结构不科学,外表再华丽的大楼,也难逃倾覆的命运。对于一个软件项目来说,用户能看到的只有功能、界面、运行速度和价格等。虽然我们可以在main()里书写代码,完成全部功能,提供友好界面,保证运行速度并尽力压缩成本,但这样的main()就好比是诸葛亮,“事必躬身”,即便聪颖过人,也是“其能久乎”。这样的程序将带来一系列的弊端:稳定可靠较差、不可能精炼高效、不可能与时俱进、难以控制进度……

面对上面的诸多问题,该怎么处理?答案是:给程序一个好的结构!而函数和模块正是C语言为实现一个结构化程序的两样武器。当函数和模块在程序设计中的重要性解释清楚以后,学生才有兴趣和愿望去进一步学习如何定义和使用函数。

2.采用情境教学法,激发自主学习

让学习过程变得轻松有趣是激发学生兴趣的关键所在。C语言本身是一门极其抽象难懂的学科,把抽象的问题形象化,这样就能把学生的注意力集中起来,学习积极性调动起来,达到师生互动的效果。例如在讲数组的查找和排序问题时,由于算法往往比较抽象复杂,学生较难理解,教师不妨借助于多媒体课件生动的演示功能,或者干脆叫几个学生到黑板前面来,现场演示如何找到个子最高的学生,如何将他们按照个头高矮来排队,如何在队列里插入一位新同学,如何在队列里查找一位同学等等,这样,不仅不会让学生感到枯燥乏味,活跃了课堂气氛,而且还能给学生留下深刻的印象,使得原本枯燥的算法变得简单易懂。

3.采用“引申法”由浅入深,触类旁通

所谓“引申法”是指结合已经解决的问题,因势利导,引导学生在此基础上解决相关联的问题。如我在讲解利用for循环解决累加问题的时候,先举一个基本的累加题的例子:计算S=1+2+3+4+……+100,待学生掌握了解决问题的方法后,随即引申出一系列的问题:计算S1=1+3+5+……+99,S2=2+4+6+……+200,S3=12+22+32+……+102,S4=1!+2!+3!+……+10!等,这样类似的问题还有很多。“引申法”可以培养学生在程序设计方面的发散性思维,提高程序设计中的应变能力。问题是活的,但程序是有章可循的。最终使学生明白,语法是有限的,可解决的问题是无限的。只有在分析实际问题的基础上,以清晰的思路去设计算法,才能举一反三,以不变应万变。

三、重视实验课教学,提高学生动手能力

学习C语言程序设计应当充分重视实验教学。首先,教师在上实验课时尽量要求学生多编写程序,多上机调试程序,上机实验的主要目的在于让学生熟练掌握上机操作要领和调试程序技术,积累编程经验。其次,上机实验可以加深学生对讲授内容的理解,尤其是一些语法规定,光靠课堂讲授比较枯燥又难以记住,但它们又很重要,通过多次上机就能自然地熟练掌握,通过上机来掌握语法规则是行之有效的一种方法。最后,学生在上机调试通过一个程序后,可以自行修改程序中某些关键部分,甚至故意设置一些障碍,观察和分析在不同情况下的编译和运行结果。事实证明,上机实验的重要性绝不亚于课堂听课,这是巩固和发展课堂知识的十分重要的环节。

我认为可以从以下两个方面加强训练:一方面是规范上机实践内容。可以专门设计一套完整的实验大纲,为学生的实践提供指导。同时,对实验报告进行规范设计。这种规范对于学生基本程序设计素质和良好的程序设计习惯的培养,以及科学严谨的工作作风的训练能起到很好的促进作用。另一方面是采用“实践―查漏―再实践”的方式进行上机实践。在平常实验过程中,根据教学对象的不同,相关课程精心设计几组不同类型的有一定综合性的问题作为实验题。不仅抓实验过程中的辅导,同时还抓实验前的准备工作和实验后的总结工作。要求学生每次实验前熟知本次实验的目的,认真编写程序,保证在实验时能做到心中有数、有的放矢,杜绝学生在上机时临时编写程序。实验过程中要求学生仔细调试程序,一周后给出一个示范程序(示范程序基本上采用面向对象的方法和思想来设计)。要求学生对照示范程序发现自己程序设计中的漏洞或不足之处,改进或完善示范程序,然后再修改、调试自己的程序。最后要求学生写出完整的实验报告,实验报告批改后,对学生的上机实验情况做及时总结,指出成功之处和不足之处。通过这种“实践―查漏―再实践”的方法训练,对实验问题的深入分析、剖析,避免上机的简单重复,有效地提高了学生的编程能力,以及分析问题和解决问题的能力。

总而言之,C语言程序设计的教学要讲究方法,通过这门课的学习,不仅要使学生掌握C语言的基本语法规则,而且要切实培养学生逻辑思维和动手编程的能力,培养学生的创新精神、团队意识,为学生提供更好的展示才华的舞台。

参考文献:

[1]谭浩强,张基温.C语言习题集与上机指导[M].高等教育出版社,1993.

[2]陈国英.提高计算机语言课上机实践教学的改革与实践[J].洛阳农业高等专科学校学报,2002.

[3]徐大华,南京农业大学工学院.程序设计C语言[J].教学思考与探讨,2010.

c语言程序设计实验报告篇4

关键词:C语言;开放式实验;改革

中图分类号:TP393文献标识码:A文章编号:1009-3044(2009)34-9769-02

Preliminary Study on Open-ended Experiment of "C Programming Language Design" Teaching

WANG Jin-hua

(Center of Computer, Nanchang University, Nanchang 330031, China)

Abstract: The article is based on the arrangement and analysis of some main problems in "C Programming Language Design" teaching, especially in experimental teaching. having discussed how to train the practical operating ability of students in the courses teaching and having put forward Several ideas about the educational reform.

Key words: C language; open-ended experiment; reform

C语言是一种应用范围非常广泛的计算机程序设计语言,也是当前许多高等院校理工科学生的必修课。作为一门实践操作性很强的实用编程技术,这门课程的设置不仅仅要向学生传授理论基础和概念,更要培养学生灵活运用知识的能力。这满足教学需要,高等院校必须以“学生为主体”,打破传统的实验教学观念,从教学思想和教学观念上更新,通过实验课的开设特别是实验室的开放,帮助学生消化和巩固课堂所学知识,验证学习中的疑难问题,激发和提高学生学习C语言程序设计的兴趣,从而提高学生基本实验操作技能和理论实践相结合的能力,进而达到培养学生创新能力的目标。

当前,各个高等院校在《C程序设计》的教学中都不同程度地加大了实验课的比重,但是仍然普遍存在学生兴致不高,教师无所适从的情况,教学效果差强人意。究其原因,主要有以下几点:

1) 学生自身的问题。很多大学新生自认对计算机并不陌生,但除了网上聊天、玩游戏外,绝大多数人对于计算机硬件结构和工作原理不了解,对操作系统不熟悉,对编程更是一无所知。在理论学习过程中,跟不上教师的思维;在实验过程中,操作上的具体问题也很多,导致学习中困难较大。

2) 课程属性和课时设置的问题。作为一个编程工具,C语言本身比较抽象,也很枯燥,知识点较多,另外编程过程对英语水平的依赖度比较高,这些都给学生带来了很强的距离感。在高校非计算机专业的课程设置中,这门课一般安排在大一下或大二上学期,共64~68课时,其中理论课和实验课各占一半时间。在实际教学中,由于C语言有很多的语法细节,教师往往只能照本宣科,涉及到对一些重要的逻辑推理过程的讲解和示范,学生很难在短时间内理解这些推理过程,与教师保持同步。在上机实验中,由于时间的限制,只能是简单地验证语法规则,很多学生对C程序设计的掌握仅仅停留在语言使用层面上,涉及较复杂算法时,多数同学都感到无从下手,不能吃透、用活所学知识,开发应用软件时设计能力比较差。

3) 师资和硬件设备的问题。近几年,高校连续扩招,在校生人数猛增。高校虽然投入了大量的财力物力,更新了不少的仪器设备,但离教学需求仍然有很大的差距。实验设备的高使用率使得日常的维修难以正常进行,导致设备完好率过低。同时,高校实验教师人数比较少,面对日益增大的维护维修工作量,疲于应付,根本无暇顾及自身的学习和提高,导致知识老化,无法满足学生的辅导答疑需要。

鉴于这种状况,笔者认为,在管理体制、学生素质、硬件条件等因素不可能短时间得到明显改善的情况下,大幅度地提高学生自主上机实验的时间,成为了提高C语言教学质量的最有效的方法。根据教学进度,教师适时给学生分配实验任务,给他们充分的自,让他们按照实验任务书的要求自己设计实验方案,在熟悉实验设计思路的基础上,利用节假日和晚上等课余时间,完成实验任务或自行做一些开放性的实验,经过独立思考自行解决遇到的实际问题,充分发挥学生们的主动性,激发学生的创造热情,对学生固强补弱是十分有好处的。

为了在《C程序设计》这门课程中合理有效地渗入开放式实验,笔者设计了一个改进型的教学系统(如图1所示),并进行了小范围的实践。

在这个教学系统模型中,我们把C语言的教学计划分为三个部分,第一部分是理论教学,主要由老师系统讲授理论知识,适当增加课堂提问和课堂作业的内容,增强互动,调动学生积极性;第二部分是传统式实验,主要根据教学大纲要求,验证课堂上学到的知识点;第三部分是开放式实验,也是改革的重点部分,由教师和实验人员共同研究设计出一定数目的应用型编程题库,由同学自主选择,利用课余时间完成,同时鼓励同学根据生活中的实际需求,自己设计实用的小程序,自主完成后上交实验报告,可以在课程结束时考核中得到不同程度的加分。三个部分的每个环节,均纳入学生成绩考核的范畴,为了客观、公正、科学地评价学生的实验成绩,真实地反映学生的能力素质,开放式实验成绩分为理论阐述、方案制定和结论报告三部分,重点考察学生利用理论知识设计和独立完成实验的能力。另外,对教学的全过程进行跟踪,收集整理来自一线师生的意见和建议,不断对教学计划进行调整,以求更好的教学效果。

通过论证和尝试,笔者认为,这种教学模式有以下几个好处:

一是极大地调动了学生的学习积极性,消除了学生对计算机的陌生感。通过实验室的开放,学生接触和使用计算机的机会大大增加,对计算机原理和功能有了进一步的认识,对编程过程中的一些具体的操作问题也有了切身的体会,不再觉得计算机语言是一种高不可攀的学问,学习掌握这门语言的兴趣的愿望得到激发。

二是促进了学生对所学的知识点的理解。以往的教学中,受课时限制,教师只能按部就班地对知识点和重点逻辑推理过程进行讲解,没有足够的时间去带领学生反复钻研、消化。通过实验室的开放,学生有机会亲自去实践理论要点的逻辑推理过程,加深了对知识点的理解,跟上了教师的授课节奏。

三是理论与实践结合的能力明显增强。通过开放式实验的设立,学生开始自发研发一些程序,比如我们学校是全国计算机等级考试的一个考点,每年两次的全国计算机等级考试报名时,要接待几千名学生,老师们又是录入考生信息又是按照不同的语种和等级收费,既忙碌,也容易出错。某同学就从教师的需要出发,编写了一个小软件,让老师可以随时方便地分类汇总统计报名人数和报名费,随时核对帐目,有效地减小了差错率。虽然这个小软件很简单,但是同学们能在生活中发现编程的价值和乐趣,这正是教师们希望看到的。

综上所述,在《C程序设计》课程教学中引入开放式实验,极大的调动了学生的学习积极性,在一定程度上扫除了师生的沟通障碍,有效地培养了学生的实践创新能力,对于提高学生的综合素质具有相当重要和积极的意义。

参考文献:

[1] 谭浩强, 张基温. C语言程序设计[M].北京:清华大学出版社,2007,5.

[2] 谭浩强. C程序设计题解与上机指导[M].北京:清华大学出版社,2006,7.

[3] 徐晓蓉, 陈洪波. 提高计算机专业C语言教学效果的方法探讨[J].福建电脑,2009.4:205-206.

c语言程序设计实验报告篇5

[关键词]C语言程序设计 改革 实践

引言

C语言程序设计课程足以C语言为平台,使学生全面了解程序设计的总体思路、程序没计的基本算法、C语言的语法规则以及使用C语言进行构化程序没计的方法,并具有一定的程序设计和程序调试的能力,为今后使用C语言解决实际问题打下良好的基础 由于C语言涉及的概念比较复杂,规则繁多,使用灵活,容易出错,同时该课程又是学生首先接触的第一门程序没计课程,所以很多学生学习起来都感到困难和吃力.并不同程度产生畏惧心理。

在C语言程序设计的教学工作中,我们发现,学生的学习热情不高,更谈不上综合应用能力的培养与提高。我们C语言课程教学组通过对我校C语言程序设计课程教学现状的调查分析,总结出了教学效果较差的主要原因,并从教材内容、教学方法、教学手段和、上机实践和考核评价体系五个方面进行了大胆的改革与实践,并取得了较好的教学效果。

一、C语言程序设计课程教学现状分析

为了实时掌握学生的真实学习情况,任课教师对学生进行了问卷调查。根据问卷结果及各位教师的教学经验,总结出我校C语言程序设计课程教学效果较差的主要原因有以下几点。

(1)内容抽象、枯燥,学生学习兴趣度低。相比第一学期已经或多或少有所接触并有一定基础的大学计算机课程而言,第二学期开设的程序设计课程是一种截然不同的全新的课程,出现了大量的新概念、新名词和新方法。上机时好不容易敲上了一个程序,一运行就会出现一堆错误。62.4%的学生看不懂错误提示,84.76%的同学不会使用单步跟踪、Watch窗口等基本调试工具,22.3%的同学竟然根本不知道这些调试工具。于是学生对该课程的学习举步维艰,学习的热情急速降温。

(2)实用性不强。近80%的同学认为C语言的语法知识学了一大堆,但不知道学这些语法有什么用,和自己的专业知识有什么联系。因此,多年积累下来,对C语言程序设计课程的普遍看法是:这是一门无用的公共课,混混过去就算了。于是,很多同学上课不听讲、下课不预习、不复习,周而复始,形成恶性循环。

(3)进度过于缓慢。C语言程序设计每周4学时,其中,2学时多媒体教室的课堂教学,2学时计算中心机房的上机实践。计算中心机房为多个班级公用,且无屏幕转播设施,因此教师的教学仅限于2学时的课堂教学。课时太少,加上学生兴趣度低,往往一学期下来指针刚讲了基本概念就结束了。有些为参加全国计算机等级二级c语言考试而努力学习的同学也因为指针内容学习太少而难以过关。

针对上述C语言程序设计教学效果差的原因,我中心C语言课程组的各位教师认真研读了“研究式学习”、“CDIO教学模式”、“计算思维”等理论及各种教学方法和实践方式,借鉴了哈工大全国精品课程“C语言程序设计”课程的先进教学经验,并结合各位教师多年的教学经验,制定了C语言程序设汁课程教学体系的改革方案。该教学体系改革方案从教材内容、教学方法、教学手段、上机实践和考核评价体系五个方面展开。

二、编写优质配套教材,实施教材改革

我们按照研究性学习的内涵编写了《研究式学习——C语言程序设计》教材,目前正在进行面向“计算思维”的新版教材的编写。该系列教材具备以下特点:

(1) 编写理念科学性强

整套教材的编写以“研究式学习”理念为指导,研究性学习是一种建构性的、追求协商的、尊重个性的、以人为本的“体验式学习”。在2006年的《国家精品课程评估指标》中新增了一条指标:“重视研究性学习、探究性学习、协作学习等现代教育理念在教学中的应用;能够根据课程内容和学生特征,对教学方法和教学评价进行设计。”所以研究性学习是以人为本的高等教育价值观的体现,是社会变革和教育发展的要求,也是精品课程的要求。研究性学习的关键是要在学习的各个阶段提出适当的研究问题,以便在学习过程中为学生创造能亲临体验地进行研究学习的平台,问题的提出贯穿在课堂教学、实验教学、课后作业、综合性作业以及评价的整个教学过程中。我们自2004年开始就致力于打造C语言程序设计精品课程,所有的教学和改革都围绕该指导思想进行。2007年以C语言程序设计为主体的“程序设计与计算机语言”被评为省级精品课程,2010年由教材主编主持申报到了省级质量工程教改项目“Inquiry Learning体系在程序设计课程中的运用”研究。这一系列的改革和研究都是以学生为主体,以培养和提高学生的计算机素养为最终目的而制定的。在教学过程中我们经常与学生座谈和交流,了解学生的需求,完善我们的教学,使我们的教材和教学模式能与时俱进,保持很好的前瞻性和科学性。

(2) 内容组织创新性强

本教材用“提出问题—分析问题—给出相关知识—举一反三”的研究式学习方式来组织“C语言程序设计”这门课程,在注重语言知识培养的同时,更注重逻辑思维能力、程序设计能力及创新能力的培养。内容组织方式新颖,符合认识规律,富有启发性,便于学习,有利于激发学生学习兴趣及各种能力的培养。本教材每章都通过4个步骤来完成学习:

第1步,通过提出问题、分析问题来激发学生的兴趣,引起学生的思考。

第2步,通过问题的解决、相关知识点的跟进,使学生能逐步提升程序设计的能力,掌握C语言的知识,引导学生深入思考。

第3步,用一定数量的编程实例使学生深入理解和掌握所学知识,用具有趣味性的综合应用编程实例培养学生的逻辑思维能力和编程能力,挖掘学生的创新能力。

第4步,对每部分的知识进行小结,以便学生进一步巩固应掌握的知识。

每章后面都有“综合应用”部分,让学生对所学知识的具体运用有明确的认识,并能在此基础上进一步巩固和提升。

三、采取多样性方法,实施教学方法的改革

(1)任务驱动教学方法

大多数学生反映C语言概念众多,许多知识点抽象且难以理解,学生不能将理论和实际应用结合起米, 任务驱动教学法是一种建立在建构主义学习理论基础上的教学法,它将以往以传授知识为主的传统教学理念,转变为以解决问题、完成任务为主的多维巨动式的教学理念;将再现式教学转变为探究式学习,使学生处于积极的学习状态,每一位学生都能根据自己对当前问题的理解,运用共有的知识和自己特有的经验提出方案、解决问题。在c语言程宁没计课中.体现“任务驱动”就是让学生在一个个典型的程序“任务”驱动下,教师引导帮助学生完成一系列程序“任务”,把知识的学习和知识的应用有机地融合在一起,让学生达到融会贯通、一点带面的效果。例如,在讲授C语言循环语句的教学时,按任务驱动教学模式不是孤立地介绍格式、作用和使用方法,而是将这一知识点设计为“计算1+2+3+……+1 00=?”这一具体的任务。首先,教师通过提出“任务”让学生把握教学内容,同学们会想象怎么完成这个任务,头脑里对前而的所学内容进行回顾,但前面学过的知识没法完成这种任务。接下来教师再讲解如何使用循环语句等具体操作方法,这样教学,学生学得快、学得牢。通过实践发现“任务驱动”法有利于激发学生的学习兴趣,培养学生的分析问题、解决问题的能力,提高学生自主学习及与他人协作的能力,缩短了学习周期。

(2) 项目教学法

很多学生在学完C语言程序没汁课程后,其结果是听得懂、却编不出程序来。针对这一情况,我们在教学过程中采用项目教学法。项目教学法是通过实施一个完整的项目而进行的教学活动,其目的是在课堂教学中把理论与实践有机地结合起来,充分发掘学生的创造潜能,提高学生解决实际问题的综合能力。在课程初期.主要是进行单项的编程练习,重在掌握C语言的基本数据类型、语句与程序结构等。在进入函数、数组、指针、结构体和文件内容教学时,开始综合实训项日的编程设计,每一个实训项日都呵以用前一个实训项目为基础。通过一个项目的层层递进,引入课程内容,使得学生的学习循序渐进,螺旋式地上升,效果很好,开阔学生的思维,使得学生在课堂上真正地成为“主体”,教师则扮演“主导”角色。该教学方法使学生积极参与到教学过程中,变被动为主动,有效地调动了学生学习的积极性,深受学生好评。

(3)比较教学法

C语言中的概念比较复杂,规则繁多.而且内容前后联系紧密,教学过程中教师通过对比的方式对相关的概念或类似的程序代码进行比较,进而明确差异,然后进行归纳总结,方便学生理解,将会收到事半功倍的效果 例如,C语言中的指针是教学中的一个难点.这一部分涉及的概念较多,如指向变量的指针、指向数组的指针、指向字符串的指针、指向函数的指针等。这些概念很容易混淆,但是将这些概念对比起来讲解,学生就很容易理解了。这些概念的共性都是指针,那么它们不同的地方在哪呢?关键在于指针变量的指向不同,指针所指向变量的数据类型决定了指针变量的用法。通过这样的讲解,概念的定义就很容易理解,概念的用法也就可以统一了。再如,数据的排序问题有多种算法,典型的有冒泡排序、选择排序、插入排序等,求解方程的根的算法也有多种,有迭代法、牛顿迭代法、二分法和弦截法等。这些算法之间既有联系又有区别,讲清楚了算法的联系和区别,也就解决了整个问题。

(4)启发式教学法

启发式教学法就是通过教师的启发教学充分调动学生的积极性、主动性和创造性,引导学生主动学习。例如,在学习printf()和scanf()函数时,通过比较式启发方法讲解两函数的功能、格式、使用特性等方面的异同,通过比较使学生更好地把握两函数的特征。在学习选择排序算法时,使用模拟式启发方法,让l0个学生随机坐在相邻的l0个位子上,然后现场模拟排序过程;在学习数据交换算法时,使用比喻式和问题式启发方法,将两个变量比喻成两个瓶子,将里面存放的数据比喻成醋和酱油,然后提问:如果将两个瓶子中的醋和酱油交换一下,应如何操作。

(5)“鱼渔兼授式”教学方法。C语言只是一种表述工具,如果只有扎实的语法知识,没有程序设计思想,根本就不可能写出程序;而如果有程序设计思想,但语法知识不扎实,势必在程序的编写、运行过程中遇到一系列的问题,从而影响学生的学习热情。而“鱼渔兼授式”教学方法可以在基础语法知识和程序设计方法之问找到一个平衡点,使之相辅相成。例如,在讲解数据类型时着重讲解为什么数据要分不同的数据类型,需要从哪几个角度学习不同数据类型的特性;讲解具体算法时着重讲解遇到类似问题时应从哪些角度分析问题,用什么方法进行程序设计从而解决问题;在课前精心设计一些错误,尤其是逻辑错误,然后讲解遇到错误可以采用什么手段去剖析、定位错误。

四、建立立体化教学体系,实施教学手段的改革

我们从2006年就开始了立体化教学体系的建设,我们建立了精品课程网站,实现了“在线教育”,现在我们课程的课件、课堂教学录像、软件、二级等考及相关阅读等教学资源都放在了网络上,作业也通过网络来实现布置、提交和批阅。师生之间可以通过教学邮箱和课程论坛进行交流,任课教师可以自己定制调查问卷,随时了解学生的动态和需求,还可以随时进行在线测试,课程考试已经完全实现了网络无纸化模式。学生可根据自身的情况进行课后自主学习、自测学习、互相学习或下载资料、上交作业,有助于学生的个性化发展和创新能力的培养。设计出包含验证型、引导型、扩充型和设计型等多种类型的实验,在实践中充分体现学生的自主性,有目的、分层次地培养学生的实践能力,使学生学会从实验过程中获取知识,积累经验。通过综合设计,为学生自己构建、发展并完善自己的知识体系创造机会,使学生具备获取知识和应用知识的能力,激发学生的创新精神,培养学生的团队精神和协作能力,全面提高学生的实践能力。

教学实践证明:学生在课程网站上作业及报告的提交率达到98%以上,问卷调查的访问量达到了85%以上,优秀设计作业的访问率达到90%以上,其他资料的访问率也高于60%。由此可见,立体化教学体系很好的实现了不受时间、地点限制的开放式教学。

五、上机环节的改革与实践

上机环节是教学活动的重要环节,是对学生进行基本技能训练、增强学生实践能力的关键环节,是培养学生创新精神的重要手段。本科实践教学的目的是优化学生的素质结构、能力结构和知识结构,让其具备获取知识、应用知识的能力和创新能力。对于《程序设计与计算机语言》课程,以往的实践教学内容和题目以验证型和设计型为主。验证型的题目只要求学生按照书本上的指示,输入程序,填写结果即可,学生处于被动接受的地位,学生觉得无趣,毫无创意;设计型的题目对于非计算机专业学生来说,难度太大,学生无从下手。为了全面提高学生的实践能力和应用能力,使实践教学能满足不同层次学生自主学习的需求,我们制定并实施了以下改革措施:

(1)改革上机实践的教学模式:将以理论教学为主的教学模式改为由理论教学和实践教学相互联系、相互交叉、彼此渗透、有机结合、同步发展的教学模式,确立了实践教学在《程序设计基础》课程中的重要地位。

(2)设计多种类型的实验题目:针对学生存在基础不同、接受能力不同、个性有差异等问题,设计出包含验证型、引导型、扩充型和设计型共四种类型的实验,题目尽可能做到覆盖知识点,切合实际、生动有趣。通过完成不同类型的实验,有目的、分层次地培养学生的实践能力,使学生学会从实验过程中获取知识,积累经验。

(3)在实践中充分体现学生的自主性:实验课的实验任务由规定实验内容和自主实验内容两部分组成。学生在完成规定的实验任务后,可根据自己的兴趣和爱好,自主设计一些实验任务,在教师的指导和帮助下加以完成和实现。通过自主学习和自主设计,能有效地培养学生应用知识的能力和探索精神,极大地激发学生的学习主动性。

(4) 启发引导学生的创造性,培养学生的团队协作精神:本课程要求学生以小组(3~5人)为单位进行综合性程序设计,设计题目主要由学生自己按综合设计要求来确定,每个小组推选出一名小组长,负责协调程序的开发、与教师和组员的联系、提交总的设计报告和完整的源程序等工作。在综合设计过程中,学生处于主导地位,是核心。学习小组的组建,综合设计题目的选择或确定,各组员任务的分配与协调,任务完成后的总结与成绩的自评等,主要是按学生的意愿来进行。教师只负责宏观指导和一些条件支持。当学生的选题不符合要求或系统功能设计不合理时,教师会立即指出,并帮助他们修改和完善;当学生调不通程序或程序中有错误时,教师会向他们介绍调试方法和查错方法,教会他们调试程序。对学习好、能力强的优秀学生,教师会注重开扩他们的思路,启发他们的思维,引导他们去获取新知识、去探索新问题,激发他们的创新欲望,使他们能完成高水平的综合设计。通过综合设计,可充分体现以学生为中心的教学方法,为学生自己构建、发展并完善自己的知识体系创造机会,使学生具备获取知识和应用知识的能力,激发学生的创新精神,培养学生的团队精神和协作能力,全面提高学生的实践能力,从而有效地提高《程序设计与计算机语言》课程的教学质量。

六、考核评价体系的改革

我校C语言程序设计课程的成绩分为理论和实践两个分数,各2个学分,两项成绩都合格即可获得该课程的4个学分。其中:

理论课综合成绩(百分制)=平时(百分制)*(50%)+末考(百分制)*50%;

上机实践综合成绩(百分制)=平时(百分制)*(60%)+综合设计(百分制)*40%;

理论成绩由平时成绩和末考成绩组成。其中:平时成绩由上课考勤、作业提交、阶段性实验报告组成,占总成绩的50%;末考指的是期末闭卷无纸化考试,末考侧重于基础知识测试,考核学生对基本概念的掌握。题型包括:判断题、选择题、填空题和编程题,判断题题型重点考察学生对基本知识点的掌握程度,选择题和填空题重点考察学生对程序的阅读、理解和分析能力,编程题则重点考察学生编写程序的能力。

无纸化考试采用的是我们中心自己研发的考试系统,但该系统存在一点缺陷,就是编程题需要人工阅卷。因此,我们于2012年开设了一个试点班,本着提高学生编程能力的目的出发,从平时的教学和最后的考试都试用了哈工大研发的《C语言编程题自动评分系统》。该系统允许学生借助于 C编译系统调试程序,学生将自己编写并调试过的程序由客户端提交给服务器端后,服务器端立即根据学生程序的结构和语义进行评分,并将评分返回给客户端,使学生在提交程序之后立即看到自己的分数。

上机实践成绩则由平时成绩和综合设计成绩构成。其中:平时成绩由上机考勤、在线单元测试组成,占总成绩的60%;课程最后提交的综合设计则占到了40%。

该考核评价体系涉及到教学实施过程中的每一个环节,有利于对学生进行科学、客观的评价,从而避免了一张考卷定乾坤带来的弊病。

该体系在实施过程中显现出了其科学性,但是目前存在的问题就是教师的负担太重。一个学生一学期一般要提交12份报告,每位教师一般带两个班,每个班约88位同学,这样每位教师一个学期只报告一项就要批阅约2000份,工作量太大。现在正在努力寻求更加合理的解决方法。

七、结束语

教学实践证明,以上改革措施能够有效解决我校C语言程序设计教学过程中存在的问题。此教学模式下,教学内容符合学生专业特点,能够满足理工科专业学生对计算机技术的需求;教学方法行之有效,教学效果有明显提高;教学实践方法与措施切实可行,能够有效促进学生分析问题解决问题能力、实践能力及团队合作能力等能力的培养与提高。当然,该模式仍然存在一些不尽如人意的地方,这就需要我们坚持不懈,继续努力去改进和完善。

项目来源:云南省高校质量工程教改项目“Inquiry learning体系在程序设计中的运用”(云教高[2010]96号)。

[参考文献]

[1]王刚.CDIO工程教育模式的解读与思考[J].中国高教研究,2009(5).

[2]谢延红.C语言程序设计公共课教学模式改革与实践[J].计算机时代,2010(12).

[3]马新.《C语言程序设计》课程教学方法与手段的改革与实践[J].科技信息,2010(33).

[4]张丽萍,刘东升,王春晖.程序设计类课程考核评价方法的改革与实践[J].2010(2).

c语言程序设计实验报告篇6

关键词:PAR方法;PAR平台;形式化推导;算法

中图分类号:G623 文献标示码:A文章编号:1009-3044(2010)07-1641-04

The Applied of PAR Method in Mathematics Algorithm

YANG Chen

(School of Computer Information & Engineering, Jiangxi Nomal University, Nanchang 330022, China)

Abstract: Algorithm already into the high school textbook, the use of PAR as the primary platform in high school learning algorithm. Through the formal PAR derived polynomials and prime numbers to achieve the two classical mathematical problem, Show that the PAR has a good math and programming language transparency, to be brief algorithm is also easy to understand at the same time guarantee the correctness of algorithm, Theoretical analysis and experiments show that the learning algorithm PAR is an effective platform for Learning algorithm.

Key words: PAR approach; PAR platform; formal derivation; algorithm

20世纪数学发生了很大的变化就是数学与计算机科学的同步发展。计算机的飞速发展对数学的发展起了极大的推动作用,加强了数学与其他学科的联系,拓展了数学的应用范围。所有这一切,算法起了重要的作用。

1 PAR方法

PAR[1-5]方法是薛锦云教授提出了基本分划和递推(Partition-And-Recur)的算法程序设计方法。PAR方法是一种简单实用的支持算法程序开发全过程的形式化方法。PAR方法进行算法程序设计有两种方法:对于一个给定的算法程序设计问题,先用符号化的规范描述语言,写出这个问题的形式化规范,然后采用变换方法,将问题的形式规范变换成可执行的程序。另一种形式方法是对于给定算法程序设计问题,先写出该问题的形式化规范,然后使用形式化和非形式化相结合的方法,开发或证明算法程序正确。

PAR方法/PAR生成系统由自定义泛型算法程序设计语言Radl及相关规约转换规则库;泛型抽象程序设计语言Apla;系列Radl到Apla,Apla到Java、C++、C#、Delphi、等可执行语言程序自动生成系统组成。

Radl语言[6]是为实现算法程序形式化和半自动化开发而定义的一种基于递推关系的算法设计语言,它是PAR方法/PAR平台的重要组成部分,其主要功能是描述问题的规约、规约变换规则和算法,它使用统一格式(Qi : r(i) : f(i)) Q代表量词,i表示约束于量词Q的变量集合,简称为约束变量集,r(i)为一逻辑表达式,表示i的变化范围,f(i)为一个函数或表达式,其类型随着量词Q的不同而有所不同。Q可以是?坌(全称量词),?埚(存在量词),MIN(求最小值量词),MAX(求最大值量词),∑(求和量词),∏(求积量词)等,分别对应的 q 运算是 ∧,∨,min, max , + , ×,等1利用这些量词的性质可以进行规约变换,本文使用到的变换规则主要有:单点分裂(Qi:i=k:f(i)) = f(k),范围分裂(Qi:r(i):f(i)) = (Qi:r(i)∧b(i):f(i))q(Q i:r(i)∧b(i):f(i))。

Apla语言[7]是Radl算法到Apla程序生成系统的目标语言,又是Apla到VB、Delphi、Java, C++等可执行语言程序生成系统的源语言。下面举出两个数学例题分别采用PAR的两种开发算法的方法实现。

2 实例

2.1 求给定多项式的值

第一步:描述求解问题的形式规约:

前置断言:n≥0

后置断言:

第二步:构建递推序列寻找递推关系

{i量词范围分裂}

{i量词单点分裂}

{j范围分裂}

(j单点分裂和量词演算}

{函数一般分配律 }

{简单数学性质 }

{简单数学化简}

{根据f(n)的定义}

得到一个关系式f( j )=f( j-1 )x+α0,然后在求f( j-1 ),同理可得到f( j-1 )=f ( j-2 )x+a1依次对f(j-i)

第三步:构造循环不变式[8-9]

ρ=f(x)∧(0≤i≤n)

第四步:写出对应的Radl算法程序

APGOITHM:ploysum

{[n,i:integer;a,v,x:real]}

{Q∧R}

BEGIN: v:=a;i:=n-1;

TREMINATION:i=0

RECUR: v:=v*x+a;

END

第五步:将算法转换成对应的APLA程序

program ploysum;

var

n:integer;

i:integer;

a:real;

v:real;

x:real;

begin

writeln("输入多项式系数n,最高次系数a,和x的值");

read(n,a,x);

v:=a;i:=n-1;

do i≥0writeln("输入i次项及其系数ai");read(i,a);v:=v*x+a;i:=i-1;od;

end.

第六步:通过PAR平台装换成C++语言(略)

2.2 判断一个大于1的数是否是素数

第一步:构造问题的规约

|[ in n: interger; out prime:Boolean; aux k:interger ]|

规约:Q: n≥2 ∧ k=sqrt(n)+1

R: prime=(i: 2≤i

第二步:构造循环不变式

使用传统的循环不变式开发策略:用变量置换后置断言R中的常量,并给出变量的变化范围即可得到循环不变式。

I: prime=(i: 2≤i

第三步:写出对应的算法程序

参数说明:|[ in n: interger; out prime:Boolean; aux k:interger ]|

规约:Q: n≥2 ∧ k=sqrt(n)+1

R: prime=(i: 2≤i

循环不变式:I:prime=(i: 2≤i

界函数:T:k-j

算法:begin

j, prime := 2,true;

do j≠k∧prime=true if mod(n,j)=0 prime := falsefi

j :=j+1;

od

end;

第四步:算法程序的正确性证明

1)Q => wp(“j,prime := 2,true”, I)

n≥2 ∧ k=sqrt(n)+1 => (prime=(i: 2≤i

n≥2 ∧ k=sqrt(n)+1 => true

true

2)I∧c => wp(“if, j :=j+1, I)

prime=(i: 2≤i wp(“if”, prime=(i: 2≤i

prime=(i: 2≤i false=(i: 2≤i

(性质:A=>B=>C A∧B=>C)

ture=(i: 2≤i

ture=(i: 2≤i

true

3) I∧┒c => Q

prime=(i: 2≤i

?陴 prime=(i: 2≤i

(性质:A∧(B∨C) (A∧B)∨(A∧C))

prime=(i: 2≤i

true

4)I∧c => T>0

prime=(i: 2≤i0

true

5)I∧c => wp(“T0:=k-j; s”, k-j

true=(i: 2≤i

true

由1)2)3)4)5)的证明可知,原程序是完全正确的。

第五步:根据算法程序写出具体APLA程序

program sushu;

var j,k,n:integer;

prime:boolean;

begin

j,prime:=2,true;

writeln("求n的m次方的末p位数--请输入n:");

readln(n);

k:=sqrt(n)+1;

do (j≠k)∧(prime=true) if mod(n,j)=0prime:=false; fi ;

j:=j+1;

od;

if(prime=true)writeln("此数是素数");fi;

if(prime=false)writeln("此数不是素数");fi;

end.

3 结论

PAR方法蕴含了许多的数学思想,在Radl中给出的量词都是数学常用的一般量词,这对于一个数学工作者来说非常重要,即使他不懂程序设计语言也可以写出算法程序来。做到了将算法设计从程序设计中分离出来,可以使得程序员跳出程序设计语言的缚束将注意力集中在算法本身上来,有助于掌握和理解算法的本质。PAR方法又是一种形式化的算法开发方法,在PAR平台下写出的算法保证可以保证其正确性,PAR方法已经解决了大量的数值问题[10-12],PAR方法这些突出的优点一定会在我国新时代的高中数学教学中发挥其独特的作用。

参考文献:

[1] Xue Jinyun.A Unified Approach for Developing Efficient algorithmic programs[J].Journal of Computer Science and Technology,1997,12(4):314-329.

[2] Xue Jinyun.Formal Derivation of Graph Algorithmic Programs Using Partition-and-Recur[J].Journal of Computer Science and Technology,1997,13(6):553-561.

[3] Xue Jinyun.Developing the Generic Path Algorithmic Program and Its instantiations Using PAR Method[R].Proceedings of The Second Asian Workshop on Programming Languages, KAIST,Korea,2001.

[4] Xue Jinyun.PAR Method and its Supporting Platform[R].Proceedings of AWCVS'2006,Macao,OCT,2006:29-31.

[5] 薛锦云.算法程序形式化开发研究[J].云南大学学报,1997(19):283-288.

[6] 薛锦云.抽象程序设计语言Radl报告[R].江西师范大学省高性能计算技术重点实验室技术报告,2001.

[7] 薛锦云.抽象程序设计语言Apla报告[R].江西师范人学计算机软件研究所技术报告,2001.

[8] Xue Jinyun.Two new strategies for developing loop invariants and their applications[J].Journal of Computer Science and Technology,1993,8(2):147-154.

[9] Xue Jinyun.The Discussion of Loop Invariant and Developing Technology[C].Beijing:The Fourth Convention of Software Engineering,1991.

[10] 石海鹤,石海鹏,薛锦云.形式化开发若干组合数学问题的算法[J].江西师范大学学报,2006(5):424-427.

[11] 胡启敏,薛锦云.若干算法程序的形式化推导与生成技术研究[J].计算机研究与发展,2008(S1):148-153.

[12] 石海鹤,揭安全,薛锦云.0-1背包问题的一种新解法[J].计算机工程,2008(17):37-38.

c语言程序设计实验报告篇7

Abstract: Combined with C Language Program Design exquisite course construction project, according to the practicality characteristics of C language course, this paper puts forward a kind of autonomous learning teaching mode that we should stimulate the students' study interest and initiative, improve the students' ability of programming, problem-solving skills, so that the students can apply, and enhance programming ability.

关键词: C语言教学;精品课程;教学改革;上机实践

Key words: C language teaching;exquisite course;teaching reform;computer practice

中图分类号:G642 文献标识码:A 文章编号:1006-4311(2012)31-0272-02

0 引言

随着当前计算机应用越来越广泛,C语言程序设计这门课程已成为理工类学生的必修课程。而开设C语言课程的主要目的就是培养学生利用计算机解决实际问题的能力,因此该课程上机实践往往要占总学时的30%左右。上机实践不仅能帮助学生消化和巩固课堂所学知识,培养学生动手能力,更重要的是,如何运用课堂所学的知识解决实际问题必须靠上机操作才能实现,本文结合C语言程序设计精品课程的建设及实践环节的改革,提出了一些提高该课程教学质量的具体措施。

1 教学中存在的问题

目前,在独立院校C语言课程中学生、老师两个方面都存在着问题:

1.1 学生方面

1.1.1 上机实践前不充分做好准备 部分学生上机实践前根本不做准备,结果到了上机时不知该调试什么程序、如何去调试;有的学生则在教材上找一些例程原样输入进行练习,但既不知道该程序要实现什么功能,也不明白语句有什么含义。程序运行后一旦出错,对很简单的错误提示信息压根不去阅读,要么放弃,要么要求指导老师帮忙改错,缺乏独立解决问题的能力和精神。

1.1.2 没有自主学习的意识,一切以老师为中心 独立院校学生由于基础较差,学习主动性较差,普遍存在不习惯向老师提问,或者说不知道该问什么问题,课后也不去查阅相关书籍和资料,缺少刻苦钻研精神。在当今网络如此发达的开放式学习环境下,不懂得如何去自主学习。“授人以鱼不如授人以渔”,所以需要老师去引导、教育学生学会自主学习的方法,在大学四年中,学会学习的方法远比学会一些知识点更为重要。

1.1.3 缺少编程训练和积累 想掌握好C语言程序设计这门课程,除了在上机时对语法、知识点的练习外还必须要进行大量目的性明确的综合性编程训练。我们发现,在上机时,学生仅立足于理论知识的学习和巩固,却不能有意识的锻炼自己的编程能力、编程技能,从而导致实际编程水平无法提高,遇到了实际问题不知如何下手解决。

1.1.4 学习态度和目的不正确 我们经常在课下听到学生抱怨“我们又不是计算机专业,学这门课程有什么用啊?”这种错误的学习态度,直接导致了学生学习兴趣的缺乏,而传统的以知识点为中心的教学模式,使学生很难在本专业相关课程的学习和研究中用到自己的编程能力。由于学习目的的不明确,导致学生对本课程的学习不够重视,觉得学好了也没什么用,能混个考试及格就可以了。

1.2 教师方面

1.2.1 老师在授课时,一般会根据知识点去选取相关的例程进行讲解,而不去设计与实例相关的、真实的环境设计,导致实践内容与实际脱节。学生也就无法领会到编程的实际应用,难以激发出学生主动学习的兴趣。

1.2.2 在实践教材内容的设计上,基本都是以知识点为核心,围绕相应知识点选择实验案例,这就使得教材中缺少综合性实训内容。学生学完后,所有课后习题都会做,但就是不会设计应用型程序,实际应用能力并没有得到任何提高。

1.2.3 教学的重点为语法知识点,实验则限于DOS界面下的TC环境。对学生来说就会觉得程序设计很费脑力、枯燥,而且即使掌握了相应的语法知识点,碰到了实际程序案例后,也不知如何将这些知识点用于解决实际问题,感觉无法下手,因此产生畏难情绪、缺乏学习的动力与兴趣。

1.2.4 没有充分认识到不同专业间的差异,调动不起来学生的学习兴趣。对不同专业学生,授课的侧重点应该是不同的,但老师一般很难深入了解不同专业学生具体的需求,因此都是采用相同的教案和策略对学生进行授课,这样学生很难在本专业相关课程的学习和研究中用到自己的编程能力。导致学生对本课程的学习态度不够端正。

除了这两方面的问题外,C语言程序设计这门课程本身对学生的逻辑思维能力要求比较高,对学生的数学与英语知识也有一定的要求,这也增加了学生学习的难度,再加上大部分学生以前没有接触过程序设计方面的知识和内容,容易导致学生产生畏难放弃的想法,这就要求老师必须在初期的教学中采用更多有趣味性的内容,引发学生的学习兴趣,并且给予学生适当的鼓励,持之以恒才能有所收获。

2 教学环节改革的措施

为提高C语言课程教学的效率,提高学生编程水平和解决问题的能力,结合我院C语言精品课程建设项目,我们积极的改进管理机制、编写针对性更强的实践教材、更新教学方法,引导学生学习的兴趣、建设了C语言精品课程网站、采用了更合理的考试与评价机制,促进了学生学习的主观能动性,收到了良好的教学效果。

2.1 加强管理和监督,将学生上机前、中、后的表现计入评价体系 我们将C语言的上机内容在C语言精品课程网站上,让学生随时可以查阅每次上机前需要准备好调试的程序。除了每次上机必须要完成的程序外,还有很多可以选做的程序,供不同水平的学生进行选择。

上机前老师要严格检查学生准备的情况,作为平时成绩考核的重要一项内容,使学生从心理上重视上机准备的环节。在上机过程中,要让学生自己对程序进行编译、调试,引导学生在出现疑难问题时利用单步执行、变量跟踪、设置断点等多种调试手段对程序进行查错,完成上机实验后,学生必须写出详细的实验报告,主要包括题目、算法、源代码、输入内容、输出结果,调试过程等。这些报告和程序则作为学生平时成绩的重要参考依据。

2.2 引导学生将编程技术为本专业应用进行服务,提高学习积极性 C语言在理工类的很多专业中都有着广泛的应用,学生在毕业设计中也要结合自己的专业利用编程解决实际问题。在教学过程中要注重培养学生把编程技术与专业应用相结合的能力。在教学中,应该直接使用专业的开发程序,例如VC++6.0。当然这样的开发程序,比起简单的教学试验程序来说更加的复杂,学生掌握的难度更高一些,但是,它和实际的案例开发结合的更加紧密,对于学生来说,学完就可以致用,会增加学生学习的积极性与信心。例如数学专业的学生可以与matlab编程相结合、电子专业学生可以与C51结合应用到嵌入式软件编程中,这些方式大大提高了学生的学习动力与编程热情。

2.3 利用好精品课程网站资源 为鼓励学生自学,充分利用网络优势,我们开发了C语言精品课程网站。该网站主要包括了C语言课程的教学大纲、教学教案、电子课件、习题库、在线练习、上机指导、实践项目以及一个网络互动平台。引导和培养学生课下主动学习,勤于练习,提高自身的实际应用能力。尤其是网络互动平台的建立,要求所有C语言教师轮流上线值班,在线解答学生的问题,这个平台的建立,解决了很多学生不愿面对老师进行提问的习惯,并且学生可以随时查阅以往其他同学的提问以及老师的解答,起到了非常好的效果。

2.4 采用形式多样的教学组织方式和实践教学方法 将实践教学与理论教学结合起来。实践教学的形式包括:实践教学、课程设计、项目开发、竞赛活动等。实践教学中以培养学生独立思考与动手能力为原则,由学生独立上机调试程序,经过必要的老师指导来解决实际问题。课程设计根据指导教师提出的问题,进行任务分析、任务分解,代码编写、开发文档撰写。项目开发则鼓励学生参与软件开发兴趣小组的活动,结合软件工程等相关课程的实践环节,根据学校的实际需要,申请一些有实际意义的小型软件项目,既可提高学校办公自动化的程度,又能让学生得到实际的锻炼。例如教师管理系统、自动排课系统、教材管理系统等,深入开展调研。组织研发小组进行以工程化为原则进行软件开发,在工作中不断学习和完善。或者在老师的各级科研项目中有需要使用C语言的,可以选取部分优秀学生一起参与到项目中的实践形式,通过对实际问题的分析和解决提高学生的实际开发能力。竞赛活动指每年鼓励和组织学生参加各种全国性的编程大赛、数学建模大赛、计算机应用水平大赛、计算机等级考试与程序员考试等。

2.5 调整考核方式 目前评价教学水平与衡量学生掌握知识水平能力的一个重要方式就是期末考试,这种传统的考核方式仅能考察学生的理论基础知识水平,卷面得分的高低,并不能真正反映出学生实际的编程能力,而平时对学生上机的考核则能判断出学生的综合编程能力,因此,我们调整了传统的以期末考试为主的考核方式,将平时成绩加入到考核体系中,且所占比例与期末考试相当,这样就促使学生更加注重平时的上机实践,在每完成一份实验报告后,老师要在习题课中抽查部分学生,要求当堂给全班同学讲解自己的编程的算法、思路,语法的选择理由等,这样就可以抑制部分学生抄袭的行为,学生也能通过这样的方式,加深对程序的理解,提高自己的表达能力,增强学习的兴趣与主动性。这种考核方式经过我们一学年的试行后,学生的学习效果明显提高,成绩分布也更加的合理。更能够全面的评估学生的实习水平。

3 结束语

本文结合我院“C语言程序设计”精品课程建设项目,根据本课程实践性比较强的特点,提出了要激发学生学习的兴趣与主动性,提高学生动手编程、实际解决问题的能力为主要目标的一种自主学习的教学模式,使学生能够学以致用,学生良好的反映也达到了我们预期的效果。这种自主学习的教学模式在我们今后的教学活动中,还会继续进行补充和完善,争取更好的提高学生的动手能力、解决实际问题的能力,培养出对社会有用的应用型人才。

参考文献:

[1]李富平.非计算机专业高级语言实践环节教学模式探讨[J].计算机教育,2009.

[2]蔡晓丽.计算机语言类课程实践环节教学改革探讨[J].常州工学院学报,2010.

[3]郭有强.“C语言程序设计”课程建设探索与实践[J].计算机教育,2009.

[4]郝笑弘.提高计算机语言课上机实践教学的改革[J].陕西教育,2008.

[5]樊传高.关于精品课程建设的几点思考[J].合肥工业大学学报(社科版),2006.

[6]边小勇,盛玉霞.计算机语言类课程教学法研究与实践[J].计算机教育,2007.

c语言程序设计实验报告篇8

1.1与技术发展不相适应计算机技术已经从一个高端的技术行业演变成一个工具,云计算、物联网等新技术层出不穷,多数实际应用是利用第三方平台进行二次开发,只需调用相关的软件构件,通过图形化的界面配置几个参数就能实现简单的应用。企业更关注人才解决实际应用问题的技术能力。单纯的语句、语法教学模式已经不能满足技术发展需求。

1.2与职业技术能力不匹配对语法、命令掌握的技术壁垒很低,但是数据建模、抽象问题的解决能力需要系统的学习。学生通过程序设计课程学习,应该能够真正理解掌握计算机软件的内在运行逻辑机理,而不是了解简单的语言规范。现有授课模式下,学生只是被动的接受语法和语句,而不能真正掌握软件的运行机理,也就无法转化成自身的职业技术能力。

2面向职业技能的教学改革方案

职业技能体现的是第一任职技术能力。要适应市场人才需求,转变以传授知识为主的理论教学为提升学生技术能力的应用教学。教学内容要围绕应用技能需求设计,提炼出共性的知识和应用范畴,提高学生对程序设计背后运行机理的掌握,培养学生提出问题、分析问题、解决问题的综合能力。其教学强调在应用情景的驱动下,最大限度地调动学生的主观能动性,探究完成任务或解决问题,增强创新实践能力。

2.1C语言应用现状深度分析根据来自CodeEval的编程语言统计数据分析,2013年开发者使用Object-C飙升了300%,C#增长了100%,JavaScript增长了33%,Java虽然降低了14%,仍保持在领先地位。国内一些教育网站,则大量推崇Java编程、C#和Android应用开发。虽然已经很少将标准C作为开发工具,但上述这些编程语言的基础知识都在C语言程序设计教学中有体现。

2.2教学改革思路以就业第一任职技术能力为导向,突出程序运行机理分析和解决实际问题方法等应用内容,提高施教的针对性。在教学计划上,要依托学生在计算机组成和操作系统等相关课程上学到的知识,把软件系统运行机理融入到程序设计,增强C语言程序设计授课的有效性。在教学目标上,在掌握C语言编程基本规则的基础上,适当增加软件系统管理、配置和优化。在教学重点上,围绕编写、调试和配置一个实用、规范、可读性的程序,灵活运用任务驱动和项目教学法,由简单到复杂,逐步涵盖C语言的基本语法、编程知识点,涵盖实际运行维护各项流程,设计并实施一系列完整的项目,充分发掘学生的创造潜能,提高学生解决实际问题的综合能力。

2.3课程教学方案设计改革后的C语言程序设计课程,以学习项目为知识载体,以项目导向活动作为课堂教学的主要形式,突出项目开发过程中的管理、运行、维护等能力培养。教师要充分利用自身的知识能力优势,分析就业市场需求,定位课程岗位能力培养目标,在教学设计时突出对学生的专业技能、项目经验、职业素质等方面的训练。课程设计通常包括:设计项目、分解任务、协作开发、应用评价、迭代升级五个环节。首先,要对项目开发的相关技术进行概况式介绍,包括开发环境搭建、项目背景、任务要求。设计项目要由简到繁,前后关联,递进完善,将C语言程序设计的知识点融入到一系列项目中;分解任务,要成立项目小组,对应项目开发中的项目管理、系统分析员、程序员、测试员和运行维护人员等角色,轮流完成指定任务;协作开发就是创建仿真工作任务,采用任务驱动调动学生的积极主动性,由项目小组独立完成任务;应用评价要组织对一次任务完成情况进行研讨,分析下一次项目迭代升级方案,继而开展项目的迭代升级。

3课程教学设计方法案例

精心设计课堂实例是教学内容的关键。仿真项目的安排,应该遵循课程内容之间的内在逻辑关系,充分包含课程知识点,完成相关应用知识和技能的掌握。

3.1项目设计让学生充分了解当前常用的C语言开发平台,在此基础上搭建TC2.0开发环境,研讨应用软件的安装配置基本要求,培养学生的项目建设能力,将其作为学生从事信息技术应用的基本技能。例如每五人分为一个仿真任务工作组,完成一个“找出最大数”的应用程序编写。其中每个人轮流担任项目管理,负责沟通协调项目开发中出现的问题,汇总系统分析员、程序员、测试员和运行维护人员文档,撰写项目报告。要求学生在程序设计过程中,不只是完成某一功能,还要分析每一行语句的应用场景,通过查找资料,转化为应用技能。下面例子中,重点是注释中的应用说明,拓展学生的知识点。根据这一示例,学生分别完成程序设计、文档编写,并通过查阅相关资料,开展应用拓展分析。通过这个简单的项目设计,能让学生在学习C语言编程基本规则的基础上,创建仿真工作任务,让学生带着任务学习,拥有学习的主动权,带动起学生的学习兴趣。这个过程可以有效地拓展学生的应用技能。

3.2项目评估组织小组讨论,引导学生分析项目存在的应用问题。该程序存在的主要问题,一是只能处理3个数;二是程序不能重用;三是程序结果无法存储。一个完整的用户报告应包括提交问题报告和新的需求报告。通过学生的研讨和书面报告,对学生的综合素质进行评价,并给出问题处理方法建议。

3.3项目迭代在项目评估问题的基础上,提出项目迭代任务,一是进行输入保护,采用循环的方式实现随机个数数据输入和比较,掌握循环结构知识点;二是利用函数实现程序代码级的重用,掌握函数知识点;三是实现数据文件写入,掌握文件操作方法。教师讲解示例,完成相关应用分析后,交予仿真任务工作组进行实践开发。这样就将枯燥的语法融入到了一个不断完善的项目应用过程中,培养学生思考问题、解决问题的职业能力。

4结束语

本文提出的C语言程序设计课程改革方案,以一个完整项目的迭代升级贯穿教学过程的始终,将编程知识点融入每次任务设计中,在任务驱动下提高学生学习的积极性和主动性,以仿真任务工作组提高学生沟通交流和实际工作能力,以应用拓展分析带动职业技能提升。该方法通过近年来的课堂教学实践,取得了较好的效果,学生在毕业实习阶段就明显得到了企业用人单位的认可,是一种适合于程序设计课程的教学方法。

上一篇:网站建设策划方案范文 下一篇:晚会策划方案范文