低级语言
•机器语言
用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。是计算机的设计者通过计算机的硬件结构赋予计算机的操作功能。
机器语言具有灵活、直接执行、速度快等特点。
•汇编语言
为了克服机器语言难读、难编、难记和易出错的缺点,用与代码指令实际含义相近的英文缩写词、字母和数字等符号来取代指令代码。
汇编语言是一种用助记符表示的仍然面向机器的计算机语言,也称为符号语言。汇编程序:把汇编语言书写的程序翻译成与之等价的机器语言程序的翻译程序。汇编语言程序:用汇编语言书写的程序
汇编程序:输入:是用汇编语言书写的源程序;输出:是用机器语言表示的目标程序
解释程序/编译程序
•解释程序
也称解释器; 直接解释执行源程序,或者将源程序翻译成某种中间代码后再加以执行。
•编译程序
也称编译器; 将源程序翻译成目标语言程序,然后再计算机上运行目标程序。
•两者的根本区别
编译方式下, 机器上运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的执行过程。
解释方式下, 解释程序和源程序(或某种等价表示)要参与到程序的运行过程中,运行程序的控制权在解释程序
即:解释方式,翻译程序不生成独立的目标程序,而编译方式则生成独立保持的目标程序。
高级程序设计语言相关概念
•语句
用于描述程序中的运算步骤、控制结构及数据传输。
•语法
是指由程序语言的基本符合组成程序中的各个语法成分(包括程序)的一组规则;由符号构成 语法成分的规则称为语法规则。
•语义
则表示不同的语法结构的含义。
静态语义:指编译时可以确定的语法成分的含义。动态语义:是指运行时才能确定的含义。
•语用
语境
是关于程序与使用者之间的关系,涉及符号的来源、使用和影响。
•动态类型语言
在运行期间检查数据的类型的语言。用这类语言编程,不会给变量指定类型而是在附值时得到数据类型
•静态类型语言
静态类型语言是在运行前编译时检查类型。在写代码时,每声明变量必须指定类型
编译器工作的过程
•词法分析阶段
是编译过程的第一阶段,其任务是从前到后,从左到右逐个字符扫描,从中识别出一个个单词符号词法分析过程的依据是语言的词法规则,即描述单词结构的规则
•语法分析阶段
其任务是在词法分析的基础上,根据语言的语法规则将单词符号序列分解成各类语法单位。通常语法分析是确定整个输入串是否构成一个语法上正确的程序。
一般来说,通过编译的程序,不存在语法上的错误。
•语义分析阶段
其任务主要检查源程序是否包含静态语义错误,并收集类型信息供后面的代码生成阶段使用。语义分析的一个主要工作是进行类型分析和检查。
•中间代码生成
其任务是根据语义分析的输出生成中间代码。
•目标代码生成
是编译器工作的最后一个阶段。其任务是把中间代码变换成特定机器上的绝对指令代码、可重定位的指令代码或汇编指令代码。本阶段与具体机器密切相关。
•符号表管理
符号表的作用是记录源程序中各个符号的必要信息,以辅助语义的正确性检查和代码生成,在编译过程中需要对符号表进行快速有效地查找、插入、修改和删除等操作。
三种基本逻辑结构
·顺序结构
是一种线性有序的结构,由一系列依次执行的语句或模块构成
•循环结构:是由一个或几个模块构成,程序运行时重复执行,直到满足某一条件为止
•选择结构:是根据条件成立与否选择执行路径的结构
•方法 1:
第一步按照运算符的优先级,构造二叉树;将运算优先级最低的运算符压入非页节点,运算术符左边的 部分作为左叶结点,右边的作为右叶节点,再讲左右页的节点,按照先前的方法一次分解。
第二步对构造的二叉树,进行后续遍历
•方法 2 :
具体转换方法:(仅供参考)
第一步:按照运算符的优先级对所有的运算单位加括号:式子变成:(a+((b-c)*d)) 第二步:把运算符号移动到对应的括号后面:(a((bc) -d) * ) +
第三步:去掉括号:abc-d*+
传值/传址(引用)调用
•形参
在过程(或函数)首部声明的参数成为形式参数,简称形参
•实参
过程(或函数)调用时的参数称为实际参数,简称实参。
•传值调用
形参取的是实参的值,形参的改变不会导致调用点所传的实参的值发生改变。
•引用(传址)调用
形参取的是实参的地址,即相当于实参存储单元的地址引用,因此其值的改变同时就改变了实参的值