高级语言程序设计方法学第02章-10

高级语言程序设计方法学第02章-10

ID:34063931

大小:304.72 KB

页数:16页

时间:2019-03-03

高级语言程序设计方法学第02章-10_第1页
高级语言程序设计方法学第02章-10_第2页
高级语言程序设计方法学第02章-10_第3页
高级语言程序设计方法学第02章-10_第4页
高级语言程序设计方法学第02章-10_第5页
资源描述:

《高级语言程序设计方法学第02章-10》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第2章第2章程序设计语言的设计概述本章介绍程序设计语言的设计目标以及为实现这些目标所遵循的设计准则,设计语言最后要给出语言的参考手册,为此,从表示的角度介绍与语法,语义和上下文约束有关的概念和表示法。目前在程序语言语法文本中,语法形式表示是完整的,语义表示多半是非形式的。本章仅给出各种形式语义的初步概念,有关理论后文还要讲述。2.1表示与抽象(Representation&Abstraction)程序就是程序设计语言表示的计算。所谓表示是人为制造的符号组合以表达我们需要表达的意思。每个合乎语法的表示都表达了某种语义,例如:floatn;//n是

2、C语言中的浮点数变量sqrt(n);//对n取平方根由于我们约定float是浮点类型的关键字,故floatn这个合法表示表明“n是浮点数”,是一个静态的说明。同样,sqrt(n)说明要做“对n取平方根”的动作。表示是对事物抽象的表达。抽象是对论题本质的提取。当我们为某软件投入市场作市场调查并写出分析报告时,我们已先完成了抽象(从社会效益、技术效益、经济效益列出定性或定量的分析),也完成了表示(报告正文)。表示的规则是语法的,抽象的,内容是语义的。同一事物可在不同抽象层次表示它。同一程序可用高级语言表示、汇编码表示以及机器码表示。当然,高级语言上

3、面还可以有甚高级、超高级语言不断抽象上去。所以,每种语言都是在某个抽象层次上的表示。从日常概念中,我们可以得知概念愈是抽象其内涵愈小(只包含主要特征,略去其余)而外延愈大(能满足该主要特征的事物愈多)。例如“张三在种地”也可以说“张三在改变生态环境”,还可以说“张三修理地球”都没有错。之所以不错是表达了主要概念:“地表情况有了变化”。但张三用锄种玉米的细节全被抽象(忽略)掉,且“李四砍树”也可以说成“改变生态环境”、“修理地球”。当然,这种近乎失真的外延是不希望的,同样,能满足高级语言描述的计算的机器码实现也可以不止一个。例如:给变量x增值1,

4、x=x+1;这类赋值语句编译后的机器码可以有如下两种做法,按语义描述为:1.从内存代表x的地址中取出值放在运算器中。1.从内存代表x的地址中取出值放在运算器中。2.加1,将结果放于某临时单元。2.加1将结果放入x地址中。3.将临时单元内容作类型检查(必要时转换),并放入x中。x=x+1;x+=1;两者都对,但效率不同。左边按赋值常规做法,保证赋值安全并没有错。右边则认为编译时表达式x+1已作了类型检查,结果必然是x的类型,根据这个特殊情况节省了一步,C语言的x+=1;的写法就是后者。其它语言两者均可,完全由编译器决定了。1第2章2.1.1上层抽

5、象可用多种下层抽象实现。程序设计的四个世界。客观世界的问题描述了客观世界对象相互之间的作用,经过分析建立解题模型。read(m,s,d);mu=m-s-du=m-s-d;s女儿8岁,儿子10岁print(u)d母亲35岁.问:每人每年增1岁read(m,s,d);u几年后儿女岁数之每增一年比较u=0;和大于等于母亲?一次,满足条while(m+u>s+d+2u)u++;指令集件即所求。print(u);问题模型用程序抽象实现模型实现程序客观世界模型世界程序世界机器世界图2-1计算机解题的四个世界一种模型只抽取与该层抽象有关的数据属性。例如按图2

6、-1的问题,儿子、女儿、母亲的姓名、身高体重、文化程度......与本题无关。问题中的对象在本例中是三人年龄和要求解的年数。数学模型是最高级的抽象,解题公式u=m-s-d即本题的数学模型。程序对象可以是u,m,s,d,它直接和数学模型对象对应。由于程序对象在程序世界有自己的行为,如输入/输出操作。到计算机实现时又映射为存储对象和指令集。它又要加上分配存储、查找地址和往运算器、存储器和输入/出设备送数的操作(输入/出还要有数、码变换)。所以,同一问题在问题世界,模型世界,程序世界,机器世界中对象及其相互作用是不同的。我们研究程序设计语言的设计是从

7、问题—模型世界的需求出发,在机器世界可能实现情况下,定义自己的对象表示及其相互作用的表示。对于从问题到程序,我们只介绍已有程序设计范型,对于程序到实现,我们在以后章节将陆续分析程序各元素和各机制(即每种特征)以及它们的实现。2.1.2显式表示和隐式表示程序对象及其相互作用的表示可以是显式的。如上例中的floatn,显式说明n是浮点变量;也可以是隐式的,例如数组元素的次序(按下标序不可改);一组连续的语句(语句次序不可改);程序中的缺省声明,如FORTRAN中符号名首字母为1..N的程序对象自动为整型,其余为实型。再如Ada中:forJin1..

8、5loop......endloop;其中J的类型自动为循环域(1..5)表示给出的整型。一般说来,编译时,信息越多越准确,所以,强类型语言强调显式表

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。