Lect_Chap 6_程序与软件.ppt_第1页
Lect_Chap 6_程序与软件.ppt_第2页
Lect_Chap 6_程序与软件.ppt_第3页
Lect_Chap 6_程序与软件.ppt_第4页
Lect_Chap 6_程序与软件.ppt_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Chapter 6语言、程序和软件,CS, ZJU 7/16/2020,Overview,程序和指令 程序设计语言 程序的程序:翻译系统 高级语言的概念 怎样编写程序 软件工程简介,2020/7/16,2,6.1 概述,程序和软件是两个不同的概念,整个程序设计过程是软件设计与开发的基础 ,是软件开发的一个部分;程序加上该程序的文档就是软件。 程序设计需要使用程序设计语言。 可视化程序设计成为今天程序设计的主流 。,2020/7/16,3,6.2 程序和指令,程序:按步骤执行 从广义上看,程序是计算机进行某种任务操作的一系列步骤的总和,是一组计算机指令的有序集合 。 程序设计既是工程师又是艺术家

2、的工作。 指令和指令系统 指令和指令系统构成计算机处理器的重要部分,又是整个程序的基础。 指令就是计算机执行的最基本的操作。 指令系统是所有指令的集合。 从计算机硬件和软件的关系来看,指令及指令系统是计算机硬件和软件的接口。 从CPU角度看,指令是计算机处理器执行的二进制代码。,2020/7/16,4,指令系统的主要类型: 数据传输类指令: 将数据从一个地方(源)传输到另外一个地方(目的); 算术逻辑类指令: 包括基本的算术运算和逻辑、比较运算,操作对象是数据; 控制操作类指令: 实现程序的不同执行结构,分为有条件转移和无条件转移;,2020/7/16,5,6.3 程序设计语言,计算机程序设计

3、语言的级别就是根据它们和机器的密切程度划分的:越接近机器的语言级别越低,越远离机器的语言越“高级”。 面向机器硬件的机器语言 二进制语言,用二进制机器指令来编写程序 汇编语言 机器语言的符号化,一般用英文单词或缩写表示机器指令,因此也是面向机器的。 面向过程的高级语言 接近数学描述求解问题的过程,它和机器没有直接关系。语法与自然语言接近。 面向对象的高级语言,2020/7/16,6,机器语言和指令 机器语言就是指令:二进制代码,能被计算机直接执行, 一条机器指令需要包含如下信息: 操作类型:有几十种到上百种,如加法、访问存储器、输入输出操作等; 操作数或者操作数的存储位置:它是操作数的位置信息

4、,如内存单元、CPU内部寄存器,或指令中的立即数; 操作结果的存储地址:它说明将结果存储到什么地方; 下一条指令的地址信息:它说明到哪里去取下一条指令;,2020/7/16,7,2020/7/16,8,机器指令的一般格式,例:加法指令,2020/7/16,9,指令的执行过程,汇编语言 用容易记忆的文字符号来表示指令中的操作码和地址码,这种符号叫助记符。 CPU所有指令助记符的集合以及使用规则构成了助记符语言叫汇编语言(Assemble Language)。 例子(汇编语言的一条加法语句) ADD A,B 意思是将存储地址A和B的内容相加,结果存储在地址A或B的存储单元(不同的计算机有不同的规定

5、)。 特点 与二进制的机器指令相比,汇编语言指令可读性较好。 它仍然是一种面向计算机硬件的言,程序员必须熟悉计算机硬件结构、指令系统和指令格式等。 程序移植性也较差。,2020/7/16,10,高级语言 是一种与机器指令系统无关、表达形式更接近于被描述问题的语言。任何一种高级语言都有其语义和语法规定,程序员熟悉了该语言的规则就可以灵活地设计出解决各种实际问题的程序。 分为两种类型 : 面向过程的高级语言 面向对象的高级语言,2020/7/16,11,面向过程的高级语言 每一个语句都是为完成一个特定的任务而对计算机发出执行的命令 Basic(Beginner ALL-Purpose Symbol

6、ic Instruction Code) 在计算机技术发展史上应用得最广泛的语言一 适于编程初学者编程,简单易学 非计算机专业出身的编程者广泛使用 C语言 C是一种高级语言,被广泛用于专业程序设计 既有高级语言的优点,又有汇编语言的效率,因此也有人把它定位为“中级语言” 它的命令可直接对计算机内存单元中的数据进行位操作,适合编写较接近硬件操作又要求处理速度的程序,2020/7/16,12,Pascal语言 Pascal为纪念计算机先驱Pascal命名的 作为一种教学和应用开发语言被普遍接受 Fortran语言 第一个高级语言:IBM公司在1957年开发的 更适合于科学、数学和应用工程方面的应用

