《程序设计方法学第一章程序设计方法概述(新).ppt》由会员分享,可在线阅读,更多相关《程序设计方法学第一章程序设计方法概述(新).ppt(58页珍藏版)》请在第壹文秘上搜索。
1、12课程的主要研究问题 程序设计的基本特征结构化 模块化对象化 (OOP,Object Oriented Programming)智能化 (AOP, Agent Oriented Programming) 程序设计标准化问题 形式语义 代数规范 程序正确性的代数证明 程序的形式推导 程序变换技术 程序设计标准实施问题设计风格 设计方法 设计工具 设计技巧课程目标 本课程主要介绍程序设计方法学的科学理论、方法本课程主要介绍程序设计方法学的科学理论、方法 和实现技术和实现技术。主要介绍程序设计方法学这一新兴学科的主要内容,即。主要介绍程序设计方法学这一新兴学科的主要内容,即结构化结构化程序、程序正
2、确性证明、结构化程序程序、程序正确性证明、结构化程序 的正确性证明、递归程序的正确性证明、递归程序及其正确性证明、程序的及其正确性证明、程序的 形式推导技术、程序变换技术、面向形式推导技术、程序变换技术、面向对象的设计方对象的设计方 法和大型程序设计方法学基础法和大型程序设计方法学基础等。等。 培养学生运用这些理论和方法,从认识规律出发训培养学生运用这些理论和方法,从认识规律出发训 练各种良好练各种良好的程序设计习惯,掌握到目前为止公认的程序设计习惯,掌握到目前为止公认 为成熟的有实用价值的为成熟的有实用价值的具有完整科学理论和与之相具有完整科学理论和与之相 关的技术方法作指导的软件设计和关的
3、技术方法作指导的软件设计和开发技术。开发技术。34程序设计方法学基本内容结构化程序设计方法模块化程序设计方法面向对象程序设计方法函数型程序设计方法逻辑程序设计方法程序设计方法发展趋势程序正确性证明技术程序形式推导技术程序变换技术程序调试技术抽象数据类型代数规范理论类型系统理论复杂性分析技术基本方法基本理论5程程序设计方法学与其他相关学科的关系 软件工程(管理、软件产业)软件工程(管理、软件产业) 数据结构与算法(编程及实现)数据结构与算法(编程及实现) 程序设计语言学(编程及实现)程序设计语言学(编程及实现) 程序设计技巧学(技术与技巧,具有特殊性)程序设计技巧学(技术与技巧,具有特殊性) 程
4、序设计方法学(方法学,指导性理论及基本程序设计方法学(方法学,指导性理论及基本方法,具有普遍性)方法,具有普遍性) 6“优秀”和“不优秀”程序的要素 正确性;结构化;模块化;可重用正确性;结构化;模块化;可重用 可维护;可变化;可管理;可测试可维护;可变化;可管理;可测试 性能均衡性能均衡n错误的;非结构化;错误的;非结构化;n难以维护;不能适应变化;不可管理难以维护;不能适应变化;不可管理n性能与条件失衡性能与条件失衡参参 考考 资资 料料1 1、程序设计方法学程序设计方法学,冯树椿、徐流通编著,浙江大学出版社;,冯树椿、徐流通编著,浙江大学出版社;2 2、程序设计方法学程序设计方法学,胡正
5、国、吴健、邓正宏编著,国防工业出版社,胡正国、吴健、邓正宏编著,国防工业出版社,20032003年年1 1月;月;3 3、新编程序设计方法学新编程序设计方法学,王申康,浙江大学出版社,王申康,浙江大学出版社, 20042004年年5 5月;月;4 4、程序验证和规范的形式方法程序验证和规范的形式方法H.K.BergH.K.Berg等著,宋国新等译;等著,宋国新等译;5 5、Design Patterns Design Patterns 或者或者设计模式设计模式6 6、软件工程软件工程JavaJava语言实现语言实现StophenR.SchachStophenR.Schach著袁兆山等译机械工业
6、出版著袁兆山等译机械工业出版社;社;7 7、计算机图灵奖计算机图灵奖ACMACM获得者获得者;8 8、计算机科学导论计算机科学导论赵致琢编著,科学出版社;赵致琢编著,科学出版社;9 9、文章:、文章:浅谈程序设计方法的演进浅谈程序设计方法的演进、模块化与计算机软件设计模块化与计算机软件设计、抽象数据类型及其实现抽象数据类型及其实现、递归递推与算法设计递归递推与算法设计、 递归算递归算 法的法的非递归实现非递归实现、面向对象语言与过程语言比较之不足面向对象语言与过程语言比较之不足等。等。78第一章 程序设计方法概论学习重点:学习重点:了解程序设计语言、程序设计方法之间的关系了解程序设计语言、程序
7、设计方法之间的关系了解程序设计方法形成和发展的过程了解程序设计方法形成和发展的过程掌握常见程序设计方法的概况掌握常见程序设计方法的概况程序设计就是用计算机语言把对数据进行处理的算法表达出来程序的表达手段就是程序设计语言9101.1 程序设计语言和程序设计方法1.1.1 程序设计语言概述 一、定义:程序设计语言是一种用于书写计算一、定义:程序设计语言是一种用于书写计算机程序的语言。语言的基础是一组记号和一组机程序的语言。语言的基础是一组记号和一组规则。规则。 程序设计语言是人机交互的一种表达方法,程序设计语言是人机交互的一种表达方法,是使用计算机的一种工具。是使用计算机的一种工具。 程序设计语言
8、是建立计算机精确处理模型与程序设计语言是建立计算机精确处理模型与人类智能处理模型之间的某种形式化的桥梁。人类智能处理模型之间的某种形式化的桥梁。11二、怎样理解和使用程序设计语言?(1 1)语法:规定程序的结构或形式,记号串的组)语法:规定程序的结构或形式,记号串的组成规则;成规则;(2 2)语义:程序的含义,记号的特定意义;)语义:程序的含义,记号的特定意义;(3 3)语用:程序和使用者之间的关系,人机交互)语用:程序和使用者之间的关系,人机交互的表达方式;的表达方式;(4 4)语境:理解、执行和实现程序的环境,预定)语境:理解、执行和实现程序的环境,预定义成分、与系统实现有关的成分,输入输
9、出。义成分、与系统实现有关的成分,输入输出。12程序设计语言发展13三、程序设计语言的发展 1 1、第一代语言:机器语言。、第一代语言:机器语言。 机器语言是最早的计算机语言机器语言是最早的计算机语言; 运行效率高。它用二进制代码表示数据和指令,这运行效率高。它用二进制代码表示数据和指令,这些代码不用翻译即可在计算机上直接执行;些代码不用翻译即可在计算机上直接执行; 指令难记,程序难读。编写机器语言程序是一件枯指令难记,程序难读。编写机器语言程序是一件枯燥而繁杂的工作,存储空间的安排、寄存器变址的使用燥而繁杂的工作,存储空间的安排、寄存器变址的使用都由程序员自己计划,且所有的地址分配都是以绝对
10、地都由程序员自己计划,且所有的地址分配都是以绝对地址的形式处理;址的形式处理; 要把为一种机器编制的程序搬到另一种机器上去运要把为一种机器编制的程序搬到另一种机器上去运行根本行不通。因为不同的机器有不同的指令系统。行根本行不通。因为不同的机器有不同的指令系统。142 2、第二代语言:汇编语言。、第二代语言:汇编语言。 汇编语言是一种比机器语言更接近于自然语言和数学语言的低汇编语言是一种比机器语言更接近于自然语言和数学语言的低级程序设计语言。级程序设计语言。 指令采用助记符表示容易记忆,程序也更容易阅读。指令采用助记符表示容易记忆,程序也更容易阅读。由于汇编由于汇编语言一般都是为特定计算机或计算
11、机系统设计的,因此它虽然比语言一般都是为特定计算机或计算机系统设计的,因此它虽然比机器语言好学,好记,程序也好写些,但仍然没有解决机器语言机器语言好学,好记,程序也好写些,但仍然没有解决机器语言存在的问题,其生产效率也很低。存在的问题,其生产效率也很低。 汇编语言也是面向机器的。它能直接操作计算机的寄存器、内汇编语言也是面向机器的。它能直接操作计算机的寄存器、内存单元和输入存单元和输入/ /输出端口,能够设计出执行效率很高的程序,因输出端口,能够设计出执行效率很高的程序,因而汇编语言在某些领域仍有应用。而汇编语言在某些领域仍有应用。 用汇编语言编写的程序需经汇编程序翻译成机器语言程序后才用汇编
12、语言编写的程序需经汇编程序翻译成机器语言程序后才能在计算机上运行。能在计算机上运行。 汇编语言指令与机器指令基本上是一对一的关系,但有的汇编汇编语言指令与机器指令基本上是一对一的关系,但有的汇编语言中可以有宏指令,它对应于一串机器指令。语言中可以有宏指令,它对应于一串机器指令。15机器语言和汇编语言 原始的冯原始的冯. .诺依曼机器(诺依曼机器(19461946年)代码年)代码0000001010111100101000000010101111001010 00000010111111001000 00000010111111001000 00000011001110101000 000000
13、11001110101000 机器语言是晦涩难懂的,因此需要设计另外一机器语言是晦涩难懂的,因此需要设计另外一种语言来写程序,它应该是符号式的或者说助记性种语言来写程序,它应该是符号式的或者说助记性的。的。高级语言的优越性:可扩展性;可读性;可移植性高级语言的优越性:可扩展性;可读性;可移植性163 3、第三代语言:高级语言。、第三代语言:高级语言。从从1952年第一个高级语言年第一个高级语言Short Code诞生到现在,程序设计诞生到现在,程序设计语言先后出现了不同类型、不同版本不下数语言先后出现了不同类型、不同版本不下数 百种语言。百种语言。 1718一、命令式语言 科学计算的语言科学计
14、算的语言 Backus1957Backus1957为为FortranFortran的成功预备了两个成分:记法和效率的成功预备了两个成分:记法和效率 APLAPL是唯一使用带有专用符号的交互式键盘来编写程序的语言。是唯一使用带有专用符号的交互式键盘来编写程序的语言。 商用语言商用语言第一个商用语言是第一个商用语言是COBOL(COBOL(面向商业的公用语言的缩写面向商业的公用语言的缩写) )。它是一种。它是一种功能很强而又极为冗长的语言功能很强而又极为冗长的语言BASICBASIC设计者的最意图体现在该语言的名字上设计者的最意图体现在该语言的名字上-初学者通用的符号初学者通用的符号指令码指令码
15、多用途语言多用途语言Alogol60Alogol60主导主导2020世纪世纪6060年代程序设计语言的发展。年代程序设计语言的发展。PascalPascal作为教学语言扩展了作为教学语言扩展了AlgolAlgolDennis Ritchie1972Dennis Ritchie1972年创建年创建C C语言语言19二、 函数式语言 19581958年年MCarthyMCarthy设计了设计了LISPLISP用作符号演算,具有严用作符号演算,具有严格的理论基础格的理论基础 Standard MLStandard ML、MirandaMiranda、HaskellHaskell对语言发展的推对语言发
16、展的推动作用动作用 19841984年年CLOSCLOS是是LISPLISP的面向对象扩展,全名是的面向对象扩展,全名是Common Common Lisp Object SystemLisp Object System20三、三、 面向对象语言面向对象语言 Simula :Kristen NygaardSimula :Kristen Nygaard和和Ole-Jodan DahlOle-Jodan Dahl在在19611961年设计了这个语言,目的是想同时作为一种描年设计了这个语言,目的是想同时作为一种描述语言和程序设计语言述语言和程序设计语言 SmalltalkSmalltalk是第一个严格意义的全面向对象的程序是第一个严格意义的全面向对象的程序设计语言,它的设计受到了设计语言,它的设计受到了LISPLISP的影响的影响 C+C+设计的是为了把面向对象的优点带进设计的是为了把面向对象的优点带进C C的命令式的命令式程序设计中程序设计中 JAVAJAVA是面向对象程序设计语言的成熟标志是面向对象程序设计语言的成熟标志 你需要知道的一些面向对象程序设计语言和相关语你需要知道的一些面向对