c语言编译器实现论文范文

2024-02-11

c语言编译器实现论文范文第1篇

1.1 函数

函数是完成某一指定任务的程序模块。一个C语言程序可由一个或多个函数组成, 每个函数完成一定的功能。函数在使用之前必须先行定义。

1.2 变量

变量是在程序运行期间可以改变的量。变量在使用之前必须先定义, 当一个变量被定义后, 可以从定义中获得这个变量的名, 变量的数据类型和变量的存储类型。同时, 根据这个定义所在的位置, 还可知道这个变量的生存期以及它的作用域。

1.3 形参与实参

函数的参数主要用于主调函数向被调函数传递数值。在函数定义时, 函数名后面圆括号内的参数称为形式参数, 简称形参;在函数调用时, 函数名后面圆括号内的参数称为实际参数, 简称实参。在函数调用时, 首先将实参传给形参, 然后才能执行函数体。在C语言中, 参数的类型不同, 其参数值的传递方式也不完全相同, 一般分为“值传递”方式和“地址传递”方式。

2 要求一个结果的程序

2.1 例如:求两个整数的最大值

从题设中已知两个整数, 将它们作为函数的形式参数, 题目的要求是输出两个数的最大值, 可以把它作为函数的返回值, 相应函数的返回值类型为整型。主函数包含三个功能, 输入已知条件、调用函数、输出结果。即:

2.2 传递方式的分析

在以上函数的调用过程中, 整型变量a、b作为实参分别把值传递给形参x、y, 但函数调用完毕, x、y的值没传递给实参a、b。也就是说在简单变量作为实参传递数据的过程是值传递, 即单向传递。

3 求多个结果的程序

3.1 采用全局变量

例如:求一组数据的最大值, 最小值, 平均值。

4 求一组结果的程序

4.1 将一组数据逆置

按照上述的方法已知条件是字符串, 可以将它作为字符数组进行处理, 这样字符数组就成为函数的形式参数。然而, 题目的要求是输出字符串的长度, 若将它作为函数返回值, 这只能返回该字符数组的起始地址, 即通过指针来返回。

4.2 参数传递数据

在函数调用的过程中, 通过参数传递数据甚为常见, 比如上题在数组的应用中, 如果我们把数据元素作为实参传递给形参, 因为每个数组元素实际代表内存中的一个存储单元, 故和简单变量一样, 对应的形参必是类型相同的变量, 这时数据只能从实参单向传递给形参, 如果我们把数组元素的地址 (即数组变量的名字, 它代表数组首元素的起始地址) 作为实参, 对应的形参必是相应基类型的指针变量, 这时数据既可以通过实参传递给形参, 又可以从形参传递给实参, 后者在应用过程中更为常见。

4.3 按值传递与按地址传递

上题可采用函数的参数传递来返回结果。函数的参数传递有两种方法:一种是值传递, 一种是地址传递。值传递, 是指形参的改变不影响实参, 而地址传递, 即形参和实参公用一段内存空间, 形参的改变也就改变了实参。一个数组名是该数组的起始地址, 可以通过数组名作为实参来实现地址传递, 从而解决这个问题。

从以上函数调用过程可以看出, 地址传递事实上把字符数组的地址传递给形式参数 (s) , 形参又把它指向的对象传递给了实参 (str) , 也就是借助于地址实现了双向传递。

5 结语

C语言程序是由函数构成的, 函数间需要交换数据, 函数间交换数据的通道主要有三个:一是函数的返回值, 它一次能返回一个值, 并且是单向传递, 可通过调用该函数引用返回值;二是全局变量, 它可双向导通, 函数既可以直接引用, 也可以通过函数调用, 从而达到双向传递的目的;三是函数的参数, 它既可以是单向导通, 又可以是双向导通, 它是函数间交换数据的最主要的方式。所以C语言中函数如何通过参数交换数据即形参与实参的结合方式是学习的一个重点内容, 同时由于形参与实参的结合方式的复杂性, 它也是学习的一个难点。C语言函数形参与实参的结合方式从总的方面来看和其他高级语言大同小异, 都是“按传传递”方式与“按传地址传递”方式两种。