7、,编程人员可用它方便地描述数学问题,解决数学计算 Cobol语言 COBOL是一种专门的商用的高级程序设计语言 大部分命令都与英语类似 比较适用于存储、检索公司的财务信息,实现票据管理和工资报表等功能 Ada语言 它是为美国国防部开发署(DoD)设计的,由所有承包DoD工程的厂商统一使用的语言。 Ada还具有实时处理和并行处理能力。,2020/7/16,13,面向对象的高级语言 封装。 封装是指把对象的属性和操作结合在一起,构成一个独立体。 继承。 继承(Inheritance)是指子类可以拥有父类的属性和行为,这里的类(Class)就是对象继承提高了软件代码的复用性。 多态性。 多态性(Po

8、lymorphism)是指对象可以具有不同的行为。多态性机制不仅为软件的结构设计提供了灵活性,还减少了信息冗余,提高了软件的可扩展性。,2020/7/16,14,Visual Basic 简称VB,BASIC引入了面向对象的设计方法 为开发图形界面的应用程序而设计的 它比较简单易学,功能强大,得到广泛应用 JAVA Sun Microsystem公司开发 具有纯面向对象、平台无关性、多线程、高安全性等特点 解决了困扰软件界多年的软件移植问题 C+ 传统的C语言进行面向对象的扩展而成的语言 它在C语言的基础上增加了面向对象程序设计的支持 Delphi语言 Delphi使用Pascal编程语言,它

9、是面向对象的,也是开发GUI程序很好的工具。 类似的语言或叫做开发工具的还有Borland公司的PB(Power Build)等,2020/7/16,15,其他语言 函数型语言:主要有LISP和Scheme 。 说明型语言:也叫逻辑语言,它被用于根据逻辑推理的原 则回答问题 。 超文本链接标记语言 :由一种格式标记何超链接组成的“伪语言”,主要用于网络上的信息服务。 Perl:一种“脚本语言”,程序以ASCII文本保存,只在执行时对程序进行解释或者编译。 Python:脚本语言:它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。 SQL :是一种结构化查询的语言。 基于组件的程

10、序设计,2020/7/16,16,6.4 程序的程序:翻译系统,“翻译程序”本身也是程序,它所执行的任务就是把其他语言程序翻译为机器语言程序。 翻译程序根据功能的不同分为: 解释程序 对源代码中的程序进行逐句翻译,翻译一句执行一句,翻译过程中并不生成可执行文件。 编译程序 将整个源程序代码文件一次性翻译成目标程序代码,最终生成可执行文件,一旦编译完成,程序就可以被单独执行。,2020/7/16,计算机科学基础,17,使用编译系统的程序执行效率较高。编译系统是一个十分复杂的程序系统,它是一个信息加工流水线,被加工的是源程序,最终产品是目标程序。 大多数语言系统都将源程序的编辑、翻译、调试、运行等

11、功能集成为开发环境。 编译系统只能够发现不合法的语句和表达,它并不能发现算法上的错误,2020/7/16,18,6.5 高级语言的概念,常量、变量和数据类型 数据类型 程序设计语言需要给参与运算的各种数据定义其类型,每一种数据类型都有其取值范围。 一般程序设计语言的基本数据类型有三种:整型、实型和字符型。 其他 ,如Java语言,有逻辑型(Boolean),VB语言有货币、日期/时间等类型。 语法规则要求运算对象的数据类型保持一致,如果不一致的话则按规则强制转换。,2020/7/16,计算机科学基础,19,常量 常量在程序执行过程中,这个量将固定不变。 程序中的常量有两种:文字常量、符号常量。

12、 变量 变量就是可以被改变的量。程序使用标识符代表变量的内存位置,程序员只需要对这个变量进行赋值、运算即可。 变量在使用之前需要对其先行定义类型。 有些语言规定使用变量之前还必须先给这个变量赋一个初值。,2020/7/16,20,构造数据类型 将基本类型和数据结构联系起来组成的新的、复杂的数据类型,一般称为构造数据类型,也称为派生数据类型。 数组 使用一个标识符代表一组相同类型的数据,以下标形式区分各个元素。 结构和指针 结构可以表示复杂的数据记录。 指针是一种对变量访问的形式,存放的 是数据变量的地址。 字符串、链表、堆栈、队列、树、图,2020/7/16,21,基本语句 语句是使程序执行的

13、动作,被翻译程序翻译成一条或几条指令。 赋值语句 按规则将一个值存入到变量名所代表的存储单元中。 表达式语句 不同表达式构成的语句。 复合语句 用括号将多行语句定义为一个语句称为复合语句(语句块)。程序将复合语句视做一个语句进行处理。 转移语句 著名的goto语句。 返回语句 通过调用的方法构造程序时,使用Return语句可以将运算结果返回调用程序。 输入、输出语句,2020/7/16,22,分支语句 实现分支结构的语句,根据条件决定程序下一步该执行程序的哪一条语句或语句块。,2020/7/16,23,循环语句 实现循环结构的语句为循环语句; 大多数高级语言有多种循环语句;,2020/7/16

