版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
主要内容第6章程序设计语言历史回顾传统的程序设计概念过程单元语言实现面向对象程序设计并发活动的程序设计说明型程序设计历史回顾早期的程序设计语言机器语言--最早的程序设计语言调试:找到程序的错误并改正
20世纪40年代,研究人员开始简化程序设计的记号系统
助记符号-->数字形式的指令例如:MOVR5,R6-->4056一个稍微复杂的例子:P173L10
标识符汇编语言:是表示程序的助记符系统统称为汇编语言汇编器:负责翻译工作历史回顾早期的程序设计语言第一代程序设计语言:机器语言第二代程序设计语言:汇编语言它的出现是在研究程序设计语言技术方面迈出了巨大的一步汇编语言仍然存在着缺点:汇编语言使用的原语本质上与机器语言是一样的,差别只是在语法上。因此,汇编语言的程序生来就是机器相关的,即不同的体系架构的计算机需要使用不同的汇编语言。
程序员虽然不必使用数字指令编程序,但是还是必须采用机器指令的模式去思考问题。历史回顾在设计一个产品时,最终构造一个产品的原语不一定是在设计该产品时应该使用的原材料。比较好的做法是,设计过程中使用高级原语。设计完成之后,再把高级原语翻译成与实现细节相关的较低级的原语。按照这种思想,人们开发了第三代程序设计语言。
拥有较好的与机器无关性,即不依赖于特定的计算机例如:FORTRAN、COBOL历史回顾使用高级语言编写程序时,我们需要一种称为翻译程序的程序。
翻译程序负责把高级的原语翻译成机器语言的程序每一种高级语言都必须要配有一个翻译程序,它已经是语言的一个组成部分翻译程序有两类:编译程序解释程序目前,编程序通常都使用编译型的语言编辑程序+编译程序发展第三代程序设计语言的任务并没有我们想象的那么简单。
目标是让编译程序越来越智能,程序设计语言本身越来越简单程序设计范型
程序设计范型代表了在构建问题的解决方法时的不同方法。
范型影响了整个软件的开发过程。我们应该称为软件开发范型。历史回顾历史回顾程序设计范型历史回顾程序设计范型-
命令型范型(过程型)
是一种传统的程序设计方法
这种范型告诉我们的程序设计方法是:先找到解决问题的算法,然后用命令序列表示这个算法。C、Pascal、BASIC…历史回顾程序设计范型-说明型范型要求程序员描述要解决的问题,而不要求找到解决问题的算法。在这种范型设计的系统里,首先要发现一个通用的问题求解算法,一旦这种算法找到了,以后要解决的问题只需要按照与算法相兼容的形式描述,该算法就会自己解决该问题。使用这种范型设计程序,困难是基础性的通用算法很难找到。因此,这种范型之应用在某些特殊的方面例如:天气预报、专家系统历史回顾程序设计范型-
函数型范型这种范型解决问题的方法是,把开发程序的过程看成将预先定义好的“黑箱”连接起来的过程。一个“黑箱”的输出可当作另一个“黑箱”的输入。这些“黑箱”被数学家称为函数,这就是称为函数型范型的原因。一个函数型程序设计语言的原语由初等函数(构建块)组成在这种范型里,程序员要做的事就是寻找一种连接初等函数的方法,使他们构成更复杂的函数,从而计算出想要的结果。历史回顾程序设计范型-
面向对象型范型这种范型里,数据单元被看成活动的“对象”。传统的命令型范型里,数据看作被指令操作的对象。自身不具有行为能力。数据与控制数据的代码分离。面向对象的范型中,数据与控制数据的代码结合到一起。例如:对列表排序命令型范型中,列表被看作数据面向对象的范型中,列表被看作可调用的对象历史回顾P216
问题与练习传统的程序设计概念程序设计语言里的语句分为三类:声明语句定义了程序中使用的需要自定义的术语.命令语句用于描述算法里的步骤注释就是对程序的解释,提高可读性注释语句根据需要分布在程序的各处传统的程序设计概念1.Num1002.while(Num<=999)do ( gwNum除以10取余数
swNum除以100取余数后再除以
bwNum除以100取整
if(gw*gw*gw+sw*sw*sw+bw*bw*bw=Num)then (
输出Num ) NumNum+1 )3.结束说明Num、gw、sw、bw传统的程序设计概念1.变量和数据类型--变量高级程序设计语言允许存储单元用描述性的名字来指称,而不用数字地址。这种描述性的名字叫做变量。程序中需要用到的所有数据都是存储在主存储器的存储单元里的。在机器语言中,是通过存储单元的地址来实现对存储单元的读写的。在高级程序设计语言中,变量就相当于主存中存储单元的地址的别名,我们就是通过这些别名来实现对存储单元的读写的。
“把某个值存入某个变量”的含义例如:sum<--0数据类型在定义变量时,需要指明将来要存储到该变量中的数据的类别传统的程序设计概念1.变量和数据类型-基本的数据类型整数(integer)类型用来指称(存储)整数数据可以进行算数运算和比较运算实数(real)类型(有时称为浮点(float)类型)用来指称除整数之外的数值数据字符(character)类型用来指称符号组成的数据比较、查找、连接等运算布尔(Boolean)类型指称只有真和假两种值的数据项传统的程序设计概念1.变量和数据类型-说明变量的一般形式:
数据类型变量名;例如:intHeight;intHeight,Width; intheight=100;传统的程序设计概念2.数据结构抽象的描述:数据的概念形态或布局。通俗的理解:当相同类型或不同类型的一组数据结合在一起使用时,可以使用某种方式将它们组织起来,这种数据的组织方式就叫做数据结构。一种常用的数据结构----数组,数组有:同构数组(homogeneousarray)异构数组(heterogeneousarray)传统的程序设计概念2.数据结构-同构数组具有相同类型元素组成的数据块定义数组的一般形式:类型名数组名[i][j][k]…[n]在数组中,我们是使用下标来标识数组中的某个元素传统的程序设计概念2.数据结构--异构数组其元素可以有不同的类型的数据块definetypeStudenttobe{ charName[8]; intAge; floatSkillRating;} (a)Studentstu1,stu2;传统的程序设计概念3.常量和字面量程序中需要使用固定的预先决定的值。一个值的显式出现称为字面量(literal)。例如:EffectiveAlt<--Altimeter+645
使用直接量不是一个好的程序设计习惯一些程序设计语言允许给描述性的名字赋以特定的不可改变的值,这样的名字称为常量(constant)。传统的程序设计概念4.赋值语句赋值语句(assignmentstatement),它把一个值赋给一个变量。这种语句的语法形式通常是,一个变量,跟一个表示赋值运算的符号,最后是指示要赋的值的表达式。 例如:Z=X+Y; Z:=X+Y;运算符优先(operatorprecedence) 赋值语句中的表达式的运算次序是借助运算符的优先级实现的 例如:2*4+6/2重载(overloading):一个运算符的多重使用称为运算符的重载 例如:“abc”+“ok”
结果是:“abcok”传统的程序设计概念5.控制语句是改变该程序执行顺序的命令型语句。最简单的控制语句是转向语句(goto命令
),它类似于机器指令JUMP采用结构化的程序设计的方法,即包含系统的组织设计方法及对控制语句的合理使用。核心是要设计容易理解且满足需求规格说明的程序。常用的:选择结构(if-then-else)循环结构(while、for)分情况结构(switch-case)传统的程序设计概念5.控制语句控制结构及其在语言C、C++、C#和Java里的表示分情况结构是if-then-else语句的一种扩充传统的程序设计概念5.控制语句
for结构及其在语言C、C++、C#和Java里的表示另一种常用的简化了的循环结构传统的程序设计概念6.注解一种是整个注释用特殊的记号括起来另一种是注释用一个特殊的记号开始,该行的后面部分全是注释。语言C、C++、C#和Java用记号/*和*/括住注释,用记号//开始一个注释直至行末。如:/*Thisiscomment.*/和//Thisiscomment.都是合法的注释语句。传统的程序设计概念---注释语句6.注解传统的程序设计概念P188
问题与练习过程单元1.过程过程(procedure)是实现一个任务的一组指令,它可以作为其他程序单元的抽象工具。过程单元1.过程过程内部可以定义变量,过程也可以使用在过程之外定义的变量。在一个过程中说明的变量是局部变量(localvariable),这意味着它们只能在该过程内部引用。不限制在一个程序特定部分使用的变量称为全局变量(globalvariable),它们在该程序的任何地方都是可存取的。过程单元过程的编写方法:编写过程时,使用过程首部作为开始语句,随后是过程的实现细节语句;过程首部中给出了过程的名字,例如:proceduresum(N);
过程的使用方法:过程的使用,称之为“调用”
可以使用过程的名字来调用过程proceduremax(x,y)
if(x<y)thenm←y;elsem←x;returnma←5;b←7;c←max(a,b);过程单元2.参数----过程内部的类属项形式参数(formalparameter)
定义一个过程的时候使用的参数实在参数(actualparameter)
调用一个过程时使用的参数过程单元2.参数------过程举例过程单元2.参数如果某个过程有多个参数,在调用该过程时,实在参数要与形式参数必须一一对应
即二者的个数与类型必须完全一致实在参数与形式参数之间传递数据的方式:按值传递(passedbyvalue)按引用传递(passedbyreference)过程单元2.参数过程单元2.参数
参数传递的例子:proceduremax(x,y)
if(x<y)then(t←x;x←y;y←t;)returnxa←5;b←7;c←max(a,b);a,b,c的值是多少?过程单元3.函数
过程的目的是要产生一个值,而不是一个动作。
例如:求1到N的累加和的过程将一个列表排序的过程当过程的目的是要产生一个值的时候,“过程”通常是作为函数实现的。函数(function)是指类似于过程的程序单元,它把一个值作为“该函数的值”传递给调用程序单元。过程单元3.函数过程与函数的区别:P192过程单元P193
问题与练习语言实现如何将高级语言转化为机器语言的过程。这个过程包含两个大的步骤: 翻译 连接与装入语言实现1.翻译过程语言实现(1)词法分析:
词法分析是从源程序中辨认构成单个实体的符号串的过程。
例如:proceduremax(x,y)
if(x<y)then(t←x;x←y;y←t;)max←x;逐个符号的读取源程序,然后辨认出哪些符号构成一个单元为每个单元生成一个标记语言实现(2)语法分析:语法分析比较麻烦。早期,语法分析技术不太先进,所以程序设计语言曾经是固定格式语言。今天,大多是自由格式语言。
语法分析的单位是语句,因此必须区分出一个程序中的每条语句。在自由格式语言中,区分语句的方法:
通常使用一些特殊的符号来标明程序的开始和结束,以及程序中每条语句的开始和结束。还可以使用类似if、then、else之类的关键字(保留字)来标明单个语句的开始语言实现(2)语法分析:
语法的分析是基于语法规则的。表达这些规则的方法是借助于语法图。它是语言的语法结构的图形表示。
例如if语句的语法图规定了if语句的一般格式:if-then-else伪代码语句的语法图需要进一步描述的项(非终结符)不需要进一步描述的项(终结符)语言实现(2)语法分析:
判断一个特定的串是否符合一组语法图的方法是根据语法图为其构造语法分析树例如,使用图6.15来分析表达式x+y*z是否合法语言实现表达式的语法图语言实现语言实现(2)语法分析:
一个程序语法分析的过程实际上就是根据事先定义好的语法图为源程序构造语法分析树。实际上,语法分析树就是语法分析程序对一个程序的语法构成的理解。因此,对于一条语句不允许有两种不同的语法分析树。下面这种情况是不允许的。
ifB1thenifB2thenS1elseS2if-then-else伪代码语句的语法图语言实现语句ifB1thenifB2thenS1elseS2的两个不同的语法分析树→
ifB1then(ifB2thenS1)
elseS2IfB1then(ifB2thenS1elseS2)语言实现(2)语法分析:当语法分析程序分析声明语句时,它把这些语句里的声明信息记录在称为符号表的表里。
符号表里包含的信息:变量的名称、类型、变量的数据结构等符号表是语法分析程序后来判定某个语句是否有意义的依据例如:z←x+y
有些语言允许强制类型转换,即类型之间的隐式转换
大多数语言不允许,凡是不允许进行强制类型会转换的语言被称为是强类型的程序设计语言语言实现(3)代码生成:语法分析阶段完成后,已经将各条语句分解成一些基本的因子。
代码生成阶段只需要将这些因子替换为事先准备好的机器代码即可。
代码生成阶段涉及到很多具体问题,其中之一是代码优化代码优化就是如何使得这一阶段生成的目标程序有较高的执行效率。
例如:
x←y+z; w←x+z;语言实现翻译过程的三个步骤并不是严格的按照顺序执行的。语言实现2.连接和装入 翻译过程生成的目标程序,虽然已经是机器语言表达的了,但很少具有计算机可以执行的形式。一个理由:大多数程序设计环境都允许一个程序的各个模块可以作为单个程序单元在不同的时间开发和翻译。另外,即使一个程序作为一个单元被完整的翻译,它的目标程序仍很少能够单独执行。因为绝大多程序都包含对一些使用程序或者操作系统的服务的请求。语言实现语言实现3.软件开发包软件开发过程中,需要用到的程序的集合,我们称之为软件开发系统(软件开发包)。
编辑程序、翻译程序、连接程序、调试程序等。语言实现P199
问题与练习本章小节---历史回顾、传统程序设计概念、过程单元、语言实现历史回顾三代程序设计语言、程序设计语言的发展趋势汇编程序、编译程序、解释程序四种程序设计范型传统的程序设计概念说明语句变量、直接量、常量数据类型(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年低空经济「超光速」飞行器技术创新与国家战略布局报告
- 北海市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)附答案详解(突破训练)
- 大足县农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)附答案详解(达标题)
- 2026年金华市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)完整答案详解
- 阿坝州农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)附答案详解(轻巧夺冠)
- 2026年陇南市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)完整参考答案详解
- 昌都地区农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及完整答案详解
- 安徽省农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(综合卷)
- 维护市场规则之心的承诺书4篇
- 海口市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及参考答案详解1套
- 内镜治疗脑出血课件
- 浙江入团考试题目及答案
- 冠脉动脉介入课件
- 三进两联一交友课件
- 驻场项目安全培训课件
- 2025中数联物流科技(上海)有限公司招聘考试参考题库及答案解析
- 企业档案数字化管理实施细则
- 腹痛分诊课件
- 【量子位】2023中国AIGC数据标注产业全景报告
- 打伤孩子协议书模板模板
- 电厂热控培训课件
评论
0/150
提交评论