- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第2章
第2章 程序设计语言的设计概述
本章介绍程序设计语言的设计目标以及为实现这些目标所遵循的设计准则,设计语言最后
要给出语言的参考手册,为此,从表示的角度介绍与语法,语义和上下文约束有关的概念和表示
法。目前在程序语言语法文本中,语法形式表示是完整的,语义表示多半是非形式的。本章仅给
出各种形式语义的初步概念,有关理论后文还要讲述。
2.1 表示与抽象(Representation Abstraction)
程序就是程序设计语言表示的计算。所谓表示是人为制造的符号组合以表达我们需要表达
的意思。每个合乎语法的表示都表达了某种语义,例如:
float n; //n是C语言中的浮点数变量
sqrt(n); //对n取平方根
由于我们约定float是浮点类型的关键字,故float n这个合法表示表明“n是浮点数”,
是一个静态的说明。同样,sqrt(n)说明要做“对n取平方根”的动作。
表示是对事物抽象的表达。抽象是对论题本质的提取。当我们为某软件投入市场作市场调
查并写出分析报告时,我们已先完成了抽象(从社会效益、技术效益、经济效益列出定性或定
量的分析),也完成了表示(报告正文)。表示的规则是语法的,抽象的,内容是语义的。同
一事物可在不同抽象层次表示它。同一程序可用高级语言表示、汇编码表示以及机器码表示。
当然,高级语言上面还可以有甚高级、超高级语言不断抽象上去。所以,每种语言都是在某个
抽象层次上的表示。
从日常概念中,我们可以得知概念愈是抽象其内涵愈小(只包含主要特征,略去其余)而外
延愈大(能满足该主要特征的事物愈多)。例如“张三在种地”也可以说“张三在改变生态环
境”,还可以说“张三修理地球”都没有错。之所以不错是表达了主要概念:“地表情况有了
变化”。但张三用锄种玉米的细节全被抽象(忽略)掉,且“李四砍树”也可以说成“改变生态
环境”、“修理地球”。当然,这种近乎失真的外延是不希望的,同样,能满足高级语言描述
的计算的机器码实现也可以不止一个。例如:给变量x增值1,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 上层抽象可用多种下层抽象实现。程序设计的四个世
界。
客观世界的问题描述了客观世界对象相互之间的作用,经过分析建立解题模型。
read(m,s,d); m
u=m-s-d u=m-s-d; s
女儿8岁,儿子10岁 print(u) d
母亲35岁.问: 每人每年增1岁 read(m,s,d); u
几年后儿女岁数之 每增一年比较 u=0;
和大于等于母亲? 一次,满足条 while(m+us+d+2u) u++; 指令集
件即所求。 print(u);
问题
文档评论(0)