14、,24,函数和方法,2020/7/16,25,6.6 怎样编写程序,程序设计不仅是编写程序代码,它是一个系统过程。通常把这个过程分为6个步骤: 问题的定义 设计方案 编码 测试 编写文档 运行维护,2020/7/16,26,理解问题 设计一个程序首先要了解问题,对问题进行清晰、明确的定义是解决问题过程中最重要、也是最容易被忽略的一步。一个组织得好的程序项目,花在这个阶段的时间应该占到整个程序开发设计时间的25% 30%,甚至更多。 这项工作一般可由具有比较丰富程序设计经验的系统分析员来做。在这个阶段主要弄清以下几个问题: 程序目标是什么?即程序需要解决什么样的问题 可能需要输入哪些数据? 数据

15、具体的处理过程和要求是什么? 程序可能产生的数据输出以及输出形式是什么?,2020/7/16,27,程序设计 在本阶段需要对问题设计出具体的解决方案,要一步一步地显示解决问题的过程。其关键是设计出一个好的算法,并使用合适的逻辑结构。 要确定使用的程序范式(Programming Paradigm)。即选择使用哪种编程技术或者选择哪种语言作为开发工具。 考虑程序运行在网络环境中还是单台机器上。 如果原来有旧的程序在运行,那么新程序如何兼容以前的程序。,2020/7/16,28,编写程序代码 在此阶段,使用所选择的编程语言,按照设计过程中形成的算法编写程序代码。 不同的语言适合不同的应用,通用语言

16、能够适合大多数编程任务,而较为特殊的应用则应选择针对性更强的其他语言。 同时,语言的选择还取决于编程者对语言的熟悉程度,当然也要看它是否能够完成任务。,2020/7/16,29,寻找错误:程序测试 在此阶段,要调试已编好的程序,找出程序中的逻辑错误和语法错误。 如果违反编程语言的语法规则,就会发生语法错误; 如果程序得到的输出不对,则可能是由于程序没有正确地实现算法,这是逻辑错误。 程序测试和纠正错误交错进行,但程序测试是“测试程序中的错误,而不是使得程序中没有错误”。 常用的测试方法有: 黑盒测试是把一组测试数据输入程序,检查程序的结果是否是预期的。大多数专业软件公司提供给用户的Beta()

17、版也叫测试版,就是属于黑盒方法。 白盒测试一般是专业测试,输入一组特意设计的数据让程序执行,测试程序是否按照设计流程要求执行,2020/7/16,30,编写程序文档 程序文档包括设计过程中形成的文档和设计完成后的使用说明,文档形式有两种: 一种是在编写程序代码时在代码行后面加注释。 另一种是按照一定规则专门编写。 运行与维护 程序的安装、系统配置 对用户的培训 软件维护,2020/7/16,31,6.7 软件工程简介,什么是软件开发 开发软件需要进行系统分析,需要设计,需要编码,需要测试。 大型程序无法由一个程序员完成,因此众多开发人员的协调、管理也是软件开发需要考虑的问题。 开发软件不是一个

18、单纯的计算机问题,这里面需要运用有关的系统分析原理,需要建立必要的数据模型,需要使用工程管理的方法进行开发管理。,2020/7/16,32,软件生命周期 软件危机 软件工程 和工业产品一样,软件也有一个生产、使用和消亡的过程,称为软件的生命周期。 软件生命周期法从总体上包括分析、设计、实现(开发软件)和维护等过程, 一般较大型的软件系统都需要经历以上这几个阶段,当新的系统替代原系统后,原系统的生命周期也就结束了。,2020/7/16,33,软件开发模式 建立开发过程模型是建立对软件开发过程的总体认识和描述,主要有: 瀑布模型 增量模型 螺旋模型 RAD模型,2020/7/16,34,瀑布模型

19、这是软件开发过程最为流行的一个模型,包括了分析、设计、实现(编码)、测试和维护5个方面,结构自上而下,如瀑布流水一般,故得名瀑布模型。 由于它的线形特点,下一个过程必须在上一个过程结束的基础上,如编写代码前,设计工作必须完成。 它的缺点是缺乏灵活性,无法解决软件需求不明确的问题。,2020/7/16,35,增量模型 又称为演化模型。 软件在该模型中是“逐渐”开发出来的。开发人员先开发出一部分程序,向用户展示,用户提出修改意见,不断完善,最终获得满意的软件产品。 该模型具有较大的灵活性,适合于软件需求不明确、设计方案有一定风险的软件项目。 软件开发是一个迭代的过程。,2020/7/16,36,螺

20、旋模型 螺旋模型(Spiral Model),沿着螺线旋转,在4个象限上分别表达了4个方面的活动,即:编制计划、风险分析、实施工程和客户评估。 螺旋模型将瀑布模型与演化模型结合起来,并且加入两种模型均忽略了的风险分析,比较适应具有高风险项目的开发过程。,2020/7/16,37,RAD模型 强调极快的开发周期。它主要用于大型信息系统的开发,包含了以下5个阶段。 业务建模。业务活动中的信息流被模型化,确定信息来源及流向和使用者。 数据建模。业务信息流被精确定义为对象和属性以及对象间的关系。 处理建模。创建对这些数据对象的操作,如增加、删除、修改、检索等。 应用生成。使用面向对象的技术,可使用工具软件进行开发。 测试和反复。强调复用,且测试复用在当前系统中的功用。,2020/7/16,38,开发软

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论