公务员期刊网 精选范文 c程序设计范文

c程序设计精选(九篇)

前言:一篇好文章的诞生,需要你不断地搜集资料、整理思路,本站小编为你收集了丰富的c程序设计主题范文,仅供参考,欢迎阅读并收藏。

c程序设计

第1篇:c程序设计范文

原型开发是C语言程序设计学习支持系统的使用的主要理论基础,在开发该系统的初始阶段,首先要有针对性的对使用的需要进行调查,以此为依据迅速的将一个系统原型制造出来并进行正常的运转。使用者运用这个原型之后,提供使用建议,接下来就是对该原型进行有效的修补和完善,以新的结构、数据和使用模型来建立起一个崭新的原型。之后再交由使用者进行使用并反馈意见,经过几次的使用和反馈、修改,使用者与系统提供者能够在使用上达到共识,使用过程中的种种误会得以解除,使系统得到精准的内涵,同时能够到达使用者的满意。经过这一系列的反馈与修改,系统如果能够达到使用者的要求,就可以被定义为实际生产运行系统,如果达不到使用者的要求,则就会被舍弃进行重新开发。

2C语言程序设计学习支持系统的开发步骤

在对C语言程序设计学习支持系统进行开发的过程中,要严密结合《C语言程序设计》这门课程本身的独特之处,并将该系统的开发思想融入其中,实现以下五个开发步骤:

2.1开发前分析

在进行系统开发之前,一定要结合实际情况做好各方面的调研,这是系统开发的必经之路,也是基础所在。首先进行开发前调研,能够使有疑问的地方展现出来,才能给设计者提供一个确实可行的主题来开发此系统。

2.2开发前设计

经过了开发前有效的分析和主题的确立,将使用者在使用过程中的需求通过调查了解清楚,将该系统的具体模块加以确立,将原型设计出来,同时数据库的基本情况也要得到有效的设计。

2.3C语言程序编程思路和语料分析

一个科学的推理路径的确立需要有效分析C语言程序编程思路和语料,同时要仔细分析复杂程序中存在的编程思路。

2.4系统的开发

在开发系统的过程中,代码的编写、信息库的开发、先进的技术的采用一系列程序后,才能使该系统的功能得以实现。

2.5试用与修改

将开发出来的系统交给使用者进行试用,使用者在使用过程中会发现各种各样的不足,及时根据使用者的意见进行沟通和修改,最终形成一个完善的系统。

3C语言程序设计学习支持系统的功能结构

3.1学习支持模块

在计算机的使用过程中,使用者很多时候会遇到种种困难,例如在对编程或程序进行调试的过程中遇到的难题,自己无法解决时,学习支持模块就能够及时帮助使用者将问题进行指示并提供帮助。编程思路分析指导和程序调试指导是学习支持模块的两大组成部分。

3.1.1编译诊断

使用者在使用计算机的过程中,正确的程序无法得到有效的调试的情况下,编译诊断就能够充分发挥自身作用,为使用者给予及时的帮助,使其了解发生错误的根本原因。它包括了上传程序和诊断问题两大部分。该系统是在使用者无法进行正确的编译C语言源程序时启用。使用者在启用该系统是首先要将参数输入进去,此时数据库就能够通过系统的查找提供错误的起因及解决方法,系统会逐步为使用者进行提示,再通过使用者输入的问题作出判断并给出解决方案。此时问题如果没有得到解决,则说明不完善的数据库存在于该系统中。

3.1.2编程思路分析

计算机使用者在进行上机编程的过程中,该系统能够使思路不清晰的复杂程序编程进行分析,根据相近的程序编程思路给使用者提供指示。它能够满足使用者的即时需求。

3.2信息库管理模块

3.2.1用户信息库管理

使用者的使用权限、基本信息和上传程序信息等的管理都是由该模块来进行的。在使用计算机的过程中首先信息库要将使用者的基本信息收入其中,使用者在每次登陆的过程中只有将基本信息输入进去,通过系统的检查之后才能够进行使用。

3.2.2出错知识信息库管理

针对这一部分的管理,发生问题的知识信息,其中包括诊断、设问和编译错信息,C语言使用者可以采取管理维护措施。完善、删除和添加等操作可以对出错知识库加以填充和完善。

3.2.3编程思路分析信息库管理

C语言使用者可以针对这一部分采取维护管理,即维护管理复杂程序的编程思路分析信息,主要可以采取的手段有更改、删除和添加等操作,不断填充和完善此信息库。

4结论

第2篇:c程序设计范文

(中国矿业大学(北京) 机电与信息工程学院,北京 100083)

摘要:分析C语言教学中存在的普遍问题,从教学内容组织形式、教学方法以及考核方式等方面提出一系列有针对性的教学方法,指出这种教学方法能有效地提高学生的学习效率和质量。

关键词 :C语言程序设计;公共基础课;教学方法

基金项目:北京高等学校青年英才计划项目;煤炭资源与安全开采国家重点实验室开放课题(SKLCRSM11KFB12)。

作者简介:王振武,男,副教授,研究方向为数据挖掘、图形图像处理,wangzhenwu@126.com。

0 引言

为提高大学生利用计算机解决问题的能力,全国高校普遍为理工科专业的低年级学生开设了C语言程序设计这门必修的公共基础课程。一方面,该课程是学生接触的第一门程序设计类课程,其编程思维的养成是一个较长的过程;另一方面,该课程具有内容繁多、知识点关联性强、算法抽象、实践性要求高等特点,学生在学习过程中易产生畏难心理,进而出现学习动力不足、积极性不高等问题。C语言程序设计是一门难学也难教的课程,目前在教学上普遍存在很多问题。文献[1-4]对C语言程序设计的教学方法给出了建议,但都不够系统和全面。

1 C语言程序设计教学方法研究

1.1 理论教学

对于大多数课程而言,从宏观上将课程知识点及其关联讲授给学生非常必要,这便于学生更加系统深刻地理解所学内容。笔者以文献[5]作为教材讲解C语言程序设计的知识点结构。如图1所示,知识点之间的关联可以层层细化,教师首先从宏观上给学生介绍C语言程序的整体组成结构(如图1-(a),然后针对图1-(a)中一个源程序文件的组成成分举例介绍,如图1-(b)所示。在图1-(b)中,教师对涉及的知识点进行归类,共包含预处理命令、数据类型、运算符、语句和函数等5部分,然后图1-(c)至图1-(i)依次层层展开上述各类知识点的组成,逐步细化。

从宏观上梳理C语言与程序设计课程的知识点是非常必要和重要的,这样可以避免学生“只见树木,不见森林”,最后只学到一堆零散的知识点,只有从宏观上把握各个知识点在知识体系中的位置和作用,才能学得深、记得牢。

对于程序语言课程,如果仅仅介绍语法的运用,学生往往对知识点理解不深刻。我们在教学实践中的体会是:在讲解C语言语法的基础上,适当地剖析编程语言在计算机中的运行机制,会让学生的理解更加透彻。因此,我们的课堂教学方法分为如下两部分。

1)课件讲解。

课件讲解包括两部分,即知识点要点总结和知识点运行机制剖析。知识点要点总结就是告诉学生该知识点如何使用;而知识点运行机制剖析则告诉学生该程序在计算机内存中的执行过程。由于绝大部分高校在开设C语言程序设计之前都会开设计算机文化基础等课程,因此学生有足够的计算机基础知识来理解C语言程序的运行机制。

2)实例演示。

