c语言程序设计开发求职信模版

2025-03-29 版权声明 我要投稿

c语言程序设计开发求职信模版

c语言程序设计开发求职信模版 篇1

尊敬的领导:

工作辛苦了!

您能在繁忙的工作中抽出时间来认真阅读此信,心中不甚感激!我叫XXX,25岁,身高170CM,团员,身体健康,是**理工大学资源环境工程学院的应届毕业生,学的专业是资源环境与城乡规划管理。大学四年来,我勤勉学习,刻苦钻研,积极参与学术研究与实践,掌握了扎实的专业知识,具备实际操作能力和理论研究水平。

我生性乐观、大方、正直、合群;思想积极上进,学习成绩优秀;有强烈的事业心、责任感,有较强的组识能力和社交能力;爱好广泛,具有管理方面的特长。我由于出身于农民家庭,家庭境况不是很好,因此我在校期间连续三年参加了学校组织的勤工助学活动,在此过程中,锻炼了我的自力、自强、自信的性格,并且锻炼得的方面的能力。

在校期间,我学习认真刻苦,学习、掌握了《C语言程序设计》、《AutoCAD》、《ArcView》、《FoxPro》、Offiece系列软件等计算机基本理论知识。

在这个人才日益走向市场,求职竞争日趋激烈的今天,本着锻炼自身的能力和展示自己才能、与同事们携手并进、服务于企业的目的,我来了!在众多的应聘者中,我不一定是最优秀的,但我仍很自信,如果带回的将是失败,我决不会因此而灰心气馁,因为心中已牢固的记住了一句话:错过太阳,你在哭泣时,那么你也会错过星星。这只能代表的是我自荐书写得失败,而不能证明是我做人的失败。

请给我一次尝试工作的机会,我相信在以后的工作中,我会比别人做得更好!

恭候您的回音。

此致

敬礼!

求职者:

11月26日

电子商务专业求职信

土木工程大学生自荐信

酒店商务助理求职信范文

c语言程序设计开发求职信模版 篇2

C / C + + 语言程序设计是计算机专业本科生的专业基础课程,也是大学计算机基础系列课程的核心课程。通过本系列课程的学习,旨在使学生掌握程序编写的基本技能,培养程序设计思想和方法,养成良好的编程风格,编制高效可靠的程序,进而具备灵活利用所学知识解决实际问题的能力。长期以来,高校都在不断地探索和实践关于C /C + + 语言程序设计课程的教学模式。传统的教学一般着重概念和语法规则,缺少学习的实用性和针对性,实验环节与课堂教学环节存在不同程度的脱节。面对繁复枯燥的语法规则和程序结构,学生也很难的有学习兴趣。因此,根据质量工程的相关要求,研究教学改革方案,找出目前C /C + + 语言程序设计课程在教学中存在的主要问题,对现有的教学方法和教学手进行现代化研究与实践,具有十分重要的现实意义。

2 C / C + + 语言程序设计教学现状

本人承担了多年的C /C + + 语言程序设计课程的教学工作,在教学过程中发现了现有教学模式的一些问题和不足,分析总结如下:

( 1) 教学中过度依赖课本,“照本宣科”现象比较普遍。受中学教育模式影响,大多数教师授课时倾向于依赖选定的教材或很少几本参考教材授课,课程章节固化,凡事以课本为主,课本里有什么就讲什么,授课内容“流程化”“格式化”。这虽然有助于教学内容的结构和完整,学生也能直接沿用中学培养的习惯获得知识,但这只不过是“填鸭式”教学的延伸。长此以往,学生学习的主动性会逐渐丧失,对课本外的东西提不起兴趣,学习也只是为了应付考试。

( 2) 过于偏重理论教学,实践教学所占比重较小。在有限的课时教学中,传统方式仅能将基本的、重要的概念、语义语法规则教授给学生,而对其应用方式、更深层次的知识点、探索及发散性的科学问题涉及较少。课程考核也大多片面强调书面成绩,对于C /C + + 语言程序设计这种实践性要求强的课程,书面考试并不能反映出学生对课程的掌握水平,反而误导部分学生靠“死记硬背”课本上的知识点和程序片段蒙混过关。

( 3) 课程衔接性差,在知识体系中,没能很好形成与“计算机文化基础”和“计算机应用基础”的衔接,也没有把C /C + + 语言知识应用于专业问题的描述和求解中。在教学中,缺少利用所学知识解决实际问题的教学引导,书本与现实隔离,很难做到“学为所用”。

针对上述问题,结合本校实际,对C /C + + 语言课程教学的主要环节教学模式、上机实践、课程考核等方面进行了研究与探讨。

3 C / C + + 语言程序设计教学改革与探索

结合C /C + + 课程的特点,针对传统教学中存在的问题,积极进行课堂教学、实验教学和考核方式的改革,具体从以下几个方面进行了一定的探索实践:

3. 1课程教学改革

( 1) 打破课本章节格式,探索“实例驱动式”和“阶梯式”教学方法针对C /C + + 语言程序设计的课程特色,强调“从实践中来,到实践中去”的教学目标。在课程教学中,注意引入具体化的实例,使得概念的抽象都来源于实际的例子。比如在C语言教学中发现很多同学上课时能听懂,看别人的程序也能看懂,但自己动手去写时却无从下手。这种情况不是个例,而是学习语言类课程时大多数学生都存在的问题。在教学中可以结合生活中的实际例子来示范,为学生“看”和“写”搭建桥梁,培养程序设计思想。例如,从做面包到C语言程序编写的示例( 图1) 。在教学中,可以引导学生分步考虑面包的制作工序,操作中需要摒除详细的细节部分,抽象出核心的流程,然后一步一步代入C语言的程序设计结构和语法规则,使得学生对课程内容有熟悉度和参与感。

通过“做面包”的例子,可以结合变量在内存中存储的方式,帮助学生掌握“变量需要先声明才能使用”的知识点,同时也铺垫了函数的概念,还可以进一步扩展加入分支结构( 面包的不同口味) ,循环结构( 制作多份面包) 等。通过动员学生逐步思考,一起动手做面包,把计算思维与有趣的课堂互动结合起来,既提高了学生学习的兴趣,也“润物细无声”地把编程思维传达到学生心中。而后在学生通过课程学习已经建立了一定的编程思维的基础上,再结合我校的卓越工程师计划,把实际项目引入课堂中来,深入引导实例教学,实现学生从“课本学习”到“实践学习”的转变,通过项目实例让学生亲身感受所学知识的用处,也为毕业后的职业发展打下扎实的基础。

另一方面,知识的获取需要一个循序渐进的过程。这就需要教师在备课时,将同类型问题找出来,将这些问题按难易程度排队上课,先让学生解决最简单的问题,再依次提高问题的难度。通过教学,学生对于同类问题的解决就有了比较深刻的认识。比如上面提到的做面包的问题,同一个问题可以分级扩展,从做一份面包到做多份面包,从做单一口味的面包到做多种口味的面包,从做面包到卖面包,进而面包分类,存货处理等等。通过与实际例子结合循序引进,反复强调知识点加深学生印象,打牢基础。C语言的开设一般在大学一年级,此时着重培养学习兴趣和规范学生养成良好的编程习惯,而C + + 的学习着重于面向对象的程序设计,一般开设于大二下学期或者大三上学期,在C + + 面向对象语言学习时,结合类和对象的概念以及继承和派生等等知识点还可以对“做面包”的问题再做进一步扩展,从做面包到做馒头、饼干等各种糕点,鼓励学生动脑思考逐渐扩充功能,可以自己编程开发一个具备制作、买卖、分类、存货处理等功能的糕点铺。教学中可以根据需要切换各种生活场合,提高学生兴趣,强调编程思想源于生活,服务于生活,学生在日常中也会经常回想起课堂所学知识,达到事半功倍的效果。

