首页 > 文章中心 > 二级c语言程序设计

二级c语言程序设计

二级c语言程序设计

二级c语言程序设计范文第1篇

关键词:C、C#、Java;面向对象程序设计;NET环境

Abstract: C-sharp is one kind of high-level programming language which Microsoft Corporation issued, is Microsoft Corporation's newest achievement. From the time sequence, Appears what most early is C, then is C++, finally is C-sharp. C is completely the procedure-oriented the programming language, C-sharp is the JAVA super version, C-sharp is completely object-oriented. This paper has made the simple elaboration to between C and the C-sharp relation and the difference.

Key words: C; C-sharp; JAVA; object-oriented programming; .NET environmen

C#(读作“C-sharp”)是微软公司的一种面向对象的、运行于.NET Framework环境之上的高级程序设计语言。其在PDC上登台亮相,是微软公司研究员Anders Hejlsberg的最新成果。很多人会提出这样的一个问题,那就是C与C#有无区别呢?答案是肯定的,那二者的区别又在哪里呢,说到二者的区别,就必须先谈谈二者之间的联系。

1 C与C#的联系

有一种有趣的说法“C添两个+号,就是C++再添加两个+号,就成了c#了(四个+就成了#)”,还有一种说法“C是爷爷,C++是爸爸,C#是孙子”,从这些形象的比喻中,我们应该能体会到从C到C#的变化过程。

从时间顺序上说,最早出现的是C,然后是C++,最后是C#。C++是为了解决软件危机而引入面向对象的概念,C#是为了实现平台统一和JAVA争夺市场下的产物。从性能上说,C的效率最高,C++次之,C#最低。C是完全面向过程的结构化编程语言,它的特点是语言体积小、效率高、语言灵活,给程序的限制小,而且可以方便地对低层进行操作,所以它非常适合于开发操作系统、驱动程序,嵌入式等对速度要求较高的程序。C++是向下完全兼容C的,C++与C相比最显著的变化就是增加了面向对象的成分,也就是增加了类的概念,因为它的增加使软件开发可以比较容易地描述人类的思维,使得软件的开发和维护变得相对简单,直接降低了软件的成本,但因为C++是面向对象的语言,这本身就制约它的速度,所以C++适合开发那些大型项目,现代的大部分语言都或多或少的借鉴了C++和C的某些特性。C#被包括在.NET平台下,是一个面向对象、面向网络、面向组件的语言, 有很多地方与JAVA非常相似,擅长于开发网络方面的程序。因此,更确切地说,C#是一个需.NET平台支持的开发语言,单纯看C#没有意义,需要了解.NET平台的开发知识。

从编译角度看,C/C++编译生成目标文件都是可被CPU直接理解的机器码,而C#编译后生成的是MSIL(Microsoft Intermediate Language),这种语言不能直接被CPU执行,而是依靠.NET framework翻译(Just-in-time Compiling)成opcode后再送到CPU执行的。因此,这也是上面为什么说C#运行效率最低的缘故。(平均意义上的效率低,不是绝对的)。

C#可认为是C的升级加强版。C是一种优良的面向过程的程序设计语言,而且得到了普遍的推广。但是随着面向对象编程思想的兴起,C已经不能满足要求,因此继而出现了C++、Java、C#等。C#是Microsoft公司设计的一种编程语言。C#和Java都是在语法上借用了C的一些形式而已。跟C/C++没有多少联系了。C#松散地基于C/C++,并且有很多方面和Java类似。Microsoft是这样描述C#的:“C#是从C和C++派生来的一种简单、现代、面向对象和类型安全的编程语言。C#主要是从C/C++编程语言家族移植过来的,因此,C和C++的程序员会马上熟悉它。C#试图结合Visual Basic的快速开发能力和C++的强大灵活的能力。”

2 C与C#的区别

了解了C与C#之间的联系,我们就可以讨论一下二者的区别了。C是一种面向过程的程序设计语言,而C#是一种面向对象的程序设计语言。二者的区别体现在很多方面,接下来就分别对它们各自的特点做个描述,从中大家可体会它们之间的不同之处。

2.1 关于C

C是面向过程编程的语言,主要用来编写操作系统、单片机程序、底层操作软件(与硬件关系较大的),它适合作为系统描述语言,即可用来编写系统软件,也可用来编写应用软件。虽然语法相对繁琐,但对硬件的底层编程和对内存的管理的灵活性方面C是其他高级语言所不可及的。

C是结构化编程的典型代表,其用作程序开发时主要是结构化模块,函数的应用和编程。在其原来结构化开发的基础上增加类,就变成了C++,所以可以说C++是带类的C语言。C语言的应用非常广泛,UINX系统中90%的代码是用C语言开发的,其余是汇编等。无论是windows还是Linux及Uinx以及MAC等操作系统,都可用C来开发程序。

