程序设计概述.ppt

上传人:夺命阿水 文档编号:259545 上传时间:2023-03-30 格式:PPT 页数:54 大小:1.15MB
返回 下载 相关 举报
程序设计概述.ppt_第1页
第1页 / 共54页
程序设计概述.ppt_第2页
第2页 / 共54页
程序设计概述.ppt_第3页
第3页 / 共54页
程序设计概述.ppt_第4页
第4页 / 共54页
程序设计概述.ppt_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《程序设计概述.ppt》由会员分享,可在线阅读,更多相关《程序设计概述.ppt(54页珍藏版)》请在课桌文档上搜索。

1、7.1 程序设计概述,7.2.2 算法的复杂度,7.2.1 算法的基本概念,7.1.3 面向对象程序设计,7.1.2 结构化程序设计,7.1.1 程序设计的风格,7.2 算法概述,第27讲 程序设计与软件开发基础(一),掌握逐步求精的结构化程序设计方法,初步掌握良好的程序设计风格的内涵,掌握算法的基本概念,理解面向对象程序设计的基本概念。,教学目标及基本要求,教学重点,逐步求精的结构化程序设计方法,算法的基本概念。,第27讲 程序设计与软件开发基础(一),教学难点,面向对象程序设计的基本概念,算法的复杂度。,程序设计的风格结构化程序设计面向对象程序设计算法的基本概念算法的复杂度,教学内容,第2

2、7讲 程序设计与软件开发基础(一),1学时,教学时间,第27讲 程序设计与软件开发基础(一),7.1 程序设计概述,7.1.1 程序设计的风格,1程序设计风格,程序设计风格是指编写程序时所表现出的特点、习惯和逻辑思路。程序设计的风格总体而言应该强调简单和清晰,程序必须是可以理解的。主导的程序设计风格:“清晰第一,效率第二”。,2良好程序设计风格,(1)源程序文档化 符号名的命名,见名知意名字不宜太长不要使用相似的名字不要使用关键字做标识符 同一个名字不要有多种含义,7.1.1 程序设计的风格,功能性注释:,通常位于每个程序的开头部分,它给出程序的整体说明。主要描述内容包括:程序标题、程序功能说

3、明、主要算法、接口说明、程序位置、开发简历、程序设计者、复审者、复审日期、修改日期等。,一般嵌在源程序体之中,主要描述其后的语句或程序做什么。,程序注释,序言性注释:,源程序文档化,视觉组织 在程序中利用空格、空行、缩进等技巧使程序层次清晰。,源程序文档化,(2)数据说明的方法 数据说明的次序规范化:数据说明次序固定,便程序理解、阅读和维护,可以使数据的属性容易查找,也有利于测试、排错和维护。,良好程序设计风格,说明语句中变量安排有序化:当一个说明语句说明多个变量时,变量按照字母顺序排序为好。使用注释来说明复杂数据的结构。显式地说明一切变量。,(3)语句的结构 在一行内只写一条语句。程序编写应

4、优先考虑清晰性,除非对效率有特殊要求,即清晰第一,效率第二。首先要保证程序正确,然后才要求提高速度。,良好程序设计风格,避免使用临时变量而使程序的可读性下降。避免采用复杂的条件语句和不必要的转移,尽量使用库函数。,数据结构要有利于程序的简化,程序要模块化,且要尽量使模块功能单一化,利用信息隐蔽,确保每一个模块的独立性。尽量只采用3种基本控制结构来编写程序。,语句的结构,(4)输入和输出 对所有的输入数据都要检验数据的合法性以及检查输入项的各种重要组合的合理性。输入格式要简单,以使输入的步骤和操作尽可能简单。输入数据时,应允许使用自由格式和缺省值。输入一批数据时,最好使用输入结束标志。,良好程序

5、设计风格,以交互式方式输入、输出数据时,要在屏幕上有明确的提示符,数据输入结束时,应在屏幕上给出状态信息。当程序设计语言对输入格式有严格要求时,应保持输入格式与输入语句的一致性;给所有的输出加注释,并设计良好的输出报表格式。,输入和输出,7.1.2 结构化程序设计,1结构化程序设计的原则,自顶向下、逐步求精、模块化、限制使用GOTO语句。(1)自顶向下 先总体,后细节;先全局目标,后局部目标。(2)逐步求精 设计一些子目标作为过渡,逐步细化。,结构化程序设计的原则,(3)模块化 把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,把每个小目标称为一个模块。,(4)限制使用GOTO语句