( 2) 高效利用团队教学资源,体现从计算机基础课到专业课的顺利交接

C / C + + 语言程序设计立足于引导学生建立基本的“人机互动”概念,构建编程思维理念,掌握核心程序设计方法,开发“发现问题,凝练问题,求解问题”的能力。它是计算机基础课到计算机专业课程的重要衔接,所以在课程设计上,要逐步培养学生从“使用计算机工具→理解计算机工作原理→开发计算机软硬件”的计算思维。但这个目的只通过一门课程是无法完成的,在教学过程中,需要利用院系优秀的教学资源,组建教学团队,使得课程选取→大纲制定→计划培养→落实实施形成系统化,脉络化的结构,加强课程之间的衔接和交互,增加知识的穿插讲授,使得各个课程相辅相成,相得益彰,起到事半功倍的作用。通过对不同专业需求的分析,在制定教学大纲时注重课程的衔接,在实际操作中注重教学团队中任课教师课堂情况的反馈,通过强化教学内容和学生掌握情况双重渠道,避免课程之间的脱节。针对一门课程,学生学分的获取和讲授课时的结束并不意味着本门课程的结束,在形成系统化的课程设计后,可以有效利用每门课程的信息反馈,有的放矢的对学生薄弱环节进行再强化,达到扎实学习,学以致用,而不仅仅是应付考试的良性循环机制。

3. 2上机实践改革

计算机语言类课程的学习关键在于动手实践,但即使意识到了实践的重要性,学生真正动手也往往受限于上机时间和实践平台。在传统的实验教学模式下,大多此类课程都由实验指导书作为参照,学生按图索骥的输入一些代码,完成一些任务。评判的方式也大多依赖于教师,学生实践得不到实时反馈,积极性很难调动起来,课下也不会有意识去编程实践。通过借助我校搭建的ACM/ICPC竞赛平台,学生平时有充足的题目可供练习。而且所有题目规范,输入输出格式明确,评判也由机器在后台完成,正确与否也能实时反馈。通过多组数据的测试,竞赛平台能够发现并迫使学生修正编程中存在的容易人为忽略的问题。另外,ACM/ICPC竞赛平台还可以按照班级、年级、专业等排名,学生也能实时监控自己做题的数量、成功率等,并可以通过Q&A的环节进行错误求助并与其他同学沟通。学生的学习积极性一下子就提高了起来,出错的题目,知识点通过讨论也能自己在课余时间解决。

通过与ACM/ICPC竞赛平台的结合,主要实现了以下几个 方面的探索:

( 1) 激发学生学习兴趣,创造兴趣学习小组

在ACM/ICPC的平台的辅助下,激发学生分组分队共同解决问题,成立程序编写互帮互助小组,采用不定时竞赛的方式对各小组进行考评,并辅以奖励和惩罚措施,尽量让每个学生都不落队。通过组队,同学之间也有了更好的沟通渠道,每个人成为团队的一部分,培养了学生的分享和互帮互助的团队合作精神。

( 2) 鼓励学生涉猎算法等相关知识,培养计算思维

通过ACM选拔,ACM战队的主力队员会通过集训学习数论、计算几何、动态规划、二分图、博弈论、网络流等相关知识,但竞赛选拔的队员屈指可数。这些优秀的种子选手和现有的ACM培训资源却未被大多数学生利用。C /C + + 语言类教学和大多数计算机类课程所追求目标,其核心就是培养学生的计算思维。我们采用了通过优秀学生和ACM集训队带队教师的不定期讲座和培训,以及培训资料等资源的共享来吸引更多的学生参与到程序设计的队伍中来,并已经在学生中通过口耳相传起到了一定的影响力。在上机课中适度引入部分难度稍大的,需要借助其他相关知识才能解决的问题,鼓励学生查阅资料,自己动脑,动手去分析和解决问题,养成良好的主动学习习惯。

3. 3课程考核改革

课程设置的目的不是考试,而是解决问题,特别对于C /C + + 语言程序设计类需要实践的课程尤其是这样。传统的卷面考试不仅不能反映学生对课程的掌握程度,反而诱导出诸如靠划重点、死记硬背程序企图蒙混过关拿到学分的问题。所以在对C /C + + 语言程序设计考核时,我们采用了平时成绩和期末机考相结合的方式。考试成绩分三部分组成,上课活跃度占30% ,分组实践占30% ,期末机考占40% 。其中,上课活跃度包括出勤次数和上课提问情况; 分组实践指通过小组成员共同努力分析、解决实例的情况,一般在上机时根据进度提出难度稍高的问题,鼓励学生通过团队协作,查阅课外资料等来完成; 期末机考是从ACM平台上抽取一部分题目作为期末考核,考察学生实际编程能力。

4结束语

在研究与探索C /C + + 语言程序设计教学的过程中,通过“阶梯式”“实例驱动”的教学方法,辅以ACM竞赛平台,优化配置团队教学资源,追求实用性、系统化、高效率的课程实现,全面提升学生的对程序设计的实践应用能力。通过教学改革,提高学生在学习中发现问题、分析问题和解决问题的能力,培养学生编程思维,计算思维。实践表明,本文提出的教学改进方法可以激发学生学习的热情和兴趣,有效地提高了C /C + + 语言程序设计课程的教学效果。

摘要:针对C/C++语言程序设计课程语法规则繁琐、概念抽象等特点,结合我校实际情况,通过深入分析课堂教学、上机实验及课程考核等教学环节,从教学方法、实验设计及课程考核三方面提出改进方案,提出了以培养学生计算思维为最终目标,以提高学生学习兴趣,激发学生学习积极性为目的,以“阶梯式”“实例驱动”为教学方法,整合教学团队共同促进教学的模式。通过教学改革,激发了学生对C/C++语言程序设计的学习兴趣,培养了学生的动手实践能力,提高了教学质量水平。

浅探《C语言程序设计》教学 篇3

关键词:C语言;项目化教学;教学方法

中图分类号:TP312.1-4 文献标识码:A 文章编号:1674-7712 (2014) 18-0000-01

《C语言程序设计》作为计算机专业的基础课,在整个课程体系中占有重要地位。在C语言教学过程中,教师的教学方法和学生的理解接受能力的差异,对教学效果都会产生直接的影响。总结多年来的教学经验和教学体会,结合学生在学习程序设计类课程的思维规律和模式,把一些经验和方法总结出来,希望能对C语言教学有所帮助。

一、现行教学和学习中存在的问题

现行教学中理论课与实践课相对分离,不能相互促进。理论课中往往只注重对教材知识的分析和灌输,而在实践课程中,老师很难监控到每个学生,了解他们是否都在认真编写、调试程序。这就造成理论课没有起到为实践课打基础的作用,实践课也没有起到巩固、应用理论课的作用。《C语言程序设计》是一个逻辑性很强的课程。学生在面对具体的程序设计时遇到的问题与教材中的内容相距甚远,这使大多数同学感到无从下手。这其中的原因可以分成两类:一方面目前高校使用的大多数教材中,结构都基本相同。在每一章介绍完了概念之后,提供一些例题解释相关概念的使用方法,并在章节结束后针对本章中出现的内容提供一些练习题。考试也主要是测试学生对于教材内容的掌握程度,而与实际应用相距较大。这种考试实际上主要是测试学生对书本中的基本知识的掌握程度,而忽略了对学生解决实际问题的能力的培养。另一方面为了应付考试,学生更多注意的是教材中的典型例题与老师指定的重点内容,对于程序的系统概念没有真正理解,特别是没有程序整体设计的概念。这样做的结果就是学生在学习时一切围绕老师讲课的内容,特别是老师讲授的例题。学生在学习的过程中,没有注意如何综合运用相关内容来解决具体问题,导致学生在学完程序设计课程进入应用阶段时,面对具体的专业设计要求无从下手。

