《高级程序设计语言》PPT课件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
个不一定连续的字符后形成的字符串 )
符号串集合V自身的n次(连接)积记为: Vn = V V…V =Vn-1V =VVn-1 (n个V)
规定 V0 = {}. V的闭包:令: V* = V0 ∪ V1 ∪ V2 ∪ …
称 V*是V的闭包。 V的正则包(正闭包,正则闭包):记V+ = VV*, 称
相同
名字和标识符
标识符:无意义的符号串
名字:可以看成是代表一个抽象的存储单元
名字的值:名字所代表的单元的内容则认为是 此名字的值。
名字的属性: 一个名字的属性包括类型和作用 域。
标识符、名字与存储空间的关系:同一标识符可 以表示不同的名字;同一名字可以表示不同的 存储空间;同一存储空间可以有多个名字
地址为 a
CARD.AGE 地址为 a+20
CARD.MARRIED 地址为 a+24
2.2.4 语句与控制结构
表达式 数值、关系、逻辑、字符串
语句 赋值语句 控制语句(无条件、条件、循环、过程调用、返回) 说明句
简单句和复合句
组成:运算量(亦称操作数,即数据引用或函数调 用)和算符组成的。 表示形式:
尾(前)部删掉几个字符后形成的符号串,称为x的前 (后)缀;从一个符号串中删去他的一个前缀和后缀后 所剩下部分称为x的子串。
与文法定义相关的几个概念和术语:
空串(字):不包含符号的序列称为空串(字) ,记 为。
用*表示上的所有符号串的全体,空字也包括在其中。 如:若={a,b}则*={,a,b,aa,ab,bb,aaa,…}。表示不含 人何元素的空集{}。这里要注意、{}和{}的区别。
前缀式: +a*bc 中缀式:a+b*c 后缀式:abc*+
表达式中的算符
消除文法的二 义性
算符的优先级和结合性 乘幂 ( ** 或 ↑ ) 一元负 ( - ) 乘、除 ( * , /, ÷ ) 加、减 ( + , - ) 关系符 ( < , = , >, <=, <>, >= ) 非 ( ﹁, not, 或 .NOT. ) 与 (∧, &, and 或 .AND. )
符号串集合的连接:*的子集U和V中的(连接)积定义 为: UV={∣U & V }
即集合UV中的符号串是由U和V的符号串连接而成的。注 意,一般UVVU,但(UV)W=U(VW).
令X1=“abc”, X2=“def” 表示、术语 举例
|X1|
|abc|= 3
ε
|ε|= 0
X1.X2
“abc”“def”=“abcdef”
语句1; 语句2; 语句n; 许多广为使用的语言,如FORTRAN、C、Pascal,等等,属于 这类语言。
2.2.1 高级语言分类
二、应用式语言
与强制式语言不同的是,应用式语言更注重程序所 表示的功能,而不是一个语句接一个语句地执行。程 序的开发过程是从前面已有的函数出发构造出更复杂 的函数,对初始数据集进行操作直至最终的函数可以 用于从初始数据计算出最终的结果。这种语言通常的 语法形式是:
end;
struct Node {
char data; int a; int mark; };
特点:
多种基本数据类型组成的新的数据类型
记录的存放:连续存放 记录的长度:每个分量的长度之和 记录分量地址的计算:首地址+各分量相
对于首地址的偏移(offset)
如:就CARD而言, NAME,AGE,MARRIED 的相对数 OFFSET分别为0、20、24。于是,假定 CARD的首地址为a,那么,
V+是V的正则包,即V+ =V1 ∪ V2 ∪ V3 ∪ …。
一个例子
有一个字母表: A={a,b,c}
A0={ε} A1=? A2=? A3=? A*=?
A+=?
2.3.1 上下文无关文法
文法是描述语言的语法结构的形式规则(即语法 规则)。
所谓上下文无关文法是这样一种文法,它所定义 的语法范畴(或语法单位)是完全于这种范畴可 能出现的环境的。
2.2.1 高级语言分类 2.2.2 程序结构 2.2.3 数据类型与操作 2.2.4 语句与控制结构
2.2.1 高级语言分类
从不同的角度看,对高级程序设计语言有不同的分类方法。如 果我们从语言范型分类,当今的大多数程序设计语言可划分为四类。
一、强制式语言
强制式语言也称过程式语言。其特点是命令驱动,面向语句。一 个强制式语言程序由一系列的语句组成,每个浯句的执行引起若干 存储单元中的值的改变。这种语言的语法形式通常具有如下形式:
2.1.2 语义
对于一个语言来说,不仅要给出它的词 法、语法规则,而且要定义它的单词符 号和语法单位的意义。这就是语义问题。
语义是指这样的一组规则,使用它可
以定义一个程序的意义。 我们采用的方法为:属性文法和基于属
性文法的语法制导翻译方法。
程序
程序
程序语言的基
子程序 或
本功能是描述
数据和对数据
2.3 程序语言的语法描述
对于高级程序语言及编译程序而言, 语言的语法定义是非常重要的。
本节将介绍语法结构的形式描述问 题。
与文法定义相关的几个概念和术语:
字母表:由若干元素组成的有限非空集合,用表示, 它的每个元素称为一个符号。
符号串: 由中的符号所构成的有穷序列。 符号串的前缀和后缀及子串:设x是一个符号串,将x的
从功能上说语句大体可分执行性语句和说明性语句,
说明性语句旨在定义不同数据类型的变量或运算。
执行性语句旨在描述程序根的据属动性作文。法的定义
进行处理
对不同的语句,编译器的处理方式不同。 执行性语句又可分赋值语句、控制语句和输入/输出语
句. 从形式上说,语句还可分为简单句、复合句和分程序等。
X1n X1的前缀 X1的后缀 X1的子串 X1的真前缀 X1的真后缀 X1的真子串 X1的子序列
“abc”3 =“abcabcabc” “abc”的前缀可以是:ε,a,ab, abc “abc”的前缀可以是:ε,c,bc, abc “abc”的子串可以是: ε,a,b, c, … “abc”的真前缀可以是:a,ab ? ? “abdf”是“abcdef”的一个子序列(X1中去掉若干
《高级程序设计语言》PPT课件
本课件PPT仅供学习使用 本课件PPT仅供学习使用 本课件PPT仅供学习使用
学习完毕请自行删除
2.1 程序语言的定义
任何语言实现的基础是语言的定义。 在定义方面,编译程序研制者与一般用户有
所不同
用户关心语言如何使用 开发人员关心语言的定义。他们对哪些构造允许
出现更感兴趣。即使一时不能看出某种构造的实 际应用,或者判断实现该结构会导致严重的困难, 但仍必须严格根据语言的定义实现它。
a. 数组
特点:一个数组是由同一类型数据所组成的某 种n维矩形结构。每个元素占相同的存储空间
下标:沿着每一维的距离称为一设个计下符标号表。的构造 数组元素的命名:数组名+下标方法,需要在符号 确储定空数间组 是与 否可 确变定数组:在编译时表息同数中,的组存并属所储需性更要文需多定法的的义以存信不便 数组元素的存储与地址的计算 对其语义进行描述 内情向量表:数据类型,数组的维数,下标的
符号串及符号串集合的运算
符号串的连接运算 符号串的方幂:一个符号串与其自身的n-1的任意连
接称为符号串的n次幂,记作:xn xn = xn-1n-1 特别地:x0=
符号串及符号串集合的运算
字符串集合的和(等价于集合的并运算):设A、B是两个 符号串的集合,则将集合A、B的和记为A+B或A∪B,定 义为:A∪B={w|wA或wB}
2.2.2 程序结构
不同程序语言都有各自的程序结构
C语言程序可以包含多个函数 Pascal 支持过程的嵌套定义 程序结构的不同,决定了符号表构造方法
的不同
Papsrocgarl a是m 一ma个in允许子程序嵌套定义的语言
…procedure P1; … procedure P11; …begin e…nd;
其中,A∈VN, ∈( VT∪VN)*开始符号S至 少必须在某一产生式的左部出现一次。
上下文无关文法的定义
1. 所谓终结符号乃是组成语言的基本符号,
函数n(…函数2(函数1(数据))…) 因此,这种语言也称函数式语言。LISP和ML属于这种 语言。
2.2.1 高级语言分类
三、基于规则的语言
基于规则的语言程序的执行过程是:检查一定 的条件,当它满足值,则执行适当的动作。最 有代表性的基于规则语言是Prolog,它也称逻 辑程序设计语言,因为它的基本允许条件是谓 词逻辑表达式。这类语言的语法形式通常为:
变化范围,首地址
从逻辑上说,记录结构是由已知类型的 数据组合起来的一种结构。
记录结构是许多程序语言的一类重要的 数据结构。
Pascal语言采用下面形式定义记录:
CARD: record NAME: array[1…20] of char; AGE:integer; MARRIED:boolean
语句
的运算。所谓 程序,从本质
表达式
上来说是描述
一定数据的处数据引用
算符
理过程。
分程序
函数调用
程序设计语言的定义
建立在有限字母集之上的一个符号系统 有一定的语法和语义规则
语法规则:词法规则和语法规则 语义规则:描述语法单位的功能和含义
程序设计语言的功能是描述数据和对数 据的运算
2.2 高级语言的一般特性
形式上定义一个上下文无关文法G是一 个四元式(VT,VN,S,P)
上下文无关文法的形式定义
形式上定义一个上下文无关文法G是一个四元式 (VT,VN,S,P)其中 VT是一个非空有限集,它的每一个元素称为终结符号; VN是一个非空有限集,它的每一个元素称为非终结符号,
VT∩VN=; S是一个非终结符号,称为开始符号; P是一个产生式(有限)集合,每个产生式形式是A→ ,
程序语言主要由语法和语义两方面定义。
Байду номын сангаас
2.1.1 语法
所谓一个语言的语法是指这样的一组规 则,用它可以形成和产生一个合适的程 序。
这些规则一部分称为词法规则,另一部 分能称为语法规则(或产生规则)。
几个概念
字母表; b.词法规则是指单词符号的形成规则。单词符号
一般包括:各类型的常数、标识符、基本字、 算符和界符等。 语法规则规定了如何从单词符号形成更大的结构 (即语法单位或语法范畴),换言之,语法规 则是语法单位的形成规则。一般程序语言的语 法单位有:表达式、语句、分程序、函数、过 程和程序等。
特点:性 缺点:不能用来描述自然语言,但对于程序语言
基本上够用,所以以后凡“文法”一词,若无 特殊说明,均指上下文无关文法
引例
例子:对于英文句子:He gave me a book. 是由如下语法规则产生的:
由语法规则“推导”出句子的过 程
“推导” 过程对应的语法分析树
上下文无关文法的定义
一个上下文无关文法G包括四个组成部分: 一组终结符号,一组非终结符,一个开 始符号,以及一组产生式。
begin …end; procedure P2; …begin …end; begin … end
2.2.3 数据类型与操作
程序设计语言支持特定的数据类型与操作。一 个数据类型通常包括以下三种要素: 属性 值 操作
一.初等数据类型(基本数据类型)
常见的初等数据类型有:
不同的数据类型占 存储空间不同,表 示的数的范围也不
算符的代数性质
作用:(交换率、结合率和分决配定率了)在优常化的
常可用来优化目标程序的质量过。程优但中化应是策采必略取的
须注意两点:
代数性质引用到什么程度视具体语言的不同 而不同。如在ALGOL中把
A*B+C*D 处理成C*D+A*B, 则至少是对ALGOL不 够忠实。
数学上成立的代数性质在计算机上未必完全 成立。如:(A+B)+C=A+(B+C)在计算机上 并不普遍成立。
条件1→动作l 条件2→动作2 条件n→动作3
2.2.1 高级语言分类
四、面向对象语言
面向对象语言如今已成为最流行、最重要的 语言。它主要的特征是支持封装性、继承性和 多态性等。把复杂的数据和用于这些数据的操 作封装在一起,构成对象;对简单对象进行扩 充、继承简单对象的特性,从而设计出复杂的 对象。通过对象的构造可以使面向对象程序获 得强制式语言的有效性,通过作用于规定数据 的函数的构造可以获得应用式语言的灵活性和 可靠性。
相关文档
最新文档