ImageVerifierCode 换一换
格式:DOCX , 页数:47 ,大小:1.46MB ,
资源ID:5506004      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5506004.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(课程的主要研究问题.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

课程的主要研究问题.docx

1、课程的主要研究问题课程的主要研究问题 程序设计的基本特征结构化 模块化对象化 (, )智能化 (, ) 程序设计标准化问题 形式语义 代数规范 程序正确性的代数证明 程序的形式推导 程序变换技术 程序设计标准实施问题设计风格 设计方法 设计工具 设计技巧研究内容程序设计方法学的基本研究目标是通过对程序本质属性的研究来提高程序的效率,保证程序的正确性 。 通俗地说,程序设计方法学的最基本目标是通过对程序本质属性的研究,说明什么是“优秀”的程序,怎样才能设计出“优秀”的程序。 程序设计方法学是讲述程序性质以及程序设计理论和方法的一门学科。程序设计方法学“优秀”和“不优秀”程序的要素 正确性;结构化

2、;模块化;可重用 可维护;可变化;可管理;可测试 性能均衡 错误的;非结构化; 难以维护;不能适应变化;不可管理 性能与条件失衡第一章 程序设计方法概论学习重点:了解程序设计语言、程序设计方法之间的关系了解程序设计方法形成和发展的过程掌握常见程序设计方法的概况 程序设计语言和程序设计方法1.1.1 程序设计语言概述 一、定义:程序设计语言是一种用于书写计算机程序的语言。语言的基础是一组记号和一组规则。 程序设计语言是人机交互的一种表达方法,是使用计算机的一种工具。 程序设计语言是建立计算机精确处理模型与人类智能处理模型之间的某种形式化的桥梁。二、怎样理解和使用程序设计语言?()语法:规定程序的

3、结构或形式,记号串的组成规则;()语义:程序的含义,记号的特定意义;()语用:程序和使用者之间的关系,人机交互的表达方式;()语境:理解、执行和实现程序的环境,预定义成分、与系统实现有关的成分,输入输出。三、程序设计语言的发展、第一代语言:机器语言。 机器语言是最早的计算机语言; 运行效率高。它用二进制代码表示数据和指令,这些代码不用翻译即可在计算机上直接执行; 指令难记,程序难读。编写机器语言程序是一件枯燥而繁杂的工作,存储空间的安排、寄存器变址的使用都由程序员自己计划,且所有的地址分配都是以绝对地址的形式处理; 要把为一种机器编制的程序搬到另一种机器上去运行根本行不通。因为不同的机器有不同

4、的指令系统。、第二代语言:汇编语言。 汇编语言是一种比机器语言更接近于自然语言和数学语言的低级程序设计语言。 指令采用助记符表示容易记忆,程序也更容易阅读。由于汇编语言一般都是为特定计算机或计算机系统设计的,因此它虽然比机器语言好学,好记,程序也好写些,但仍然没有解决机器语言存在的问题,其生产效率也很低。 汇编语言也是面向机器的。它能直接操作计算机的寄存器、内存单元和输入输出端口,能够设计出执行效率很高的程序,因而汇编语言在某些领域仍有应用。 用汇编语言编写的程序需经汇编程序翻译成机器语言程序后才能在计算机上运行。 汇编语言指令与机器指令基本上是一对一的关系,但有的汇编语言中可以有宏指令,它对

5、应于一串机器指令。机器语言和汇编语言 原始的冯.诺依曼机器(年)代码 机器语言是晦涩难懂的,因此需要设计另外一种语言来写程序,它应该是符号式的或者说助记性的。 高级语言的优越性:可扩展性;可读性;可移植性、第三代语言:高级语言。 是指人容易理解和有利于人对解题过程进行描述的程序语言,通常所讲的程序设计语言往往指的是高级语言。一、命令式语言 科学计算的语言 为的成功预备了两个成分:记法和效率 是唯一使用带有专用符号的交互式键盘来编写程序的语言。 商用语言 第一个商用语言是(面向商业的公用语言的缩写)。它是一种功能很强而又极为冗长的语言 设计者的最意图体现在该语言的名字上初学者通用的符号指令码 多

6、用途语言 主导世纪年代程序设计语言的发展。 作为教学语言扩展了 年创建语言二、 函数式语言 年设计了用作符号演算,具有严格的理论基础 、对语言发展的推动作用 年是的面向对象扩展,全名是 三、 面向对象语言 和 在年设计了这个语言,目的是想同时作为一种描述语言和程序设计语言 是第一个严格意义的全面向对象的程序设计语言,它的设计受到了的影响 设计的是为了把面向对象的优点带进的命令式程序设计中 是面向对象程序设计语言的成熟标志 你需要知道的一些面向对象程序设计语言和相关语言 Ada 、第四代语言:第四代语言是抽象层次更高的程序设计语言,它把程序员从繁杂的过程性设计中解放出来,用自己的语法形式表示控制

7、和数据结构,不再涉及太多的算法细节。使用最广的第四代语言是数据库语言,它支持用户以复杂的方式操作数据库,用户只需关心做什么,而不用关心怎么做,可以用类自然语言的形式提问。程序生成器是更为复杂的一类,它输入由甚高级语言书写的语句,自动产生完整的第三代语言程序。四、 程序设计语言的实现 实现系统:任何一个程序设计语言都有一个实现系统(如编译系统或解释系统)与之匹配。用户使用程序语言编制出的源程序必须通过实现系统的加工处理。 转换机制:源语言目标语言 、纵向转换:源语言机器语言(汇编语言) 翻译程序:它是这样一个计算机程序,能把用高级语言书写的程序翻译为等价的机器语言或汇编语言. 翻译程序主要有编译

8、程序和解释程序。编译程序:是一种把用高级语言编写的源程序作为输入,经过翻译变换产生出面向目标计算机的目标代码程序作为输出的翻译程序。编译程序比较重视目标代码的效率。语言采用这种方式。解释程序:是一种一边解释用高级语言编写的源程序的语句,一边根据解释的结果直接执行。解释程序花费的机器时间要多些,但所占的内存要少些。编译程序设计概述 、词法分析:区别、分离出源程序行文中一个一个的单词,如标识符、保留字、常量、运算符、定界符等。 、语法分析:识别出源程序的基本结构,如模块、子程序、分程序、程序包、数据说明、语句等,并生成有关表格(含语义分析的有关工作)。 、中间代码生成:根据语法分析阶段识别出的语法

9、范畴产生相应的中间代码。中间代码有多种形式,如逆波兰表示法,三元式、四元式等。 、优化处理:主要任务是对前一阶段所产生的代码进行时间与空间的优化。 、目标代码生成:根据中间代码及有关表格生成可在裸机上执行的目标代码,其中包括内存与寄存器的分配等工作。、横向转换: 以描述语言 表示的源程序以描述语言 表示的源程序 中间语言 在语言的实现过程中产生的非目标语言。中间语言的作用:()如中间语言是汇编语言,可实现混合编程。可方便地调用库过程、库函数、外部过程和函数,实现链接功能的扩充和统一。()作为两种语言的翻译语言,实现翻译功能。 () ()()形成中间语言是编译过程中必不可少的过程。在编译过程中的

10、每一趟均存在着不同形式的中间语言。()中间语言提供了不依赖于机器的语言实现机制; 的编译器把的源程序转换成字节码,它不依赖机器,可以看作中间语言,字节码由的运行系统解释执行。()在函数式语言中,中间语言(计算模型)是描述对象和控制策略的工具。 语言的等价性理解:重在功能等价。、源程序级的功能等价: 编译过程中产生的中间语言程序和目标程序,它们的功能是相同的。相同的输入产生相同的输出。、不同语言之间的功能等价:定义:对于算法,采用两个程序设计语言和,所编出源程序()和(),如果则对于算法, 和是等价的。定义:如果对于任何算法,定义都满足,则称和是语言功能等价的。、不同语言的语法单位的功能等价(横

11、向软件工程中经常用到):例:数据类型定义:语言: ;语言: ;语言: : ;例:循环语句:语言: ; ;语言: ; ();注意:语言是条件为假时退出循环。、同一种语言中,相同功能的不同实现。例: 与语句的等价: ; ; ;:例:循环语句之间的等价:语言: ; ;等价为: ; () 例:语句与语句之间的等价:语言: 等价为:例: 语句与语句之间的等价:语言: : ; : ; : ; : ; ;等价为: ; ; ; ;四、程序设计语言的设计原则、什么样的语言可以成功? 满足市场需要(解决实际问题,较高的性价比); 满足用户需要(适用、高效、可靠) 满足理论价值需要(语言设施完备、严密、科学)、程序

12、设计语言的设计原则()定义严密性:对语言的语法、语义、语用和语境有严密的定义,语法正确、语义合理、语用清楚、语境明确。()可靠性:信息隐藏、数据抽象、类属机制、模块独立。()可读性:表示,结构化语法()可维护性:模块独立、数据抽象、分别编译()效率:以该语言编写的程序能以最小的资源(时间和空间)消耗实现其预定的功能的程度。从执行过程考察,递归和回溯,解释执行和编译执行()可移植性:语言成分与实现环境之间的最小依赖程度。依赖于机器的成分:实数精度、整数位数。()可扩充性:数据类型的扩充,字符集的扩充,预定义成分的扩充()风格合理性(简明性、一致性) 简明性,能以较少的符号写出程序; 一致性:版本

13、之间一致性,与通用语言表达习惯的一致性。 程序设计语言和程序设计方法v 随着计算机技术发展,程序设计从技巧上升为科学;v 语言和程序设计方法之间关系密切; 新型方法导至新语言的产生; 语言是方法的体现,是程序设计的工具;v 程序设计的关键是算法设计,即方法是第一位的;v 学习程序设计方法就是设计与规划的能力;v 程序的正确性是追求的首要目标,而科学的程序设计方法是程序质量的保证。程序设计方法的作用首先,从哲学的角度来看,任何实践活动都需要理论指导。程序设计作为人类在计算机领域的实践活动同样需要科学的理论和方法作为指导。 其次,通过对程序设计方法的学习,不仅可以提高对相应语言的运用能力,而且可以

14、从全局的角度对整个软件系统进行规划。 最后,科学的程序设计方法是程序质量的可靠保证。程序设计方法的形成软件危机的产生年月日美国一个计划飞往金星的飞船水手号在升空秒之后坠毁。经调查发现,地面控制计算机中一段运行程序执行了类似这样的代码: 雷达发现火箭 不调整火箭的飞行路线。然而程序员一个不小心漏掉了,导致了这些事故的发生美国公司在年至年开发的机的操作系统。这一项目花了人一年的工作量,最多时有人投入开发工作,写出了近万行源程序。据统计,这个操作系统每次发行的新版本都是从前一版本中找出个程序错误而修正的结果。 年统计,美国共取消了亿美元的商业软件项目,其中的项目未做完就被取消,的软件项目进度通常要延

15、长的时间,只有的软件项目能够及时交付并且费用也控制在预算之内。程序设计方法的形成软件危机的产生年公司发表了有关项目的调查结果。该调查是以北美的个专家为对象实施问卷调查进行的。根据此调查,项目中有失败,这些项目的平均成本每年花费万美元。程序设计方法的形成软件危机的产生 软件危机的内涵 软件开发成本和进度的估计常常很不准确 用户对“已完成的”软件系统不满意的现象经常发生 软件常常是不可维护的 软件常常是不可管理的 软件在计算机系统总成本中所占的比例逐年上升 软件开发生产率提高的速度远远跟不上计算机应用迅速及深入普及的速度程序设计方法的形成 软件危机如何解决 管理学和工程学角度软件工程划分阶段;加强

16、审计;质量控制; 过程改进;结构化; 方法学和语言学角度程序设计方法标准的程序设计;设计模式;设计风格;设计技巧 程序设计方法的形成和发展、程序设计技巧阶段v 面向机器编程 数字计算机之所以能进行程序设计,是因为它有一有穷指令集。 年代编程是使用机器指令代码进行的。 随后的汇编语言程序虽然用符号代替代码,但在程序设计本质上没有改变。 这个时代的编程者要对机器代码和符号代码非常熟悉。 面向机器所编程,程序运行效率一般较高,但维护性、可读性、移植性、通用性都很差。v 高级语言编程 高级语言的出现,大大简化程序设计。 高级语言编程基本上与机器无关,而主要集中解决算法、数据结构问题。 程序设计算法数据

17、结构程序设计语言 各种领域的计算机程序的开发促进程序设计的发展。出现多种高级程序设计语言。 但新出现的复杂的操作系统、数据库等软件对程序设计在可靠性、维护、修改、和移植性等方面提出更高要求。 此时,传统的程序设计方法出现“软件危机”。、程序设计从技巧上升为科学v 结构化程序设计方法 年,提出结构化程序设计思想:从程序结构上改变传统的程序设计方法。 经实践,结构化程序设计方法解决“软件危机”,使程序设计走向系统化、工程化。 另外,递归程序设计、自上而下逐步求精设计进一步完善了结构化程序设计方法。 一个好的按结构化要求设计程序,一般要求:结构清晰,易读易改易验证,可靠性好,运行效率也高。 当运行效

18、率与结构化发化矛盾时,我们宁可牺牲效率,确保好的结构。v 面向过程的程序设计方法 程序由若干个过程(函数) 组成,采用自顶向下逐步求精的手段,实现模块分解和功能抽象。 程序按功能被划分成若干个模块,各模块在功能上相对独立。每个模块可以用过程(函数)来实现。 模块之间要求高内聚、低耦合。 过程式程序设计也称为模块化程序设计。 数据和过程是相互独立的两个实体。 主要设计语言有、v 面向对象的程序设计方法 结构化程序设计解决了“软件危机”。但庞大、复杂的程序维护成为整个软件开发过程中非常繁杂的工作,也面临新的考验。 面向对象程序设计方法直接将“解”映射到人们对问题的认识上,努力取得对象和操作之间的协

19、调。 面向对象方法有目的地把系统分解为模块策略,并将设计决策与客观世界的认识相匹配。 在人工智能、数据库领域的研究表明,面向对象不只是有效的程序设计技术,还应成为软件开发的基本方法,成为开发技术是今后软件发展的主流之一。 现在的“、”等编程语言都使用了该技术。v 其它程序设计方法 函数式程序设计方法 程序被看作是描述输入与输出之间关系的一个数学函数主要语言有。也常被称为函数式程序设计语言。 逻辑程序设计语言 逻辑被看作是知识推理的工具。程序被看作描述输入与输出之间各种关系的一组方程。程序设计可归结为事实列举、定义逻辑关系、逻辑公式演绎,以提问方式求解。代表语言是。 程序设计的一般途径程序设计中

20、最为关心的是程序的效率与程序的正确性。 程序的效率常由算法的效率来决定; 程序的正确性要保证程序的易读性、可靠 性、可维护性等。在程序设计中十全十美的方法是不存在的。所谓好的程序设计方法只能是针对某些特定的情况而言,所以我们平时应注重在程序设计方法本质的理解和灵活的运用。程序设计的基本步骤对一个实际问题进行程序设计时通常按照以下步骤进行: 问题分析 即弄清待解决问题的功能需求 建立数学模型 算法设计 即确定面向计算机的解决问题的方法和步骤 选用合适的算法描述工具进行算法描述 选用合适的计算机语言进行编码 在给定的计算机环境中编辑、测试、调试、运行程序,以得到预期的结果第二章 程序设计的基本理论

21、学习重点:、了解算法的基本概念和计算机算法的特性、掌握常用算法描述工具、了解数据结构的基本概念、掌握常用数据结构类型 一般地说,程序设计通常要涉及下面几方面 算 法算法的概念【例】交换两个变量,中的值。交换的步骤如下: :输入变量和的值; :将的值赋给(用 表示); :将的值赋给(用 表示); :将的值赋给(用 表示); :输出变量和的值; :结束。的内容: 为待解决的问题确定正确的解题方法和步骤 为问题所涉及的数据特性进行分析并选择合适的数据结构 选用适当的程序设计方法,提高程序设计质量 选用优质的软件工具,实现程序编码和测试2.1.1 算法的概念广义地说,所谓“算法”就是解决问题时所采用的

22、方法和步骤,也就是说算法是对问题处理过程的一种描述。解决同一个问题算法不止一个,但总存在着一个最佳算法,人们在解决问题时实际上就是在为问题寻找一个最佳算法。算法的特性 算法是由若干指令组成的有限序列,一个算法应具有下列个重要特性。有穷性 一个算法必须是(对任何合法的输入值)在执行有穷步骤之后结束,且每一步都可在有穷时间内完成。确定性 算法中每一条指令必须有确切的含义,无二义性,即对于相同的输入只能得出相同的输出可行性算法中描述的操作都可以通过已经实现的基本运算执行有限次来实现。输入一个算法有个或多个的输入,这些输入取自于某个特定的对象的集合。输出 一个算法有一个或多个的输出。算法的分析算法评价

23、 一个好的算法应达到以下目标:()正确性。()可读性。()健壮性。()效率。 其中算法的效率包括时间效率和空间效率。算法分析 一个程序在计算机上运行时所耗费的时间取决于下列因素。 ()问题的规模。 ()依据算法选用的策略。 ()书写程序的语言。 ()机器执行指令的速度。 ()对源程序编译的时间。一般用算法中所有语句的频度之和来表示一个算法所需要的时间。语句的频度( )是指该语句重复执行的次数。【例】下面是两个矩阵相乘的算法。 ( ) ; () () () () () ; () () () *; 表 矩阵相乘算法的语句频度语 句语 句 频 度()()()()()()()该算法中耗费的时间为: (

24、) () () 算法中的执行时间是问题规模的某个函数 (),算法的时间度量记作: () ( () ) 它表示随问题规模的增大,算法执行时间的增长率和 ()的增长率相同,称作算法的渐近时间复杂度,简称时间复杂度。 两个矩阵相乘算法的时间量级是 ()()算法描述工具 常用算法的描述工具:自然语言、程序流程图和图自然语言 所谓“自然语言”就是日常生活中使用的语言,如汉语、英语或数学表达式等。用自然语言描述下列算法。 【例】某商店为了促销,采用购物打折的优惠办法:每位顾客一次购物元以下,没有折扣;元到元之间,按九五折优惠;元以上,按九折优惠。 假设每位顾客的购物花费用表示,计算折扣后用表示实收的费用,

25、算法的自然语言描述如下所示: ()输入顾客的消费金额 ()如果,则 ()如果,则* ()如果,则*2.2.2 过程设计语言(伪代码)也称为伪码,是用正文形式表示数据和处理过程的工具。 具有严格的关键字外部语法,用于定义控制结构和数据结构;另一方面,表示实际操作和条件的内部语法通常又是灵活自由的,以便可以适应各种工程项目的需要。【例】用语言描述“数组中求最大数”的问题 () )是否为素数 数据结构的基本概念什么是数据结构 数据结构指的是数据之间的相互关系,即数据的组织形式,它一般包括以下个方面的内容:()数据元素之间的逻辑关系,也称为数据的逻辑结构。()数据元素及其关系在计算机存储器内的表示,称

