转上一节:
http://t.csdnimg.cn/0dG17http://t.csdnimg.cn/0dG17
课程内容提要:
4:知识点考点详解
4.1:程序设计语言
考点1:编译程序与解释程序
1:程序设计语言基本概念
计算机要通过程序或指令来控制才能完成各种任务。
程序设计语言(计算机语言) :人与机器交换信息的语言。
2:编译与解释区别
总结:编译得到目标代码,直接执行。解释得到中间代码,边解释边执行。
思考:二者谁的执行效率更高?
3:编译器与解释器
考点2:多种程序设计语言的特点
1:程序语言基础-各种程序语言特点
(1) Fortran语言 (科学计算,执行效率高)
(2) Pascal语言(为教学而开发的,表达能力强,Delphi)
(3) C语言(指针操作能力强,高效)
(4) Lisp语言(函数式程序语言,符号处理,人工智能)
(5) C++语言(面向对象,高效)
(6) Java语言(面向对象,中间代码,跨平台)
(7) C#语言(面向对象,中间代码,.Net)
(8) Prolog语言(逻辑推理,简洁性,表达能力,数据库和专家系统)
(9) Python语言(解释型,面向对象,胶水语言)
(10) PHP语言(解释型,脚本语言,嵌入HTML文档的动态语言)
考点3:程序设计语言的基本成分
1:数据类型与程序控制结构
列表、元组、字典、集合的比较:
列表[] (list) :有序可改变集合,允许重复数据。
元组() (tuple) :有序不可改变集合,允许重复数据。
集合{} (set) :无序无索引(索引为键值)集合,无重复数据。
字典{} (dictionary):无序,可变,有索引集合,无重复数据。
不可变数据(3个) :Number (数字)、String (字符串)、Tuple (元组) ;
可变数据(3个) :List (列表)、Dictionary (字典)、Set (集合)。
程序控制结构主要有:顺序结构、选择结构和循环结构。
考点4:函数调用方式
1:函数调用-传值与传址
注:在传值调用中,实参可以是变量,也可以是常量和表达式,而在传址调用中,实参不能是常
量,且实参必须表示地址。
4.2:语言处理程基础
考点1:编译过程概述
1:编译过程
2.编译程序-词法分析
词法分析:从左到右逐个扫描源程序中的字符,识别其中如关键字(或称保留字)、标识符、 常数、
运算符以及分隔符
例: VAR X,Y,Z: real;
X:=Y+Z*60;
词法分析:
(1)保留字VAR (2) 标识符X (3)逗号, (4) 标识符Y
(5)逗号, (6)标识符Y (7) 冒号: (8)标识符real
(9) 分号: (10) 标识符X (11) 赋值号:= (12) 标识符Y
(13)加号+ (14) 标识符Z (15) 乘号* (16) 整常数60
(17)分号;
3.编译程序﹣语法分析
语法分析:根据语法规则将单词符号分解成各类语法单位,并分析源程序是否存在语法上的错误。
包括:语言结构出错、i f…end if 不匹配,缺少分号、括号不匹配、表达式缺少操作数等。
自顶向下(或自上而下)分析法
【递归下降分析法、预测分析法都是自顶向下的分析方法。】
自底向上语法分析方法(移进-归约分析法)
4:编译程序-语义分析
语义分析:进行类型分析和检查,主要检测源程序是否存在静态语义错误。包括:运算符和运算类
型不符合,如取余时用浮点数。
符号表:记录源程序各个符号的必要信息,以辅助语义的正确性检查和代码生成。
5:编译程序错误管理
注:软件设计师考试中,会单独考查词法错误类型和语法错误类型,与上文中的语法错误类型不完全
等同,注意区分。
单词拼写错误、标点符号错误(中文符号等)属于词法错误:缺少分号、 缺少括号、缺少操作数属于
语法措误。
6.编译程序﹣中间代码
中间代码:是根据语义分析的输出生成中间代码。"中间代码"是一种简单且含义明确的记号系统,
可以有若干种形式,它们的共同特征是与具体的机器无关。最常用的中间代码有:后缀式、语法
树、三地址码、四元式等等。
四元式的形式为:(运算符,运算对象1,运算对象2,运算结果)
考点2:文法
1:文法定义
一个形式文法是一个有序四元组G=(V,T,S,P),其中:
(1)V:非终结符。不是语言组成部分,不是最终结果,可理解为占位符。
(2)T: 终结符。是语言的组成部分,是最终结果。V∩T=∅
(3)S:起始符。是语言的开始符号。
(4)P:产生式。用终结符替代非终结符的规则。形如α→β
正则闭包:(也就是所有幂的组合)。
闭包:(在正则闭包的基础上,加上A0={ε})。
例如:a*={a,aa,aaa,...,ε},而(ab)*={ab,aba b,ababab,...,ε}
注:常见的程序设计语言通常是上下文无关文法。
2.语法推导树
一棵语法树应具有以下特征:
(1)每个结点都有一个标记,此标记是V 的一个符号;
(2)根的标记是S;
(3)若一结点n至少有一个它自己除外的子孙,并且有标记A,则A肯定在VN中;
(4)如果结点n的直接子孙,从左到右的次序是结点n1,n2,…nk,其标记分别是:A1,A2,…,Ak,那
么A->A1,A2…Ak,一定是P 中的一个产生式。
例:文法G=({a, b}, {S, A}, S, P),其中:
S→aASla;
A→SbA|SSlba.
请构造句型aabAa的推导树。
考点3:正规式与正规集
1.正规式
正规式是描述程序语言单词的表达式,对于字母E,其上的正规式及其表示的正规集可以递归定义
如下。
(1) ε是一个正规式,它表示集合L(ε)={ε}。
(2)若a是∑上的字符,则a是一个正则式,它所表示的正规L(a)={a}。
(3)若正规式r和s分别表示正规集L(r)=L(s),则
(a) r|s是正规式,表示集合L(r)UL(s);
(b) r·s是正规式,表示集合L(r)L(s); .
(c) r*是正规式,表示集合(L(r))*;
(d) (r)是正规式,表示集合L(r)。
仅由有限次地使用上述三个步骤定义的表达式才是E上的正规式。由此可见,正规式要么为空,要
么由字母、或、连接、闭包运算符组成。中闭包运算符“*”具有最高的优先级,连接运算具有次高优
先级,或运算符“|”具有最低优先级。
考点4:有限自动机
M=(S,∑,∂,S0,Z)
(1) S是一个有限集,每个元素为一个状态;
(2) ∑是一个有穷字母表,每个元素为一个输入字符;
(3)∂是转换函数:是一个单值对照;
(4) S0属于S, 其唯一的初态;
(5) Z是-一个终态集(可空)。
有限状态自动机可以形象地用状态转换图表示,设有限状态自动机:
DFA=({S,A,B, C, f}, {1, 0},σ,S, {f}),
其中:
σ(S, 0)=B, σ(S, 1)=A, σ(A, 0)=f, σ(A, 1)=C, σ(B, 0)=C, σ(B, 1)=f,δ(C, 0)=f, σ(C, 1)=f
有限自动机能够识别的串:从初态出发可以到达终态且停留在终态。
确定的有限自动机:当-个状态面对一个输入符号的时候,所转换到的是一个唯一 确定的状态。
不确定的有限自动机:当-个状态面对一一个输入符号的时候,它所转换到的可能不只一一个状态,
可以是一个状态集合。
考点5:表达式
前缀表达式(+ab),中缀表达式(a+b),后缀表达式(ab+)
例:表达式(a-b) * (c+5)的后缀式是( )。
A、abc5+*-
B、 ab-c+5*
C、 abc-*5+
D、 ab-c5+*