二、提高教学效果的方法和途径

(一)明确课程目标。本课程的目标主要是提高学生解决实际问题的能力,适应社会需求。对C语言程序设计课程的教学而言,强调实践性是在教学中特别重要的问题。老师的教学不应仅仅是传授知识,应该以培养学生的实际应用能力为主。C语言的内容繁多,在有限的课时内不可能也不必要面面俱到,所以必须突出重点,突出实用性,关键在于教会学生正确运用C语言编写程序,一些细节、具体规则和进一步的知识可以让学生在今后的应用中来不断学习和掌握。教师应始终坚持以应用为中心,以算法为基础,以培养学生的实践能力为核心,突出技术实用性和再学习能力的培养。

(二)进行教学改革。1.教学内容改革。高职学校学生的培养就是要直接面对社会需求,招之即能用。因此,程序设计课程要以社会对编程能力的需求和技术发展为依据,调整教学大纲和教学内容,以适应技术岗位能力要求,设计课程体系。在课程设置与建设中,要充分体现教学内容在训练和提高学生实践能力方面的要求,强化学生的实际开发和应用能力。总结本人多年的教学经验,结合其他老师成功的教学方法,采用项目化教学方法可以达到很好的效果。这个项目应具有以下几个特点:(1)实用性。本项目就是一个具体的实际需求,是解决现实性中一个实际问题而设计,这样也能提高学生的兴趣和热情;(2)完整性。本项目的程序设计是系统的、完整的,要能全面运用整个课程学习的知识,案例的设计贯穿整个课程的学习,随着课程的学习不断完善。

2.改变教学思想和方法。培养学生对C语言的兴趣及正确的思维模式。《C语言程序设计》注重由设计算法到书写程序并进行调试的整个过程,显得抽象、复杂,这也是大多数学生抱怨程序设计太难、太深奥、不好学的主要原因。在教学过程中,先介绍项目的整个程序设计框架,目的是使学生先对程序有个初步的印象,再结合教材,简单介绍该例子中用到的语句,让学生对该语言的学习有一个大概的了解,避免学生对学习语言望而生畏。整个教学过程中应该把“解题思路、方法和步骤”当作授课的重点,从而让学生明白如何分析、解决实际问题,逐渐培养学生进行程序设计的正确思维模式。计算机语言程序设计中算法是其灵魂,是教学重点,也是教学难点,而语言只是表示形式。没有正确的算法,计算机将解决不了任何问题。对于C语言所涉及到的算法,应进行部分精讲多练。通过案例分析,重点讲解程序设计的思想和方法,辅以語言知识的介绍,将课程内容分为若干个主题,以项目程序设计为贯穿各主题的主线。每个主题的教学过程由“要点讲解”、“练习/上机实践”和“疑难解答”三个阶段组成,然后提出项目中的问题,以学生独立完成为主,教师只提供必要的辅导,培养学生探索问题和解决问题的能力,更有利于创新能力的培养。整个课程教学围绕一个工程项目进行,通过逐步拓展的实训项目和设计,将每一阶段的学习进行小结性的贯穿与能力提高。将C的知识点都溶化到项目的程序编写中。

3.改革课程考核方式。(1)平时上机训练时给学生留一些编程习题,每次根据学生编写情况进行测评并占据期末总成绩30%;(2)期末前,要求学生完成本课程项目的整体设计,考核学生综合解决问题的能力,占据期末总成绩30%;(3)期末进行理论考试,占期末总成绩的40%。

(三)展示学生作品,激发学生的学习欲望。计算机软件课程具有多样性、复杂性和求异性特点,我们要针对每个学生任务完成的情况,让同学们展示自己的学生成果,及时肯定学生的成绩,这样会有利于激发学生的学习热情,保持学生的学习兴趣,对学生的后续学习将产生强大的动力和自信心。

(四)培养学生的自学能力和创造性。学生学习计算机语言的最终目的是编写满足实际需求的程序,所以在教学中教授的不仅仅是具体语言的语法知识,更重要的是通过这门语言学习,培养学生遇到实际问题自己分析问题、解决问题的能力。我们可以通过给学生布置作业的形式让同学们自学,老师既要要求学生独立思考、自主学习,又要鼓励学生间进行协作学习。教师可以分配一些比较复杂的问题,由几个学生组成一个小组合作解决,这样同学们可以互相探讨学习方法,协作解决一些遇到的问题。通过解决问题,锻炼学生综合应用知识的能力、培养其创造性和合作精神。

参考文献:

c语言程序设计开发求职信模版 篇4

电子计算机所使用的是由“0”和“1”组成的二进制数,二进制是计算机的语言的基础。计算机发明之初,人们只能降贵纡尊,用计算机的语言去命令计算机干这干那,一句话,就是写出一串串由“0”和“1”组成的指令序列交由计算机执行,这种语言,就是机器语言。想象一下老前辈们在打孔机面前数着一个一个孔的情景,嘘,小声点,你的惊吓可能使他们错过了一个孔,结果可能是导致一艘飞船飞离轨道阿。

为了减轻使用机器语言编程的痛苦,人们进行了一种有益的改进:用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串,比如,用“A D D”代表加法,“MO V”代表数据传递等等,这样一来,人们很容易读懂并理解程序在干什么,纠错及维护都变得方便了,这种程序设计语言就称为汇编语言,即第二代计算机语言。然而计算机是不认识这些符号的,这就需要一个专门的程序,专门负责将这些符号翻译成二进制数的机器语言,这种翻译程序被称为汇编程序。因为汇编指令和机器语言之间有着一一对应的关系,这可比英译汉或汉译英简单多了。

高级语言是偏向人,按照人的思维方式设计的,机器对这些可是莫名奇妙,不知所谓。鱼与熊掌的故事在计算机语言中发生了。于是必须要有一个桥梁来衔接两者,造桥可不是一件简单的事情。当你越想方便,那桥就得越复杂。那高级语言是如何变成机器语言的呢,这个过程让我慢慢道来。

编译:将源代码转换为机器可认识代码的过程。编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序。C源程序->编译预处理->编译->优化程序->汇编程序->链接程序->可执行文件1.编译预处理 读取c源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理。伪指令主要包括以下四个方面:(1)宏定义指令,如# define Name TokenString,#undef等。对于前一个伪指令,预编译所要作得的是将程序中的所有Name用TokenString替换,但作为字符串常量的Name则不被替换。对于后者,则将取消对某个宏的定义,使以后该串的出现不再被替换。

(2)条件编译指令,如#ifdef,#ifndef,#else,#elif,#endif,等等。这些伪指令的引入使得程序员可以通过定义不同的宏来决定编译程序对哪些代码进行处理。预编译程序将根据有关的文件,将那些不必要的代码过滤掉。

(3)头文件包含指令,如#include “FileName”或者#include 等。在头文件中一般用伪指令#define定义了大量的宏(最常见的是字符常量),同时包含有各种外部符号的声明。采用头文件的目的主要是为了使某些定义可以供多个不同的C源程序使用。因为在需要用到这些定义的C源程序中,只需加上一条#include语句即可,而不必再在此文件中将这些定义重复一遍。预编译程序将把头文件中的定义统统都加入到它所产生的输出文件中,以供编译程序对之进行处理。包含到c源程序中的头文件可以是系统提供的,这些头文件一般被放在/usr/include目录下。在程序中#include它们要使用尖括号(<>)。另外开发人员也可以定义自己的头文件,这些文件一般与c源程序放在同一目录下,此时在#include中要用双引号(“")。

