程序的上机过程c语言第2章.ppt_第1页
程序的上机过程c语言第2章.ppt_第2页
程序的上机过程c语言第2章.ppt_第3页
程序的上机过程c语言第2章.ppt_第4页
程序的上机过程c语言第2章.ppt_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

,第 2 章 程序的上机过程,程序的上机过程 编程环境 程序编辑 程序编译 程序链接 运行调试,本章的基本内容是:,任务2.1,【任务2.1】熟悉编程环境,【问题1】在屏幕上输出“Hello World!”。 【问题2】求两个整数中较大者。,2.1 程序的上机过程,2.2 编程环境,广义上说,程序设计的环境包括所有与程序设计相关的硬件环境和软件环境。 狭义上说,程序设计的环境是指利用程序设计语言进行程序开发的编程环境,这里只讨论狭义上的编程环境。 目前的编程环境大都是交互式集成开发环境(Integrated Design Environment,IDE),包括编辑功能、编译功能、调试功能等,此外,还包含许多编程的实用程序。 典型的编程环境是Visual C+,它提供了MFC类库,可实现许多Windows自动编程功能。由于功能强大,也使其具有一定的复杂性,如何用好语言编程工具和环境,也是提高编程效率的因素之一。,2.3 程序编辑,输入程序以及修改程序的过程称为程序编辑。 各个计算机系统的程序编辑过程差异很大,不可能用统一的方式来描述,因此,在程序编辑之前,必须先熟悉所用计算机系统的程序编辑方法。,利用高级语言编写的程序不能直接在计算机上执行,因为计算机只能执行二进制的机器指令,所以,必须将高级语言编写的程序(称为源程序)转换为在逻辑上等价的机器指令(称为目标程序),实现这种转换的程序称为翻译程序。,2.4 程序编译,翻译程序的工作方式通常分为两种:解释方式和编译方式。,2.4 程序编译,翻译程序的工作方式,C语言采用编译的方式,一个C程序文件(称为源文件)经过编译后转换成二进制文件(称为目标文件)。,2.4 程序编译,C语言的翻译方式,不同类型的计算机上也需要配置不同的翻译程序。,2.4 程序编译,C语言的翻译方式,某个C程序,2.4 程序编译,编译程序的基本过程,2.4 程序编译,编译程序的基本过程,1. 词法分析 词法分析的任务是对源程序进行扫描和分解,滤掉源程序的注释,按照词法规则识别出一个个的单词,如关键字、变量名、运算符等,并将单词转化为某种机内表示。如果发现词法错误,则指出错误位置,给出错误信息。 例如,词法分析将语句“float rate = 10;”分解为如下5个单词: float rate = 10 ; 其中:单词是关键字,单词是标识符,单词是运算符,单词是常量,单词是分隔符。,2.4 程序编译,编译程序的基本过程,2. 语法分析 语法分析是编译程序的核心部分,它的任务是对词法分析阶段得到的单词序列按照语法规则分析出一个个的语法单位,如表达式、语句等。如果发现语法错误,则指出错误位置,给出错误信息。 例如,语法分析将语句“float rate = 10;”表示成如图所示的语法树,并得出分析结果:是一个语法上正确的赋值语句。,2.4 程序编译,编译程序的基本过程,3. 语义分析 语义分析的任务是检查程序中语义的正确性,以保证单词或语法单位能有意义地结合在一起,并为代码生成收集类型信息。语义分析的一个重要部分是类型检查,即对每个运算符的运算对象,检查它们的类型是否合法。 例如,对于语句“float rate = 10;”,语义分析审查运算符“=”的运算对象,发现rate是实型,而10是整型常量,则在语法分析得到的语法树上增加一个语义处理结点,将整型常量转换成实型常量的运算符inttoreal,得到如图所示的语法树。,2.4 程序编译,编译程序的基本过程,4. 生成中间代码 生成中间代码的任务是将各语法单位转换为某种中间代码。所谓中间代码是复杂性介于源语言和机器语言之间的一种指令形式,其设计原则是容易生成并且容易翻译为目标代码。四元式是常用的中间代码形式,其一般形式为:(运算符, 运算对象1, 运算对象1, 结果)。 例如,对于语句“float a = 10;”,可以生成如下四元式序列: (inttoreal, 10, -, t1) (=, id1, t1, -) 其中,t1是编译程序生成的临时变量,id1是标识符rate的内部形式。,2.4 程序编译,编译程序的基本过程,5. 代码优化 代码优化的任务是对中间代码进行等价变换,使得变换后的中间代码在运行速度、存储空间等方面具有较高的质量。 例如,对于语句“float a = 10;”,10是编译时已知的常量,把10转换成实型常量10.0的工作可以在编译阶段完成,没有必要生成四元式,因此,上述中间代码可以优化成下面的等价代码: (=, id1, 10.0, -) 6. 生成目标代码 生成目标代码的任务是将优化后的中间代码转换为特定机器的目标程序。例如,对应于语句“float a = 10;”的四元式可生成下面的目标代码: MOVF id1, #10.0 其中,符号#表明10.0为常量。,2.4 程序编译,编译程序的基本过程,7. 表格管理 在编译过程中,源程序的各种信息被保存在各种不同的表格中,编译各阶段的工作都涉及到构造、查找、更新有关表格。例如,符号表用来保存标识符,词法分析将识别出的标识符以及标识符的各种属性填入符号表中,在编译过程中根据标识符的各种属性提供存储分配、类型和作用域等信息。 8. 出错处理 程序中的错误主要包括:词法错误,如标识符拼写错误;语法错误,如表达式的括号不匹配;语义错误,如运算符作用于不相容的运算对象;逻辑错误,如无穷的递归调用。,2.5 程序链接,2.6 运行调试,一般的编程环境都提供相应的调试手段。调试最主要的方法是设置断点并观察变量。 (1)设置断点:可以在程序的任何一个语句上做断点标记,将来程序运行到这里时会停下来。 (2)观察变量:当程序运行到断点的地方停下来后,就可以观察各个变量的值,判断此时变量的值是否是你所期望的。如果不是,则说明在断点之

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论