6、,使用GOTO语句有时会使程序执行效率较高,但也容易造成程序混乱,程序不易理解、不易排错、不易维护,因而要尽量限制使用GOTO语句。,结构化程序设计的原则,2结构化程序的基本结构与特点,结构化程序的基本结构只有3种:顺序、选择和循环,(1)顺序结构 如图7-1所示,顺序结构是顺序执行结构。所谓顺序执行,就是按照程序语句行的自然顺序,一条语句一条语句(ABC)地执行程序。,7.1.2 结构化程序设计,ABC,图7-1 顺序结构,顺序结构,(2)选择结构 选择结构又称为分支结构,它包括简单选择和多分支选择结构,这种结构可以根据设定的条件,判断应该选择哪一条分支来执行相应的语句序列。图7-2列出了包

7、含2个分支的简单选择结构。,结构化程序设计的基本结构与特点,条件,T,F,A,B,图7-2 选择结构,选择结构,(3)循环结构 循环结构又称为重复结构,它根据给定的条件,判断是否需要重复执行某一相同的或类似的程序段。分为两类:,直到型循环结构:,先判断后执行循环体(图7-3),先执行循环体后判断(图7-4),当型循环结构:,结构化程序设计的基本结构与特点,图7-3 当型循环结构,图7-4 直到型循环结构,判断条件,循环体,循环体,判断条件,循环结构,3结构化程序设计原则和方法的运用,(1)使用顺序、选择、循环三种结构表示程序的控制逻辑。(2)选用的控制结构只准许有一个入口和一个出口。,7.1.

8、2 结构化程序设计,(3)复杂结构应用嵌套的基本控制结构进行组合嵌套来实现,语言中所没有的控制结构,应该采用前后一致的方法来模拟。(4)严格控制GOTO语句的使用。,结构化程序设计原则和方法的运用,7.1.3 面向对象程序设计,1面向对象程序设计方法的产生,系统的需求总是处于不断变化之中,因此,需要设计对变化有弹性的系统。,面向对象程序设计方法学的产生,传统的结构化程序设计方法主要是面向过程的,也就是在分析设计时更多地从过程处理的角度进行,系统框架结构,系统模块的划分、设计都是基于系统所实现的功能,而功能是系统中最易变的部分,这样,如果系统需求发生一些变化(如系统某些功能的改进或扩充新功能),

9、系统的结构就会受到破坏。,利用传统的结构化程序设计方法设计的系统不易扩充。,在实际系统中,最稳定的部分是系统对象,它直接描述问题域。面向对象的系统能够有效提高系统结构的稳定性。,较复杂的系统将为每个对象类定义一些更复杂的功能(如“飞机”对象类中增加自动跟踪功能)或者增加一些新的对象类(如“雷达”),但是系统的核心部分(问题域中的对象)即使在系统功能范围发生变化的情况下,仍保持不变。,面向对象程序设计方法学的产生,在分析阶段采用DFD表示,而在设计阶段采用结构图的表示方法。在面向对象方法中,从分析(OOA)、设计(OOD)到编程实现(OOP)采用的都是同样的表示方法。,传统的结构化分析和设计方法

10、中存在迥然不同的表示方法。,面向对象程序设计方法学的产生,2面向对象程序设计方法学的优点,可重用性,继承是面向对象方法的一个重要机制,用面向对象方法设计的系统的基本对象类可以被其他新系统重用,通常这是通过一个包含类和子类层次结构的类库来实现的,面向对象方法通过从一个项目向另一个项目提供一些重用类而能显著提高生产率。,7.1.3 面向对象程序设计,可维护性,表示方法的一致性,面向对象程序设计方法学的优点,3面向对象程序设计方法学的基本概念,(1)对象概念:在现实世界中,对象指的是任何一个实体。它可能是一个人、一部车。对象的组成:,7.1.3 面向对象程序设计,对象的属性,对象名,对象的方法,用来

11、标识对象,是实体所具有的性质(外形与状态)。,是实体所拥有的行为。,(2)消息概念:对象之间进行通信的一种构成叫做消息。消息传递:当一个消息发送给某个对象时,包含要求接收对象去执行某些活动的信息。接收到信息的对象经过解释,然后予以响应。这种通信机制叫做消息传递。发送消息的对象不需要知道接收消息的对象如何响应该请求。,面向对象程序设计方法学的基本概念,(3)类概念:类是对象的抽象。,(4)继承概念:继承是父类和子类之间共享数据和方法的机制。可以在一个已经存在的类的基础上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。,面向对象程序设计方法学的基本概念,继承的分类,单重继

12、承:,多重继承:,子类只从一个父类得到继承,子类从多个父类得到继承,面向对象程序设计方法学的基本概念,(5)多态性概念:同样的消息被不同的对象接受时可导致完全不同的行动,该现象称为多态性。多态性的作用:多态性机制不仅增加了面向对象软件系统的灵活性,进一步减少了信息冗余,而且显著地提高了软件的可重用性和可扩充性。,面向对象程序设计方法学的基本概念,7.2 算法概述,7.2.1 算法的基本概念,1算法的基本概念,算法是指解题方案的准确而完整的描述,并且具有下列特性:(1)有穷性:一个算法必须在执行有穷步骤之后结束,且每一步都可在有穷时间内完成。,算法的特性,(2)确定性:算法的每一步必须是确切定义