(4)特殊符号,预编译程序可以识别一些特殊的符号。例如在源程序中出现的LINE标识将被解释为当前行号(十进制数),FILE则被解释为当前被编译的C源程序的名称。预编译程序对于在源程序中出现的这些串将用合适的值进行替换。预编译程序所完成的基本上是对源程序的“替代”工作。经过此种替代,生成一个没有宏定义、没有条件编译指令、没有特殊符号的输出文件。这个文件的含义同没有经过预处理的源文件是相同的,但内容有所不同。下一步,此输出文件将作为编译程序的输出而被翻译成为机器指令。2.编译阶段

经过预编译得到的输出文件中,将只有常量。如数字、字符串、变量的定义,以及C语言 的关键字,如main,if,else,for,while,{,},+,-,*,,等等。预编译程序所要作得工作就是通过词法分析和语法分析,在确认所有的指令都符合语法规则之后,将其翻译成等价的中间代码表示或汇编代码。3.优化阶段

优化处理是编译系统中一项比较艰深的技术。它涉及到的问题不仅同编译技术本身有关,而且同机器的硬件环境也有很大的关系。优化一部分是对中间代码的优化。这种优化不依赖于具体的计算机。另一种优化则主要针对目标代码的生成而进行的。上图中,我们将优化阶段放在编译程序的后面,这是一种比较笼统的表示。

对于前一种优化,主要的工作是删除公共表达式、循环优化(代码外提、强度削弱、变换 循环控制条件、已知量的合并等)、复写传播,以及无用赋值的删除,等等。后一种类型的优化同机器的硬件结构密切相关,最主要的是考虑是如何充分利用机器的各个硬件寄存器存放的有关变量的值,以减少对于内存的访问次数。另外,如何根据机器硬件执行指令的特点(如流水线、RISC、CISC、VLIW等)而对指令进行一些调整使目标代码比较短,执行的效率比较高,也是一个重要的研究课题。经过优化得到的汇编代码必须经过汇编程序的汇编转换成相应的机器指令,方可能被机器执行。4.汇编过程

汇编过程实际上指把汇编语言代码翻译成目标机器指令的过程。对于被翻译系统处理的每一个C语言源程序,都将最终经过这一处理而得到相应的目标文件。目标文件中所存放的也就是与源程序等效的目标的机器语言代码。目标文件由段组成。通常一个目标文件中至少有两个段:

代码段 该段中所包含的主要是程序的指令。该段一般是可读和可执行的,但一般却不可写。数据段 主要存放程序中要用到的各种全局变量或静态的数据。一般数据段都是可读,可写,可执行的。

UNIX环境下主要有三种类型的目标文件:

(1)可重定位文件 其中包含有适合于其它目标文件链接来创建一个可执行的或者共享 的目标文件的代码和数据。

(2)共享的目标文件 这种文件存放了适合于在两种上下文里链接的代码和数据。第一 种事链接程序可把它与其它可重定位文件及共享的目标文件一起处理来创建另一个目标文 件;第二种是动态链接程序将它与另一个可执行文件及其它的共享目标文件结合到一起,创建一个进程映象。

(3)可执行文件 它包含了一个可以被操作系统创建一个进程来执行之的文件。

汇编程序生成的实际上是第一种类型的目标文件。对于后两种还需要其他的一些处理方能 得到,这个就是链接程序的工作了。5.链接程序

由汇编程序生成的目标文件并不能立即就被执行,其中可能还有许多没有解决的问题。例 如,某个源文件中的函数可能引用了另一个源文件中定义的某个符号(如变量或者函数调 用等);在程序中可能调用了某个库文件中的函数,等等。所有的这些问题,都需要经链 接程序的处理方能得以解决。

链接程序的主要工作就是将有关的目标文件彼此相连接,也即将在一个文件中引用的符号 同该符号在另外一个文件中的定义连接起来,使得所有的这些目标文件成为一个能够被操 作系统装入执行的统一整体。

根据开发人员指定的同库函数的链接方式的不同,链接处理可分为两种:

(1)静态链接 在这种链接方式下,函数的代码将从其所在地静态链接库中被拷贝到最 终的可执行程序中。这样该程序在被执行时这些代码将被装入到该进程的虚拟地址空间中。静态链接库实际上是一个目标文件的集合,其中的每个文件含有库中的一个或者一组相 关函数的代码。

(2)动态链接 在此种方式下,函数的代码被放到称作是动态链接库或共享对象的某个 目标文件中。链接程序此时所作的只是在最终的可执行程序中记录下共享对象的名字以及 其它少量的登记信息。在此可执行文件被执行时,动态链接库的全部内容将被映射到运行 时相应进程的虚地址空间。动态链接程序将根据可执行程序中记录的信息找到相应的函数 代码。

对于可执行文件中的函数调用,可分别采用动态链接或静态链接的方法。使用动态 链接能够使最终的可执行文件比较短小,并且当共享对象被多个进程使用时能节约一些内 存,因为在内存中只需要保存一份此共享对象的代码。但并不是使用动态链接就一定比使 用静态链接要优越。在某些情况下动态链接可能带来一些性能上损害。

经过上述五个过程,C源程序就最终被转换成可执行文件了

上一节我们介绍了编程语言的种类,其中包括机器语言、汇编语言和高级语言。

C/C++程序编译步骤详解

C/C++语言很多人都比较熟悉,这基本上是每位大学生必学的一门编程语言,通常还都是 作为程序设计入门语言学的,并且课程大多安排在大一。刚上大学,孩子们还都很乖,学习也比较认真,用心。所以,C/C++语言掌握地也都不错,不用说编译程序,就是写个上 几百行的程序都不在话下,但是他们真的知道C/C++程序编译的步骤么?

我想很多人都不甚清楚,如果他接下来学过“编译原理”,也许能说个大概。VC的“舒适 ”开发环境屏蔽了很多编译的细节,这无疑降低了初学者的入门门槛,但是也“剥夺”了 他们“知其所以然”的权利,致使很多东西只能死记硬背,遇到相关问题就“丈二”。实 际上,我也是在学习Linux环境下编程的过程中才逐渐弄清楚C/C++源代码是如何一步步变 成可执行文件的。

