软件设计师知识点总结:程序设计语言基础
一.程序设计语言的基本概念
1.编程语言和解释程序
- 低级语言与高级语言
- 低级语言:机器语言(计算机硬件只能识别 0 和 1 的指令序列),如汇编语言
- 高级语言:功能更强,抽象级别更高,与人们使用的自然语言比较接近,常见的有 Java,C,C++,PHP,Python,Delphi 等
- 各程序设计语言特点
- Fortran 语言(科学计算,执行效率高)
- Pascal 语言(为教学而开发的,表达能力强,Delphi)
- C 语言(指针操作能力强,高效)
- Lisp 语言(函数式程序语言,符号处理,人工智能)
- C++ 语言(面向对象,高效)
- Java 语言(面向对象,中间代码,跨平台)
- C# 语言(面向对象,中间代码,.Net)
- Prolog 语言(逻辑推理,简洁性,表达能力,数据库和专家系统)
2.解释器与编译器
- 解释器:翻译源程序时不生成独立的目标程序,解释程序和源程序都要参与程序的运行过程中
- 编译器:翻译源程序时生成独立的目标程序,机器上运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的运行过程
例题
3.程序设计语言的基本成分
- 数据:常量和变量、全局量和局部量、数据类型
- 运算:算术运算、关系运算、逻辑运算
- 控制:顺序结构、选择结构、循环结构
- 传输:赋值、输入、输出
- 函数:定义、声明、调用;传值(值调用)、传地址(引用调用)
- 传值调用:将实参的值传递给形参,实参可以是变量、常量和表达式;不可以实现形参和实参间双向传递数据的效果。
- 传引用(地址)调用:将实参的地址传递给形参,形参必须有地址,实参不能是常量(值)、表达式;可以实现形参和实参间双向传递数据的效果,即改变形参的值同时也改变实参的值。
- 数据必须有类型有利用:
- 便于数据合理分配存储单元
- 便于对参与表达式计算的数据对象检查
- 便于规定数据对象的取值范围及能够进行的运算
二.编译,解释程序翻译阶段
编译方式:词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成。
解释方式:词法分析、语法分析、语义分析。编译器和解释器都不可省略词法分析、语法分析、语义分析,且这三个阶段的顺序不可交换;编译方式中,中间代码生成和代码优化不是必要步骤,可省略。
-
词法分析
- 输入:源程序
- 输出:记号流
- 作用:分析构成程序的字符及由字符按构造规则构成的符号是否符合程序语言的规定
-
语法分析
- 输入:记号流
- 输出:语法树(分析树)
- 作用:对各条语句的结构进行合法性分析,检查程序中的句子结构是否正确;可发现程序中所有的语法错误
-
语义分析
- 输入:语法树(分析树)
- 作用:进行类型分析和检查;不能发现程序中所有的语义错误,仅能发现静态语义错误,无法发现动态语义错误(动态语义错误需在程序运行时才能发现);存在语义错误时程序仍可能编译成功,例如 “a/0”,符合语法和静态语义,编译器无法检测,运行时才会报错,动态语义错误常见的还有死循环
- 目标代码生成
- 作用:生成与具体机器相关的目标代码,寄存器的分配处于此阶段
- 中间代码生成
- 符号表管理
三.正规表达式
正规式是词法分析的工具,对于字母表∑,其上的正规式及其表示的正规集可以递归定义如下:
- ε是一个正规式,它表示的集合L(ε)={ε}
- 若a是∑上的字符,则a是一个正规式,它所表示的正规集为{a}
- 若正规式α和β分别表示正规集L(α)和L(β),则:
- α∣β是正规式,表示集合L(α)∪L(β)
- αβ是正规式,表示集合L(α)L(β)
- α∗是正规式,表示集合(L(α))∗
- (α)是正规式,表示集合L(α)在正规式的书写中,连接运算符 “⋅” 可以省略;运算符的优先级从高到低为 “∗”“⋅”“∣”。
四.有限自动机
能正确识别正规集,计算机控制系统的控制程序具有有限状态(FA)的特征,可用有限状态机理论来描述。M={S,∑,δ,s0,Z},各部分含义如下:
- S:是一个有限集,每个元素为一个状态
- ∑:是一个有穷字母表,每个元素为一个输入字符
- δ:是转换函数,是一个单值对照
- s0:属于S,是其唯一的初态
- Z:是一个终态集(可空)主要有五个符号集,由上面图示,可知用状态来表示十分清晰,由s输入一个0,可得出B,依次类推,一般考试,给出一个状态图,问能否构造出001这样的字符串,解决方法就是从起始s到终点Z之间是否有一条路,权值为001。本质就是有向图从起点到终点的遍历。
- 初态——>终态
五.上下文无关文法
直接看题目:
六.中缀,后缀式转换(逆波兰式)
- 前缀表达式:如 “+ab”
- 中缀表达式:如 “a+b”
- 后缀表达式:如 “ab+”后缀表达式的简单求法:从左到右对表达式加上括号,再依次把运算符加到本层次的括号后面
七.文法定义
文法定义为G={Vt,Vn,S,P},各部分含义如下:
- Vt:非空有限集合的符号,每个元素称为终结符号
- Vn:非空有限集合的符号,每个元素称为非终结符号
- S:文法G的开始符号
- P:非空有限集合,元素称为产生式
- 正则闭包:A+=A1∪A2∪A3∪…∪An∪…(即所有幂的组合)
- 闭包:A∗=A0∪A+,在正则闭包的基础上,加上A0={ε}
- 示例:ab∗={ab,abab,ababab,…}
类型 | 别称 | 说明 | 对应自动机 |
---|---|---|---|
0 型 | 短语文法 | G的每一条产生式满足α属于V的正则闭包且至少含有一个非终结符,而β属于V的闭包 | 图灵机 |
1 型 | 上下文有关文法 | G的任何产生式α→β满足∣α∣≤∣β∣,仅S→ε例外,但S不得出现在任何产生式右部 | 线性界限自动机 |
2 型 | 上下文无关文法 | G的任何产生式A→β,A为非终结符,β为V的闭包 | 非确定的下推自动机 |
3 型 | 正规文法 | G的任何产生式A→aB或A→a,a属于终结符的闭包,A,B都属于非终结符 |