C的不足之处就是:C非常的灵活,高级的不易掌握,据说微软培养一名C程序员需要2年的时间。另外,如果单用C语言开发视窗系统,不用C++是很困难的。

2.2 关于C#

C#是从C/C++演化而来的类JAVA的语言,完全面向对象(大家常说的VB、Delphi只是基于对象)。C#是专门针对在.NET Framework上开发应用程序所设计的新程序语言,C#有点类似C++,或者说更像JAVA,因此它有着易用、弹性大的特点,不但提供完整的面向对象支持,在程序语法的执行效率上也比Visual Basic快,所以说C#是为.NET平台量身定做也不为过。

C#程序设计语言学习容易,内部封装了巨量的类库,用户可以直接拿来使用,无论用它开发win程序还是web程序,都十分方便,里有强大的IDE环境vs.net,这是比JAVA好的特点之一。C#代表了编程语言的发展方向,有资料称微软技术专家认定下一代操作系统的80%代码都是用C#来写。

在C#里面基本上放弃了C的指针。语法基本没有区别,个人感觉首先C#不必对指针进行太多的研究,然后是可移植性等,其他的区别相当大,可以说不是一个方向的。

C#与C的语法基本没有区别,但稍有不同,下面就举个例子说明一下——分别在C和C#中声明数组:

int array1[5]; //在C中声明一维数组

int[ ]array1=new int[5]; //在C#中声明一维数组

int array2[3][4]; //在C中声明二维数组

int[,] array2=new int[3,4]; //在C#中声明二维数组

int[ ][ ] array3=new int[3][]; //在C#中声明不规则数组

可见,在C#中声明数组的方式和C中的声明方式是不一样的,在C#中声明数组时,方括号[ ]必须跟在类型后面,而不是标识符后面,若将[ ]放在标识符后是不合法的语法,另一细节是,C#中数组的大小不是其类型的一部分,而在C语言中它却是数组类型的一部分,C#还允许建立不规则数组。

二级c语言程序设计范文第2篇

关键词:C语言 高职 教学方法 编程风格

一、引言

C语言是一门结构化的编程语言,采用“自顶向下,逐层细化”的设计模式,层次清晰,易于调试和维护。C语言不但具有高级语言的特点:丰富的运算符和数据类型,便于实现各类复杂的数据结构,容易移植;而且C语言具有低级语言的特点:可以进行位操作,直接对内存物理地址中的数据进行操作。因此,C语言是目前软件开发的最常用软件之一。由于C语言本身的灵活性,教师本身缺乏编程经验和高职学生基础差,导致学生学完C语言后,能看懂现成程序已经很不错了,更谈不上编程水平的提高。

二、教学误区

1.教学目标不明确。实际教学中,教师认为C语言是后续课程的基础,如:数据结构、操作系统等,从而过多强调如何为后续课程服务,把主要精力放在语法结构的学习上,更有甚者把C语言二级考试作为目标,同学们通过了C语言二级考试,难道编程水平就提高了?

2.教学过程中舍本逐末。

例如:C语言试卷中有如下题型:

int I=1,J=1,K=(I++) + (++J);

求k的值是多少?

学生很难理解,在实际应用中又很少涉及,白白增加学生的学习难度。

3.实践目标不明确。很多同学认为C语言上机就是将书上的程序输入到计算机中,然后调试程序,调试出结果就认为完成任务,在这样的实践过程中并没有真正起到培养学生的编程能力和程序调试能力的作用。

三、解决办法

针对以上误区,在实际的教学中,提出以下几点建议:

1.一定要有正确的教学目标。从小学到高中毕业,一直都是应试教育。在大学,我们绝不能继续走应试教育的路子,否则,我们毕业生除去会考试拿高分之外,在工作中什么也不会,这也是我们应届毕业生找工作难的一个重要原因。C语言教学的目标应该是提高学生的实际动手编程能力,而不是以通过国家二级C语言考试为目标,这种考试,早就应该废止。

2.抓住重点,忽略细枝末节。C语言本身非常灵活,知识点多,如果我们面面俱到,结果适得其反。我们应把重点放在程序的三种结构,函数,数组,指针,结构体,枚举类型,文件等部分,讲授实际编程中最常用的。编程中用的少的,可以一笔带过,如:位操作,goto语句,指针与函数,联合体等。在实际编程中,程序的清晰度是第一位的,自己编的程序能让其他人很容易看明白,这才是成功的程序。例1的程序,完全可以写成:

J++; k=I+J;I++;