总体来说,C/C++源代码要经过:预处理、编译、汇编和链接四步才能变成相应平台下的 可执行文件。大多数时候,程序员通过一个命令就能完成上述四个步骤。比如下面这段C 的“Hello world!”代码: File: hw.c #include stdio.h> int main(intargc, char *argv[]){ printf(”Hello World!n“);return 0;} 如果用gcc编译,只需要一个命令就可以生成可执行文件hw: xiaosuo@gentuxhw $ gcc-o hwhw.c xiaosuo@gentuxhw $./hw Hello World!我们可以用-v参数来看看gcc到底在背后都做了些什么动作: Reading specs from /usr/lib/gcc/i686-pc-linux-gnu/3.4.6/specs Configured with: /var/tmp/portage/sys-devel/gcc-3.4.6-r2/work/gcc-3.4.6/configure--prefix=/usr--bindir=/usr/i686-pc-linux-gnu/gcc-bin/3.4.6-disable-altivec--enable-nls--without-included-gettext--with-system-zlib-enable-shared--enable-threads=posix--enable-__cxa_atexit--enable-clocale=gnu Thread model: posix gcc version 3.4.6(Gentoo 3.4.6-r2, ssp-3.4.6-1.0, pie-8.7.10)/usr/libexec/gcc/i686-pc-linux-gnu/3.4.6/cc1-quiet-v hw.c-quiet-dumpbase hw.c-mtune=pentiumpro-auxbasehw-version-o /tmp/ccYB6UwR.s ignoring nonexistent directory ”/usr/local/include“ ignoring nonexistent directory ”/usr/lib/gcc/i686-pc-linux-gnu/3.4.6/../../../../i686-pc-linux-gnu/include“ #include ”...“ search starts here: #include...> search starts here: /usr/lib/gcc/i686-pc-linux-gnu/3.4.6/include /usr/include End of search list.GNU C version 3.4.6(Gentoo 3.4.6-r2, ssp-3.4.6-1.0, pie-8.7.10)(i686-pc-linux-gnu)compiled by GNU C version 3.4.6(Gentoo 3.4.6-r2, ssp-3.4.6-1.0, pie-8.7.9).GGC heuristics:--paramggc-min-expand=81--paramggc-min-heapsize=97004 /usr/lib/gcc/i686-pc-linux-gnu/3.4.6/../../../../i686-pc-linux-gnu/bin/as-V-Qy-o /tmp/ccq8uGED.o /tmp/ccYB6UwR.s GNU assembler version 2.17(i686-pc-linux-gnu)using BFD version 2.17 /usr/libexec/gcc/i686-pc-linux-gnu/3.4.6/collect2--eh-frame-hdr-m elf_i386-dynamic-linker /lib/ld-linux.so.2-o hw /usr/lib/gcc/i686-pc-linux-gnu/3.4.6/../../../crt1.o /usr/lib/gcc/i686-pc-linux-gnu/3.4.6/../../../crti.o /usr/lib/gcc/i686-pc-linux-gnu/3.4.6/crtbegin.o-L/usr/lib/gcc/i686-pc-linux-gnu/3.4.6-L/usr/lib/gcc/i686-pc-linux-gnu/3.4.6-L/usr/lib/gcc/i686-pc-linux-gnu/3.4.6/../../../../i686-pc-linux-gnu/lib-L/usr/lib/gcc/i686-pc-linux-gnu/3.4.6/../../../tmp/ccq8uGED.o-lgcc--as-needed-lgcc_s--no-as-needed-lc-lgcc--as-needed-lgcc_s--no-as-needed /usr/lib/gcc/i686-pc-linux-gnu/3.4.6/crtend.o /usr/lib/gcc/i686-pc-linux-gnu/3.4.6/../../../crtn.o 稍微整理一下,去掉一些冗余信息后,如下: cc1 hw.c-o /tmp/ccYB6UwR.s as-o /tmp/ccq8uGED.o /tmp/ccYB6UwR.s ld-o hw /tmp/ccq8uGED.o 以上三个命令分别对应于编译步骤中的预处理+编译、汇编和连接。预处理和编译还是放 在了一个命令(cc1)中进行的,可以把它再次拆分为以下两步: cpp-o hw.ihw.c cc1 hw.i-o /tmp/ccYB6UwR.s 一个精简过的能编译以上hw.c文件的Makefile如下:.PHONY: clean all: hw hw: hw.o ld-dynamic-linker /lib/ld-linux.so.2-o hw /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/gcc/i686-pc-linux-gnu/3.4.6/crtbegin.o hw.o-lc /usr/lib/gcc/i686-pc-linux-gnu/3.4.6/crtend.o /usr/lib/crtn.o hw.o: hw.s as-o hw.ohw.s hw.s: hw.i /usr/libexec/gcc/i686-pc-linux-gnu/3.4.6/cc1-o hw.shw.c hw.i: hw.c cpp-o hw.ihw.c clean: rm-rfhw.ihw.shw.o 当然,上面Makefile中的一些路径是我系统上的具体情况,你的可能与我的不同。接下来我们按照编译顺序看看编译器每一步都做了什么。首先是预处理,预处理后的文件hw.i: # 1 ”hw.c“ # 1 ”“ # 1 ”“...__extension__ typedef __quad_t __off64_t;__extension__ typedefint __pid_t;__extension__ typedefstruct { int __val[2];} __fsid_t;...extern int remove(__const char *__filename)__attribute__((__nothrow__));extern int rename(__const char *__old, __const char *__new)__attribute__((__nothrow__));...int main(intargc, char *argv[]){ printf(”Hello World!n“);return 0;} 注:由于文件比较大,所以只留下了少部分具有代表性的内容。

可以看见预处理器把所有要包含(include)的文件(包括递归包含的文件)的内容都添 加到了原始的C源文件中,然后把其输出到输出文件,除此之外,它还展开了所有的宏定 义,所以在预处理器的输出文件中你将找不到任何宏。这也提供了一个查看宏展开结果的 简便方法。

第二步“编译”,就是把C/C++代码“翻译”成汇编代码:.file ”hw.c“.section.rodata.LC0:.string ”Hello World!n“.text.globl main.type main, @function main: pushl�p movl %esp, �p subl $8, %esp andl $-16, %esp movl $0, �x addl $15, �x addl $15, �x shrl $4, �x sall $4, �x subl�x, %esp subl $12, %esp pushl $.LC0 call printf addl $16, %esp movl $0, �x leave ret.size main,.-main.section.note.GNU-stack,”“,@progbits.ident ”GCC:(GNU)3.4.6(Gentoo 3.4.6-r2, ssp-3.4.6-1.0, pie-8.7.10)" 这个汇编文件比预处理后的C/C++文件小了很多,去除了很多不必要的东西,比如说没用 到的类型声明和函数声明等。

第三步“汇编”,将第二步输出的汇编代码翻译成符合一定格式的机器代码,在Linux上 一般表现为ELF目标文件。xiaosuo@gentuxhw $ file hw.o hw.o: ELF 32-bit LSB relocatable, Intel 80386, version 1(SYSV), not stripped 最后一步“连接”,将上步生成的目标文件和系统库的目标文件和库文件连接起来,最终 生成了可以在特定平台运行的可执行文件。为什么还要连接系统库中的某些目标文件(crt1.o, crti.o等)呢?这些目标文件都是用来初始化或者回收C运行时环境的,比如

说堆内存分配上下文环境的初始化等,实际上crt也正是C RunTime的缩写。这也暗示了另 外一点:程序并不是从main函数开始执行的,而是从crt中的某个入口开始的,在Linux上

C语言课程设计程序 篇5

//定义学生结构体,st数组。

int score[5];float jqave;int rank;}st[27];

struct kecheng { int num;char kcname[20];

//定义课程结构体,course数组.float xuefen;float biaozhuncha;int youxiu;int lianghao;int zhongdeng;int jige;int bujige;

}course[5];