摘要:本文通过总结自己的学习经验, 简单的分析了C语言程序设计课程中的函数, 就C语言模块化程序设计中函数的参数设置、函数返回值的确定, 以及主函数中函数的调用等, 给出了一些函数分析。

c语言编译器实现论文范文第2篇

关键词:C/C++语言程序设计;教学改革;国家精品课程;教学方法

1 课程教学现状及存在问题

“C/C++语言程序设计”是理工科非计算机专业本科学生的第二门计算机课程,也是大学计算机基础系列课程的核心课程。“C/C++语言程序设计”课程的内容抽象,概念和语法规则较多,特别讲究适用技巧。长期以来,高校都在不断地探索和实践关于“C/C++语言程序设计”课程的教学改革,但仍然存在很多问题。例如,教学依然以传统教学方式为主,不能将实验环节与课堂教学环节很好地相互连贯,相互印证,使得理论教学和实践教学脱节;某些教师忽视学生的实践能力和创新能力的培养,使学生在分析问题和解决问题时无从下手,缺乏编程和调试的能力;实验教学中的多数实验内容是验证性的,学生机械式的运行程序,对知识的理解只停留在表面上;理论和实验课时数较少,上课信息量大,学生接受知识的进度不一样,这就导致教师和学生的学习步调不一致。

针对上述问题,许多高校对“C/C++语言程序设计”课程的教学作出了有益的探索,如文献[1]提出“通、实、新、联”的教学理念;文献[2]提出教学设计原理;文献[3]提出项目教学法;文献[4]提出案例教学法;文献[5]提出“机房授课+自主学习”的授课模式;文献[6]提出将“以应用为背景,以知识为主线,以提高能力和兴趣为目的,变应试为应用”的教学理念应用于该课程的教学中。这些方法均在一定程度上激发了学生的学习兴趣,增强了学生的动手能力,取得了较为明显的教学效果。

为了探究出适合成都理工大学人才培养的课程特点,“C/C++语言程序设计”课程组经过多年的课程建设和对教学环节的研究与探索,提出了“以应用为前提,学生为主体,知识为主线,培养学生的实践动手能力为着力点”的教学理念,构建了一套教材体系完善、教学资源丰富、教学手段先进、教学评价合理、考核方式差异化、精品课程网站新颖的教学体系。下面分别从教学设计、教学方法、教学手段、考核方式以及教学资源等方面进行阐述。

2 教学设计及课程内容组织

2.1教学设计

成都理工大学每年有4000名以上的学生参加“C/C++语言程序设计”课程学习。为实施因材施教,我们重视研究性学习、探究性学习、协作学习等现代教育理念在教学中的应用,根据课程内容和学生特征,对教学方法和教学评价进行设计,并在教学理念与教学设计上实施了多种改革举措。

1)以学生为中心的教学模式。

以学生为中心的教学模式让教师从传统的教学方式中解脱出来,变“教学”为“导学”。教师充分利用多种教学媒体和提示学习资源,讲重点、解难点、释疑点,讲评作业,指导学习方法,辅助小组学习,发挥学生的主体作用,引导学生自主学习,帮助学生培养自学能力。

教师要在理论课前了解学生是否掌握了与课程有关的基础知识和基本技能,根据学生在实验课的表现来了解学生是否掌握了教学目标中要求学会的知识和技能,以及掌握的程度等信息,从而确定后续教学中应重点讲解和辅导的知识,根据学生的实际情况设计教学环节。对于部分优秀学生和已经学习了程序设计的学生,我们要加快他们的学习进度,增加学习难度和深度,使他们可以很快在自己的专业中使用程序设计来解决相关问题。

2)精心准备每一节课,激发学生学习积极性。

