




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章程序的上机过程 程序的上机过程编程环境程序编辑程序编译程序链接运行调试 本章的基本内容是 任务2 1 任务2 1 熟悉编程环境 问题1 在屏幕上输出 HelloWorld 问题2 求两个整数中较大者 2 1程序的上机过程 2 2编程环境 广义上说 程序设计的环境包括所有与程序设计相关的硬件环境和软件环境 狭义上说 程序设计的环境是指利用程序设计语言进行程序开发的编程环境 这里只讨论狭义上的编程环境 目前的编程环境大都是交互式集成开发环境 IntegratedDesignEnvironment IDE 包括编辑功能 编译功能 调试功能等 此外 还包含许多编程的实用程序 典型的编程环境是VisualC 它提供了MFC类库 可实现许多Windows自动编程功能 由于功能强大 也使其具有一定的复杂性 如何用好语言编程工具和环境 也是提高编程效率的因素之一 2 3程序编辑 输入程序以及修改程序的过程称为程序编辑 各个计算机系统的程序编辑过程差异很大 不可能用统一的方式来描述 因此 在程序编辑之前 必须先熟悉所用计算机系统的程序编辑方法 利用高级语言编写的程序不能直接在计算机上执行 因为计算机只能执行二进制的机器指令 所以 必须将高级语言编写的程序 称为源程序 转换为在逻辑上等价的机器指令 称为目标程序 实现这种转换的程序称为翻译程序 2 4程序编译 翻译程序的工作方式通常分为两种 解释方式和编译方式 2 4程序编译 翻译程序的工作方式 C语言采用编译的方式 一个C程序文件 称为源文件 经过编译后转换成二进制文件 称为目标文件 2 4程序编译 C语言的翻译方式 不同类型的计算机上也需要配置不同的翻译程序 2 4程序编译 C语言的翻译方式 某个C程序 2 4程序编译 编译程序的基本过程 2 4程序编译 编译程序的基本过程 1 词法分析词法分析的任务是对源程序进行扫描和分解 滤掉源程序的注释 按照词法规则识别出一个个的单词 如关键字 变量名 运算符等 并将单词转化为某种机内表示 如果发现词法错误 则指出错误位置 给出错误信息 例如 词法分析将语句 floatrate 10 分解为如下5个单词 floatrate 10 其中 单词 是关键字 单词 是标识符 单词 是运算符 单词 是常量 单词 是分隔符 2 4程序编译 编译程序的基本过程 2 语法分析语法分析是编译程序的核心部分 它的任务是对词法分析阶段得到的单词序列按照语法规则分析出一个个的语法单位 如表达式 语句等 如果发现语法错误 则指出错误位置 给出错误信息 例如 语法分析将语句 floatrate 10 表示成如图所示的语法树 并得出分析结果 是一个语法上正确的赋值语句 2 4程序编译 编译程序的基本过程 3 语义分析语义分析的任务是检查程序中语义的正确性 以保证单词或语法单位能有意义地结合在一起 并为代码生成收集类型信息 语义分析的一个重要部分是类型检查 即对每个运算符的运算对象 检查它们的类型是否合法 例如 对于语句 floatrate 10 语义分析审查运算符 的运算对象 发现rate是实型 而10是整型常量 则在语法分析得到的语法树上增加一个语义处理结点 将整型常量转换成实型常量的运算符inttoreal 得到如图所示的语法树 2 4程序编译 编译程序的基本过程 4 生成中间代码生成中间代码的任务是将各语法单位转换为某种中间代码 所谓中间代码是复杂性介于源语言和机器语言之间的一种指令形式 其设计原则是容易生成并且容易翻译为目标代码 四元式是常用的中间代码形式 其一般形式为 运算符 运算对象1 运算对象1 结果 例如 对于语句 floata 10 可以生成如下四元式序列 inttoreal 10 t1 id1 t1 其中 t1是编译程序生成的临时变量 id1是标识符rate的内部形式 2 4程序编译 编译程序的基本过程 5 代码优化代码优化的任务是对中间代码进行等价变换 使得变换后的中间代码在运行速度 存储空间等方面具有较高的质量 例如 对于语句 floata 10 10是编译时已知的常量 把10转换成实型常量10 0的工作可以在编译阶段完成 没有必要生成四元式 因此 上述中间代码可以优化成下面的等价代码 id1 10 0 6 生成目标代码生成目标代码的任务是将优化后的中间代码转换为特定机器的目标程序 例如 对应于语句 floata 10 的四元式可生成下面的目标代码 MOVFid1 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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 村委代签补偿协议书范本
- 文化创意产业基地空地租赁与项目合作开发协议
- 申请商标签协议书范本
- 充电桩充电服务及能源供应合同
- 精细化仓储配送与供应链管理合同
- 茶园土地租赁与茶叶种植技术输出合同
- 知名快餐品牌区域代理权及店铺转让合同范本
- 产科医院护士标准聘用合同及母婴护理
- 餐饮品牌股权投资与转让合同
- 企业常年财务顾问与风险控制协议
- 【MOOC】国际商务-暨南大学 中国大学慕课MOOC答案
- 附件四维性格测试表你的颜色
- 羽毛球社团活动教案记录表
- 《宝葫芦的秘密》作业设计
- 中式面点技师、高级技师理论参考的试题(完整版)实用资料
- 全国社保行政区域划分代码
- GB/T 32892-2016光伏发电系统模型及参数测试规程
- 抹灰施工工艺培训课件
- 部编人教版六年级下册语文 第六单元素养提升卷 优质试题课件
- 集团公司落实子企业董事会职权工作方案
- 教程5.13g加密所属
评论
0/150
提交评论