程序的简单算法设计.ppt
第三章 程序的简单算法设计,第三章 程序的简单算法设计,3.1 结构化程序的算法设计3.2 结构化算法的性质及结构3.3 结构化算法的描述方法3.4 算法设计范例,第三章 程序的简单算法设计,3.1 结构化程序的算法设计3.2 结构化算法的性质及结构3.3 结构化算法的描述方法3.4 算法设计范例,问题1 你理解的算法是什么?平时你有没有使用过算法?,算法:解决问题的方法和要遵循的步骤。算法描述了程序要执行的操作及操作的步骤顺序。程序的功能是通过算法来描述的。,C语言程序是一种结构化的程序。结构化程序:问题可以分解成相互独立的几个部分。每个独立部分可以通过简单的语句或结构来实现。分问题解的过程就是算法设计的过程。重点:掌握分析问题、解决问题的方法。,例1 要求从键盘输入3个数,找出其中最小的那个数,将其输出到屏幕。请给出解决这个问题的算法。,分析:程序对于从键盘输入的3个数必须用3个变量来保存,分别为a,b,c代表输入的3个数,另外,还需要一个变量min来保存最小的那个数。1.先比较a和b的值,把数值小的放入min中;2.再将min与c比较,又把数值小的放入min中。3.经过两次比较,min中已存放的是a,b,c 3个数中最小的数。把min的值输出就是所需结果。,算法步骤:1输入3个数,其值分别赋给3个变量a,b,c;2把a与b中较小的那个数放入变量min中;3把c与min中较小的那个数放入变量min中;4输出最后结果min的值。改进上面的算法描述,将第2步和第3步的算法具体化。1输入三个数,其值分别赋给三个变量a,b,c;2比较a与b的值,如果ab,则min=a;否则min=b;3比较c与min的值,如果cmin,则min=c;4输出最后结果min的值。通过算法描述的步骤,可以很方便地用程序语言来实现。,第三章 程序的简单算法设计,3.1 结构化程序的算法设计3.2 结构化算法的性质及结构3.3 结构化算法的描述方法3.4 算法设计范例,一、结构化算法性质,1.算法名称给算法命名,是为了方便算法的描述,在C语言中,算法的名字通常就是函数名。2输入算法应有输入的数据或初始条件。3输出算法通常会有一个或多个输出,是对输入数据加工后的结果。4有效性算法的每一步都是可执行的,可通过人工计算的。5正确性算法的结果必须是正确的,可验证的。6有限性任何算法必须在执行有限条指令后结束。,二、结构化算法的结构,在C语言算法的主要结构有如下3种。1顺序结构顺序结构的特点:程序在执行过程中是按语句的先后顺序来执行的,每一条语句都代表着一个功能,2分支结构分支结构的特点:程序在执行过程中,会根据条件的不同有选择的执行不同的功能。3循环结构循环结构的特点:程序在执行过程中,在一定的时间段内或一定的条件下,重复地执行某个功能,直到时间已到或条件不再满足。,第三章 程序的简单算法设计,3.1 结构化程序的算法设计3.2 结构化算法的性质及结构3.3 结构化算法的描述方法3.4 算法设计范例,流程图流程图是一种算法的形象表示。流程图是由流程线和几何图形框连接而成的。算法流程图的符号采用美国国家标准化协会(ANSI)规定的一些常用符号:,流程线,算法流程图的3种基本结构:顺序结构、分支结构、循环结构1.顺序结构顺序结构是一种简单的线性结构,根据流程线所示的方向,按顺序执行各矩形框的指令。基本流程图:,注:指令A、指令B、指令C可以是一条或多条指令。执行顺序:ABC,2.分支结构分支结构要对给定的条件进行判断,看是否满足给定的条件,根据条件结果的真假而分别执行不同的执行框。基本流程图有两种:,注:(1)虚线框表示可将分支结构看成一个矩形框。(2)指令A、指令B可以是一条或多条指令,也可以是分支结构。,3.循环结构分支结构是在条件为真的情况下,重复执行某个执行框中的内容。基本流程图有两种:,注:(1)虚线框表示可将循环结构看成一个矩形框。(2)指令A称为循环体,可以是一条或多条指令,也可以是其他分支或循环结构。(3)do_while结构可以转化成while结构。,循环结构的特点:在循环体指令A中必须要有对条件的值进行修改的语句,使得经过有限次循环后,循环一定能结束。while型循环中循环体可能一次都不执行,而do_while型循环则至少执行一次循环。do_while型循环可以转化成为while型循环结构,但while型循环不一定能转化为do_while型循环。,例2 要求从键盘输入3个数,找出其中最小的那个数,将其输出到屏幕。,例3:几何级数求和:sum=1+2+3+4+5+(n1)+n。请写出该问题的算法和流程图。,算法描述:第1步:给定一个大于0的正整数n的值;第2步:定义一个整型变量i,设其初始值1;第3步:定义整型变量sum,其初始值设置为0;第4步:如果i小于等于n,则转第5步,否则执行第8步;第5步:将sum的值加上i的值后,重新赋值给sum;第6步:将i的值加1,重新赋值给i;第7步:执行第4步;第8步:输出sum 的值;第9步:算法结束。,伪代码部分在这里不做讲述,请大家下去自学。,第三章 程序的简单算法设计,3.1 结构化程序的算法设计3.2 结构化算法的性质及结构3.3 结构化算法的描述方法3.4 算法设计范例,例4 对一个大于或等于3的正整数,判断它是不是一个素数。,分析:素数是指除了1和它本身之外,不能被其他任何整数整除的数。判断n是否是素数的方法:n作为被除数,将2到(n-1)各个整数先后作为除数,如果都不能被整除,则n为素数。注:实际上不必用2到(n-1)的整数除,只要2到n/2,甚至2到 都可以,这样可以减少运算次数,提高运算效率。,算法步骤:1、输入n的值;2、2i(i作为除数);3、n除以i,的余数r;4、如果r=0,表示n能被i整除,则输出n不是素数,算法结束,否则执行第五步;5、i+;6、如果i,返回第三步,否则输出n是素数。,开 始,输入n,2i,n/i的余数r,r=0?,i+,i,输出n不是素数,输出n是素数,结 束,Y,N,Y,N,