激发学生对程序设计课程的学习兴趣,是本课程任务执行的重要目标。学生是主动学习还是被动学习会让教学效果产生明显的差别,因此每位教师都应精心准备每一节课。引领学生跨入程序设计大门的第一节课是极其重要的。学生所关心的是所学课程对自己的专业和今后的工作有什么作用,教师可从不同的专业角度,结合当前最热门的IT话题和实际应用为学生介绍学习本课程的意义和作用,同时介绍一些往届学生将所学程序设计知识用于数学建模、程序设计竞赛、专业课程学习等方面的生动实例,这些都是教师第一节课的良好素材。

3)培养学生系统化的程序设计思维。

程序设计课程长期存在着注重语句、语法和细节的特点,基本上是以程序设计语言自身的体系为脉络展开的。许多学生在学习程序设计语言课程时会觉得枯燥难学,学过后又不能用来解决实际问题。所以学生虽然学了一定的程序设计知识,但编程能力较差。‘部分学生在遇到实际问题依旧无从下手。而系统化程序设计思维培养模式是从本科生的认知特点出发,让教师在教授学生程序设计课程、提高学生编程能力的同时,培养学生的系统化程序设计思维。

程序设计课程不仅教学生如何进行计算机编程,而且教学生如何像程序员一样思考问题。系统化的程序设计思维的培养过程就是让学生自己动手解决实际问题的过程。这个过程充满了学生对未知问题的探索、研究与创新,不仅可以教会学生解决在程序设计中遇到的问题,而且可以锻炼思维,使学生的逻辑思维更加严密,这对一个理工科的大学生来说是至关重要的,对学生整体素质的提高、程序设计课程整体教学水平的提高都有现实意义。

4)互换角色思考与提问。

在教学过程中我们发现,很多学生不提问,有时是学生提不出问题,有时是不知该如何提问。这时,教师需要站在学生位置上,思考学生可能会有什么问题,然后由教师提出问题,让学生来回答。如果学生不能回答,教师再为学生解答。教师备课时不再只是准备我要讲什么,而是思考学生会遇到什么难点,需要向学生提什么问题、解答什么问题。基于此目的,教师需准备大量经典案例,提出问题,分析问题,并在问题中设置一些错误,让学生思考原因,并进一步思考如何修改错误,在这样的学习过程中潜移默化地掌握基本的语法知识和解决问题的方法。这种模式转变了学生的学习方式,激励学生积极思考问题、分析和解决问题。

2.2理论课程设计

由于科学技术的快速发展,计算机科学与其他学科间的交叉、融合日益增强。大多数非计算机专业的培养目标已将学生的计算机程序设计能力作为了一项重要内容。

本课程主要是针对非计算机专业的理工科一年级大学生开设的。与计算机专业不同的是,非计算机专业学生一般只学一门语言课程。因此,该课程的教学就担负起培养学生编程能力的重要责任,成为了学习其他程序设计语言的基础。

根据非计算机专业各学科的培养目标,“C/C++语言程序设计”课程在理论课程内容设计上注意知识结构的合理,强调基本能力的培养,注重基础理论与实际应用的融合。课程内容体系结构重点突出学以致用。课程内容知识结构由C语言简单程序的编写和调试、C语言程序设计基础、控制结构、数组、指针、函数、编译预处理与变量的存储类型、文件、结构体与共用体、图形程序设计基础、C++程序设计基础、查找和排序12部分组成。

根据学以致用的原则,在实际应用中,函数是程序设计的重要内容之一,也是学生学习的难点之一,因此在理论课程设计中,我们将函数的使用提前讲解,让学生尽早接触函数,理解模块化的设计方法,掌握函数的基本设计和操作。在讲授第2章有关输入/输出库函数时,可同时结合第8章文件的知识,使学生掌握实际问题中涉及不同数据的不同输入/输出方式,较好地解决了学生学习C语言后不能熟练掌握文件操作的问题。

教材在内容编排上注重易用性。每章的开头设置本章学习目标,之后设置本章学习指导,包含“课前思考”“本章难点”和“本章编程中容易出现的错误”。每章后的练习题涵盖了程序设计中的常见算法,涉及简单程序设计、较复杂程序设计、易于举一反三的程序设计问题等内容,使学生能够通过练习,大大地提高编程能力。