这样简单明了,让别人一看就明白。

3.合理安排实验内容。C语言本身是一门实践性很强的课程,学生只有自己动手、动脑,才能真正掌握并运用所学知识。同学们经过初次上机熟悉C语言的编程环境后,不能满足于将书上的程序调试出来,而应自己动手去设计程序。因此,教师要合理安排每次实验的内容,要求同学们在课下设计好上机的程序,不编写程序,不允许上机。通过严格要求,同学们学完C语言后,不再是糊里糊涂,而是感觉收获很大。

4.程序调试。教授C语言课程的教师都会有这样的体会:虽然在课堂上把重点内容、易犯错误的知识点讲解得很透彻,但学生实际操作时,同样的错误还是照犯不误,再加上英语水平差,也不知如何解决。教师上课时,可以有意设计一些错误的小程序,并放在turbo c环境下运行,让学生思考问题出在什么地方,这样得到的知识和感受远比老师在课堂上通过教材而传授的知识和感受来得直观和深刻得多。

要求学生将每次上机遇到的问题在调试本上记录下来,下次遇到同类问题可以迎刃而解。

5.良好的编程风格。C语言是第一门编程课程,对培养学生养成良好的编程风格和习惯具有非常大的作用。如标识符的命名,一定要有意义;程序中,一条语句占一行,该缩进的缩进等。

四、结束语

C语言教学看似简单,要想教好其实并不容易。我们要以提高学生实际编程能力为目标,抓住重点,突出实践,多学多练,这样才可以圆满完成C语言的教学任务。

参考文献:

[1]谭浩强:《C语言程序设计》(第三版),清华大学出版社,2006。

二级c语言程序设计范文第3篇

关键词:C语言;教学过程;等级考试;上机实践

中图分类号:G642 文献标识码:A 文章编号:1002-7661(2012)22-019-03

引言

C语言作为当今最为流行的程序设计语言之一,不但已经成为计算机专业的必修课程, 而且也越来越多地成为非计算机专业的学习课程。它对学生学习软件设计的其他课程以及提高解决实际问题的能力起着重要的作用。C语言是一门实践性很强的程序设计语言,同时也是一门较难灵活掌握的程序设计语言。对于任课老师而言,要想帮助学生在有限的教学时间内,扎实地掌握C 语言的基础知识,从而具备一定的阅读程序、设计程序的能力,分析问题、解决问题的能力以及逻辑思维的能力并能在实践中加以灵活运用,以适应软件行业的发展对人才的培养要求, 并非是一件简单容易的事情。

通过多年的教学,发现大多数老师通常是先给出一般的语法格式, 然后逐步讲解语法要点,然后再举例说明。很多教师往往举一反三地对使用语法、语句进行深入的教学。而对算法教学却偏少、不重视。这导致学生在学习上也有了误区,有好些同学花大量精力做诸如等级考试的选择题、填空题。带给学生们更多的是关于语言语法的熟悉和了解,但对真正的目的——编程却没有什么帮助。这种方法实在不可取,教学生语法的最终目的是他们自己会用来编程,不是为了记住而记住,否则会使学生跌入枯燥无味的深渊,逐渐对该课程失去兴趣。应提供给学生大量练习的机会,多做编程题,而事实上专门针对编程题的书却很少, 这也导致了学生上机写程序时无从下手,或者一下手就漏洞百出,编出来的程序惨不忍睹。

归结起来,目前C语言教学中主要存在以下几个方面的问题:(1)教学模式单一,教学方式死板,教师对C语言的理论教学仍采用传统的教学模式,过于注重语句、语法等细节的教学,没有把程序设计思想放在首位;(2)实践内容薄弱,基本上都是立足于C语言本身的一些语法规则,没有把编程思想和程序测试放在首位,无法达到培养学生程序设计和调试能力的目的。(3)三本院校的学生基础普遍较差,数学与英语基础更是如此,在碰到程序逻辑思维分析、程序代码编写及调试的过程中,往往会感到困难,这些问题是三本院校C语言教学中的共性问题。针对这些问题。要根据学生的实际情况,开展教学改革,细化教学中的步骤。论文针对教学过程、教学方法、实践环节等方面的改革进行探讨,以提高C语言课程教学质量,培养和提高学生分析问题、解决问题的能力。结合多年的教学实践以及软件设计行业的现状,以下几点对提高C语言课程的教学效果有很大的益处。

一、以简单形象的内容作为课程的引入,上好第一堂课