作为一门编程语言,C语言需要在实践中理解和掌握,因此,课堂教学中,在具体的编程环境(如VC++6.0)下演示十分必要。通过在具体的软件环境下编程,告诉学生应该做什么和不应该做什么,并总结该知识点的注意事项。相比传统的脱离编程环境,只在PPT或黑板上进行板书的教学模式,该方法的教学效果要好得多。在课堂教学中,具体的教学步骤如下:①使用PPT或者板书列出该知识点的注意要点;②在编程环境(如VC++6.0)下演示该知识点的用法,给出正确的和错误的使用方法,并进行对比;③通过幻灯片动画或flash动画等形式演示程序在计算机内存中的执行过程,让学生更加深刻地理解程序的运行机制。

3)教学难点与重点——“复合知识点”。

从C语言的教学内容来讲,数组、函数和指针是教学的重点章节,这些章节之间相互关联的部分又是重点中的难点,如数组和函数结合,数组名做函数参数,数组和指针结合,指向数组的指针变量,函数和指针结合,指向函数的指针变量等。在教学过程中要反复强调各个知识点的注意事项,如果基本知识点能够理解透彻,上述难点内容也就迎刃而解了。

1.2 上机实践教学

在实践教学中,教师可以通过实际教学案例循序渐进地强化学生对C语言知识点的理解。上机实践的教学内容通常分为两部分:基本知识点练习和综合训练。首先通过基本知识点的练习,让学生掌握该知识点的使用,即巩固课堂所学内容;然后通过一个综合性的大作业,训练学生综合应用C语言知识点的能力,例如,通过编写“学生课程成绩统计系统”考查学生对数组、结构体、指针、函数、文件等知识的综合掌握情况。

对于初学编程语言的学生,往往没有养成良好的编程习惯,出错的可能性较大,而出错之后进行调试又将耗费较长的时间,这势必对学生的学习热情产生负面影响。因此,一开始就给学生制定科学的编程步骤和规范,使学生养成良好的编程习惯,将大大减少程序出错的可能。在C语言教学实践中,我们总结了“五步编程法”:①定义变量,如“int a;”;②对变量进行初始化,如“a=0;”,对变量进行初始化操作是一种良好的编程习惯,可防止未对变量赋值而引起的隐性错误;③通过scanf语句赋值,如“scanf(“%d”,&a);”;④实现程序的主要算法,该部分是程序的主体;⑤通过printf语句将结果输出在显示器上,将结果输出在显示器上便于比较程序运行结果是否正确。

下面是按照上述五步编写的一个完整的C语言程序,用来比较两个整数的大小。按照上述五步进行编程,经过一段时间的训练之后,学生出现语法错误的可能性大大降低,此时学生更多的精力将集中在程序算法的设计和实现上。

1.3 考试形式

对于C语言程序设计的考核方式,我们采用知识点考核和编程实践相结合的方式。知识点考核偏重于C语言基本语法,用于检验学生对知识点的掌握是否全面,此项考核约占总成绩的40%;编程实践考核用于检验学生的实际动手能力,学生将在规定的时间内根据题目在机器上编程,此项考核约占总成绩的60%。为了实现知识点的考核,我们将考试与计算机二级C语言上机考试紧密结合,采用题库平台进行上机考试,学生直接在机器上答题并提交,知识点考核多采取客观题,如填空题、程序修改题以及读程序题等,编程题在实战编程中考核。C语言程序设计课程的重要特点就是实践性强,学习该课程的目的就是为了编写程序。因此从考试的角度讲,进行编程实践是最合适的方式,通过上机编程来考核学生的学习情况也是最公正和客观的方式。

2 C语言程序设计教学实践结果分析

中国矿业大学(北京)每年都有40多个班级同时开设C语言程序设计课程,因此该课程教学质量的高低将直接影响全校理工科学生对C语言的理解和掌握。中国矿业大学(北京)C语言程序设计教学团队经过长期的探索总结出一套行之有效的C语言教学方法,我们将上述方法在学校越崎实验班中进行了试点。如图2所示,采用上述教学法的越崎实验班的C语言程序设计课程考试成绩要明显好于其他班级,其中90分以上的学生占10.7%,80分以上的学生占总人数的53.6%。另外,学生的学习积极性比采用上述方法前得到明显提高,很多学生都对计算机编程产生了浓厚兴趣,实践证明我们提出的上述方法是行之有效的。

3 结语

中国矿业大学(北京)C语言程序设计教学团队在长期的教学实践中探索出的这套教学方法被证明是行之有效的,它能够极大地提高学生的学习兴趣,不但让学生学得会、记得牢,而且能够举一反三,把该方法应用到其他编程语言的学习中。长期的教学实践使我们深刻地认识到,教学方法的好坏对提高教学质量有直接和重要的影响。我们团队提出的这套教学方法是对C语言程序设计教学方法的初步尝试,希望能够对高等院校C语言程序设计教学方法的研究起到抛砖引玉的作用。

参考文献:

[1] 谢中科. C语言程序设计的教学改革与实践[J]. 理工高教研究, 2004,3(23): 96-97.

[2] 简慧云. 提高C语言程序设计教学质量的探讨[J]. 理工高教研究, 2004, 6(23): 83-85.

[3] 王孝平, 董秀成, 谢维成.提高电器信息类专业学生C语言学习能力的教学方法探索[J]. 高等教育研究, 2012, 2(29): 37-40.

[4] 张丽华, 王冬星. 自主学习教学模式在C语言教学中的运用[J]. 黑龙江教育: 高教研究与评估, 2009(12): 91-92.

第3篇:c程序设计范文

【关键字】C语言 程序设计 教学探讨

一、由实验入手,培养学生的学习兴趣

“C语言程序设计”课程往往是是学生所接触的第一门计算机编程方面课程,所以很多老师采用理论教学,学习完理论基础后开始上机实践,从介绍C语言的语法、算法开始,然后讲程序的书写,最后再学习程序的调试。这样复杂且抽象,这就导致部分学生在上课初期就反映C语言难懂、难学。在教授C语言之初,教师应注意教学的方式方法,要设法调动学生的学习兴趣,让他们先体验C语言程序设计的乐趣。第一次上课最好定为实验课。通过给出几个简单且学生熟悉的数学问题以及它们所对应的C语言程序源代码,边介绍程序运行平台的操作边指导学生自己编辑调试,观察运行结果。当程序成功的输出结果时,学生对这门课的学习兴趣自然产生了。第一堂课通过实验教学,完成从数学逻辑到计算机语言程序的转变,从而逐渐培养学生对程序设计的兴趣。

二、教学中应避免过分强调某些容易引起副作用的知识细节

由于C语言牵涉到的概念比较复杂,规则繁多,使用灵活,容易出错,所以在C语言教学过程中,要遵循由易到难,抓主要矛盾的原则。介于C语言中有些细节牵涉到的副作用问题很多,教学时应把教学精力放在最基本、最常用的那些部分,等学生有一定基础后再深入到一些非主要的细节上。

三、阶梯性举例

为培养学生的学习兴趣,大部分教师在C语言教学过程中,都不一味地按书本去讲,而多举实例来巩固学生所学习的知识点。笔者在一年来的C语言教学实践中采用阶梯性举例方式,取得了不错的教学效果。阶梯性举例是指在课堂上把同类型问题归结出来,让学生从理解最简单的例子开始,按照由易到难的顺序依次理解所学知识点。