2.3实验课程设计

“C/C++语言程序设计”是一门实践性很强的课程。在近几年的课程建设与教学改革中,实验课程注重理论课程内容与实验内容的有机结合,强调学生创新能力和实际动手能力的培养。C/C++程序设计实验教学内容改变了以往验证性实验为主的现象,使设计性实验内容占了70%以上。通过实验,培养学生分析问题和解决问题的能力,以及动手能力和程序设计能力,从而加深对理论课程内容的理解。

实验课程配有实验指导书,共设计了11个实验项目和一个综合程序设计,其基本出发点是帮助学生理解和消化课堂教学的内容,培养学生自主学习能力,加强其实践能力和团队协作精神,让学生掌握程序设计的基本思想和方法。具体实验内容包括:C/C++简单程序的编写和调试、C语言程序设计基础、控制结构、数组、指针、函数、编译预处理、文件、结构体与共用体、图形程序设计、C++程序设计基础。

3 教学方法和手段

3.1教学方法

为了实现程序设计课程的教学目标,使学生不但掌握高级编程语言的知识、编程技术和基本算法,更要掌握程序设计的思想和方法,培养学生进行问题求解和编程的能力,以及探索和创新能力,我们采用了多种教学方法,主要做了以下改革。

1)课内与课外训练相结合,注重学生综合能力的培养。

课内教师根据教材进行引导学习,加强典型例题的启发式讲解。在分析常见错误案例的过程中,教师讲解程序设计的基本方法、程序测试方法以及程序调试和排错方法,帮助学生理解错误发生的原因和实质,掌握纠错的方法和解决的对策。在实验教学中,我们为每堂实验课设计相应的实验项目。实验项目的设计注重实用性和综合性。实践教学强调大量程序设计的训练。教师在网上为学生发布一些经典、实用、有一定挑战性的作业,鼓励学生课外多训练,倡导学生课后以寝室为单位,组成学习小组,进行讨论、分析和解决问题。

为了激励学生参与程序设计的实践,进一步提高学生程序设计的兴趣,提升他们的软件技术水平,成都理工大学每年举行一次全校范围的程序设计大赛。大赛采用初赛和决赛制,要求学生在2~4小时内完成一个综合性较强的程序设计题目,或在一段时间内完成一个综合程序设计题目,然后进行答辩。

2)重视实践教学环节、注重学生创新意识与应用能力的培养。

为了培养学生的实践动手能力,我们加强了实践教学环节的管理。教师要积极使用多媒体实验室的教学设备,进行启发、引导式的实验指导,将平时测试与期末测试结合,测试学生在1个小时内调试和正确编写程序的能力,引导和督促学生重视实践教学。开放性实验注重培养学生的创新意识与应用能力。

3)网站互动学习。

课程组建立的教学网站、精品课程网站、课程资源平台等为学生提供了网络课程、网上答疑、作业提交、理论试题及答案、上机试题及答案、教学录像、视频节目、精品课程网站链接、相关学习网站链接等资源,扩充了课堂教学区域。学生可以在任何时候、任何地点进行互动学习。这种方法及时地解决了学生在学习中遇到的疑难问题。

4)改革考核方式,采用多元评价方式考核实验成绩。

为了提高学生的学习兴趣,培养学生问题求解和编程能力,以及探索和创新能力,我们采用了开卷和闭卷相结合的考试方式,鼓励基础好的学生开卷考试,完成一个综合编程题目。经过实践,参加开卷考试的学生在独立分析问题、解决问题和编程能力上得到了很大提高。

3.2教学手段

多年以来,成都理工大学“C/C++语言程序设计”课程最大限度地、多方位地应用了以下现代教育技术手段。

1)课堂多媒体理论教学。

