资源描述:
《北风网C++系列第一讲程序语言原理及C++入门》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第二章程序设计语言设计概述2.1表示与抽象2.2设计目标2.3设计准则2.4规格说明12.1表示与抽象表示是人为制造的符号组合以表达我们需要表达的意思。程序是程序设计语言表示的计算floatn;//n是浮点数变量sqrt(n);//对n取平方根同一程序的高级语言表示、经翻译后的汇编码表示、机器码表示就是该程序在不同抽象层次上的表示。22.1表示与抽象程序在不同抽象层次表示的关系例:x=x+1在机器码上就有两种方法。从内存代表x的地址中取出值放在运算器中。加1,将结果放于某临时单元。将临时单元内容做类型检查(必要时转换)并放入x中。从内存代表x的地址
2、中取出值放在运算器中。加1,将结果放入x地址中。32.1表示与抽象儿子10岁女儿8岁母亲35岁几年后儿女岁数之和大于等于母亲?u=m-s-d每人每年增1岁每增一年比较一次,满足条件即所求。read(m,s,d);u=m-s-d;print(u)read(m,s,d);u=0;while(m+u>s+d+2u)u++;print(u);msdu指令集客观世界问题抽象模型世界数学模型模拟模型程序世界以程序世界术语表示描述模型机器世界以机器的术语实现程序图2-1计算机解题的四个世界42.2PL设计目标定义一组能表示某种范型的特征集,每个特征有严格定义并可
3、在机器上高效实现,程序员可灵活运用这些特征表达它所希望的任何计算。模型有力ModelPower语义清晰SemanticClarity移植性好Portability可读性好Readability方便Convenience简单Simplicity高效Efficiency灵活性Flexibility52.3设计准则频度准则越常用越简单方便、可读结构一致程序结构和计算的逻辑结构一致可读、方便局部性Locality只有全局变量Basic不鼓励全局变量Pascal,C无全局变量函数式Java词法内聚LexicalCoherence变量在使用处就近声明(Pasc
4、al声明和语句严格分开)((lambda(xy)(let((x3.5)(y(+a2)))(+(*xy)((+(*xy)(-xy)))(-xy)))3.5(+a2))λx.λy.((x*y)+(x-y)3.5(a+2)6续语法一致性GOTO(L1,L2,…,Ln),II={1..n}GOTON,(L1,L2,…,Ln)ASSIGNLiTONN={L1...Ln}安全性Security语言—编译系统自动找出安全漏洞,不能弥补也要支持安全性→强类型,即每个计算操作运算之前类型必须确定C留给程序员过程参数不检查一般不安全7续正交性和正规性(Orthogon
5、ality&Regularity)正交:每个语言特征都是独立的,增减不影响其它正规:每一约定或规则无一例外不正规:数组不能作返回值,不能赋值函数不能做参数不正交→不正规8续数据隐藏(Datahiddening)封装,以名字封装内部数据设计者可见使用者不可见局部性不一定封装,如:Dol0I=1,10,2当I=7时GOTO2010CONTINUE20…...R=I可以,此时R=7.0...9续抽象表达抽取因子、递归表达、高层模块名、常量名=常量表达式(易于维护)先抽象再修饰具体(如同自然语言)staticconstintmaxlndex=MAX_LEN
6、GTH_1MATHLIB.TRIANGCOS(X)可移植性力图不依赖环境预定义机制、预处理程序10形式语法:以形式结构规则的语言元素组合规则微语法词法Lexicon宏语法定义特征的规则2.4程序设计语言规格说明——语言参考手册2.4.1语法规格说明11T是终结符号串的有限集。N是非终结符号串的有限集。T∩N=Φ,即它们是不相交的。S是起始符号串,S∈N。P是产生式,一般形式是:α→βα,β∈(T∪N)*“→”表示左端可推导出右端,如α→β,α→Υ,α→δ则可写为:α→β
7、Υ
8、δ如果产生式将语言的非终结符中的每一个标记都推得为终结符号,则这一组产生式
9、集即为该语言的全部文法。2.4.1.1文法文法产生符合语法的语言(句子集合)规则,如:G=(S,N,T,P)S∈N,T∩N=Φ*12整数的产生式表示法:设→0
10、1
11、2
12、3
13、4
14、5
15、6
16、7
17、8
18、9则→一位数是整数→两位数也是→…n位数也是n个这势必造成产生式臃肿,如果写成:→
19、
20、续13续Chomsky的四种文法产生式左符
21、号集→右符号集由左符号集推导出右符号集0型文法α→βα∈(N∪T)+,β∈(N∪T)*递归可枚举语言图灵机可以识别1型文法