1、程序框图复习,算法概念:算法通常是指按照一定规则解决某一类问题的明确和有限的步骤。,算法具有的特点:程序性、明确性、有限性,程序框图又称流程图,是一种用规定的图形、指向线及文字说明来准确、直观地表示算法的图形.,1.程序框图的概念,2.常见的程序框图(ANSI,美国国家标准化协会),流程线,连接程序框,连结点,连接程序框图的两部分,一、程序框图,终端框 (起止框),输入、 输出框,处理框 (执行框),判断框,表示一个算法的 起始和结束,表示一个算法输 入和输出的信息,赋值、计算,判断某一条件是否成立,成立时在出口处标明“是”或“Y”,不成立时标明“否”或“N”.,二、顺序结构及框图表示,1.顺
2、序结构:按照步骤依次执行的一个算法,称为具有“顺序结构”的算法,或者称为算法的顺序结构.,步骤n,步骤n+1,2.顺序结构的流程图,顺序结构是最简单的算法结构,语句与语句之间,框与框之间是按从上到下的顺序进行的.它是由若干个处理步骤组成的,这是任何一个算法都离不开的基本结构.,3.画顺序结构程序框图时注意事项,左图中,步骤n和步骤n+1是依次执行的,只有在执行完步骤n指定的操作后,才能接着执行步骤n+1所指定的操作,(1)在程序框图中,开始框和结束框不可少; (2)在算法过程中,第一步输入语句是必不可少的; (3)顺序结构在程序框图中的体现就是用流程线将程序框自上而下地连接起来,按顺序执行算法
3、步骤,1.条件结构:条件结构是指在算法中通过对条件的判断,根据条件是否成立而选择不同流向的算法结构.它的一般形式是,三、条件结构及框图表示,开始,输入x,X3?,否,是,结束,y=5+1.2(x-3),输出y,y=5,卫生费:计费方法:3人和3人以下,每户收5元;超过3人的住户,每超过1人加收1.2元,设计一个算法,根据输入的人数,计算应收的卫生费,并画出程序框图.,开始,y=1,结束,输入x,X100?,否,是,X5000?,X100000?,y=x1%,y=50,是,是,否,否,观察所给程序框图,说出它所表示的函数.,1.循环结构的概念,循环结构是指在算法中从某处开始,按照一定的条件反复执
4、行某一处理步骤的结构.在科学计算中,有许多有规律的重复计算,如累加求和、累乘求积等问题要用到循环结构.,四、循环结构及框图表示,直到型循环结构,条件,循环体,Y,N,直到型循环执行了一次循环体之后,对控制循环条件进行判断,当条件不满足时执行循环体,满足则停止.,2.循环结构的算法流程图,当型循环结构,满足条件?,循环体,Y,N,当型循环结构在每次执行循环体前对控制循环条件进行判断,当条件满足时执行循环体,不满足则停止.,3.循环结构的设计步骤,(1)确定循环结构的循环变量和初始条件; (2)确定算法中需要反复执行的部分,即循环体; (3)确定循环的终止条件.,4.循环结构的三要素,循环变量,循
5、环体、循环的终止条件.,以下给出的是计算的 值的一个程序框图(如图所示),其中判断框内应填入的条件是,基本算法语句复习,(一)输入语句的一般格式是:,INPUT “提示内容”;变量,(二)输出语句的一般格式是:,PRINT “提示内容”;表达式,注:“提示内容”与变量之间必须用分号“;” 隔开。 各“提示内容”之间以及各变量之间必须用逗号“,”隔开。但最后的变量的后面不需要。,输出语句的用途: (1)输出常量,变量的值和系统信息。 (2)输出数值计算的结果。,(三)赋值语句它的一般格式是:,变量=表达式,赋值语句中的“=”叫做赋值号。 赋值语句的作用:先计算出赋值号右边表达式的值,然后把这个值
6、赋给赋值号左边的变量,使该变量的值等于表达式的值,注:赋值号左边只能是变量名字,而不能是表达式。如:2=X是错误的。 赋值号左右不能对换。如“A=B”“B=A”的含义运行结果是不同的。 不能利用赋值语句进行代数式的演算。(如化简、因式分解、解方程等) 赋值号“=”与数学中的等号意义不同。,(四)条件语句:算法中的条件结构是由条件语句来表达的,是处理条件分支逻辑结构的算法语句。它的一般格式是: (IF-THEN-ELSE格式),IF 条件 THEN语句1 ELSE语句2 END IF,在某些情况下,也可以只使用IF-THEN语句:(即IF-THEN格式),IF 条件 THEN语句 END IF,
7、条件语句的作用:在程序执行过程中,根据判断是否满足约定的条件而决定是否需要转换到何处去。需要计算机按条件进行分析、比较、判断,并按判断后的不同情况进行不同的处理。,注:SQR()和ABS()是两个函数,分别用来求某个数的平方根和绝对值。即 ,,(1)WHILE语句的一般格式是:,WHILE 条件循环体 WEND,五、循环语句 一般程序设计语言中也有当型(WHILE型)和直到型(UNTIL型)两种语句结构。即WHILE语句和UNTIL语句。,(2)UNTIL语句的一般格式是:,DO循环体 LOOP UNTIL 条件,编写程序 计算自然数 1+2+3+99+100 的和。,分析:这是一个累加问题。
8、可以用WHILE型语句,也可以用UNTIL型语句。 解决问题的方法不是惟一的,当然程序的设计也是有多种的,只是程序简单与复杂的问题。,i=1 sum=0 WHLIE i=100sum=sum+ii=i+1 WEND PRINT sum END,i=1 sum=0 DOsum=sum+ii=i+1 LOOP UNTIL i100 PRINT sum END,1.3算法案例,利用辗转相除法求两数4081与20723的最大公约数.,(53),20723=40815+318; 4081=31812+265; 318=2651+53; 265=535+0.,用更相减损术求98与63的最大公约数.,解:由
9、于63不是偶数,把98和63以大数减小数,并辗转相减,,即:986335;633528;35287;28721;21714;1477.,所以,98与63的最大公约数是7。,辗转相除法与更相减损术:,(1)都是求最大公约数的方法,计算上辗转相除法以除法为主,更相减损术以减法为主;计算次数上辗转相除法计算次数相对较少,特别当两个数字大小区别较大时计算次数的区别较明显。(2)从结果体现形式来看,辗转相除法体现结果是以相除余数为0则得到,而更相减损术则以减数与差相等而得到.,例:用秦九韶算法求多项式 f(x)=2x5-5x4-4x3+3x2-6x+7当x=5时的值.,解法一:首先将原多项式改写成如下形
10、式 : f(x)=(2x-5)x-4)x+3)x-6)x+7,v0=2 v1=v0x-5=25-5=5 v2=v1x-4=55-4=21 v3=v2x+3=215+3=108 v4=v3x-6=1085-6=534 v5=v4x+7=5345+7=2677,所以,当x=5时,多项式的值是2677.,然后由内向外逐层计算一次多项式的值,即,anan-1a1a0(k) (0ank,0an-1,a1,a0k),意思是:(1)第一个数字an不能等于0; (2)每一个数字an,an-1,a1,a0都须小于k.,k进制的数也可以表示成不同位上数字与基数k的幂的乘积之和的形式,即,anan-1a1a0(k)=ankn+an-1kn-1+a1k1+a0k0 .,注意这是一个n+1位数.,k进制数转化为十进制数的方法,44 1,例:把89化为二进制的数.,我们可以用下面的除法算式表示除2取余法:,22 0,11 0,5 1,2 1,1 0,0 1,把算式中各步所得的余数从下到上排列,得到,89=1011001(2).,这种方法也可以推广为把十进制数化为k进制数的算法,称为除k取余法.,(1)把二进制数110011(2)化为十进制数. (2)把189化为二进制的数. (3)把189化为五进制的数.,