10 程序设计方法学.ppt
《10 程序设计方法学.ppt》由会员分享,可在线阅读,更多相关《10 程序设计方法学.ppt(99页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第10章章 程序设计方法学程序设计方法学主要内容主要内容软件开发过程简介软件开发过程简介程序设计方法的发展历程程序设计方法的发展历程面向过程的程序设计方法面向过程的程序设计方法JosephusJosephus问题结构化方法的实现问题结构化方法的实现面向对象的方法面向对象的方法面向对象的软件开发面向对象的软件开发JosephusJosephus问题面向对象方法的实现问题面向对象方法的实现2课件制作10.1 10.1 软件开发过程简介软件开发过程简介基本术语基本术语源程序:用源语言写的,有待翻译的程序源程序:用源语言写的,有待翻译的程序目标程序:也称为目标程序:也称为“结果程序结果程序”,是源程
2、序通过翻译程序加工以后,是源程序通过翻译程序加工以后所生成的程序所生成的程序翻译程序:是指一个把源程序翻译成等价的目标程序的程序翻译程序:是指一个把源程序翻译成等价的目标程序的程序汇编程序:其任务是把用汇编语言写成的源程序,翻译成机器语言形式汇编程序:其任务是把用汇编语言写成的源程序,翻译成机器语言形式的目标程序的目标程序编译程序:若源程序是用高级程序设计语言所写,经翻译程序加工生成编译程序:若源程序是用高级程序设计语言所写,经翻译程序加工生成目标程序,那么,该翻译程序就称为目标程序,那么,该翻译程序就称为“编译程序编译程序”解释程序:也是一种翻译程序,同样是将高级语言源程序翻译成机器指解释程
3、序:也是一种翻译程序,同样是将高级语言源程序翻译成机器指令。它与编译程序不同点就在于:它是边翻译边执行的,即输入一句、令。它与编译程序不同点就在于:它是边翻译边执行的,即输入一句、翻译一句、翻译一句、执行一句,直至将整个源程序翻译并执行完毕。执行一句,直至将整个源程序翻译并执行完毕。3课件制作10.1 10.1 软件开发过程简介软件开发过程简介软件设计开发过程软件设计开发过程有无正确开始1.编辑2.编译3.连接4.运行结束有错?结果正确?不正确源程序*.h/*.cpp目标程序*.obj/*.dll可执行程序*.EXE库函数和其它目标程序开始1.问题描述2.问题分析3.系统总体设计4.系统详细设
4、计需求分析报告系统总体设计报告系统详细设计报告结束4课件制作10.1 10.1 软件开发过程简介软件开发过程简介软件过程建模软件过程建模基本术语基本术语软件过程软件过程:是一组软件工程活动的总称是一组软件工程活动的总称,它把用户需求转化为可执行的它把用户需求转化为可执行的系统。它是生产软件产品的工具、方法和实践的集体系统。它是生产软件产品的工具、方法和实践的集体元过程元过程:描述、维护和演化软件过程的过程描述、维护和演化软件过程的过程软件过程模型软件过程模型:对软件过程中的开发活动、产品、资源、人员等信息的对软件过程中的开发活动、产品、资源、人员等信息的抽象描述。它和软件过程之间的关系类似于程
5、序和程序执行之间的关系抽象描述。它和软件过程之间的关系类似于程序和程序执行之间的关系过程程序过程程序:一种使用过程描述语言一种使用过程描述语言(PML)(PML)所描述的可执行的过程模型所描述的可执行的过程模型软件产品软件产品:软件生命周期中生产的所有产品软件生命周期中生产的所有产品(包括中间件产品和最终产包括中间件产品和最终产品品,也包括所有版本的程序和各种文档也包括所有版本的程序和各种文档)工具工具:是一组可执行程序的集合,通常由活动调用。开发工具一般用于是一组可执行程序的集合,通常由活动调用。开发工具一般用于需求规约、重用、建模、程序生成、编译、维护和文档生成等活动。需求规约、重用、建模
6、、程序生成、编译、维护和文档生成等活动。5课件制作10.1 10.1 软件开发过程简介软件开发过程简介软件过程建模软件过程建模基本术语基本术语用户用户:在过程支持下使用工具进行开发工作的人,包括程序员、设计人在过程支持下使用工具进行开发工作的人,包括程序员、设计人员、质量工程师、项目管理员等员、质量工程师、项目管理员等 视图视图:软件过程某一个侧面的信息软件过程某一个侧面的信息,是软件过程的一个投影是软件过程的一个投影 个体视图个体视图:软件过程中每一个用户的任务和任务状态视图软件过程中每一个用户的任务和任务状态视图,过程工程师过程工程师可借此跟踪了解个体工作进度可借此跟踪了解个体工作进度 过
7、程模型演化过程模型演化:以一种可控的方法对现有的模型进行修改以一种可控的方法对现有的模型进行修改,使之适应新使之适应新的需求和新的环境的需求和新的环境软件过程建模:软件过程模型是对软件过程的抽象描述,这种描述软件过程建模:软件过程模型是对软件过程的抽象描述,这种描述可以是形式化的可以是形式化的,也可以是非形式化的。进行这种抽象描述的工程也可以是非形式化的。进行这种抽象描述的工程活动活动,就称为软件过程建模就称为软件过程建模 6课件制作10.1 10.1 软件开发过程简介软件开发过程简介软件过程建模软件过程建模软件过程建模语言:软件过程建模语言:UML(Unified Modeling Lang
8、uage,统一建模语言统一建模语言),由,由OMG(Object Management Group,对象管理组织对象管理组织)110107年确认年确认Person -ID:int+stepOntoFloor(Floor&):void +enterElevator(Elevator&,Floor&):void+exitElevator(Floor&,Elevator&):voidFloor-floorNumber:int-elevatorRef:elevator-occupantPtr:Person+elevatorArrived():void+isOccupied():bool+personA
9、rrives():void Building-floor:Floor-elevator:Elevator -clock:Clock -scheduler:Scheduler+runSimulation(int):voidElevator-currentFloor:int=1-direction:enum=up-capacity:int=1-arrivalTime:int-moving:bool=false-scheduler:Scheduler+summonElevator():void+prepareToLeave():void+processTime():void+personEnters
10、():void+personExits():voidrunSimulation(int):voidClock-time:int=0-scheduler:Scheduler+getTime():int+tick():voidScheduler-floorArrivalTime:int-currentClockTime:int+processTime(time:int):int0.1 乘坐 11 0.1 等待 1 1 11电梯模拟系统类关系图电梯模拟系统类关系图7课件制作10.1 10.1 软件开发过程简介软件开发过程简介软件过程建模软件过程建模软件过程建模工具软件过程建模工具非形式化:非形式化:
11、MS Word,MS Visio形式化:形式化:IBM Rational Software Architect V8.0 8课件制作10.1 10.1 软件开发过程简介软件开发过程简介软件开发与管理工具软件开发与管理工具软件开发工具:本节以软件开发工具:本节以Microsoft Visual Studio 6.0中中 VC+6.0为例,为例,简单介绍简单介绍VC+6.0集成开发环境的若干概念:集成开发环境的若干概念:IDE(Integrated Development Environment,集成开发环境):是指集源,集成开发环境):是指集源程序编辑、编译、链接、调试于一体的计算机程序设计语言
12、开发平台程序编辑、编译、链接、调试于一体的计算机程序设计语言开发平台Workspace(工作区):为便于大型软件开发工作管理而设置的项目管理(工作区):为便于大型软件开发工作管理而设置的项目管理环境(文件名后缀为环境(文件名后缀为.dsw),通常由若干相关项目组成;),通常由若干相关项目组成;Projects(项目):通常是指具有功能相对完整、可独立执行的软件模块,(项目):通常是指具有功能相对完整、可独立执行的软件模块,由若干文件组成,管理这些文件的文件为项目文件(文件名后缀为由若干文件组成,管理这些文件的文件为项目文件(文件名后缀为.dsp););Files(文件):主要指项目源程序文件(
13、文件):主要指项目源程序文件(*.c,*.cpp,*.h)和资源文件)和资源文件(如程序中用到的位图文件、光标文件等);(如程序中用到的位图文件、光标文件等);9课件制作10.1 10.1 软件开发过程简介软件开发过程简介软件开发与管理工具软件开发与管理工具软件开发工具软件开发工具10课件制作10.1 10.1 软件开发过程简介软件开发过程简介软件开发与管理工具软件开发与管理工具软件开发管理工具软件开发管理工具(SourceSafe)11课件制作10.2 10.2 程序设计方法的发展历程程序设计方法的发展历程面向面向过程过程的程序设计方法的程序设计方法程序的目的:用于数学计算程序的目的:用于数
14、学计算主要工作:设计求解问题的过程主要工作:设计求解问题的过程缺点:对于庞大、复杂的程序难以开发和维护缺点:对于庞大、复杂的程序难以开发和维护面向面向过程的结构化过程的结构化程序设计方法程序设计方法设计思路:自顶向下、逐步求精。采用模块分解与功能抽象,自顶设计思路:自顶向下、逐步求精。采用模块分解与功能抽象,自顶向下、分而治之向下、分而治之程序结构:程序结构:按功能划分为若干个基本模块,形成一个树状结构按功能划分为若干个基本模块,形成一个树状结构各模块间的关系尽可能简单,功能上相对独立;每一模块内部均是由顺各模块间的关系尽可能简单,功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构
15、组成序、选择和循环三种基本结构组成其模块化实现的具体方法是使用函数其模块化实现的具体方法是使用函数(子程序子程序)12课件制作10.2 10.2 程序设计方法的发展历程程序设计方法的发展历程面向面向过程的结构化过程的结构化程序设计方法程序设计方法优点:有效地将一个较复杂的程序系统设计任务分解成许多易于控优点:有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护制和处理的子任务,便于开发和维护缺点:缺点:可重用性差、数据安全性差、难以开发大型软件和图形界面的应用软件可重用性差、数据安全性差、难以开发大型软件和图形界面的应用软件把数据和处理数据的过程分离为相互独立的
16、实体把数据和处理数据的过程分离为相互独立的实体当数据结构改变时,所有相关的处理过程都要进行相应的修改当数据结构改变时,所有相关的处理过程都要进行相应的修改每一种相对于老问题的新方法都要带来额外的开销每一种相对于老问题的新方法都要带来额外的开销图形用户界面的应用程序,很难用过程来描述和实现,开发和维护也都图形用户界面的应用程序,很难用过程来描述和实现,开发和维护也都很困难。很困难。13课件制作10.2 10.2 程序设计方法的发展历程程序设计方法的发展历程面向面向对象对象的方法的方法将数据及对数据的操作方法封装在一起,作为一个相互依存、不可将数据及对数据的操作方法封装在一起,作为一个相互依存、不
17、可分离的整体分离的整体对象对象对同类型对象抽象出其共性,形成类对同类型对象抽象出其共性,形成类类通过一个简单的外部接口,与外界发生关系类通过一个简单的外部接口,与外界发生关系对象与对象之间通过消息进行通讯对象与对象之间通过消息进行通讯优点:优点:程序模块间的关系更为简单,程序模块的独立性、数据的安全性就有了程序模块间的关系更为简单,程序模块的独立性、数据的安全性就有了良好的保障良好的保障通过继承与多态性,可以大大提高程序的可重用性,使得软件的开发和通过继承与多态性,可以大大提高程序的可重用性,使得软件的开发和维护都更为方便维护都更为方便14课件制作10.3 10.3 面向过程的程序设计方法面向
18、过程的程序设计方法要想成为一名优秀的要想成为一名优秀的软件设计开发人员软件设计开发人员,必须:,必须:熟练掌握程序设计语言;熟练掌握程序设计语言;熟练掌握必要的程序设计方法;熟练掌握必要的程序设计方法;多了解、掌握和积累一些计算机常用算法;多了解、掌握和积累一些计算机常用算法;重视算法的设计;重视算法的设计;数据结构数据结构 +算法算法 =程序程序对于较小的简单问题,一般采用下列步骤进行程序设计对于较小的简单问题,一般采用下列步骤进行程序设计定义数学模型;定义数学模型;确定数据结构,如:变量、数组;确定数据结构,如:变量、数组;确定算法;确定算法;编写程序代码;编写程序代码;上机调试;上机调试
19、;整理并写出文档资料;整理并写出文档资料;15课件制作10.3 10.3 面向过程的程序设计方法面向过程的程序设计方法例例CH10_1:计算:计算n!1、定义数学模型:根据数学知识、定义数学模型:根据数学知识 n=0,n!=n*(n-1)*(n-2)2*12、确定数据结构:主要是程序中用的主要变量:阶数、确定数据结构:主要是程序中用的主要变量:阶数n,计算结果,计算结果 fac(factorial),代表乘数的变量,代表乘数的变量 i;3、确定算法、确定算法step1:读入读入 n的值;的值;step2:如果如果 n=0,则,则 变量初始化变量初始化:fac 置初值置初值 1,i 置初值置初值
20、 1;进行累乘运算进行累乘运算 fac=fac*i;乘数乘数 i 增增 1 得到下一个乘数的值,即得到下一个乘数的值,即 i=i+1;如果如果 i n,则执行步骤,则执行步骤;否则执行步骤;否则执行步骤 和和;输出输出 fac 的值;的值;step4:结束算法结束算法16课件制作10.3 10.3 面向过程的程序设计方法面向过程的程序设计方法4、编写程序、编写程序#include using namespace std;int main()int n,i,fac;coutn;if(n 0)coutYour input is invalid!;return-1;fac=1;i=2;do fac=
21、fac*i;i+;while(i=n);coutn!=facendl;return 1;5 5、上机调试;、上机调试;6 6、整理文档:问题描述,数学模型,算法描述及主要数据结构说明,源程序,、整理文档:问题描述,数学模型,算法描述及主要数据结构说明,源程序,可执行程序,测试案例;可执行程序,测试案例;17课件制作10.3 10.3 面向过程的程序设计方法面向过程的程序设计方法算法算法定义:是为解决一个具体问题而采取的定义:是为解决一个具体问题而采取的确定的有限的确定的有限的操操作步骤,这里仅指计算机能执行的算法作步骤,这里仅指计算机能执行的算法算法的特性:正确的算法应该满足算法的特性:正确的
22、算法应该满足5个特性个特性有穷性:算法包含的操作步骤应是有限的,每一步都能在合理的有穷性:算法包含的操作步骤应是有限的,每一步都能在合理的时间内完成;时间内完成;确定性:算法的每个步骤都应是确定的,不允许有歧义性;确定性:算法的每个步骤都应是确定的,不允许有歧义性;有效性:算法的每个步骤都应是有效执行的,且能得到确定的结有效性:算法的每个步骤都应是有效执行的,且能得到确定的结果;果;有零个或多个输入;有零个或多个输入;有一个或多个输出;有一个或多个输出;18课件制作10.3 10.3 面向过程的程序设计方法面向过程的程序设计方法算法算法算法的分类算法的分类 数值运算算法:数值运算算法:解决的是
23、求数值解的问题,例如用辗转相除法求解决的是求数值解的问题,例如用辗转相除法求两个数的最大公约数等,专门课程两个数的最大公约数等,专门课程计算方法或数值分析计算方法或数值分析;非数值运算算法:非数值运算算法:主要用于解决需要用分析推理、逻辑推理才能主要用于解决需要用分析推理、逻辑推理才能解决的问题,例如人工智能中的许多问题,查找、分类等问题;解决的问题,例如人工智能中的许多问题,查找、分类等问题;算法的表示方法算法的表示方法自然语言表示:参见例自然语言表示:参见例 计算计算 n!;n!;传统的流程图表示传统的流程图表示N-SN-S结构化流程图表示结构化流程图表示 伪代码表示伪代码表示19课件制作
24、10.3 10.3 面向过程的程序设计方法面向过程的程序设计方法算法算法流程图:用图框表示各种类型的操作,用箭头表示这些操作的顺序流程图:用图框表示各种类型的操作,用箭头表示这些操作的顺序数据输入框或输出框数据输入框或输出框数据处理框数据处理框开始框或结束框开始框或结束框判断框判断框条件?条件?A操作操作B操作操作成立成立不成立不成立流程线流程线连接符连接符20课件制作10.3 10.3 面向过程的程序设计方法面向过程的程序设计方法算法算法流程图:用图框表示各种类型的操作,用箭头表示这些操作的顺序流程图:用图框表示各种类型的操作,用箭头表示这些操作的顺序开始开始定义标识符定义标识符x、y、su
25、m为变量为变量sumx+y输出输出sum的值的值结束结束x4.6,y7.85开始开始定义标识符定义标识符a、b、max为变量为变量输入输入a、b的值的值ab?YNmaxbmaxa输出输出max结束结束21课件制作10.3 10.3 面向过程的程序设计方法面向过程的程序设计方法算法算法流程图:用图框表示各种类型的操作,流程图:用图框表示各种类型的操作,用箭头表示这些操作的顺序用箭头表示这些操作的顺序YN开始开始定义标识符定义标识符 s、n 为变量为变量s0,n1n=100?ss+nnn+1输出输出 s 的值的值结束结束22课件制作10.3 10.3 面向过程的程序设计方法面向过程的程序设计方法算
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 10 程序设计方法学 程序设计 方法
限制150内