例如,在讲述C语言中求若干数中最大值的知识点时,举出:第一层问题:2个数的最大值求法,采用简单if语句解决;第二层问题:3个数的最大值求法,采用简单if-else复合语句解决;第三层问题:4个数的最大值求法,采用条件语句加上if语句解决;第四层问题:n个数(4个数以上)的最大值求法,采用一维数组比较方式解决。

这样通过阶梯性举例教学,学生对同类问题的解决有了比较深刻的认识。其主要特点是升级适度,符合学生的心态,使学生有成就感,形成积极向上的学习态度。

四、强调程序语法规则,淡化程序算法设计思想

C语言语法规则繁多,且使用灵活,很容易出错。这样使得学生调试程序过程变得更难。因此,教师在C语言的教学过程中,一定要强调C语言中语法细节问题,把一些经常会犯的错误总结出来。例如,在C语言里,赋值运算符是“=”,而“==”是关系运算符的相等比较,如if (a = 1),因为“=”是赋值操作,括号中的条件则会永远为真,程序在编译时不会提示有错,可以编译通过,但这明显不是所要的结果。教师在授课时一定要强调语法细节,避免出现不必要的错误。

五、传授编程技巧,养成良好编程习惯,培养学生独立调试程序能力

C语言是一门实践性相当强的课程。教学中,教师应该传授学生一些编程技巧,例如一些典型数学问题的运用等,让学生学会如何熟练应用C语言编程。由于C语言语句书写灵活,教师在实验课上应重视学生书写程序规范问题。例如,强调变量命名应顾名思义,一行只书写一条语句,每一小段程序要有中文注释等。养成这些良好的编程规范对学生今后编程解决问题是很有帮助的。此外还应引导学生多读程序,多编程序,多上机调试程序。教师在实验课中,应该把一些常用的程序调试方法总结出来,教给学生。只有通过反复上机操作,自行找错纠错,才能对C语言有更深、更全面的认识和理解,逐步提高实际操作和学习的能力。

六、采取多元化的考核方式

为了保证课程的教学质量考核是必不可缺的,可以采用多元化的考核方式,针对C语言中不同的知识类型采取不同的考试形式。如:考查C语言中常识性的知识可以采用闭卷考试形式;考查学生知识转化能力、应用能力等可以采用开卷考试形式;考查学生的程序调试、改错等可以采用上机考试。

七、结束语

以上是笔者近年来学习和讲授C语言课程中的一点心得体会,在教学过程中应注意的问题还是有很多的,但是关键在于对 “教什么”和 “如何教”的合理组合,是否能调动学生学习的积极性。教学中,只要教师能理解C语言本身的特点并采取相应的措施与教学手段,一定能取得理想的教学效果。

参考文献:

[1]谭浩强. C程序设计(第三版)[M]. 清华大学出版社.2005

第4篇:c程序设计范文

关键词 C语言程序设计;教学理念;教学方法

中图分类号TP39 文献标识码A 文章编号 1674-6708(2010)25-0198-02

C语言程序设计课程是我校理工类各专业必修的计算机程序设计基础课,是一门实践性很强的课程,学习者必须通过大量的编程练习,在实践中掌握语言知识,培养程序设计的基本能力,并逐步理解和掌握程序设计的思想和方法,培养学生编程兴趣和编程能力是我们教师的责任,也是该课程的目标。

现行的教学中存在一些问题:一是按照从基础知识讲起,然后讲解语句语法,最后应用举例;二是教材内容安排不尽合理,语法规则编写过细[1];三是教学理念、教学方法和考核方法比较老套,不适应当今教学的发展。为了让学生学好这门课程,提高动手能力,必须进行教学改革,探索改革的思路和方法。

1 转变教学理念

传统的“盖房子”教学理念,强调必须先打好地基再砌墙,即强调先打好基础,然后再进行实际编程。这种教学理念教师往往先介绍概念和定义,再举例进行讲解,这种教学方法死板而枯燥,由于课程的教学重点往往放在了语言语法知识点上,而语言的语法是相当烦琐而复杂的,这种教学方法缺少应用型、趣味性的案例,使学生一步步地陷入到纷多繁杂而索然乏味的语法学习当中,很难充分调动学生的积极性和启发学生思维。

研究自然界中“树”的生长规律可以发现,“树”并不是先长成发达的根系,再长树干和枝叶,树的根系、树干和枝叶是同步生长的。“树”的生长过程应用到教学上,就是基础语法和编程的教学同步进行,甚至先教编程技能再教理论,在不断地实践中掌握技能,在技能学习中提高基础理论。

2 教材编写思路

从课程的教学目标出发制定教材的编写思路,采用实例引导法、归纳教学法和任务教学法编写教材,在编写内容上抛弃过多的语法细节和非通用的或实际用途很少的语言特性,算法描述力求通俗易懂。理论教材以实例引导法思想为主导,介绍概念、语句格式、语句用法和算法描述。用归纳教学法思想编写多个函数中相同参数的使用问题。实验教材以任务教学法思想,确定每一个实验的任务、内容、要求和思考题。

3 教学方法探索

3.1实例引导法[2]

一切从实际例子出发,引导学生理解程序中的概念和算法,例如:在讲解变量、运算符和表达式时,先通过一个具体实例程序介绍,如:求圆面积和周长,指出程序中临时存放数据的单元和公式中的运算符号,然后再引出变量、运算符和表达式进一步讲解。又如:在讲解指针的概念时,变量的“间接访问”,可以通过“办公桌抽屉”实例讲解:一个办公桌有A,B两个抽屉,每个抽屉有一把钥匙,可以把B抽屉的钥匙放在A抽屉中,若要打开B抽屉,就需要先打开A抽屉,取出B钥匙,再打开B抽屉,取出B抽屉中的物品,引出“间接访问”。这样学生很快就能理解变量、运算符、表达式和指针的概念并掌握它们的用法。

3.2归纳教学法[3]

C语言的定义、概念、语法规则有许多相似的地方,在讲解C语言函数库中函数时,有些函数参数的类型格式符是一样的,在讲解一个函数中类型格式符后,对其它函数的类型格式符可以进行归纳,不讲或简单的提一下即可,例如:printf()和scanf()函数中的类型格式符“%d、%f、%c”等,它们的语法规则是一样的。通过归纳教学,学生只要掌握其中一个,另一个自然就会使用了,免去了重复讲授,提高了教学效率。

3.3任务教学法

C语言程序设计课程必须采用实验教学环节才能把理论算法加以验证。采用任务教学法思想编写实验教材,适度增加实用性和自主性实验任务内容。每章有具体任务实例讲解,可引导学生完成每章设置的实验任务题目。让学生自主选择实验时间,每次实验课前要布置实验任务,学生根据任务,自学和实验任务有关的知识,完成实验任务的编程。这种教学方法能够有效地培养学生的自学能力, 激发学生学习的积极性、主动性和创造性, 锻炼他们利用所学的知识解决实际问题的能力。

3.4网络教学法

依托先进完备的校园网络环境,建立C语言程序设计网络教学平台。可以把课程教学大纲、教案、多媒体课件、教学录像、综合实例库、习题库、学习参考资料、模拟考试系统等教学资源全部上网,通过这个网络教学平台,学生可以浏览、下载学习资料,也可以提交电子作业,在线提问题,老师在线辅导和答疑等,为学生自主学习提供强大的网络支持。

4 师资队伍建设

