程序的上机过程c语言第2章.ppt

上传人:小飞机 文档编号:6596196 上传时间:2023-11-16 格式:PPT 页数:20 大小:336.64KB
返回 下载 相关 举报
程序的上机过程c语言第2章.ppt_第1页
第1页 / 共20页
程序的上机过程c语言第2章.ppt_第2页
第2页 / 共20页
程序的上机过程c语言第2章.ppt_第3页
第3页 / 共20页
程序的上机过程c语言第2章.ppt_第4页
第4页 / 共20页
程序的上机过程c语言第2章.ppt_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《程序的上机过程c语言第2章.ppt》由会员分享,可在线阅读,更多相关《程序的上机过程c语言第2章.ppt(20页珍藏版)》请在三一办公上搜索。

1、,第 2 章 程序的上机过程,程序的上机过程编程环境程序编辑程序编译程序链接运行调试,本章的基本内容是:,任务2.1,【任务2.1】熟悉编程环境,【问题1】在屏幕上输出“Hello World!”。【问题2】求两个整数中较大者。,2.1 程序的上机过程,2.2 编程环境,广义上说,程序设计的环境包括所有与程序设计相关的硬件环境和软件环境。狭义上说,程序设计的环境是指利用程序设计语言进行程序开发的编程环境,这里只讨论狭义上的编程环境。目前的编程环境大都是交互式集成开发环境(Integrated Design Environment,IDE),包括编辑功能、编译功能、调试功能等,此外,还包含许多编

2、程的实用程序。典型的编程环境是Visual C+,它提供了MFC类库,可实现许多Windows自动编程功能。由于功能强大,也使其具有一定的复杂性,如何用好语言编程工具和环境,也是提高编程效率的因素之一。,2.3 程序编辑,输入程序以及修改程序的过程称为程序编辑。各个计算机系统的程序编辑过程差异很大,不可能用统一的方式来描述,因此,在程序编辑之前,必须先熟悉所用计算机系统的程序编辑方法。,利用高级语言编写的程序不能直接在计算机上执行,因为计算机只能执行二进制的机器指令,所以,必须将高级语言编写的程序(称为源程序)转换为在逻辑上等价的机器指令(称为目标程序),实现这种转换的程序称为翻译程序。,2.

3、4 程序编译,翻译程序的工作方式通常分为两种:解释方式和编译方式。,2.4 程序编译,翻译程序的工作方式,C语言采用编译的方式,一个C程序文件(称为源文件)经过编译后转换成二进制文件(称为目标文件)。,2.4 程序编译,C语言的翻译方式,不同类型的计算机上也需要配置不同的翻译程序。,2.4 程序编译,C语言的翻译方式,某个C程序,2.4 程序编译,编译程序的基本过程,2.4 程序编译,编译程序的基本过程,1.词法分析词法分析的任务是对源程序进行扫描和分解,滤掉源程序的注释,按照词法规则识别出一个个的单词,如关键字、变量名、运算符等,并将单词转化为某种机内表示。如果发现词法错误,则指出错误位置,

4、给出错误信息。例如,词法分析将语句“float rate=10;”分解为如下5个单词:float rate=10;其中:单词是关键字,单词是标识符,单词是运算符,单词是常量,单词是分隔符。,2.4 程序编译,编译程序的基本过程,2.语法分析语法分析是编译程序的核心部分,它的任务是对词法分析阶段得到的单词序列按照语法规则分析出一个个的语法单位,如表达式、语句等。如果发现语法错误,则指出错误位置,给出错误信息。例如,语法分析将语句“float rate=10;”表示成如图所示的语法树,并得出分析结果:是一个语法上正确的赋值语句。,2.4 程序编译,编译程序的基本过程,3.语义分析语义分析的任务是检

5、查程序中语义的正确性,以保证单词或语法单位能有意义地结合在一起,并为代码生成收集类型信息。语义分析的一个重要部分是类型检查,即对每个运算符的运算对象,检查它们的类型是否合法。例如,对于语句“float rate=10;”,语义分析审查运算符“=”的运算对象,发现rate是实型,而10是整型常量,则在语法分析得到的语法树上增加一个语义处理结点,将整型常量转换成实型常量的运算符inttoreal,得到如图所示的语法树。,2.4 程序编译,编译程序的基本过程,4.生成中间代码 生成中间代码的任务是将各语法单位转换为某种中间代码。所谓中间代码是复杂性介于源语言和机器语言之间的一种指令形式,其设计原则是

6、容易生成并且容易翻译为目标代码。四元式是常用的中间代码形式,其一般形式为:(运算符,运算对象1,运算对象1,结果)。例如,对于语句“float a=10;”,可以生成如下四元式序列:(inttoreal,10,-,t1)(=,id1,t1,-)其中,t1是编译程序生成的临时变量,id1是标识符rate的内部形式。,2.4 程序编译,编译程序的基本过程,5.代码优化 代码优化的任务是对中间代码进行等价变换,使得变换后的中间代码在运行速度、存储空间等方面具有较高的质量。例如,对于语句“float a=10;”,10是编译时已知的常量,把10转换成实型常量10.0的工作可以在编译阶段完成,没有必要生

7、成四元式,因此,上述中间代码可以优化成下面的等价代码:(=,id1,10.0,-)6.生成目标代码生成目标代码的任务是将优化后的中间代码转换为特定机器的目标程序。例如,对应于语句“float a=10;”的四元式可生成下面的目标代码:MOVF id1,#10.0其中,符号#表明10.0为常量。,2.4 程序编译,编译程序的基本过程,7.表格管理在编译过程中,源程序的各种信息被保存在各种不同的表格中,编译各阶段的工作都涉及到构造、查找、更新有关表格。例如,符号表用来保存标识符,词法分析将识别出的标识符以及标识符的各种属性填入符号表中,在编译过程中根据标识符的各种属性提供存储分配、类型和作用域等信

8、息。8.出错处理程序中的错误主要包括:词法错误,如标识符拼写错误;语法错误,如表达式的括号不匹配;语义错误,如运算符作用于不相容的运算对象;逻辑错误,如无穷的递归调用。,2.5 程序链接,2.6 运行调试,一般的编程环境都提供相应的调试手段。调试最主要的方法是设置断点并观察变量。(1)设置断点:可以在程序的任何一个语句上做断点标记,将来程序运行到这里时会停下来。(2)观察变量:当程序运行到断点的地方停下来后,就可以观察各个变量的值,判断此时变量的值是否是你所期望的。如果不是,则说明在断点之前肯定存在错误,这样,就可以把出错的范围集中在断点之前的程序上。还有一种常用的调试方法是单步跟踪,即一步一步跟踪程序的执行过程,同时观察变量的变化情况。调试是一个需要耐心和经验的过程,也是程序设计最基本的技能。,本章小结知识结构图,作业:,习题2:,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号