void readdata1(){

int i,j;

char str1[100];

FILE *f1;

f1=fopen(“c:xinji110213.txt”,“r”);

fgets(str1,100,f1);// printf(“%-s”,str1);

for(i=0;i<27;i++)

{

fscanf(f1,“%d%s”,&st[i].num,st[i].name);

// printf(“%-4d%-10s”,st[i].num,st[i].name);

for(j=0;j<5;j++)

{

fscanf(f1,“%d”,&st[i].score[j]);// printf(“%-9d”,st[i].score[j]);}

// printf(“n”);}

fclose(f1);}

void readdata2(){

int k;

char str2[100];

FILE *f2;

f2=fopen(“c:xj02kc.txt”,“r”);

fgets(str2,100,f2);// puts(str2);

for(k=0;k<5;k++)

{

fscanf(f2,“%d%s%f”,&course[k].num,course[k].kcname,&course[k].xuefen);

// printf(“%-8d%-10s%2.1fn”,course[k].num,course[k].kcname,course[k].xuefen);

}

fclose(f2);} void jqave(){ int i,j;float s=0,sum=0;for(i=0;i<27;i++)

{

for(j=0;j<5;j++)

{

s+=course[j].xuefen;

sum+=st[i].score[j]*course[j].xuefen;

}

st[i].jqave =sum/s;

} }

void ranking()

{ int i,j;

for(i=0;i<27;i++){

st[i].rank=1;

for(j=0;j<27;j++)

if(st[i].jqave

st[i].rank=st[i].rank+1;} }

void paiminghoudechengji(){ int i,j;FILE *fp;fp=fopen(“c:MC110213.txt”,“w”);printf(“ 名次 学号

姓名

数学分析

高等代数

C语言

大学物理

大学艺术

加权平均分 n”);fprintf(fp,“ 名次 学号

姓名

数学分析

高等代数

C语言

大学物理

大学艺术

加权平均分 n”);

for(i=0;i<27;i++)

{

printf(“%3d%5d%8s”,st[i].rank,st[i].num,st[i].name);

fprintf(fp,“%3d%5d%8s”,st[i].rank,st[i].num,st[i].name);

for(j=0;j<5;j++)

{

printf(“%10d”,st[i].score[j]);

fprintf(fp,“%10d”,st[i].score[j]);

}

printf(“%12.2fn”,st[i].jqave);

fprintf(fp,“%12.2fn”,st[i].jqave);} fclose(fp);}

void xiechengji(){ int j;FILE *fp;fp=fopen(“c:xj1110213.txt”,“w”);fprintf(fp,“ 编号

课程名称

课程学分

标准差

优秀

良好

中等

及格

不及格

n”);printf(“ 编号

课程名称

课程学分

标准差

优秀

良好

中等

及格

不及格

n”);for(j=0;j<5;j++)

{

printf(“%3d%15s%10.2f”,course[j].num,course[j].kcname,course[j].xuefen);fprintf(fp,“%3d%15s%10.2f”,course[j].num,course[j].kcname,course[j].xuefen);

printf(“%10.1f%8d%8d%8d%8d%6dn”,course[j].biaozhuncha,course[j].youxiu,course[j].lianghao,course[j].zhongdeng,course[j].jige,course[j].bujige);

fprintf(fp,“%10.1f%8d%8d%8d%8d%6dn”,course[j].biaozhuncha,course[j].youxiu,course[j].lianghao,course[j].zhongdeng,course[j].jige,course[j].bujige);

} fclose(fp);}

void pingjunfen(){ int i,j;

for(j=0;j<5;j++)

{

float zongfen=0,pingjunfen=0;

for(i=0;i<27;i++)

zongfen+=st[i].score[j];

pingjunfen=zongfen/27;

} }

void biaozhuncha(){

int i,j;

for(j=0;j<5;j++){

float zongfen=0,pingjunfen=0,x=0;

for(i=0;i<27;i++)

zongfen+=st[i].score[j];

pingjunfen=zongfen/27;

for(i=0;i<27;i++)

x+=(st[i].score[j]-pingjunfen)*(st[i].score[j]-pingjunfen);

course[j].biaozhuncha=(float)sqrt((x/27));

} }

void count(){

int i,j;

for(i=0;i<5;i++)

{

course[i].youxiu=0,course[i].lianghao=0,course[i].zhongdeng=0,course[i].jige=0,course[i].bujige=0;

for(j=0;j<27;j++)

{

if(st[j].score[i]<60)

course[i].bujige++;

else if(st[j].score[i]<=69)

course[i].jige++;

else if(st[j].score[i]<=79)

course[i].zhongdeng++;

else if(st[j].score[i]<=89)

course[i].lianghao++;

else

course[i].youxiu++;

} } }

void chengjitiao(){

int i,j;FILE *fp;fp=fopen(“c:cjt110213.txt”,“w”);do

{ printf(“请输入你要查询的编号

退出请按零”);

scanf(“%d”,&i);

fprintf(fp,“ 编号

姓名

数学分析

高等代数

C语言

大学物理

大学艺术

加权平均分

名次n”);printf(“ 编号

姓名

数学分析

高等代数

C语言

大学物理

大学艺术

加权平均分

名次n”);if(i>=0&&i<=26)fprintf(fp,“%3d%10s”,st[i-1].num,st[i-1].name);

printf(“%3d%10s”,st[i-1].num,st[i-1].name);for(j=0;j<5;j++){

printf(“%9d”,st[i-1].score[j]);

fprintf(fp,“%9d”,st[i-1].score[j]);} printf(“%12.2f%8dn”,st[i-1].jqave,st[i-1].rank);fprintf(fp,“%12.2f%8dn”,st[i-1].jqave,st[i-1].rank);fclose(fp);} while(i>0&&i<28);

}

void bujigexueshengmingdan(){

int i,j;

printf(“不及格学生名单如下:n”);printf(“ 学号

姓名

不及格课程

分数

n”);for(i=0;i<27;i++){

for(j=0;j<5;j++)

if(st[i].score[j]<60)

{printf(“%3d%12s”,st[i].num,st[i].name);

printf(“%15s%8dn”,course[j].kcname,st[i].score[j]);

// printf(“

平均分”);

// printf(“%10.2f

名次%8dn”,st[i].jqave,st[i].rank);

}

} }

void youdeng(){ int i,k;printf(“ 优等生名单如下n”);printf(“编号

姓名

数学分析

高等代数

C语言 大学物理 大学艺术 加权平均分

名次n”);for(i=0;i<27;i++){ // for(j=0;j<5;j++)

if(st[i].jqave>=90||st[i].rank<=3)

{

printf(“%2d%10s”,st[i].num,st[i].name);

for(k=0;k<5;k++)

printf(“%9d”,st[i].score[k]);

printf(“%10.2f%8dn”,st[i].jqave,st[i].rank);

}

else;

} }

void caidan()

{ loop: printf(“

&&简易教学管理系统&&n”);

printf(“press 1 for

排名后的成绩表

!n”);

printf(“press 2 for

各科成绩情况!n”);

printf(“press 3 for

成绩条!n”);

printf(“press 4 for

不及格学生名单!n”);

printf(“press 5 for

优等生名单!n”);

printf(“press 0 for

退出n”);

int t;

scanf(“%d”,&t);

switch(t)

{

case 1:

paiminghoudechengji();break;

case 2:

xiechengji();break;

case 3:

chengjitiao();break;

case 4:

bujigexueshengmingdan();break;

case 5:

youdeng();break;

case 0:

exit(0);

}

goto loop;

}

void main(){

readdata1();

readdata2();

jqave();

ranking();

pingjunfen();

biaozhuncha();count();

C语言程序设计实验 篇6

1.编写一个程序,求出给定半径r的圆的面积和周长,并且输出计算结果。其中: r的值由用户输入,用浮点型数据处理。

2.给一百分制成绩,要求输出成绩等级’A’、’B’、’C’、’D’、’E’。90分以上

为’A’,80~89分为’B’,70~79分为’C’,60~69分为’D’,60分以下为’E’。

3.输入两个正整数m和n,求其最大公约数和最小公倍数。

4.输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。

5.求sn=a+aa+aaa+…+aa...a(n个a)之值,其中a是一个数字。例如:2+22+222+2222+22222

(此时n=5),n由键盘输入。

第二次试验

1.有一分数序列:,,23581321,...求出这个数列的前20项之和。1235813

2.求一个33矩阵对角线元素之和。

3.将一个数组中的值按逆序重新存放,例如原来的顺序为:8,6,5,4,1。要求改

为:1,4,5,6,8。

4.有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格、以及其他字符的个数。

第三次实验

1.将字符串computer赋给一个字符数组,然后从第一个字母开始输出该串。请用指针实

现。

2.将无符号八进制数字字符串转换为十进制整数。例如,输入的字符串为556,则输出十

进制整数366。用指针实现。

3.编程输入一行文字,找出其中的大写字母,小写字母,空格,数字,及其他字符的个数,用指针实现。

第四次实验

1.写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的信息。

2.写一函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。

3.写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个

数,在主函数中输入字符串及输出上述的结果。

c语言程序设计开发求职信模版 篇7

随着互联网的发展, 很多计算机专业学生除了利用课堂获取知识以外, 用好网络资源是他们取得进步的关键所在, 于是, 各种教学网站越来越受欢迎, 建立一个安全、可靠、开放、高效的网络教学平台很有必要。

《C语言程序设计》作为一门计算机基础课程[1], 很多高校除了对计算机专业学生开设这门课程, 一些非计算机专业理工科学生也需要学习这门课, 为此, 设计并开发了C语言网络课程网站。本站的特色就是资源共享, 可以把所拥有的学习资源传到网站上与别人一起分享, 也可以与其他爱好者进行沟通和交流。

在分析需求的基础上, 通过比较分析不同开发模式优缺点, 决定本网站采用PHP+NGINX的基于浏览器/服务器的模式构建, 使用MySQL作为后台数据库, 提供对数据库的查询、添加、修改、删除等操作, 实现远程信息管理, 并对管理功能进行了详细的分析和测试, 以实现动态转换、数据交互、高效的网络化信息管理。本网站采用业务流程图, 展现前端、后端两大项目。前端主要是信息展示、上传、下载, 后端主要是对本站数据进行管理。

1 可行性分析

传统的教学模式是以教师为中心, 以教室黑板为信息展示方式, 由一个教师领导几十个学生进行某一课程的学习, 这种教育模式已不能完全满足具有不同基础的学生的学习需要。《C语言程序设计》作为一门基础课程, 有些学生在中学阶段就已经具有了较好的学习基础, 而有些学生在上课之前却从未接触过。因此, 设计和开发一个较好的课程网站是非常必要的。

经过分析, 确定C语言课程网站[2]应具有以下功能:界面设计美观大方, 操作方便、灵活;可以提供新闻动态, 及时展示相关的最新信息、最新公告;可以分享学习方法给其他人借鉴;荣誉展示, 将学生在大赛中取得的优异成绩与人分享;网上视频教学, 提供链接, 供大家学习;资源共享, 把资源放在网盘中, 供同学下载;代码分享, 每个学生都写有自己的独特代码, 把代码贴出来, 让大家学习等。

本网站采用PHP+NGINX+MySQL技术组合, 以B/S结构完成部署, 包括前端应用程序的开发以及后端数据库的建立和维护两个方面。对于前者要求具备功能完备、易于使用等特点, 对于后者则要求能建立一致性和完整性强、安全性好的数据库。网站开发采用PHP语言, 关系型数据库MySQL, 开发工具为NetBeans。

2 系统设计

2.1 系统结构模式

本系统采用Browser/Server模式设计[3], 即基于Web的浏览器和服务器端结构, 由前端显示和后端管理两大功能组成。

前端主要显示网站的各种信息数据, 包括最新公告、新闻资讯、教学内容、教学实践、教学成果、视频教学、资源下载[4]等, 这些显示模块均由后台控制, 可在后台动态改变。

后端分为超级管理员和普通管理员登陆, 更好地控制了权限管理, 特别是用户数据的管理, 提高了安全性。

2.2 系统功能结构

网站前端展示的功能设计[5]如图1所示。

网站后端管理系统功能设计如图2所示。

2.3 文件夹结构

每个项目都会有相应的文件夹组织结构, 如果项目窗体的数量很多, 可以将所有的窗体及其资源放在不同的文件夹中。如果不多, 则可以将图片、公共类或程序资源文件都放在相应的文件夹中, 而窗体可以直接放在项目的根目录下, 本网站系统就是按照后者的文件夹组织结构进行排列的。

2.4 数据库设计

C语言精品课程网站数据库clang主要包含13个表, 如图3所示。

由于篇幅所限, 列举其中的public_practice (教学实践) 表, 功能为存储经典程序、学生设计、重点、难点等基础信息[6], 如图4所示。

3 结语

设计和开发《C语言程序设计》课程网站的目的是为学生提供一个学习交流平台, 便于自学, 享受程序设计带来的乐趣, 进而提高教学质量、增强教学效果。该课程网站的运行, 对于笔者学校学生参加诸如“蓝桥杯”全国软件设计大赛多年取得不俗成绩起到了一定的作用。

参考文献

[1]易云飞.C语言程序设计教程[M].第2版.北京:清华大学出版社, 2014.

[2]王绚.浅谈高职院校C语言学习网站的设计与实现[J].现代计算机, 2012 (6) :39-42.

[3]张健, 高振栋.C语言智能学习系统设计与开发[J].软件导刊, 2014 (5) :119-120.

[4]吴云, 顾保磊.精品课程网站关键技术研究[J].软件导刊, 2014 (3) :195-120.

[5]方晓.基于Asp.net的C语言课程学习网站的设计与实现[J].计算机光盘软件与应用, 2014 (10) :95-98.

C语言程序设计教学方法探讨 篇8

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

1.前言

C语言是目前最流行的、功能强大的、面向对象的编程语言,在教学过程中发现,学生经常会出现听得懂、编不出程序的现象,影响学生的在专业方面的需求。笔者结合多年教学经验,认为在教学过程中要将学生分为三个不同的阶段,具体为引导入门、基础充实和实践提高三个阶段,分阶段采用不同的教学方法与手段,提高教学效果。

2.引导入门阶段

学生刚开始学习《C语言程序设计》,感觉内容抽象,学习枯燥,失去学习兴趣,因而没有学习动力。入门阶段关键在于激发学生学习C语言程序设计的兴趣,引导学生入门。有些老师恨不得学生一下子掌握自己所有的知识,不知老师的知识是多年积累下来的,学生很难一下子接受,更不用说掌握了。教师对所教内容需精心选择,以简单有趣为主,关键是能够激发学生学习兴趣。可通过多媒体课件,用一些趣味性的程序或者小游戏来调动学生的积极性,提高他们学习编程的兴趣。学生具有差异性,为了让所有学生都能产生浓厚的学习兴趣,适宜采用分层教学法。入门阶段也需注重理论联系实际,但不必要求学生编程,可考虑让学生编辑或修改程序,可以通过给出源代码的、简单的并有详细输入、输出结果的程序,让学生进行编辑并调试,利用输出结果让学生收获成功的喜悦,以轻松愉快的心态学习程序设计。在此基础上,以循序渐进的方式,逐步引导,进行一些简单的修改,让程序得到不同的结果,并解释原因,然后提出新的问题,让学生思考如何修改程序以解决新的问题,培养学生的创造性。

3.基础充实阶段

兴趣是最好的老师,学生经过入门阶段的学习产生了兴趣,就可以进入基础充实阶段了。这一阶段主要是打基础,主要是一些基本概念的讲解和语法的学习,为提高教学质量,也要求老师能够根据不同的概念灵活采用教法,常用的教学方法有类比法、对比法、归纳法和实例教学等方法。

3.1教学方法

相对抽象的概念教学时可选用类比法,例如《数据及其类型》章节中类型的概念,可以采用类比法来进行教学,把C语言中所涉及的数据类型和生活中重量单位做类比,加深概念的认识;可以采用对比法传授《顺序、分支、循环》三种程序设计,通过对比,分清三种程序设计的异同,从根本上掌握三种程序设计。按顺序执行是顺序结构程序设计的特点;分支结构程序设计的特点是需要根据条件而执行不同的操作;而循环结构程序设计中存在重复执行的某种操作。在基础阶段,选取的例题要具有代表性,针对不同的知识点选择典型例题,重点是要学生通过典型例题的掌握,理解程序思想,教师可采用归纳教学法,帮助学生归纳出某一类型程序的程序设计。《指针》是C语言的精华,主要采用实例教学法,参照生活中具体的事例将理论实例化,指针就是地址,学会如何描述地址也就掌握了指针的主要应用(以一维数组和指针为例来进行说明)。一维数组中各元素的地址利用指针法描述,讲解时可以类比第一层教学楼的教室,例如a[O]所在的地址为东1 101,则a[1]所在的地址为东1102,可以假想P为一个人,处于东1101的位置,移动到东1 102即往下走了一个教室,即下一个元素的地址值为P+I。再运用类比的教学方法讲解二维数组和指针,应用类比法可以推广到更加一般的情形。

3.2教学手段

3.2.1科学安排内容,灵活运用多媒体课件

不必所有的内容都讲到,更不必所有内容详细讲,要科学安排内容,可以安排学生在老师的指点下自学简单的内容;如函数、指针等重点内容需要借助多媒体课件详细讲解,最好能够应用一些具有代表性的实例,让学生在理解的基础上掌握概念与思想。

3.2.2成立兴趣小组,培养学生的合作能力。

对一些学习能力较好的同学,以四到五人为单位,按照自愿的原则组织起来成立兴趣小组,通过小组内同学之间互相帮助,培养学生的团队合作精神;通过小组之间相互竞争,锻炼学生的竞争意识。还可以指导兴趣小组参与实际项目的开发,或者组织兴趣小組成员参加一些软件开发竞赛,进一步提高学生的实际动手能力。

3.2.3构建网络平台,加强学生学习的能力。

如今计算机网络已经走进校园,构建网络教学资源平台,构建一个学生可以在任何时候、反复进行互动学习的平台,提供一个师生互动的教学环境。分章节将知识重点、难点放在网站上,让学生通过网络自行解决实践课上那些出现的错误。学生利用网络把每次实践课上程序编写和调试中所犯的错误进行交流、总结,加强学生学习的能力。

4.实践提高阶段

实践提高阶段,采用最适合计算机软件应用课的教学方法项目教学法。通过实施一个完整的项目工作而进行的教学活动,采取小组讨论、协作学习的方式,学生学习的过程就是一个探究的过程。在C语言程序设计课程中应用这种方法的目的在于培养学生综合运用所学知识解决实际问题的能力。它将以往以传授知识为主的传统教学理念,转变为以解决问题、完成任务为主的多维互动式的教学理念;将再现式教学转变为探究式学习,使学生处于积极的学习状态,每一位学生都能根据自己对当前问题的理解,运用共有的知识和自己特有的经验提出方案、解决问题。改变过去单纯讲理论的现状,运用项目引导的方法,学生在分组解决项目的过程中学会语法的使用,逐步过渡到独立的编写简单小程序,通过项目训练多模块程序的编写,最终实现开发一定规模的大型程序。

5.结束语

C语言程序设计--大作业 篇9

编写程序,实现单链表的插入、删除、输出、查找、统计以及销毁功能。

单链表的每个结点存储一名学生的信息,包括:学号、姓名、性别、年龄、三门课程(高数、英语、C语言)的成绩、三门功课的平均分。

结构体类型声明如下: typedef struct student {

char sno[8];

char name[20];

char sex;

int age;double score[3];double avg;

struct student *next;} STUDENT, *PSTUDENT;

要求:

⑴一律使用 STUDENT 声明学生结构体的变量,一律使用 PSTUDENT 声明指向学生结构体的指针变量

⑵程序运行过程中要有菜单提示,菜单如下:

*************************************************************** *

1.Insert a student

* *

2.Delete a student

* *

3.Display the link list

* *

4.Display excellent students

* *

5.Search a student by the name

* *

6.Display the average score of three courses * *

0.Exit the program

* ***************************************************************

C语言程序设计实验九 篇10

【实验题目1】

写几个函数:(1)输入10个职工的姓名和职工号;

(2)按职工号由小到大排序,姓名顺序也随之调整;

(3)要求输入一个职工号,找出该职工的姓名。

从主函数输入要查找的职工号,输出该职工姓名。

【实验题目2】有一行电文,已经按下面规律译成密码:

A → Za → z

B → Yb → y

C → Xc → x

c语言程序设计开发求职信模版 篇11

关键词:教学模式;任务驱动;c语言程序设计;教学实践

0引言

《C语言程序设计》作为计算机程序设计的基础,是理工类本科学生的一门必修课,尤其是C语言对计算机硬件具有很好的编程能力,使其在工科教学中的生命力越来越强。我们学院在C语言的教学上基本上还是采取传统的教学模式:按照C语言教材自身的内容上课、上机,采取笔试形式考试。这样的教学模式使得学生过分注重C的语法、语句等规则,而忽视了对编程思路的培养,学生独立分析问题和解决问题的能力没有很大的提高,给学生参加全国等级考试以至后续课程的学习留下了隐患。下面就作者在C语言教学过程中的经验谈谈想法。

1传统教学模式

传统教学模式是以教师作为课堂的中心,以广大学生为讲授对象,以课本作为讲授的主线。虽然现在教学环境大都采用多媒体大屏幕,操作方便,易于控制教学内容和节奏,能在规定课时内呈现较多信息量;但是学生往往处于被动学习状态,教学内容难以适应学生的个体差异,所有学生被迫按照老师的讲授速度进行学习,不利于培养思维能力与创造能力。

上机实践课上通常老师会事先布置几道编程题,但是学生上机目标不是很明确,问的问题多数是属于同一类问题。老师不停地在机房各处一一解答,既浪费时间,也没取到很好的效果。学生在机房没有紧迫感,甚至有些学生觉得无事可做,就会打游戏等。这种上机方式不利于培养学生的动手能力和自我解决问题的能力。

学生学不好C语言主要是因为C语言教学的重点不是放在如何解决问题上,而是把大部分的时间放在讲解语法规则和语句格式上,其后果就是学生一拿到任务后首先琢磨如何定义变量,用什么语句,而不是对问题进行合理的分析,考虑最佳算法,这样当然觉得很难而且也设计不出好的程序。学生参加全国等级考试的通过率很低也就不足为怪了。

2“任务驱动式”教学模式

采用“任务驱动式”的教学方法,知识及技能的传授以完成典型“任务”为主,有利于提高学生利用计算机进行自主学习与解决问题的能力。

2.1教学内容的改革

我们把通过全国计算机二级考试作为学习c语言的目标,针对等级考试大纲来确定教学计划以及教学内容。为此,我们从第一堂课起就强调并要求学生通过全国二级考试,既让学生明确短期学习目标,又放眼长远的努力方向,以激发学生进行自主学习的主动性。我们将教学内容分离为几个相对独立的模块,即结构模块、数组模块、指针模块、函数模块和文件模块。模块的内容要循序渐进,把握好由易到难,由简单到复杂的教学过程,否则容易使学生一开始就产生一种畏惧情绪,失去学习兴趣。然后,力求概念准确,分散难点。各模块的教学目标要十分明确,教学量适中,让学生很容易把握住教学要点,理解和掌握教学内容。

2.2设计好实验任务

实验任务的设计包括任务的提出与分解、最终达到的目标、解决问题的方法等。目的性要强,任务要明确,这样才能很好地缓解计算机基础课程实验教学中学生无事可做,玩游戏、上网聊天等现象。要培养学生限时编程的良好习惯,要求学生在规定的时间内编写和调试好给定的程序。通过这些基本功的训练,学生在具备了扎实的计算机程序设计能力后,就较容易通过全国计算机二级考试。

在程序设计语言教学中,算法是程序设计的灵魂,学生编写不出程序的首要原因是设计不出—个合适的算法。因此,在教学中应对常用的算法结合典型实例进行详细地讲解,强调算法的步骤,让学生对算法有比较深刻地了解,并鼓励学生从不同角度去思考问题,对于同一个问题的解决用多种方法来实现。这样有助于拓展学生的思维,增加学生对学习C语言的兴趣。

例如:计算n!

我们可以采用递归法:

2.3学习成绩评价方式的改革

采用“笔试+上机考试”的评价方法可以提前让学生体验全国等级考试的过程。同时,两种形式考试都通过才算这门课程通过,也能促使学生在学习c语言的基本知识之外加强编程实践,让学生学到c语言的语法规则的同时也掌握了程序设计的方法。

3结束语

上一篇:韩剧十大经典台词下一篇:幼儿教师三年行动计划