成立C语言程序设计课程组,建立结构合理的教师梯队。由具有丰富教学经验和科研能力的教授任组长,激励教师努力钻研教学内容和教学方法,拓宽知识结构。同时,针对组内教师的不同特点,课程组制定了切实可行的目标,并定期进行集体备课,相互探讨,号召组内教师积极参与教学研究和科研开发,为提高教学水平打下良好的基础。建立主讲教师之间互相听课和评课制度,定期召开学生座谈会和课程质量分析会,并针对反馈意见提出改进教学的具体措施,从而规范教学的各个环节,为更好地提高教学质量奠定良好的基础。

5 考核评价体系

对课程考核评价体系进行改革,突出过程考核和编程能力考核,促进学生实际动手能力和创新能力的提高。例如:总评成绩=理论课出勤成绩+作业成绩+实验出勤成绩+实验完成成绩+期末考试成绩。期末考试采用《C语言程序设计机考系统》,机考系统为每个考生随机出题,体现了公平考试的原则。改革后的考核评价体系主要体现了考核形式多样化、考核标准合理化以及考核试卷个性化三大特征。

6 结论

鉴于目前C语言程序设计课程教学中存在的一些问题,文章通过改革探索,一切从培养学生编程能力的角度出发,按着新的教学理念对教材编写思路和教学方法进行了探索,提出了教学改革的具体措施。希望对C语言程序设计课程的教学改革有所借鉴。

参考文献

[1]谭浩强.C程序设计[M].3版.北京:清华大学出版社, 2005.

第5篇:c程序设计范文

本书作者具有多年C++面向对象程序设计课程的教学经验。根据教学过程中反映出的主要问题,作者在参考大量已有教材和相关资料的基础上,对书中的内容进行合理组合与取舍,力求澄清概念上的误区,使内容反映学科发展、涵盖最新特征,通过具体实例使读者尽快掌握C++语言的语法知识,把重点放在程序设计方法上。为使学生了解C++标准库、掌握标准模板库的精华,特别安排一章内容,介绍C++标准库的构成。另外通过阅读本书,读者还可以对过程化编程、面向对象编程和泛型编程等编程思想有所了解。

与同类教材相比,本书具有如下特色:

1) 虽然在最后一章对C++标准库进行了较为详细的介绍,但是在第1章安排一节对标准库进行简单介绍,并通过一个具体例子告诉读者如何使用标准库编写C++程序,以吸引读者进一步学习。

2) 对C++支持的丰富多彩的数据类型,进行了比较合理的分类,以方便读者在阅读过程中理清思路,尽早掌握类(class)的概念。本书将C++支持的数据类型分为三大类:基本数据类型、自定义类型(抽象类型)和扩展类型。

其中基本数据类型是C++预定义的数据类型,包括布尔型(bool)、字符型(char)、整型(int)、浮点型(float, double)、空类型(void)。可以利用修饰符对基本类型进行扩展。例如,signed、unsigned可用来修饰字符型和整型,long可用来修饰整型和双精度浮点型,short可以修饰整型。

用户根据需要,将数据与操作数据的算法封装在一起所建立的类型,称为用户自定义类型或者抽象数据类型,也就是C++中的类,枚举、联合、结构可以看作类的特殊情况。

在已定义的数据类型基础上,结合某些修饰符(如[]、*、&、())或者关键字(如const、static),可以得到扩展数据类型,如数组、指针、引用等。

3) 将类和对象(object)的概念提前介绍,从基本数据类型到结构再到类,使读者尽快建立起“类”这种抽象数据类型的概念。在介绍对象的概念时,不是用过于抽象的语言,而是具体到C++语言及计算机存储情况进行介绍。

C++中的对象,强调的是分配好的、具体的一块内存区域。每个对象都与一个特定的数据类型相关联,这个类型决定了内存的大小、布局、能够存储在该区域的值的范围以及可以对该区域进行哪些操作等。

4)C++在创建对象时,系统要为对象分配一定的存储区域,这些存储区包括静态存储区、栈区和堆区。本书对不同存储类型对象的存储特性进行了较为详细的介绍,并通过具体实例进行验证。

静态存储区(static storage)。全局对象、静态对象和函数一般存储于该区域,存储区是在程序开始执行之前分配的,这些存储区在程序的整个运行期间都存在。

栈区(stack)。程序执行期间进行的内存分配。在执行函数时,函数内一般局部变量的存储区都可以在栈上创建,函数执行结束时这些存储区被自动释放。

堆区(heap),也称为动态存储区。程序在运行的时候用运算符new申请内存,由程序员自己负责何时用运算符delete释放内存。

5) 内容结构安排上,将函数与函数模板、类与类模板分别放在同一章介绍,使得内容前后衔接密切,便于读者由简单到复杂、逐步掌握标准C++的精髓。

6) 与同类大部分中文教材相比,增加了指向成员的指针、成员函数地址获取、动态绑定机制、函数对象、模版重载与专门化等内容,加强了对C++标准库特别是对标准模板库的介绍。

7) 本书的例题和习题选材大部分面向实际问题,题目具有一定的难度和趣味性,读者学完此书从内心里会感到有很大收获。

8) 使用本书不需要有C语言基础。

第6篇:c程序设计范文

1.1教学只注重课程的讲解,不注重教学过程的质量控制

传统的教学以课程内容的讲解为主,通过讲解变量、循环、数组、指针等内容,并结合一定的教学案例来推进教学过程的实施。这种传统的教学方法没有考虑到本阶段学生的特点,往往造成教学效果差,教学质量难以控制。C语言程序设计课程在大一新生中开设,许多学生缺乏程序的思维和一定的动手能力,学生难以跟上教学进度,造成一定数量的学生对学习语言失去兴趣,从而影响整个专业课程的学习。

1.2教学过程缺乏有效的互动

C语言程序设计的教学过程中主要使用PPT来讲解,案例程序也通过PPT展示,甚至包括程序运行结果也以截图的形式在PPT中显示。虽然在PPT中可以添加很多的动作,动态地标注、显示程序的运行过程,但这种方法以投影为中心,缺少与学生交流的环节,加上程序类课程相对枯燥,以致学生难以集中精力做到全程听课。

1.3代码编写规范强调不够

编码规范是软件专业学生必须要牢记并遵守的,良好的编码规范不仅能体现软件从业人员的素质,而且使代码有更好的可读性,更容易被别人所理解和交流。该课程的讲解主要以编写简单逻辑来解决一些日常问题、数学问题,编程的环节侧重于算法的实现,往往忽略了编码规范

。1.4考试以笔试为主,难以检验学生的动手能力

传统的C语言程序设计课程考试以笔试为主,考查学生对C语言基本的语法、简单逻辑编写的掌握情况。这种考试机制脱离了程序语言的实现介质,即计算机。虽然在试卷中也可以用编程题目来考查学生的编程能力,但在纸上写程序与在计算机上写程序有本质的不同。在纸上写程序只需要写出大致的逻辑即可,而在计算机上写程序不仅要写出正确的代码,而且需要调试和跟踪代码,最终保证程序的正确执行。因此,笔试并不能很好地检验学生的动手实践能力。

2教学改革措施

2.1加强教学过程的质量控制