俗话说,良好的开头是成功的一半,在教育教学过程中也一样[1]。然而,许多教师照本宣科,根据教材的编写顺序,开篇大量讲授的是C语言的历史、特点以及初学者难以理解的编程算法等内容。可是这样的讲授顺序,已经抹杀了大多数学生对C语言的学习兴趣和热情,无形中增加了C语言教学的难度。建议在上第一堂课的时候就要将学生注意力提上来,因为大多数的高等院校都是大一就开设C语言,他们会用电脑,会打游戏,但编程对他们来说虚幻莫测,所以老师首先就应该消除他们的恐惧心理,建议老师用浅显的语句来介绍C语言,你可以打比方:“C语言它是一种语言,跟我们的英语一样,我们经常用英语写作文,记述一件事情,C语言也一样,它记述的也是过程,只不过它记述的计算过程。”C语言总共只有32个关键字,但功能强大,经久不衰,历经数十年仍是主流高级开发语言,学习了C语言等于就为学生开启了程序语言的大门,这时候学生感觉豁然开朗。其次,老师可以举一两个例子,通过多媒体演示出来,这样学生不会再觉得C语言虚无缥缈,有了这些铺垫,后续的语法、程序讲解要容易得多。

二、根据学生的学习情况,由浅入深安排教学过程

在C语言教与学过程中,应以学生作为主体,深入了解学生的学习心理,及其对新知识新内容接受的过程。由浅入深循序渐进的安排课程、展开教学。在C语言课程中数据结构、运算符及表达式的相关内容最为基础,也是非常重要,这部分内容掌握不好后续就很难进行。大多数老师在这部分的教学中,总是先行讲授符合由浅入深的教学要求[2]。但是,没有任何编程基础,又不做任何简单程序铺垫的情况下,单纯的讲授数据类型、运算符及表达式等内容,很容易让学生觉得知识性太强,内容太多太杂,枯燥无味,不好记忆,难以应用,加上这部分内容一般都安排靠前,弄不好很容易让学生丧失兴趣,兴趣没有了,后续的教学很难进行下去。

通过笔者多年的教学研究发现,该部分内容作为辅助教学的内容出现更为合适。在授课过程中,这部分内容先不作为主体内容进行讲授,而是通过举例程序当中所出现的数据类型、运算符及表达式等相关内容进行详细的说明,并在阅读程序时,引导学生自行查阅教材的相关内容,最后课程结束前进行详细的对比总结。这样,不仅能够加强记忆,而且还培养了学生自我学习、解决问题的能力。

三、循序渐进以等级考试为中心开展教学

对于非计算机专业的学生来讲,计算机等级既是要求,又可以用来衡量个人计算机的学习程度,在绝大多数高等院校更是授予学生学士学位的基本条件,可以想见,C语言的学习跟学生是息息相关的,由此也带给了学生在学习C语言的过程中非常现实的出发点——通过计算机二级,了解了学生的期望之后,对于任课教师,在教学当中就应该以此作为根本目的,在讲授了基础知识之后,不妨多举一些等级考试的原题作为例题来讲解。

众所周知,在C语言当中for循环语句功能非常强大,for语句除了能取代while语句跟 do…while语句之外,在循环嵌套当中for语句有它的独到之处,例如试打印输出以下图形(2012年6月计算机等级考试试题):

1 2 3 4 5 4 3 2 1

1 2 3 4 3 2 1

1 2 3 2 1

1 2 1

1

刚开始三种循环语句学完的时候,学生根本不知道如何下手,但是将等级考试原题对学生诱惑巨大,建议老师采用循序渐进的方法来讲,至少安排3个以上类似例题由浅及深来完成。

例1用for循环输出1、2、……10

#include

void main()

