《程序的灵魂——算法与流程图》由会员分享,可在线阅读,更多相关《程序的灵魂——算法与流程图(25页珍藏版)》请在金锄头文库上搜索。
1、第8章 程序的灵魂算法与流程图,算法基础 流程图的基础 如何表示一个算法 结构化程序设计方法,8.1 算法基础,8.1.1 算法的概念 8.1.2 算法的特性 8.1.3 简单算法举例解方程,8.1.1 算法的概念 算法(Algorithm):将为了解决问题所制订的步骤、方法。 利用计算机涉及到两类算法问题: (1) 数值性计算问题 (2) 非数值性计算问题 对算法的学习包括五个方面的内容: 设计算法、表示算法、确认算法、分析算法、验证算法,8.1.2 算法的特性 1有穷性 2确定性 3有效性 4有零或多个输入 5有一个或多个输出,8.1.3 简单算法举例解方程 【范例8-1】 计算下面的分段
2、函数。 算法描述: 输入x的值; 判断x是否大于0,若大于0,则y为2x+1,然后转第5步;否则进行第3步; 判断x是否等于0,若等于0,则y为0,然后转第5步;否则进行第4步; y为3x+1(因为2、3步条件不成立,则肯定第4步条件成立); 输出y的值后结束。,8.2 流程图的基础,8.2.1 流程图中的元素及含义 8.2.2 流程图的绘制,8.2.1 流程图中的元素及含义 流程图主要用两种:传统流程图和N-S流程图。 1传统流程图 2、N-S流程图,8.2.2 流程图的绘制 1使用word自带的流程图绘图工具 2、使用Visio绘制工具,8.3 如何表示一个算法,8.3.1 用自然语言表示
3、算法 8.3.2 用流程图表示算法 8.3.3 用传统流程图表示三种基本结构 8.3.4 用N-S图表示算法 8.3.5 用伪代码表示算法 8.3.6 用计算机语言表示算法,8.3.1 用自然语言表示算法 自然语言是最简单的描述算法的工具。 【范例8-2】 用自然语言描述s=1+2+ 100 的算法。 算法描述: S1:把0放入S单元; S2:把1放入i单元; S3:将S+i赋给S; S4;i值加1; S5:判断i是否小于等于100? 是,转S3;否则转S6; S6:输出S的值,结束。,8.3.1 用自然语言表示算法 【范例8-3】判定2010-2050年中的哪一年是闰年,将结果输出。(闰年的
4、条件是:能被4整除,但不能被100整除;或者能被400整除的年份)。 算法描述: S1:将2010放入y单元; S2:若y不能被4整除,则转到S5; S3:若y能被4整除,不能被100整除,则输出y,然后转到S5; S4:若y能被400整除,则输出y,然后转到S5; S5:将y +1赋给y; S6:当y2500,结束。,8.3.2 用流程图表示算法 流程图相对于自然语言来说更直观形象,易于理解简洁直观。 一个流程图包括以下几部分: 表示相应操作的框; 带箭头的流程线; 框内外必要的文字说明,8.3.2 用流程图表示算法 一个流程图包括以下几部分: 表示相应操作的框; 带箭头的流程线; 框内外必
5、要的文字说明。 【范例8-4】 求区间100, 200内10个随机整数中的最大数、最小数。,8.3.3 用传统流程图表示三种基本结构 1、顺序结构 2、选择结构,8.3.3 用传统流程图表示三种基本结构 3、循环结构,8.3.4 用N-S图表示算法 1、顺序结构 2、选择结构,8.3.4 用N-S图表示算法 3、循环结构,8.3.4 用N-S图表示算法 【范例8-5】 求两个数的最大公约数。,求最大公约数通常用“辗转相除法”, 方法如下: (1)比较两数,并使m大于n。 (2)将m作被除数,n作除数,相除后余数为r。 (3)将mn,nr; (4)若r=0,则m为最大公约数,结束循环。若r0,执
6、行步骤步骤(2)和(3)。,8.3.5 用伪代码表示算法 伪代码是介于自然语言与计算机语言之间的一种算法描述工具。 【范例8-6】 用伪代码描述s=1+2+100的算法。 01 s置初值为0; 02 i置初值为0; 03 while(i100) 04 05 s=s+i 06 i=i+1 07 08 输出s的值;,8.3.6 用计算机语言表示算法 计算机语言通常分为三类:即机器语言,汇编语言和高级语言。,8.4 结构化程序设计方法,结构化程序设计的思想:自顶向下、逐步求精; 即首先把一个复杂的大问题分解为若干相对独立的小问题。如果小问题仍较复杂,则可以把这些小问题又继续分解成若干子问题,这样不断地分解,使得小问题或子问题简单到能够直接用程序的三种基本结构表达为止。,8.5 综合应用求一元二次方程的根,【范例8-7】求一元二次方程:ax2+bx+c=0的根。,8.5 综合应用求一元二次方程的根,【范例8-7】求一元二次方程:ax2+bx+c=0的根。,8.7 跟我上机,1. 求1!+3!+5!+N!的值。N由键盘输入,且为奇数。,8.7 跟我上机,2. 将1到100之间能用3或5整除的数打印出来。,