C语言程序设计课程是一门实践性强的课程,仅通过做一些常规练习无法达到教学质量监控的目的。为了更好地控制教学质量,需要从学生语法规则的掌握到动手编程这一系列环节进行掌握和跟踪。为此,我们开发了一套在线作业系统用于教学质量的控制。⑴作业题库的建设C语言程序设计的任课教师根据自己的经验和理解来搜集和设计C语言题目,包括基础知识的题目和编程实践的题目。基础知识的题目主要用于C语言知识点的训练,包括填空题、选择题、判断题和程序阅读题;编程实践的题目主要用于编程能力的训练,这类题目需要学生对问题进行正确分析、设计算法、编程并运行,最终得到结果。教师在给出题目时,需要提供测试数据和对应的结果。⑵作业的布置与批改教师可以根据每次课的教学大纲、课程内容,从作业题库中选择一些填空题、选择题、程序阅读题、编程题来建立课程作业供学生在课外完成。学生在规定的时间之内完成作业后提交作业,系统根据教师预先设定的答案进行自动批改,形成每个学生的作业记录。如果学生在规定的时间之内没有完成作业并提交则失去本次作业的记录。教师通过查阅部分学生的解答来掌握学生对相关知识的掌握情况,特别是需要整理学生所犯的共性问题,并有针对性的开设习题课进行解答。⑶配套政策为了使学生重视平时作业的完成,课程的期末成绩将考查平时作业的情况。如果学生没有提交作业的次数在30%以上,则平时成绩计0分,其他情况按照提交作业次数和作业得分根据一定的公式进行计算得到学生的平时成绩。这种策略的主要目的在于督促学生跟着教学进度进行学习和训练,不至于严重滞后于教学进度而失去学习的兴趣,可有力地保证教学质量。

2.2加强教学过程中的互动

课堂教学应该在一定程度上脱离PPT的教学,这样才可以调动学生的积极性。加强师生之间的互动可以结合本课程特点进行。在讲解课程知识点后,配以适合的案例进行教学,这些案例都是需要编写C语言程序来实现的。此时,编程实现的环节不要通过PPT展示,而要在教师的计算机上动手编写并运行得到结果,这样可以改变教学节奏,吸引学生的注意力。C语言课程案例程序的一大特点是代码量少,一般在20~30行之间,适宜在课堂上完成。教师在编写程序的过程中,可以向学生展示编程中需要注意的问题,同时,进一步讲解C语言的语法和基本知识点。教师在编写程序的过程中难免会犯小错误,或者是有针对性的故意犯一些学生经常犯的错误,在编程后的编译运行时会有错误报出,这时对于提高师生交互是很好的机会。从学生的角度来说,他们的编程往往会有很多错误,编译时会出现大量的错误提示。此时,学生可能就比较迷茫,不知道如何定位并解决错误。因此,当老师也出现错误,而且是学生经常遇到的错误时,学生往往是比较兴奋的,希望能知道老师是如何处理错误的。从老师的角度来说,真实地反映程序编写、编译的过程,展示程序错误的发现、定位、解决的方法,能够更快地提高学生的动手实践能力。面对错误,教师还可以引导学生参与程序错误的解决,消除学生对程序错误的恐惧感。在解决程序错误时可以参考以下步骤。首先,教师要把所有错误信息读出来给学生听,因为一般编译出来的错误是用英文写的,而且有些单词学生不熟悉,因此,老师需要指出错误是变量重定义、变量没有定义、还是其他错误;然后,指出核心错误的位置,教师要告诉学生程序报出很多错误信息往往是由一个小错误导致的,因此,老师要指导学生学会确定引起其他错误的核心错误;最后,在源程序中找到错误的位置,修改错误并重新编译,得出运算结果。这个错误处理过程是针对简单语法错误的处理方法,如果程序中出现了逻辑错误,即程序编译正确,但运行结果不是预期结果,此时,错误的处理方法更为复杂,可能需要重新检查程序逻辑,并使用编译环境进行程序中可疑变量的监视,通过观察变量中的数值在程序运行过程的变化来确定错误。通过实地编写程序并调试,发现和解决程序错误,最终得到正确的计算结果,不仅能使同学更好地掌握程序编写的方法,而且还能更好地与学生进行互动,提高教学效果。

2.3强调代码规范

有些老师在教学的过程别是演示程序时,注重于解决问题而忽视代码规范,甚至是自己写程序也是这样,没有代码规范。虽然遵守代码规范并不能改善程序的性能,但遵守代码规范能够使程序具有更好的可读性、可维护性,是软件代码实施过程中软件从业人员良好素质的重要体现。改善代码规范可以从以下几个方面进行。⑴适当的缩进每一行代码不要顶格书写,而要根据情况缩进。具有良好缩进格式的代码不仅能少犯语法错误,还能够使阅读者快速掌握程序内容。⑵适当的空行函数与函数之间增加必要的空行,使得程序构成一目了然。⑶适当增加代码注释程序中函数的开头最好加上注释说明该函数的作用、参数的意义,在函数中重要逻辑的部分加入注释说明该逻辑的主要思路、算法。⑷代码块要用花括号界定代码块尽量使用花括号来界定代码范围,即使代码块里只有一行代码,这样可以提高代码的可阅读性,防止阅读者误解程序。⑸变量和函数的命名尽量使用多个字母来命名变量和函数,使得程序阅读者通过名称即可大致了解变量的意义、函数的作用,提高程序的可读性。通过编码规范的强调和实施,使学生认识到软件开发的专业素质,对于提高学生的专业素养具有潜移默化的作用。

2.4上机考试

上机考试采用在线考试的方式进行,考试环节包括如下几个部分。⑴试题库的建设C语言程序设计的任课教师负责组建上机试题库,试题库中的题目都是编程的题目,用于考核学生的编程能力。教师在组建试题库时,标明每个试题的知识点和大致难度,并提供测试案例和对应的答案。题库负责人负责查看、重新编辑每个题目,从题库整体的角度更新每个试题的难度。⑵上机考试的实施为单次考试准备7个知识点和1个综合知识点的题目,教师在考试之前为每个知识点选定难度相当的5个题目。每个学生登录系统后,系统自动建立考卷,具体策略是从为每个知识点准备的5个题目中随机选择1题组成一个考卷,因此,该考卷包含8个题目,这8个考题要求学生在4小时内完成编程。考试时间一般定为上午8:00至中午12:00点。学生根据随机组成的考卷题目进行解答,为每道题目编程求解,并在学生机上利用示例测试用例检验代码的正确性。如果在本地没有通过检测,则进行逻辑检查,修改程序;如果本地通过测试,学生需要将代码提交到服务器。服务器接收到代码后,自动调用教师提供的更多的测试用例来检测程序运行结果是否与预先设置的结果匹配,进行代码逻辑黑盒测试。如果全部通过,则说明学生的编程逻辑是正确的,此时将学生成绩记录中对应的题目标为通过,并回显“通过”给学生,学生继续做下一道题目;如果其中有的用例运行结果不正确,则返回“错误”给学生,学生可以接着做本道题目,也可以选做另外一道题目,同时,在学生成绩记录中对应的题目标为错误。教师在考试现场调取并查看所有学生成绩记录信息,如果发现异常信息,如在很短的时间内完成了过多的题目,则可能学生在作弊。此时,根据异常学生信息中的IP地址找到该学生,进行现场查证,如果确认为作弊则立即处理。如果学生正确完成了8道题中的5道题,则学生通过上机测试,否则,学生没有通过上机测试。为了减轻学生的压力,上机考试可以分两次进行,如果第一次没有通过上机考试,还可以组织学生进行第二次考试,取这两次考试的较高分作为学生成绩。

3结束语

第7篇:c程序设计范文

关键词:C语言程序设计;计算思维;抽象;自动化

