程序设计方法学第一章程序设计方法概述(新).ppt
《程序设计方法学第一章程序设计方法概述(新).ppt》由会员分享,可在线阅读,更多相关《程序设计方法学第一章程序设计方法概述(新).ppt(58页珍藏版)》请在课桌文档上搜索。
1、1,程序设计方法学,2,课程的主要研究问题,程序设计的基本特征结构化 模块化对象化(OOP,Object Oriented Programming)智能化(AOP,Agent Oriented Programming)程序设计标准化问题 形式语义 代数规范 程序正确性的代数证明 程序的形式推导 程序变换技术程序设计标准实施问题设计风格 设计方法 设计工具 设计技巧,课程目标,本课程主要介绍程序设计方法学的科学理论、方法 和实现技术。主要介绍程序设计方法学这一新兴学科的主要内容,即结构化程序、程序正确性证明、结构化程序 的正确性证明、递归程序及其正确性证明、程序的 形式推导技术、程序变换技术、面
2、向对象的设计方 法和大型程序设计方法学基础等。培养学生运用这些理论和方法,从认识规律出发训 练各种良好的程序设计习惯,掌握到目前为止公认 为成熟的有实用价值的具有完整科学理论和与之相 关的技术方法作指导的软件设计和开发技术。,3,4,程序设计方法学,基本内容,结构化程序设计方法,模块化程序设计方法,面向对象程序设计方法,函数型程序设计方法,逻辑程序设计方法,程序设计方法发展趋势,程序正确性证明技术,程序形式推导技术,程序变换技术,程序调试技术,抽象数据类型,代数规范理论,类型系统理论,复杂性分析技术,基本方法,基本理论,5,程程序设计方法学与其他相关学科的关系,软件工程(管理、软件产业)数据结
3、构与算法(编程及实现)程序设计语言学(编程及实现)程序设计技巧学(技术与技巧,具有特殊性)程序设计方法学(方法学,指导性理论及基本方法,具有普遍性),6,“优秀”和“不优秀”程序的要素,正确性;结构化;模块化;可重用可维护;可变化;可管理;可测试性能均衡,错误的;非结构化;难以维护;不能适应变化;不可管理性能与条件失衡,参 考 资 料,1、程序设计方法学,冯树椿、徐流通编著,浙江大学出版社;2、程序设计方法学,胡正国、吴健、邓正宏编著,国防工业出版社,2003年1月;3、新编程序设计方法学,王申康,浙江大学出版社,2004年5月;4、程序验证和规范的形式方法H.K.Berg等著,宋国新等译;5
4、、Design Patterns 或者设计模式6、软件工程Java语言实现StophenR.Schach著袁兆山等译机械工业出版社;7、计算机图灵奖ACM获得者;8、计算机科学导论赵致琢编著,科学出版社;9、文章:浅谈程序设计方法的演进、模块化与计算机软件设计、抽象数据类型及其实现、递归递推与算法设计、递归算 法的非递归实现、面向对象语言与过程语言比较之不足等。,7,8,第一章 程序设计方法概论,学习重点:了解程序设计语言、程序设计方法之间的关系了解程序设计方法形成和发展的过程掌握常见程序设计方法的概况,程序设计就是用计算机语言把对数据进行处理的算法表达出来程序的表达手段就是程序设计语言,9,
5、10,1.1 程序设计语言和程序设计方法,1.1.1 程序设计语言概述 一、定义:程序设计语言是一种用于书写计算机程序的语言。语言的基础是一组记号和一组规则。程序设计语言是人机交互的一种表达方法,是使用计算机的一种工具。程序设计语言是建立计算机精确处理模型与人类智能处理模型之间的某种形式化的桥梁。,11,二、怎样理解和使用程序设计语言?(1)语法:规定程序的结构或形式,记号串的组成规则;(2)语义:程序的含义,记号的特定意义;(3)语用:程序和使用者之间的关系,人机交互的表达方式;(4)语境:理解、执行和实现程序的环境,预定义成分、与系统实现有关的成分,输入输出。,12,程序设计语言发展,13
6、,三、程序设计语言的发展,1、第一代语言:机器语言。机器语言是最早的计算机语言;运行效率高。它用二进制代码表示数据和指令,这些代码不用翻译即可在计算机上直接执行;指令难记,程序难读。编写机器语言程序是一件枯燥而繁杂的工作,存储空间的安排、寄存器变址的使用都由程序员自己计划,且所有的地址分配都是以绝对地址的形式处理;要把为一种机器编制的程序搬到另一种机器上去运行根本行不通。因为不同的机器有不同的指令系统。,14,2、第二代语言:汇编语言。汇编语言是一种比机器语言更接近于自然语言和数学语言的低级程序设计语言。指令采用助记符表示容易记忆,程序也更容易阅读。由于汇编语言一般都是为特定计算机或计算机系统
7、设计的,因此它虽然比机器语言好学,好记,程序也好写些,但仍然没有解决机器语言存在的问题,其生产效率也很低。汇编语言也是面向机器的。它能直接操作计算机的寄存器、内存单元和输入/输出端口,能够设计出执行效率很高的程序,因而汇编语言在某些领域仍有应用。用汇编语言编写的程序需经汇编程序翻译成机器语言程序后才能在计算机上运行。汇编语言指令与机器指令基本上是一对一的关系,但有的汇编语言中可以有宏指令,它对应于一串机器指令。,15,机器语言和汇编语言,原始的冯.诺依曼机器(1946年)代码00000010101111001010 00000010111111001000 000000110011101010
8、00 机器语言是晦涩难懂的,因此需要设计另外一种语言来写程序,它应该是符号式的或者说助记性的。高级语言的优越性:可扩展性;可读性;可移植性,16,3、第三代语言:高级语言。是指人容易理解和有利于人对解题过程进行描述的程序语言,通常所讲的程序设计语言往往指的是高级语言。,从1952年第一个高级语言Short Code诞生到现在,程序设计语言先后出现了不同类型、不同版本不下数 百种语言。,17,18,一、命令式语言,科学计算的语言 Backus1957为Fortran的成功预备了两个成分:记法和效率 APL是唯一使用带有专用符号的交互式键盘来编写程序的语言。商用语言第一个商用语言是COBOL(面向
9、商业的公用语言的缩写)。它是一种功能很强而又极为冗长的语言BASIC设计者的最意图体现在该语言的名字上-初学者通用的符号指令码多用途语言Alogol60主导20世纪60年代程序设计语言的发展。Pascal作为教学语言扩展了AlgolDennis Ritchie1972年创建C语言,19,二、函数式语言,1958年MCarthy设计了LISP用作符号演算,具有严格的理论基础Standard ML、Miranda、Haskell对语言发展的推动作用1984年CLOS是LISP的面向对象扩展,全名是Common Lisp Object System,20,三、面向对象语言,Simula:Kriste
10、n Nygaard和Ole-Jodan Dahl在1961年设计了这个语言,目的是想同时作为一种描述语言和程序设计语言Smalltalk是第一个严格意义的全面向对象的程序设计语言,它的设计受到了LISP的影响C+设计的是为了把面向对象的优点带进C的命令式程序设计中JAVA是面向对象程序设计语言的成熟标志你需要知道的一些面向对象程序设计语言和相关语言Algol Ada Smalltalk C C+JAVA,21,4、第四代语言:第四代语言是抽象层次更高的程序设计语言,它把程序员从繁杂的过程性设计中解放出来,用自己的语法形式表示控制和数据结构,不再涉及太多的算法细节。使用最广的第四代语言是数据库语
11、言,它支持用户以复杂的方式操作数据库,用户只需关心做什么,而不用关心怎么做,可以用类自然语言的形式提问。程序生成器是更为复杂的一类4GL,它输入由甚高级语言书写的语句,自动产生完整的第三代语言程序。,22,四、程序设计语言的实现 实现系统:任何一个程序设计语言都有一个实现系统(如编译系统或解释系统)与之匹配。用户使用程序语言编制出的源程序必须通过实现系统的加工处理。1 转换机制:源语言目标语言 a、纵向转换:源语言机器语言(汇编语言)翻译程序:它是这样一个计算机程序,能把用高级语言书写的程序翻译为等价的机器语言或汇编语言.翻译程序主要有编译程序和解释程序。,23,编译程序:是一种把用高级语言编
12、写的源程序作为输入,经过翻译变换产生出面向目标计算机的目标代码程序作为输出的翻译程序。编译程序比较重视目标代码的效率。FORTRAN语言采用这种方式。解释程序:是一种一边解释用高级语言编写的源程序的语句,一边根据解释的结果直接执行。解释程序花费的机器时间要多些,但所占的内存要少些。,源程序,执行机,可执行程序,连接程序,目标程序,编译程序,结果,数据,编译阶段,运行阶段,解释程序,源程序,结果,数据,24,编译程序设计概述 1、词法分析:区别、分离出源程序行文中一个一个的单词,如标识符、保留字、常量、运算符、定界符等。2、语法分析:识别出源程序的基本结构,如模块、子程序、分程序、程序包、数据说
13、明、语句等,并生成有关表格(含语义分析的有关工作)。3、中间代码生成:根据语法分析阶段识别出的语法范畴产生相应的中间代码。中间代码有多种形式,如逆波兰表示法,三元式、四元式等。4、优化处理:主要任务是对前一阶段所产生的代码进行时间与空间的优化。5、目标代码生成:根据中间代码及有关表格生成可在裸机上执行的目标代码,其中包括内存与寄存器的分配等工作。,25,26,b、横向转换:以描述语言Li 表示的源程序SLi以描述语言Lj 表示的源程序SLj,Li,Lj,Fi,Gj,LijP,SLj,SLi,实现系统,27,2 中间语言 在语言的实现过程中产生的非目标语言。中间语言的作用:(1)如中间语言是汇编
14、语言,可实现混合编程。可方便地调用库过程、库函数、外部过程和函数,实现链接功能的扩充和统一。(2)作为两种语言的翻译语言,实现翻译功能。Fi(Li)=M Gj(M)=Lj,28,(3)形成中间语言是编译过程中必不可少的过程。在编译过程中的每一趟均存在着不同形式的中间语言。(4)中间语言提供了不依赖于机器的语言实现机制;Java的编译器把Java的源程序转换成字节码,它不依赖机器,可以看作中间语言,字节码由Java的运行系统解释执行。(5)在函数式语言中,中间语言(计算模型)是描述对象和控制策略的工具。,29,4 语言的等价性理解:重在功能等价。a、源程序级的功能等价:编译过程中产生的中间语言程
15、序和目标程序,它们的功能是相同的。相同的输入产生相同的输出。,从操作语义上理解:meaning(SL)=meaning(SML1)=meaning(SML2)=meaning(SOL),30,b、不同语言之间的功能等价:定义1:对于算法A,采用两个程序设计语言PL1和PL2,所编出源程序SPL1(A)和SPL2(A),如果则对于算法A,PL1和PL2是等价的。定义2:如果对于任何算法,定义1都满足,则称PL1和PL2是语言功能等价的。,31,c、不同语言的语法单位的功能等价(横向软件工程中经常用到):例1:数据类型定义:PASCAL语言:var x:real;C语言:float x;ADA语言
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 方法 第一章 概述
![提示](https://www.desk33.com/images/bang_tan.gif)
链接地址:https://www.desk33.com/p-259541.html