13、的,不能有歧义。(3)可行性:算法应该是可行的。(4)输入:一个算法有零个或多个输入。(5)输出:一个算法有一个或多个输出。,7.2.1 算法的基本概念,2算法的基本要素,对数据对象的运算和操作,算法的控制结构,算术运算、逻辑运算、关系运算、数据传输,算法中各操作之间的执行顺序,7.2.1 算法的基本概念,3算法设计的要求,正确性可读性健壮性效率,评价一个算法优劣的主要标准是算法的执行效率和存储需求。算法的执行效率指的是时间复杂度(Time Complexity),存储需求指的是空间复杂度(Space Complexity)。,7.2.1 算法的复杂度,7.2.2 算法的复杂度,1算法的时间复

14、杂度,概念,算法的时间复杂度是指执行算法所需要的计算工作量。因为基本运算反映了算法运算的主要特征,因而可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。,算法的时间复杂度,算法的工作量计算公式,算法的工作量=f(n)其中n是问题的规模,两个n阶矩阵相乘所需的基本运算(即两个实数的乘法)次数为n3,即计算工作量为n3,也就是时间复杂度为n3。,算法的时间复杂度,注意事项,在同一个问题规模下,如果算法执行所需的基本运算次数取决于某一特定输入时,可以用平均性态和最坏情况复杂性方法来分析算法的工作量。,算法的时间复杂度,平均性态,平均性态分析是指用各种特定输入下的基本运算次数的加权平均值

15、来度量算法的工作量。,在长度为n的一维数组中查找值为x的元素,若采用顺序搜索法,在平均情况下需要检查数组中一半的元素。,算法的时间复杂度,最坏情况分析,最坏情况分析是指在规模为n时,算法所执行的基本运算的最大次数。,在长度为n的一维数组中查找值为x的元素,若采用顺序搜索法,在最坏情况下最坏情况需查找n次。,7.2.2 算法的复杂度,2算法的空间复杂度,一个算法的空间复杂度一般是指执行这个算法所需要的内存空间。包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。其中额外空间包括算法程序执行过程中的工作单元以及某种数据结构所需要的附加存储空间。,例 题,【例7.

16、1】讨论用选择法对数组中n个整数按由小到大排序的时间复杂度。,1.选择法:先将n个数中最小的数与a0对换,再将a1到an-1中最小的数与a1对换每比较一轮,找出一个未经排序的数中最小的一个,共比较n1轮。,2.算法:(1)从键盘输入n个数,并将其存储在一个有n个元素的整型数组a中。(2)进行选择排序:int i=0;/每一轮比较起始元素的下标 int k=0;/每一轮比较得到的最小元素的下标 通过循环求出aian中最小数的下标k 如果i不等于k,将ai与ak对换 i=i+1,转到,(3)输出排序的结果。,3.C+程序代码void select_sort(int array,int n)/第1行

17、 int i,j,k,t;/第2行 for(i=0;in-1;i+)/第3行 k=i;/第4行 for(j=i+1;jn;j+)/第5行 if(arrayjarrayk)/第6行 k=j;/第7行if(k!=i)/第8行/第9行 t=arrayk;arrayk=arrayi;arrayi=t;/第10行,/第11行/第12行/第13行,4.时间复杂度算法中第3行的for循环的循环体要执行n1次,而第5行的for循环的循环体每次分别执行n1,n2,n3,2,1次,该算法的时间复杂度为:n1+n2+2+1=n(n1)/2。,小 结,程序设计语言经历了机器语言、汇编语言、高级语言等多个阶段,程序设计

18、方法也经历了早期手工作坊式的程序设计、结构化程序设计、面向对象程序设计等发展阶段。结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、模块化、限制使用GOTO语句。结构化程序设计方法是仅仅使用顺序、选择和循环3种基本控制结构,它虽然成功但是它并不总是有效的。面向对象程序设计方法涉及,小 结,到类、对象、消息、继承、多态性等相关概念。应用系统开发的程序设计的程序设计风格会深刻地影响软件的质量和可维护性,良好的程序设计风格可以使程序结构清晰合理,使程序代码便于维护。算法是为解决某一特定类型的问题规定了一个运算过程,评价一个算法优劣的主要标准是算法的执行效率和存储需求,设计高效的算法对程序设计有着十分重要的意义。,作 业,1什么是程序设计的风格?如何才能养成良好的程序设计的风格?2简述结构化程序设计的主要原则及基本结构。3什么是算法?它有哪些特点?,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号