26、为数据的存储结构。()数据的运算,即对数据施加的操作。数据结构的常用术语 数据:是描述客观事件的数据、字符以及所有能输入到计算机中并被计算机程序处理的符号的集合。 数据元素:是数据的基本单位。有时一个数据元素可以由若干个数据项组成,在这种情况下,常把数据元素称为记录。数据项是具有独立含义的最小单位。 数据的逻辑结构用来描述数据元素之间存在的某种特定关系,通常分为线性结构和非线性结构。()线性结构 线性结构的逻辑特征是:在数据元素的非空有限集合中,有且仅有一个开始结点,它没有前驱结点,只有一个后继结点;有且仅有一个终端结点,它没有后继结点,只有一个前驱结点;除开始结点和终端结点外,集合中的每个结

27、点有且只有一个前驱结点,有且只有一个后继结点。线性表、栈、队列和字符串均属于线性结构。线性结构的基本关系图如下图所示()非线性结构 非线性结构的逻辑特征是一个结点可能有多个直接前驱和直接后继。树和图属于非线性结构。 非线性结构的基本关系图如下所示:树形结构的基本关系图 图状结构的基本关系图 数据的存储结构又称数据的物理结构,它是数据逻辑结构在计算机存储器中的实现,即数据及其关系在计算机中的物理表示,是依赖于计算机的。 数据的存储结构一般由下面种基本的存储方式体现。()顺序存储方法 顺序存储方法是把逻辑上相邻的结点存储在物理位置上相邻的存储单元里。 顺序存储结构通常借用程序语言的数组来描述。 ()链式存储结构 链式存储方法不要求逻辑上相邻的结点在物理位置上亦相邻。链式存储结构通常借助于程序语言的指针类型来实现。()索引存储方法 索引存储方法通常是在存储结点信息的同时,还建立附加的索引

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1