本课程的理论教学将传统教学手段和现代教育技术手段相结合,在应用现代教育技术手段的同时,继续发挥传统教学的优势。课堂上多媒体课件的播放效果直接影响到学生的听课效果,因此我们不仅制作了幻灯片,还利用Autherware、Flash等工具,制作了具有较强动画效果的多媒体课件,将程序的执行过程利用动画演示,生动、形象地模拟了计算机执行程序的真实情况。

2)建立计算机基础教学网站。

我们开发课程网上教学平台,为学生提供电子教案、多媒体课件、视频等丰富的网上教学资源,同时提供讨论和在线答疑,构建以学生为中心的自主学习环境。

3)网上考试系统。

网上考试系统为学生提供了模拟和考试环境,实现了系统自动组卷和评分功能,为学生课后自学和自测、提高教学效果搭建了一个有效的平台。

4 考核方式

课程考核可以采用开卷和闭卷2种形式。

1)闭卷考试由笔试和机试组成。

(1)笔试(占总成绩的50%)主要考核语言基础、基本的阅读和编写程序的能力。题型包括选择题、填空题、程序阅读题和程序填空题。

(2)机试(占总成绩50%)主要考核程序设计能力,包括上机考试(占总成绩的30%)和平时出勤及作业完成情况(占总成绩的20%)。

2)开卷考试主要考核学生综合程序设计的能力,独立分析问题和解决问题的能力,难度较大。通常只有学习优秀的学生可以参加开卷考试。这些学生必须是按时完成了每一次的实验项目,且中期考试合格。开卷考试要求学生提供源程序、开卷考试报告并参加面试。

5 结语

通过对各种教学方法和教学手段的研究和探索,我们改变了传统的知识传授理念,从而更加注重学生解决实际问题的能力,并提出“以学生为主体,教师为引导,网络教学为辅助”的全新理念,极大地激发了学生的学习兴趣,挖掘了学生的创造潜能,又培养了他们自主研究、协作学习的能力。实践证明,通过上述教学改革措施,教学效果取得了显著提高。在计算机二级c语言考试中,学生通过率较往年大大提升。当然,实际教学过程是一个相当复杂的系统,也还存在着一些需要解决的问题,还需要我们在今后的实践中继续开拓,不断探索。

参考文献:

[1]赵珊,贾宗璞,“C语言程序设计”课程教学模式改革方案探讨[J],科技资讯,2011(35):185-187。

[2]黄群,C语言程序设计课程教学设计探讨[J],计算机教育,2010(5):78-81。

[3]陈洪超,项目教学法在“C语言程序设计”课程中的应用[J],重庆电力高等专科学校学报,2012,17(3):29-30,36。

[4]左永文,案例教学法在“C语言程序设计”课程中的应用[J],科技创新导报,2012(18):175-175。

[5]陈刚,朱晓燕,江汉大学“C语言程序设计”课程教学改革[J],计算机光盘软件与应用,2012(7):245-246。

[6]李敏杰,吕橙,王雅杰,“C语言程序设计基础”的教学改革与实践[J],现代计算机:专业版,2012(8):45-49。

(见习编辑:刘丽丽)

c语言编译器实现论文范文第3篇

摘 要:计算机技术的不断进步,使得C语言在软件编程等方面的应用越来越广泛。C语言有助于新的软件开发和应用,扩宽了计算机的应用范围。C语言是各种软件程序设计的基础,其可以是软件设计更加简化,同时精确软件的运行结果。文章分析了C语言的编程技巧及其与汇编语言进行混合编程的方法,为提高对C语言的认识提供帮助。

关键词:C语言;计算机软件;编程

网络时代的到来,使的计算机得到了广泛的应用,计算机软件在日常生产和生活中具有不可替代的作用,其可以提高生产效率和经济效益。C语言是软件编程过程中的基础语言,其不但有其他高级语言的主要特点,同时还具备汇编语言的优势,是提高计算机软件更新速度和优化编程过程的关键,充分利用C语言进行编程,可以有效提升编程的效率。

一、C语言在计算机软件编程过程中的具体应用

