- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
yjs第02章算法
第二章 程序的灵魂——算法 数据结构即对参与运算的数据怎样进行合理的组织、安排,以提高程序运行的效率和求解的精确性。 算法即问题的求解过程、计算机的工作步骤。 2.1 算法的概念 2.2 算法的特征 2.3 常用算法描述 2.4 结构化程序设计方法 2. 1 算法的概念 算法是计算机所能执行的解题方法步骤的精确描述,有两大要素: 计算机所能执行的操作:算术运算、逻辑运算、关系运算、函数运算、位运算、I/O操作等。 控制结构:即各种操作的执行顺序。 2.2 算法的特征 有穷性。 确定性。 有零个或多个输入。 有一个或多个输出。 有效性。 2.3 算法的表示 2.3.1 自然语言表示法 2.3.2 传统的程序流程图 2.3.3 N-S流程图 2.3.1 自然语言表示法 例如: (1)输入a,b两数 (2)求和s=a+b (3)输出两数之和 注意:用自然语言表示的每一步骤必须使计算机能实现的,否则便是错误的算法。 特点:简单易写,内容较长,理解有异,较少使用。 例2.4 求1-1/2+1/3-1/4+……+1/99-1/100 S1:sign=1 /*符号*/ S2:sum=1 /*部分和*/ S3:deno=2 /*分母*/ S4:sign=(-1)×sign /*改变符号*/ S5:term=sign×(1/deno) /*项*/ S6:sum=sum+term /*累加部分和*/ S7:deno=deno+1 S8:若deno≤100返回S4;否则算法结束。 2.3.2 传统的程序流程图 用一些图形符号形象直观的表述算法,表1.1给出了ANSI规定的程序流程图符号。 例2.9 求1-1/2+1/3-1/4+……+1/99-1/100见P23图2.11 例2.10 判断一个数n(n2)是否是素数见P23图2.12 2.3.3 N-S 图 即结构化程序设计流程图,提供了描述三种基本逻辑结构的图形工具,与传统的程序流程图对照描述如下: 1、顺序结构 例2 求1-1/2+1/3-1/4+……+1/99-1/100 例3 判断一个数n是否是素数? 2.4 结构化程序设计方法 荷兰学者E.W.dijkstra提出了结构化程序设计(structured programming)的理论,成为70年代中期至90年代初的程序设计主流。结构化程序设计方法提出了一些大家都要遵循的原则,这些原则归纳为32个字: “自顶向下,逐步细化。基本结构,组合而成。清晰第一,效率第二。书写规范,缩进格式。” 面向对象的程序设计方法 70年代后,软件开发的手段和方法越来越不能适应开发大型系统软件的要求,因而出现了“软件危机”,由此产生了面向对象的程序设计语言。1983年美国Bell实验室的B.Stroustrup在C语言基础上,扩充引进了面向对象的概念,退出了C++语言。它与C语言完全兼容,是目前使用最为广泛的一种面向对象的程序设计语言。 面向对象的程序设计中的一些基本概念 对象(object):是数据以及对数据施加的操作结合在一起所构成的独立实体的总称。对象可以用来表示各种信息,如数据、字符串、矩阵、对站等。 类(class):是对一组具有相同数据和相同操作的对象的描述,即对一组对象的抽象概括,而每个对象都是某个类的一个具体实例。 实例(instance):实例是由某个特定类所描述的一个对象。一般而言,“对象”和“类的实例”是同义。 消息(message):是对某个对象执行类中所定义的某个操作的请求。发送消息是让对象实施操作的唯一途径,消息中仅指明执行何种操作,不指明如何执行这种操作。 方法(method):即在类中所定义的过程。对象调用方法完成预期的操作。 面向对象的程序设计中的特点 (1)封装性:对象的数据和加工处理该数据的方法紧密结合封装为一个整体。对用户而言,仅看到对象的外特性,及该对象能接受的消息和有那些处理能力,对于对象的内特性,如实现处理的算法和内部私有数据,是看不到的,也不需了解。 (2)继承性:一个类的上层可以有父类,下层可以有子类,组成一个层次结构。一个类可以直接继承其父类的全部描述,且这种继承具有向下传递性,即某个类的对象除具有该类所描述的性质外,还具有该类之上的全部基类所描述的相关性质。 (3)多态性:对同样发送的一条消息,根据不同的接受对象可能引起不同的反应。 * 例 求三个数中的最大数 输出c 输出a 结束 输入a,b,c ab? bc? ac? 输出b 输出c 开始 y y y n n n 传统的程序流程图 特点:绘制简单,描述直
文档评论(0)