{ int i;

for(i=1;i

printf("%2d",i);}

这里可以使用for语句的基本应用,输出10个数,我们可以采用for语句来实现,更大再大也同样for语句可以做到。在这里引导学生运用for语句可是实现一些有规律的数字的输出。接下来再举一例。

例2 打印输出以下图形:

1

1 2

1 2 3

1 2 3 4

1 2 3 4 5

在例1之后给出例2,在这里老师提出问题:“例2跟前面例题有什么相同以及不同?”,将学生的学习兴趣提起来,接着提问“如何来解决?”,在例2中要打印这个三角形由数字组成,每行的数字又是一个递增的数列,这跟例1是一样的,应该也可以用for语句来解决,那么怎样让这样的数列生成5行呢?由此顺理成章的提出for语句的嵌套使用。用一个for语句控制输出的行,行号从1到5,而每一行的数字就是从1到行号,到此给出程序:

#include

void main()

{ int i, j;

for(i=1;i

{ for(j=1;j

printf("%3d",j);

printf("\n"); }

在学生有了for语句嵌套运用的了解之后,老师再结合等级考试原题来加深,这是至关重要的一个环节,更能激起学生的学生兴趣,

例3:试打印输出以下图形:(2012年6月计算机等级考试试题)

1 2 3 4 5 4 3 2 1

1 2 3 4 3 2 1

1 2 3 2 1

1 2 1

1

那么例3又跟例2有什么不同以及相同呢?我们可以看到整体同样也是5行,但是每一行不单是递增或者递减,而是先递增后递减,其次每行的输出跟例2是倒过来的,中间的数字是从5到1,分析以上这些之后,老师提出同样采用for语句的嵌套来实现,定义个外层的for语句来控制行的输出,只不过在这里行号要从5到1,内层for语句以行号为坐标,对于每一行的输出,其实我们可以分解为3个部分,如果我们要得到这样一个形状,内层的第一个for语句输出空格,第二个for语句输出递增数列,第三个for语句输出递减数列,最后换行。程序如下:

#include

void main()

{ int i,j,k,m;

for(i=5;i>=1;i--)

{ for(j=1;j

for(k=1;k

printf("%2d",k);

for(m=i-1;m>=1;m--)

printf("%2d",m);

printf("\n");}

以等级考试为导向,采用这种循序渐进的方法,学生容易接受,而且能最大程度的激发学生学习兴趣。这主要是针对等级考试的编程部分,在其他语法讲解的过程,同样也可以穿插等级考试的考题,处处给学生以启发。

四、多阶段逐渐强化上机实践

要学好c程序设计不仅要掌握好理论知识,实验教学更不容忽视[3]。通过上机实验,不仅可帮助学生消化和巩固课堂所学知识,也可帮助学生验证学习中疑难问题,更重要的是可激发和提高学生学习c程序设计的兴趣。为了提高上机的质量,必须克服上机的盲目性,提高教学效果,充分发挥学生学习的主观能动性。

要做好实践这一环节,首先就必须让学生有足够多的上机时间,其次讲求由浅入深,逐步引导学生自主编程,由此建议将学生上机划分为3个阶段:1)环境熟悉期。主要是让学生熟练掌握C语言的编译和运行环境,现在实验室主流的是Microsoft Visual C++ 6.0平台跟Turbo C&C++ 3.0平台,让学生熟悉这两个平台,并初步具备基本的程序调试能力,这一时期可以安排一到两次课;2)语法训练期。主要是通过简单程序的调试运行,从程序的结果中掌握语法的使用,这期建议安排3次课左右;3)提高期。主要锻炼自主解决问题的方法和过程,能进行初步的算法设计和实现。这是见成效的阶段,检验学生C语言能力是否逐步在提高。为了以上三个环节能顺利进行。教改中可采取的主要措施有:1)纪律严明。严格考勤,建立人与机器的固定对应的关系,随时随机查看学生编程的情况,每次上机进行登记,并作为实验最终成绩的参考;2)上机指导。在学生上机期间,如果有问题老师要及时给学生以指导,故要求老师跟学生紧密联系,为学生服好务;3)考核环节。每次上机前都详细规定了详细的实践任务和检查内容,为了防治学生之间互相拷贝,检查时不仅看程序运行的结果,更重要的是看解决问题的思路和具体的程序设计细节。根据程序运行和学生回答问题的情况,将上机成绩划分为优、良、中、及格、不及格五等。

结束语

在C语言程序设计教学中,我们要不再局限于单纯介绍C 语言基本语法,而要本着面向未来的精神,把C语言作为一种实践工具,以程序设计方法为主线,以语法和结构为核心,以能力培养和提高学习兴趣为目标,注重理论与实践的结合、先进性与基础性的统一,变应试为应用。

参考文献

[1] 蔡晓丽,陈舜青. 丁志云.计算机c语言实验教学改革探讨[j].电脑知识与技术,2010(5):4191-4192.

二级c语言程序设计范文第4篇

关键词:案例教学;C语言程序设计;竞赛;教学方式;改革

中图分类号:G42文献标识码:A文章编号:1009-0118(2013)02-0165-01

C语言功能丰富,表达力强,使用灵活方便,应用面广,目标程序高,可移植性好,既具有高级语言的特点,又具有低级语言的许多特点。因此近年在国内外得到迅速推广应用和广泛应用。《C语言程序设计》课程作为计算机专业的入门课程和理工科专业的必修课程,也是国家计算机等级考试可选编程语言之一。课程不仅重视理论教学,更加强调学生的动手实践能力[1]。

但C语言概念比较复杂,规则繁多,使用灵活,学生掌握起来有一定的难度。传统教学过程中存在很多问题,比如实践教学内容与理论教学脱节,上机过程学生随意性大,教师难以在有限的上机课时内对全部学生问题进行解答,学生自学能力不强等。因此对《C语言程序设计》课程教学方法及考核模式进行改革势在必行,案例教学方法和竞赛的应用是解决此类矛盾较好的措施[2]。

一、改革思路

对《C语言程序设计》课程改革的思路是以学生为主体,以实践为主导的教学方式,从而激发学生的兴趣,使其既掌握适当的C语言程序理论知识,更具备较强的实际编程技能,能满足现在工业对技术应用型人才的需要[3]。

二、教学平台和资源库建设

课程的矛盾之一是课时的不足,因此课程需要加强课程平台和资源的建设,使学生能够利用的软硬件资源丰富,将学习时间从课堂内延伸到课堂外,甚至毕业后,弥补课堂教学课时的不足。本课程建设的资源包括:(一)教材的建设,本课程出版的教材包括:《C程序设计应用教程》(中国铁路出版社),《C程序设计实验指导》(中国铁路出版社),《C语言程序设计基础教程》(清华大学出版社);(二)多媒体教学课件;(三)案例教学数据库;(四)考试题库。同时平台上建立问题解答和互动板块,让老师在课堂外也可以学生的问题进行解答,解决教师课堂上时间不足,问题太多,“下不了课”的问题[4]。

三、教学方式的改革

孔子曰:“知之者不如好之者,好之者不如乐之者”,爱因斯坦说过:“兴趣是最好的老师”,因此提高学生的学习兴趣,使课堂生动是最好的教学改革方式,能够让学生从被动学习化为主动学习。

(一)案例教学方法的运用。《C语言程序设计》是一门实践性、应用性很强的课程,单一的理论讲授,学生会感到抽象、枯燥、掌握不牢。因此可以堂课演示几个由C语言编写生活中用到或者见到的小程序,如“计算器”、“五子棋游戏”,同时让学生自己编辑实现后并和源代码对比,在增加学习趣味性的同时,增强学生的自信心。另外将老师参与的科研和生产实际的C语言程序案例引入到课堂,在提出问题、分析问题、解决问题的思路下,将各个重点、难点转化为具体的问题和案例,然后围绕这些问题和案例进行深入讲解。在引导学生思考和记忆的同时,让学生“看得见”,“摸得着”,将教学从课堂延伸到工业场景[5]。

(二)课程竞赛的引入。竞争能够激发“攀比”的思想,因此在课程内开展《C语言程序设计》竞赛,选出优胜作品参加《全国程序设计大赛》,在实战演练中培养学生分析问题、解决问题的能力。让学生感觉上课“好玩”,实现学生课堂内、外自主学习[6]。

四、结语

针对提高学生程序开发应用能力这一中心,对《C语言程序设计》课程进行了学习平台和资源库的建设,同时将案例教学和竞赛引入到课堂教学中,《C语言程序设计》教学改革取得了非常理想的教学效果,无论是在学生成绩的提高上,还是学生的反映上,以及考试的效率上等均达到了教学目的。

参考文献:

[1]陈世基.C语言程序设计实验教学方法的改革与创新[J].福建电脑,2007,(5):207,196.

[2]丁海燕,邹疆,邱莎.C语言实验教学体系及改革措施[J].实验技术与管理,2010,27(11):179-181.

[3]刘桂玲.《C语言程序设计》教学改革与实践[J].软件导刊,2012,11(3):194-195.

[4]袁学倩.《C语言程序设计》课程教学改革的探讨[J].科技信息,2012,(21):137,218.

二级c语言程序设计范文第5篇

关键词:C语言;教学改革;实践教育;程序设计;认知结构

0、引言

C语言课程已经成为工科类大学生必学的基础课程,C语言学习的好坏直接影响后续其他课程的学习效果。在C语言课程的教学活动中,许多教师和学生都认为计算机语言课程的教学方法相对比较单调和死板,无论教材编写还是教师上课,一般都按照“先介绍编程语言基本语法、数据类型、运算符和表达式等基本知识,然后讲解程序结构等编程规则及例题,最后上机实验”等环节组织教学内容。C语言课程作为基础课程,一般都安排在大一上学期。由于刚进大学校园,大学生对一切都还在适应过程中,在中学虽然学过一些信息技术相关知识,但对计算机语言的理解和应用还很肤浅,因此在开始学习C语言时比较茫然。从认知结构理论看,学生需要借助自然语言知识建立相关学科知识结构并理解相关知识点。

另外,C语言程序设计课程很多时候是作为学习其他高级语言和其他专业实践课程如开发计算机辅助设计软件的基础课程而开设的。从国际上流行的构思、设计、实现和运作(CDIO:Conceive,Design,Implement,Operate)工程教育教育理念看,能否学好并应用好c语言是其他课程“实现、运作”的基础。虽然已有学者应用CDIO理念探讨c语言教学改革,但还没有融合认知结构,结合课程体系加以探讨和分析。

笔者首先分析融合认知结构的C语言教学思想,进而研究融合CDIO教育理念的C语言教学方法,最后选择分析分形图形、语音信号分析、物理课程的海市蜃楼虚拟实验演示等软件包作为c语言课程的综合开发范例,吸引学生关注c语言的有趣应用,融会贯通各知识点,使得学生不仅通过虚拟实验加深对知识的感性理解,而且通过构建问题情境激发学习兴趣和积极性。同时,从软件开发者角度理解实现虚拟实验的机理和方法,使学生从“学知识”状态转变到理解知识的“教知识”状态,提高理解和应用知识的能力,进而提高对计算机语言的理解能力,激发学习后续课程的兴趣,培养良好的自主学习习惯。

1、融合认知结构的c语言教学思想

认知结构,就是学习者头脑里的知识结构。知识结构是某一学科领域的基本观念,包括一般原理以及对应的学习态度和方法。认知结构理论学派包括瑞士的J·皮亚杰、美国的J·S·布鲁纳和D·P·奥萨贝尔等著名心理学家,他们认为学生掌握学科的知识结构有助于更容易地理解学科的基本原理、提高记忆的效果、促进学习迁移、缩小“高级”知识和“初级”知识之间的差距。个人的认知结构是指通过学习过程中的同化作用,不断扩大并改进所积累的知识,学习者的认知结构一旦建立,就为学习其他新知识奠定了基础。知识结构与认知结构是构建有效课堂教学的两个重要因素,C语言教学也应充分考虑这两个因素。

学习C语言要借助学习自然语言的经验和方法,学生应该像学习自然语言一样学习c语言,这是因为C语言同自然语言一样,是程序员与计算机、计算机与计算机交流的工具。学好c语言要分两个层次:第一个层次是学会应用c语言进行基本编程;第二个层次是应用c语言编程解决工程和科研项目中的实际问题。第二个层次已经不是简单学会C语言的问题,而涉及算法、数据结构、操作系统等其他专业课程知识。编好大型软件如同写好一部小说。仅掌握词汇、语法等知识是不够的,还需要丰富的生活阅历,阅读大量与小说内容相关的文献资料。

计算机指令要求准确执行,并且每一条指令的结果都可以预知,因此与计算机通信的c语言与自然语言相比要简单得多。C语言和自然语言的一般学习步骤及特点见表1。

学习C语言的最终目的是应用c语言编写程序,尤其是大型应用程序,因此最终要从软件工程角度认识C语言课程的地位和作用,根据大学课程体系和知识体系加以分析。软件为各个学科服务,具有很强的渗透性,可以催生许多新学科和新产业,而软件工程知识具有非常强的学科交叉应用性和工程实践性,因此我们必须在C语言教学过程中,帮助学生建立软件“工程”的思想和理念。另一方面,不同年级的专业知识结构不一样,因此在一年级要培养学生学习c语言的兴趣,明白c语言能干什么,各门课程的虚拟实验软件或计算机辅助设计软件就是最好的“C语言应用的佐证和范例”;在学生二年级开始专业课学习后,我们可帮助学生应用C语言开发虚拟实验软件包,将一年级时的用户体验和获取知识的感受转化为软件开发的用户需求,应用所学知识满足和实现用户需求;学生在三、四年级,除了接受项目导师指导外,还承担起指导低年级学生的任务,更深层次体会c语言各知识点要求,从而更好地理解和应用计算机程序语言,提高抽象分析和解决问题能力,完成软件工程师职业素质的培养。c语言在软件开发应用中认知深化示意图如图1所示,描述学习和应用C语言的过程,即从虚拟实验到应用C语言实现虚拟实验,以此过程培养软件工程师的职业素质。

2、融合CDIO教育理念的c语言教学

针对工程教育问题,麻省理工学院和瑞典皇家工学院等4所大学从2000年起开始探索研究,经过4年实践创立了CDIO工程教育教育模式。CDIO以产品研发到产品运行的生命周期为载体,让学生主动参与实践,有机融合所学知识和体悟“工程”理念,因此我们将CDIO教育理念融入C语言教学过程中,要求从事c语言教学课程的教师,以实现虚拟实验软件产品研发及运行为载体,组建实验项目团队,将学生从各门课程的计算机虚拟实验感官实践,吸引到应用c语言开发各门功课的虚拟实验软件包上。

在传统c语言程序设计课程的教学过程中,我们基本上是按照教材编排的章节次序讲授,先介绍定义,然后讲解指令语法,最后阐述不完整的应用例程。这样的教学只是在堆积概念,使学生难于理解c语言的语法特性和应用价值,因此我们应该像学习自然语言一样设计应用场景,应用语言实践;从CDIO理念出发梳理每一章节主要知识点,构建一个有趣、短小但功能完整的c语言实验案例,见表2。

c语言实验案例可应用在每一节课的教学中,既包含当天课程所要学的新知识,又大量使用前面课程中已学过的指令,构成“构思、设计、实现和运作”理念的实际应用环节;从而提高学生学习主动性和兴趣,让学生在完成具体实验范例的同时巩固旧知识并学习新知识,感受程序设计的乐趣,增强学习c语言的自信心。

3、融合认知结构和CDIO教育理念的c语言教学

综上所述,融合认知结构和CDIO教学理念的C语言教学模式包括3个核心要素。

(1)指导教师:从认知结构的角度引导学生,督查学生对知识结构的掌握情况,解答疑难问题。

(2)项目团队:不同年级或不同知识水平的学生扮演不同角色,实现C语言应用能力的升华。

(3)实验案例软件开发:作为CDIO工程教学的载体,从学生熟悉的背景知识点出发,让学生以学习者、软件使用者和软件开发者等身份,多角度体会并掌握c语言程序设计知识点。

融合认知结构的C语言实验案例的CDIO标准分析见表3。

在融合认知结构和CDIO教学理念教学改革的过程中,我们也改革了课程考核模式。CDIO标准要求以项目案例为载体,在每个项目的构思、设计、实施、运作等14个层面都涉及教学关键知识点,围绕这些知识点对学生的学习效果进行评估。基于这一思想,我们改变以期末卷面考试为主要评价依据的考试方式,而是综合c语言实验案例评估学生的最终学习成绩,将考核分为平时成绩和期末成绩两部分,各占50%。第一部分考核是从表2前9个实验案例中挑选3个得分最高成绩的平均成绩,作为学生的平时成绩;第二部分考核是学生自行选题或从教师提供的题库选择、设计并实现一个综合型实际案例,覆盖不少于5个知识点,该成绩作为学生的期末成绩。

4、虚拟实验案例分析

虚拟实验通过虚拟软件提供友好的人机界面,结合视、听功能,图文并茂,信息量大,同时具有一定的娱乐性。学生通过自主操纵虚拟设备进行实验,不会损坏任何仪器设备,从而能够有效激发对基础课实验的兴趣,充分调动动手参与实验的积极性。要实现虚拟实验软件功能,学生不仅要掌握C语言所有知识点,还需要学习图形人机界面编程知识、更复杂的编程技术和实现技巧,才能实现用户所需的人机界面,从而进一步感受学无止境的境界。我们由此选择一个与其他课程有关的虚拟实验软件包开发作为C语言课程最后考核实验,如分形图形、语音信号分析、折射定律演示等。这些虚拟软件包开发不仅要用到c语言大部分知识点,而且为了提供友好的人机界面,还需学生学习图形界面编程知识。我们以开发折射定律演示软件包为例,分析该融合认知结构和CDIO理念的演示软件包所涉及的知识点。

折射定律是中学物理中的知识,对于学生来说比较熟。我们首先要求c语言学习者从中学生(用户)的角度,回忆当时学习折射定律时的困惑,如如何能够更好地理解折射定律,选择什么现象来演示软件以达到较好的教学效果等。最后,我们选择海市蜃偻现象作为折射定律演示软件的开始。海市蜃楼虚拟实验示意图和实践要素分别如图2和图3所示。

为了增强虚拟演示实验的趣味性,参与虚拟实践的学生需从学习者角度思考如何设计虚拟演示实验中的情节,使其有发生发展的动态过程,引出海市蜃楼这一自然现象,从而引出折射定律知识。学生可通过构造故事情节,形成趣味性的动态演示过程,如“走在沙漠中的人,会看到远处物体的倒景仿佛是从水面反射出来,从而易被这种景象所迷惑,以为前方有水源而奔向前去,但总是可望而不可及。”在确定演示场景后,进而从程序开发者角度进行讨论,利用c语言知识点实现每一部分软件功能,如利用数据表示知识点实现基本场景参数数据的输入和保存、利用流程控制知识点实现光线角度的变化判定等。由于演示软件涉及的一切知识点最终都要反映在虚拟实验软件产品中,因此学生作为软件开发者也必须掌握这些知识,才能将其最终反映在实验场景中。这不仅加深学生对折射定律知识的理解和应用,而且让学生体会到c语言在开发应用软件包中的作用,增加与软件工程有关的理论知识应用经验。