(一)编程技巧

利用C语言进行软件编程时,指针是具有特殊意义的一种变量。指针可以是编程人员将复杂的问题进行清晰表达,还能够准确的解决这些复杂问题。因此,编程人员要熟练掌握指针的运用技巧,以提高软件编程的效率。指针主要分为名称、类型以及数值三个重要部分,其相当于一般变量,只是存在类型和数值的不同。指针的特点是既能表示数组,还可以充当参数返回值在函数中表示。

(二)C语言中特有函数的有效运用

利用C语言进行软件编程时,往往会有特殊的地方会使用特有函数。而不同的函数名称可以体现不同函数的特有功能。在对函数过进行定义时,函数的具体名称和参数以及返回值的类型确定都是有编程人员来完成的。C语言的翻译系统只是进行库函数的提供,同时对函数的名称进行定义。在程序调试过程中,编程人员只需利用“#include指令”将头文件纳入到相应的文件,无需再进行复杂的操作。

(三)各种算法的灵活运用

在计算机软件程序的设计过程中,算法是整个设计的核心内容,编程人员要对各种算法清晰认识并灵活运用。通常情况下,算法可以通过自然语言、流程图等进行表示,但是流程图表示需要编程人员熟悉各种流程图的表示符号,才能准确表示算法。也就是说,数学知识在计算机编程过程中具有重要的地位,编程人员具有良好的数学素养才能真正提高计算机软件编程的效率。

(四)位运算和文件知识的灵活运用

利用C语言进行编程时,位运算是唯一的,其重要性不言而喻。二进制位是位运算主要的对象,位运算在运算过程中往往还要结合其他的相关程序。文件是计算机的重要组成部分,其位置不可替代。文件主要分为程序和数据文件两种,文件中能够储存编程人员设计好的程序,可以简化数据查找的步骤,提高查找的效率。

二、混合应用C语言和汇编语言的编程方法

利用C语言对汇编语言的子程序进行调用、利用汇编语言对C语言子的程序进行调用、将C语言的程序嵌入至汇编语言中是混合编程的三种主要方式。

(一)利用C语言对汇编语言的子程序进行调用

利用C语言对汇编语言的子程序进行调用时,要根据程序中参数的具体顺序,将参数按照反序的顺序压入到堆栈中,传递时要按照参数的数值,利用“EXTERN”說明函数的具体显示。函数名要通过8个字符内的下划线格式进行命名,同时要进行代码段的具体说明,通过“—TEXT”进行代码段的命名。汇编程序参数可以C语言的参数,汇编程序要对寄存器进行保护。在混合利用C语言和汇编语言进行编程时,汇编的整个过程需要严格遵守已经规定好的开头和结尾格式。

(二)利用汇编语言对C语言子的程序进行调用

利用汇编语言对C语言的子程序进行调用时,无需对汇编语言的主程序、子程序两种程序的格式进行改变,只要保持主程序、子程序的一直的格式即可,在开始编程前通过“EXTREN函数名”表明身份后,即可代表此函数是对C语言程序进行调用的函数。

(三)将C语言的程序嵌入至汇编语言

将C语言的程序嵌入至汇编语言主要包括C语言程序对汇编子程序模块进行调用以及嵌入到汇编的指令。若C语言为主程序,汇编语言的模块,就要用C语言对汇编子模块进行调用。C语言程序嵌入到汇编指令的应用主要针对C语言难以控制的硬件上。

三、总结

目前,C语言在软件编程时得到了广泛的应用,其独立、简易的特点可以提高计算机编程的效率和质量,具有确保计算机软件的不断开发和更新的作用。(作者单位:海南师范大学)

参考文献:

[1] 罗莎.计算机中C语言的应用特点分析[J].计算机光盘软件与应用,2012(7).

[2] 梁甜.基于C语言的计算机软件编程分析[J].电脑编程技巧与维护,2014(22).

上一篇:风景园林专业导论论文范文下一篇:做好基层武装工作论文范文