我和计算机技术与软件专业技术资格(水平)考试愉快第5天--软件设计师
程序设计语言基础知识
程序语言的基本概念
【基础知识点】
1、低级语言与高级语言
1)低级语言:汇编
2)高级语言:常见的有Java、C、C++、PHP、Python、Delphi等。
2、翻译形式:汇编、解释、编译。
3、程序设计语言的定义:语法、语义、语用
4、程序设计语言的分类
1)过程式(命令式和结构化):FORTRAN、Pascal、C
2)面向对象:Simula、Smalltalk、C++、ObjectiveC、Java、Python
3)函数式:lisp、python、scala
4)逻辑型:Prolog
5)脚本语言:shell、bat、js、python
程序设计的基本成分
【基础知识点】
程序语言的基本成分包括数据、运算、控制和传输等。
1、数据成分
1)常量和变量
2)全局量和局部量
3)数据类型
2、运算成分:算式运算、关系运算、逻辑运算
3、控制成分:顺序结构、选择结构、循环结构
4、函数:定义、声明、调用(值调用、引用调用)
汇编程序基本原理
【基础知识点】
1、汇编语言是为特定的计算机或计算机系统设计的面向机器的符号化的程序设计语言。用汇编语言编写的程序称为汇编语言源程序。因为计算机不能直接识别和运行符号语言程序,所以要用专门的翻译程序——汇编程序进行翻译。用汇编语言编写程序要遵循所用语言的规范和约定。
汇编语言源程序由若干条语句组成,一个程序中可以有三类语句:指令语句、伪指令语句和宏指令语句。
2、汇编程序:将汇编语言所编写的源程序翻译成机器指令程序。汇编程序一般需要两次扫描源程序才能完成翻译过程。第一次扫描:检查语法错误,确定符号名字;建立使用的全部符号名字表;每一符号名字后跟一对应值(地址或数)。第二次扫描:是在第一次扫描基础上,将符号地址转换成真地址(代真);利用操作码表将助记符转换成相应的目标码。
编译程序基本原理
1、编译程序的工作过程分为 6 个阶段,如下图所示。
2、文法
G={Vt,Vn,S,P}
Vt是一个非空有限的符号集合,它的每个元素称为终结符号Vn是一个非空有限集合的符号,它的每个元素称为非终结符号S称为文法G的开始符号
P是一个非空有限集合,它的元素称为产生式。
1型文法:又称为上下文有关文法。
2型文法:又称为上下文无关文法。
3型文法:又称为正规文法,使用最多。
0型文法:短语文法。
3、有限自动机:计算机控制系统的控制程序具有有限状态自动机(FA)的特征,可以用有限状态机理论来描述。
1)确定有限自动机(DFA):自动机的每个状态都有对字母表中所有符号的转移。一个确定的有限自动机是个五元组(S,∑,f,s0,Z),其中:
·S是一个有限集,其每个元素称为一个状态。
·∑是一个有穷字母表,其每个元素称为一个输入字符。
·f是S×∑→S上的单值部分映像。f(A,a)=Q表示当前状态为A、输入为a时,将转换到下一状态Q。称Q为A的一个后继状态。
·s0∈S,是唯一的一个开始状态。
·Z是非空的终止状态集合,Z⊆S。
一个DFA可以用两种直观的方式表示:状态转换图和状态转换矩阵。状态转换图简称为转换图,是一个有向图。DFA中的每个状态对应转换图中的一个节点,DFA中的每个转换函数对应图中的一条有向弧,若转换函数为f(A,a)=Q,则该有向弧从节点A出发,进入节点Q,字符a是弧上的标记。
【例2.1】 已知有DFAM1=({s0,s1,s2,s3},{a,b},f,S,{s3}),其中f为:
f(s0,a)=s1, f(s0,b)=s2, f(s1,a)=s3, f(s1,b)=s2, f(s2,a)=s1, f(s2,b)=s3, f(s3,a)=s3
与 DFA M1 对应的状态图如下图(a)所示,其中,双圈表示的节点是终态节点。状态转换矩阵可以用一个二维数组 M 表示,矩阵元素 M[A,a]的行下标表示状态,列下标表示输入字符,M[A,a] 的值是当前状态为 A、输入为 a 时,应转换到的下一状态。与 DFA M1 对应的状态转换矩阵如下图(b)所示。在转换矩阵中,一般以第一行的行下标所对应的状态作为初态,而终态则需要特别指明。
2)非确定有限自动机(NFA):自动机的状态对字母表中的每个符号可以有也可以没有转移,对一个符号甚至可以有多个转移。一个不确定的有限自动机也是一个五元组,它与确定有限自动机的区别如下。
①f是S×∑→2S上的映像。对于S中的一个给定状态及输入符号,返回一个状态的集合。即当前状态的后继状态不一定是唯一确定的。
②有向弧上的标记可以是ε。
【例2.2】 已知有NFAN=({s0,s1,s2,s3},{a,b},f,S,{s3}),其中f为:
f(s0,a)=s0,f(s0,a)=s1,f(s0,b)=s0,f(s1,b)=s2,f(s2,b)=s3与 NFA M2 对应的状态转换图和状态转换矩阵如下图所示。
4、正规表达式
对于字母表∑,其上的正规式及其表示的正规集可以递归定义如下。
(1)ε是一个正规式,它表示集合L(ε)={ε}。
(2)若a是∑上的字符,则a是一个正规式,它所表示的正规集为{a}。
(3)若正规式r和s分别表示正规集L(r)和L(s),则:
①r|s是正规式,表示集合L(r)∪L(s)。
②r·s是正规式,表示集合L(r)L(s)。
③r*是正规式,表示集合(L(r))*。
④(r)是正规式,表示集合L(r)。
仅由有限次地使用上述三个步骤定义的表达式才是∑上的正规式,其中运算符“|”、“·”、“*”分别称为“或”、“连接”和“闭包”。在正规式的书写中,连接运算符“·”可省略。运算符的优先级从高到低顺序排列为“*”、“·”、“|”。
设∑={a,b},下表列出了∑上的一些正规式和相应的正规集。
若两个正规式表示的正规集相同,则认为二者等价。两个等价的正规式U和V记为U=V。例如,b(ab)*=(ba)*b,(a|b)*=(a*b*)*。设U、V和W均为正规式,正规式的代数性质如下表所示。
5、正规式与有限自动机之间的转换
1)有限自动机转为正规式
2)正规式转为有限自动机
解释程序基本原理
【基础知识点】
解释程序是另一种语言处理程序,在词法、语法和语义分析方面与编译程序的工作原理基本相同,但是在运行用户程序时,它直接执行源程序或源程序的内部形式。因此,解释程序不产生源程序的目标程序,这是它和编译程序的主要区别。下图显示了解释程序实现高级语言的三种方式。