美国卡内基・梅隆大学的周以真教授在2006年系统地提出了计算思维的概念[1]:计算思维指的是运用计算机科学的基础概念进行问题求解、系统设计以及人类行为理解等一系列思维活动。其后,陈国良院士和李廉教授归纳出三种典型的科学思维,即以观察和归纳为特征的实证思维,以推理和演绎为特征的逻辑思维,以抽象和自动化为特征的计算思维[2-3]。计算思维是计算机类课程的主要思维方式。

有关计算思维在程序设计类课程中的研究,已经引起很多学者的兴趣[4-6]。这些研究虽然从案例设计和项目过程等角度做了有益探索,但却忽略了对计算思维本质的讨论。C语言程序设计课程中,我们采用李廉教授的观点,即计算思维的本质是抽象和自动化。抽象指的是使用符号系统对问题进行精确而严格的描述;自动化指的是对这些符号系统施加一定操作并按照某种结构自动地执行。

一、C语言程序中的计算思维本质之一:抽象

有些C语言程序设计课程教学的一开始就提倡使用案例教学。这虽然能够使得学生可以迅速进入实际编程环节并建立直观感性认识,但案例教学由于往往出现“程序就是编程工具”的工具论现象,导致出现“只知其然,而不知其所以然”的学习后果,不利于学生的后续发展。

对于C语言程序来说,抽象指的是使用符号系统对求解问题进行精确而严格的描述,抽象的过程就是对实际系统建模的过程。实际上,程序是用来描述现实生活中某个实际存在的或不存在的系统。程序就是对系统的抽象。系统之所以存在,是因为系统具有一些关键特征和核心功能。程序中对系统特征进行抽象的就是操作对象,对系统功能进行抽象的就是函数。系统功能往往有多个且存在着复杂的调用关系。例如,求一个函数定积分的功能必然涉及求函数在某一个点的取值功能,如果该函数比较复杂且含有正弦、余弦和正切等三角函数,还需要继续调用求这些三角函数值的功能,形成多级调用;有时函数执行过程中还需要调用本身,形成递归调用。

C语言程序中的操作对象分为变量和常量。常量是对系统中的取值不变的特征进行抽象,如圆的圆周率;而变量是对系统中取值可以改变的特征进行抽象,如圆的半径。不管是哪类特征,都会有一个取值范围以及所允许的操作。例如,对于课程成绩,其取值范围一般是从0~100,而允许对该特征进行的操作可以是加法和减法等算术操作以及大于和小于等比较运算;而对于课程名字这一特征,就不能进行加法和减法这样的算术操作。C语言程序中用来对特征的取值范围及允许的操作进行抽象的概念是数据类型。C语言程序中的抽象模块如表1所示。

现实生活中,经常需要描述多个相同数据类型的一个系统特征,如所有同学的高等数学课程的成绩,可以使用一维数组来进行描述;而描述多个不同数据类型的多个系统特征,如学生的姓名、学生的身高和学生的年龄等,可以使用结构体来进行描述;如果要描述多个相同数据类型的多个系统特征,如全班所有同学的高等数学和大学英语课程的成绩,则可以使用二维数组来进行描述。

表1 C语言程序中的抽象模块

C语言程序中的元素 现实生活中的元素

程序 系统

函数 系统功能

函数调用 功能调用

数据类型 常量 系统特征

变量

一维数组 多个相同类型的一个系统特征

多维数组 多个相同类型的多个系统特征

结构体 多个不同类型的多个系统特征

链表或结构体数组 多个不同类型的多个系统特征的集合

二、C语言程序中的计算思维本质之二:自动化

计算思维的另一个本质是自动化。自动化指的是对符号系统建模的各种元素施加一些操作,并按照某种顺序的或非顺序的结构自动地执行。对于C语言程序来说,自动化体现为函数内部的语句在EIP寄存器加法操作支持下顺序自动地执行以及函数之间的调用在内存堆栈区支持下自动地进行跳转。EIP是32位机的指令指针寄存器,用来存放下一条要执行的指令的地址。EIP寄存器中增加值的大小需要根据实际存储指令的大小来确定。

对于C语言程序来说,自动化过程中执行的对象是语句。不同类型的语句,执行的结果和效用是不一样的。例如,一个变量定义语句“int a”的执行结果是在内存中分配4个字节的空间,一个返回语句“return t”的执行结果是将程序的执行流程返回到主调函数中。这些语句的组合构成一个个函数,程序的执行就是在某个函数之中顺序自动地执行以及在多个函数之间来回自动地跳转。

既然程序的执行过程是在某个函数之中顺序自动地执行以及在多个函数之间来回自动地跳转,这种自动执行需要有相应的计算机软件和硬件基础。支持程序自动执行的软件基础是操作系统,支持程序自动执行的硬件基础是计算机硬件结构,即冯・诺依曼原理的程序存储思想。当用户点击执行按钮后,程序被提交给操作系统来执行,可以不需要人为干预。此后,程序在操作系统中以进程的方式出现。操作系统协调内存、中央处理器和外存等硬件资源执行该进程。

函数中的语句之所以能够一个接着一个顺序地执行,主要依赖于EIP寄存器的加法操作。当一条指令执行完成之后,EIP寄存器在原有内容的基础上再加上当前指令所占存储空间大小,其内容便是下一条指令的地址。如此进行下去,就可以一个一个顺序地执行函数中的语句。

程序控制之所以能够在函数之间进行跳转,主要依赖于操作系统管理的内存堆栈区。内存堆栈区是满足“后进先出”操作约束的存储区。当操作系统开始执行用户提交的C语言程序时,首先开始从main函数执行,main函数的相关局部变量被压入栈中;当执行到被调函数时,被调函数的相关局部变量再次被压入栈中,程序控制转移到被调函数,且操作只能对当前栈顶进行,而此时栈顶存储的就是被调函数的相关局部变量;而当被调函数执行结束时,被调函数的相关局部变量从栈中退出,程序控制转移到main函数继续执行,此时栈顶存储的是main函数的相关局部变量;当main函数执行结束时,main函数的局部变量从栈中退出,整个程序执行结束。下列程序执行时的堆栈变化过程示意如图1所示。

#include "stdio.h"

double s(double r)

{ return r*r; }

int main()

{ double r;

double area;

r=2.0;

area= s(r);

printf("area=%f",area);

return 0;

}

图1 函数调用过程的堆栈变化

自动化过程实际反映了C语言程序解决实际问题的算法流程。算法是解决某一问题的执行步骤。一般而言,使用C语言进行编程之前,需要进行相应的算法设计,即构思解决实际问题的思路和步骤。一旦这些步骤变成C语言程序语句并形成一个完整的程序,就可以提交给操作系统自动地执行这些步骤,这正是计算机解决问题的高效率的体现。

三、以计算思维为导向的C语言程序设计课程教学

1.教学内容

针对计算思维的抽象和自动化两大本质特征,C语言程序设计课程的教学内容需要在原有的基础上特别强调一些针对性的观点。例如,C语言中的各种数据类型和数据结构可以完成实际系统中各种不同元素的抽象,一个函数之中的顺序语句自动执行的基础是EIP寄存器的加法操作,多个函数之间的来回自动跳转的基础是内存堆栈区的支持等。具体强调的观点如表2所示。

表2 教学内容中需要强调的观点

C语言程序设计

课程的内容 强调的观点

C语言概述 程序是对系统的抽象

抽象过程就是C语言的建模过程

自动化过程反映C语言的算法流程

数据类型、表达式和语句 操作对象是对系统特征的抽象

语句是系统自动化执行的基本对象

控制结构 控制结构是问题求解步骤的抽象

函数中顺序语句自动执行的基础是EIP寄存器的加法操作

数组 一维数组是对多个相同类型的一个系统特征的抽象,多维数组是对多个相同类型的多个系统特征的抽象

函数 函数是对系统功能的抽象

函数调用是功能调用的抽象

函数之间的来回自动跳转的基础是内存堆栈区的支持

结构体 结构体是对多个不同类型的多个系统特征的抽象

指针 链表是多个不同类型的多个系统特征集合的抽象

2.教学方式

计算思维的本质是抽象和自动化。C语言程

序设计课程一般都是面向大一新生,理解抽象和自动化进而培养计算思维,对于还处在计算机学习起点的学生来说是比较困难的。

对于C语言程序来说,抽象过程实际就是运用C语言中各种符号对所描述系统的建模过程,培养抽象的计算思维方式就是培养使用C语言描述实际系统的思维过程。因此,可以通过启发式教学方式引导学生思考如何使用C语言中的符号来描述系统。可以提出这样的一系列问题:C语言中如何描述一个人的身高?如何综合描述一个人的姓名、年龄和籍贯等?如何描述一个班中所有学生的高等数学成绩?如何描述各路公共汽车站的网状信息?通过启发学生对这些问题的思考,让学生所学的C语言中的各种符号不再“虚幻”,让学生真正理解这些符号实际是一种建模元素,每种符号有着其特别的抽象描述能力。

对于C语言程序来说,理解自动化过程必须借助一些形象化的手段。例如,借助于Visual C++ 6.0平台的单步调试功能,可以形象地演示上述C语言程序的自动化过程,如表3所示。

表3 C语言程序执行过程中EIP和ESP寄存器内容的变化

断点 EIP寄存器内容 ESP寄存器内容 当前栈顶函数

r=2.0;语句 00401068 0013FF24 main函数

area=s(r);语句 00401076 0013FF24 main函数

return r*r;语句 00401020 0013FF18 s函数

printf("area=%f",area);语句 00401089 0013FF24 main函数

从表3可以看出,随着EIP寄存器内容的增加,main函数中的语句顺序自动执行,即从语句“r=2.0”到语句“area=s(r)”再到语句“printf("area=%f",area)”。ESP寄存器是另一个重要的寄存器,它始终存放栈顶的地址。随着main函数对s函数的调用开始,栈顶工作函数由main函数变化为s函数;当s函数调用结束后,栈顶工作函数又由s函数回到main函数。

3.考核内容

针对C语言程序设计课程的计算思维培养要求,考核方式上必须从以考查语言的语法知识为主转变为以考查学生的系统建模能力和算法设计能力为主。

系统建模能力的考查主要针对计算思维的抽象特征。例如,可以给出各种系统特征,考查学生使用数据类型进行描述的能力。

算法设计能力的考查主要针对计算思维的自动化特征。当然,C语言程序设计课程中涉及的都是一些如迭代、枚举和排序等简单算法。可将这些算法封装成各种函数来进行调用,以考查函数中顺序语句的执行以及函数间的伴随参数传递的跳转来理解自动化过程。因此,必须以简单算

法设计和函数调用为重点考核内容,突出对函数接口设计和算法流程设计的考核。

参考文献:

[1] Jeannette M. Wing. Computational Thinking[J]. Communications of the ACM, 2006, 49(3):33-35.

[2] 陈国良. 计算思维[J]. 中国计算机学会通讯,2012,8(1):31-34.

[3] 李廉. 计算思维――概念与挑战[J]. 中国大学教学,2012(1):7-12.

[4] 张耀文. 基于计算思维的程序设计课程案例教学法研究[J]. 重庆电子工程职业学院学报,2012,21(3):149-150.

[5] 吴绍兵. 计算思维和程序设计能力的培养[J]. 计算机教育,2011(16):11-14.

第8篇:c程序设计范文

关键词:结构化程序设计;顺序结构;选择结构;循环结构;算法

当前,计算机技术飞速发展,程序设计技术已从结构化程序设计技术向面向对象程序设计技术过渡,对一个规模较大的应用程序,总体框架是由面向对象程序设计构搭而成,而在局部实现时仍需采用结构化程序设计技术。C语言是一种很好的结构化程序设计语言,因此,笔者论述了C中的的结构化程序设计的方法。

结构化程序设计(STRUCTURED PROGRAMING,简称SP)的概念是由荷兰学者E·W.DUKSTRA等人在20世纪60年代后期提出的,是以模块化设计为中心,将原来较为复杂的问题化简为一系列简单模块的设计,也就是将—个大的计算任务划分为一个个比较小的任务,这些小任务均由函数来完成。而函数既可以是C的标准库函数。也可以是自定义函数。在C中,一个具备一定规模的C程序往往是由多个函数组成,其中必有一个名为main的主函数,由main来调用其他函数,必要的话,其他函数还可以调用另外的函数。同一函数可以被一个或多个函数调用一次或多次。模块的独立性还为扩充已有的系统、建立新系统带来了不少的方便,因为我们可以充分利用现有的模块作积木式的扩展。

结构化程序设计的思想是一个程序的任何逻辑问题,均可用顺序结构、选择结构和循环结构这3种基本结构来描述。顺序结构的程序流程是按语句的书写顺序依次执行;选择结构是对给定条件进行判断,根据判断结果决定执行两分支中的一个分支或多分支中的一个分支;循环结构是在给定条件成立的情况下,反复执行某个程序段。实现这些程序流程的语句都是流程控制语句。流程控制语句在程序设计中起着重要的作用,通过3种基本控制结构使结构化程序具有唯一的人口和出口,没有死循环,而且程序的静态形式与动态执行形式之间具有良好的对应关系。在C语言中,有4种语句是顺序执行的:①空语句,光有一个分号“;”作为语句结束符,它表示什么也不做。②表达式语句,表达式后面加一个分号,表达式语句主要有赋值语句、自加减运算符构成的语句和逗号表达式语句。③函数调用语句,它是由一个函数调用加上一个分号组成的。④复合语句,由“{”和“}”把一些变量说明和语句组合放在一起,又称为语句块。选择语句有if语句和switch语句。循环语句有for,while和do-while语句以及一些辅助流程转向语句如continue,break,goto等。顺序结构,选择结构和循环结构共同作为各种复杂程序的基本构造单元,由这3种结构经过反复嵌套构成的程序称为结构化程序,也就是说,结构化程序是由上述3种基本结构组成的。但如果在编程过程中无限制地使用转移语句(goto),会使程序的控制流程强制性地向前或向后跳转而导致程序的流程无序可循,结构杂乱无章。结构化构造减少了程序的复杂性,提高了可靠性、可测试性和可维护性,使用少数的基本结构,就可使程序逻辑结构清晰,易读易懂,并且容易验证程序的正确性。对—个初学计算机语言的人来说。最重要的就是要有正确的程序流程概念,不仅要懂得而且要灵活应用。由此可见,用结构化方法设计的结构是清晰的,有利于编写出结构良好的程序。因此。结构化程序设计方法的主要原则可以概括为自顶向下,逐步求精,模块化,限制使用goto语句。将程序设计针对的问题进行分解,直到分解到对应于一个个功能更简单,又独立的模块,每个模块再分解到上述3种基本程序结构。

第9篇:c程序设计范文

关键词:C语言;程序设计;经典教材;计算机教育

中图分类号:G642 文献标识码:B

1引言

只要人们提到学习C语言,都会不由自主地和谭浩强三个字联系在一起,特别是20世纪80年代以后的学生,都是在谭老师的《BASIC程序设计》、《FORTRAN语言》、《C程序设计》的指引下走过来的。特别是20世纪的90年代中后期,全国非计算机专业学生的计算机应用能力等级考试,将C语言纳入到考试的范畴,C语言便进入大学计算机公共基础课的讲堂,谭老师的《C程序设计》因为系统性强、通俗易懂、例题丰富,并且实用性强,很适合初学者,瞬时风靡各大高校,成为许多理工科专业学生书包中的必备书籍。多年的一线教学体会,我始终推荐该书为使用教材或主要参考书。

2适用各类学习对象

笔者从20世纪90年代中期开始讲授C语言,至今已有15年,授课对象有计算机专业和非计算机专业的学生,也有大专生和社会上成人教育的函授学员,使用的教材主要是谭老师的《C程序设计》,从第一版到第二版、第三版,同学们都觉得这本书好,从没有学生对选用这本教材提出异议。事实上,国内许多高校的非计算机专业用谭老师的书作为“C语言程序设计”课的教材,而且许多高校的计算机专业同样也用谭教授的书作为“C语言程序设计”课的教材,自学C语言程序设计的读者更是不约而同地选择谭教授的书作为叩开C语言大门的入门书。

最初学习C语言的主要是计算机专业学生,而且大都是作为第二语言开设的,后来才逐渐演变成作为第一语言,而部分非计算机专业的学生也有这种历程。当C语言作为第一语言开设后,《C程序设计》的第二版便增加了“算法”,并安排在第二章(C语言概述之后),使学生首先掌握常用算法(如求一批数的累加和、累乘积,判断某年是否为闰年,判断一个大于等于3的正整数是否为素数等算法)的编程思想,而后再讲解具体的语法定义、规则,以及算法的具体实现,将程序语言的讲解与算法的分析有机地结合起来,同时知识的讲解有螺旋式上升的趋势,非常符合初学者的认知规律,受到各种学习对象的欢迎。记得有一年上成教的课,当时成教教材管理部门选用了其他教材并发给了学生,笔者在第一次上课时便将谭老师的《C程序设计》作为主要的参考书推荐给了学生。上了两次课后,许多同学反映:“老师,我们这本教材没有谭浩强那本讲得清楚”,笔者后来向成教学院的有关人员提出下一届更换教材的建议,以后使用的教材都是谭老师的《C程序设计》这本教材。

3内容全面、结构清晰

《C程序设计》一书涵盖了程序设计基础知识和C语言程序设计的全部内容,并介绍了大量常用算法。在C语言中,数据类型丰富,运算符也比较多,程序设计自由度大,这些都给初学者带来了较大的学习难度。本书从C语言的结构开始,从最简单的输出“This is a C program.”、“求两数之和”、“求两个数中最大者”实例出发,将基本的程序结构中应至少有一个输出、最简单的变量定义和使用、C程序是由函数构成的知识点讲解得非常清晰,只要懂点英文,就能读懂程序。进而介绍具体的数据类型、运算符、表达式、基本的输入输出函数,使初学者很快就能编写出比较简单的程序,看到自己的学习效果,很有成就感。而后开始介绍稍复杂的程序结构(选择结构、循环结构)和数据类型(数组),并结合图例讲解和实现常用的算法。在函数一章通过利用前面的讲过的实例复习已学的知识点,同时也降低了学习函数的难度。在读者会编写基本的C程序后,才开始介绍C语言的特色部分,如编译预处理、指针、结构体、共同体、位运算文件等,将C语言程序设计的知识点全部展开,难度逐渐地增加,而没有采取在讲解函数之前先讲解指针的做法。这种循序渐进、螺旋式的教学内容安排非常符合认知规律。

4深入浅出、讲解透彻

大学教材是供人们使用的,它既用于老师教,又供学生自学,也可作为有关人员的参考用书。它不但要强调基础知识和系统的完整性,而且也能使人通过自学就可能进入一个新的发展领域。这就要求一本好的教材既要内容完整,同时又必须能够做到深入浅出,讲解透彻。《C程序设计》一书各个章节的编写通过提出问题、分析问题、解决问题,然后再归纳总结的方法,将复杂难懂的抽象概念与实际应用实例结合,与形象的比喻科学地结合,使其变得容易理解,并与计算机的基础知识相结合。如在讲解递归算法时先用求人的年龄问题来讲解递推和回归的过程,而后才讲解经典的汉诺塔问题,同时给出了详尽的数学公式推导过程,并配以图例说明。又如在介绍指针概念中“间接访问”一词时,使用了生动的比喻:“为安全起见,将A钥匙放到另一抽屉B中锁起来,若果需要打开A抽屉,就需要先找出B钥匙,打开B抽屉,取出A钥匙,再打开A抽屉,取出A抽屉中之物,这就是‘间接访问’。”这使读者不仅理解了“间接访问”概念,也加深了对指针概念的理解。再如在介绍变量的存储类型时、介绍指针时都对计算机的存储管理作了清楚的论述。

该书的内容重点突出,难点分散,对C语言中最基本和常用的部分进行了详细的分析和讲解,凡是涉及的内容,都讲得非常透彻、详尽。

5例题难易适度、习题丰富、教学资料齐全

多年的课堂教学过程中,总能体会到本书中例题和习题选择的难度非常适宜,如讲解循环结构时选用计算“1+2+…+100”作为入门的例题,习题中便有计算“1!+2!+…+ 20!”之和,既有相似之处又有新旧知识(循环结构的使用和前面介绍的数据类型及其表示范围)的结合。另外本书通过丰富的习题来丰富常用的实用算法。如在循环一章的习题中将迭代法和二分法引入,通过求方程的根来理解其算法含义和实现过程,在数组一章的习题中引入了“筛选法”、“选择排序法”、“杨辉三角形”等。

计算机程序设计是一门实践性很强的课程,学习时不仅仅需要选择合适的例题,还需要编写足够代码量的程序,仅靠阅读教教材或听课是不可能掌握编程技能的。总有人抱怨说:“课堂上听得很明白,就是课下编程困难”,而学习程序设计最重要的环节就是实践。《C程序设计》一书中每章都附有大量的各种类型习题,并且有配套的习题解答,这不仅有利于学生开阔视野,丰富知识,而且有益于复习、巩固、加深理解和掌握课上所学的知识,提高他们的学习兴趣,培养自学能力,也便于教师设计实验课的教学内容。近年来谭老师讲授《C程序设计》的教学录像也已成为很多教师讲课前的观摩学习课程。

6强调应用意识和应用技能

教材要起一种引导作用,要强调应用意识和应用技巧,应特别注意学科间的联系。《C程序设计》一书将实际生活中数学问题的解决算法、工程应用的常用数值分析方法均作为本书的实例和习题,这不仅有助于培养学生的逻辑思维,而且也有助于学生分析问题和解决问题的应用能力。正因如此,初学程序设计的学生可以达到熟练运用C语言进行小规模应用开发的能力,许多非计算机专业的人士通过自学这本教材,打下了程序设计的基础,后来便使用C语言开发出本专业的应用软件。

7结论

大学教材非常重要。谭老师为人们写下了诸如《BASIC语言》、《FORTRAN语言》、《C程序设计》等深受广大教师和学生欢迎的经典之作。谭老师的《C程序设计》一书对我国普及C语言程序设计起了很大的推动作用,他为计算机教育的普及不懈地努力,取得了巨大的成就,功不可没,真正做到了“桃李满天下”。

参考文献:

精选范文推荐