1、3231xyxy解下列二元一次方程组111222?a xb yca xb yc一般二元一次方程组的解法步骤算法的概念算法的概念 算法通常指可以用来解决的某一类问题算法通常指可以用来解决的某一类问题的步骤或程序,这些步骤或程序必须是的步骤或程序,这些步骤或程序必须是明确的和有效的,而且能够在有限步之明确的和有效的,而且能够在有限步之内完成的。内完成的。一般来说,“用算法解决问题”可以利用计算机帮助完成。一位商人有一位商人有9枚银元,其中有枚银元,其中有1枚略轻的是假枚略轻的是假银元。你能用天平(不用砝码)将假银元找银元。你能用天平(不用砝码)将假银元找出来吗?出来吗?用二分法求方程用二分法求方程
2、 的的近似正根,精确度近似正根,精确度0.05。220 x 例例用二分法设计一个求方程用二分法设计一个求方程 的近似正根的算法,精确度的近似正根的算法,精确度0.05。220 x 2122.(1)0,(2)0 1,2xffxx第一步:令f x因设1212().2 ()0()0,xxxxf mf mm第二步:令m因方程的根在区间(,)内判断是否为。若则 为所求;若否,则进行第三步。1112()()0,;()()0,.f xf mxmf xf mxm第三步:若则令 若则令 12120.05 xxxx第四步:判断是否成立?若是,则,之间的任意取值均为满足条件的近似根;若否,则返回第二步。解解练习练习
3、任意给定一个正实数任意给定一个正实数a,试设计一个算法求,试设计一个算法求以以a为直径的圆的面积。为直径的圆的面积。第一步:输入第一步:输入a的值的值.第二步:第二步:_.第三步:第三步:_.第四步:输出圆的面积的值第四步:输出圆的面积的值.解解例例任意给定一个大于任意给定一个大于1的整数的整数n,试设计,试设计一个程序或步骤对一个程序或步骤对n是否为质数作出判断。是否为质数作出判断。第一步:判断第一步:判断n是否等于是否等于2。若。若n2,则,则n是质数;是质数;若若n2,则执行第二步;,则执行第二步;第二步:依次从第二步:依次从2到(到(n-1)检验是不是)检验是不是n的因数,的因数,即是
4、否能整除即是否能整除n的数。若有这样的数,则的数。若有这样的数,则n不是不是 质数;否则,质数;否则,n是质数。是质数。解:解:练习练习任意给定任意给定3个正实数,试设计一个算法,判断个正实数,试设计一个算法,判断分别以这三个数为三边边长的三角形是否存在。分别以这三个数为三边边长的三角形是否存在。第一步第一步:输入三个正实数输入三个正实数a,b,c.解解算法的特征是什么?算法的特征是什么?小结:小结:n明确性明确性n有效性有效性n有限性有限性算法的概念:算法的概念:算法通常指可以用来解决的某算法通常指可以用来解决的某一类问题的步骤或程序,这些步骤或程序必须是明一类问题的步骤或程序,这些步骤或程
5、序必须是明确的和有效的,而且能够在有限步之内完成的。确的和有效的,而且能够在有限步之内完成的。作业:作业:1、写出你在家里烧开水过程的一个算法。、写出你在家里烧开水过程的一个算法。2、已知平面直角坐标系的两点、已知平面直角坐标系的两点A(1,0),B(3,2),写出求直线,写出求直线AB的方程的一个算法。的方程的一个算法。1.1.2 1.1.2 程序框图程序框图算法初步复习1、算法的概念2、算法的特点3、常见的几个例子4、判断一个正整数是否是质数的算法算法的概念算法是指解决给定问题的有穷操作步骤的描述,简单的说,算法就是解决问题的步骤和方法。算法的基本特点1、有穷性一个算法应包括有限的操作步骤
6、,能在执行有穷的操作步骤之后结束。2、确定性算法的计算规则及相应的计算步骤必须是唯一确定的,既不能含糊其词,也不能有二义性。3、可行性算法中的每一个步骤都是可以在有限的时间内完成的基本操作,并能得到确定的结果。判断一个正整数是否是质数的算法自然语言描述图形描述第一步:判断第一步:判断n是否是否等于等于2?若?若n=2,则,则n是质数,否则,执行是质数,否则,执行第二步;第二步;第二步:依次从第二步:依次从2(n-1)检验是不是)检验是不是n的因数,即能整除的因数,即能整除n的数,若有这样的的数,若有这样的数,则数,则n不是质数;不是质数;若没有,则若没有,则n是质数。是质数。开始开始输入输入n
7、n=2?d=2flag=0d=d+1d整除整除n?d=n-1且且flag=1?flag=1?n是质数是质数n不是质数不是质数结束结束是否否是否是否是判断一个正整数是否是质数的算法图形描述开始开始输入输入nn=2?d=2flag=0d=d+1d整除整除n?d=n-1且且flag=1?flag=1?n是质数是质数n不是质数不是质数结束结束是否否是否是否思考:思考:1、flag的作用是的作用是什么?什么?2、d=d+1是什么是什么意思?意思?3、整个图形中有哪、整个图形中有哪些基本的图形,各些基本的图形,各自的意义和作用是自的意义和作用是什么?什么?是程序框图又称流程图,是一种用规定的图形,指向线及
8、程序框图又称流程图,是一种用规定的图形,指向线及文字说明来准确、直观地表示算法的图形。文字说明来准确、直观地表示算法的图形。程序框名称功能终端框(起止框)表示一个算法的起始和结束输入、输出框表示算法的输入和输出的信息处理框(执行框)赋值、计算判断框判断一个条件是否成立,用“是”、“否”或“Y”、“N”标明例1 设计一算法:输入圆的半径,输出圆的面积,并画出流程图算法分析:第一步:输入圆的半径输入圆的半径第二步:利用公式利用公式“圆的面圆的面积积=圆周率圆周率(半径的平方)(半径的平方)”计算圆的面积;计算圆的面积;第三步:输出圆的面积。输出圆的面积。开始结束输入半径R计算S=Pi*R*R输出面
9、积S定义Pi=3.14思考:整个程序框图有什么特点?例2 已知一个三角形的三边长确分别为2,3,4,利用海伧-秦九 韶公式设计一个算法,求出它的p=(2+3+4)/2s=SQR(p*(p2)*(p 3)*(p-4)输出s结束开始面积,画出算法的程序框图.例3 设计房租收费的算法,其要求是:住房面积80平方米以内,每平方米收费3元,住房面积超过80平方米时,超过部分,每平方米收费5元.输入住房面积数,输出应付的房租.算法分析:第一步:输入住房面积输入住房面积S第二步:根据面积选择计费根据面积选择计费方式:如果方式:如果S小于或等于小于或等于80,则租金为则租金为M=s3,否则为,否则为M=240
10、+(S-80)5第三步:输出房租输出房租M的值的值。开始结束输入面积S输出租金MS=80M=3*SM=240+5*(S-8)否是思考:整个程序框图有什么特点?例4 任意给定3个正实数,设计一个算法,判断分别以这3个数为三边边长的三角形是否存在.画出这个算法的程序框图.开始输入a,b,ca+bc,a+c b,b+c a是否同时成立?存在这样的三角形不存在这样的三角形结束否否是是例5 设计一个计算12的值的算法,并画出程序框图开始i=1sum=0i=i+1sum=sum+1i100?输出sum结束否是练习巩固看下面的程序框图,分析算法的作用(1)开始结束输入xy=3*x*x+4*x+5输出y(2)
11、开始结束输入a,ba=60?credit=2credit=0否是S=(a+b)*0.5输出credit课堂作业开始输入aa 0输出|a|=a输出|a|=-a结束NY练习开始X1=1X2=2m=(x1+x2)/2x2=mx1=mm*m 30|x1 x2|0.005(x1*x1 3)*(m*m 3)0输出所求的近似值m结束m=(x1+x2)/2NyyN练习开始输入nflag=1d=2flag=0d=d+1n2d整除n?d=n1且flag=1?flag=1?n是质数n不是质数结束是否否是否是否是顺序结构输入nflag=1条件结构flag=1?n是质数n不是质数结束是是否否循环结构flag=0d=d+
12、1d整除n?d=n1且flag=1?否是否是小结:1、程序框图的概念2、程序框图图例的名称和意义(作用)3、如何用程序框图表示顺序结构、选择结构与循环结构的算法1.1.2 1.1.2 程序框图程序框图算法初步知识回忆1、程序框图的概念2、程序框图的图示和意义3、顺序结构和条件结构的特点程序框图又称流程图,是一种用规定的图形,指向线及程序框图又称流程图,是一种用规定的图形,指向线及文字说明来准确、直观地表示算法的图形。文字说明来准确、直观地表示算法的图形。程序框名称功能终端框(起止框)表示一个算法的起始和结束输入、输出框表示算法的输入和输出的信息处理框(执行框)赋值、计算判断框判断一个条件是否成
13、立,用“是”、“否”或“Y”、“N”标明例1 设计一算法,求和:1+2+3+100第一步:确定首数确定首数a a,尾,尾数数b b,项数,项数n n;第二步:利用公式利用公式“总总和和=(=(首数首数+尾数)尾数)项数项数/2/2”求和;求和;第三步:输出求和结果。输出求和结果。算法1:开始结束输入a,b,nSum=(a+b)*n/2输出Sum例1 设计一算法,求和:1+2+3+100算法2:第一步:从从1开始将自然开始将自然数数1、2、3、100逐逐个相加个相加;第二步:输出累加结果。输出累加结果。思考:1、上边的式子有怎样的规律呢?Sum=0Sum=Sum+1Sum=Sum+2Sum=Su
14、m+3Sum=Sum+1002、怎么用程序框图表示呢?i=i+1Sum=Sum+i4、如何使程序结束?3、i有什么作用?Sum呢?Sum=Sum+i程序框图 如图开始i=1sum=0i=i+1sum=sum+1i100?输出sum结束否是例2 用二分法求解方程求关于x的方程x220的根,精确到0.005算法描述第一步 令f(x)=x2-2,以为f(1)0,所以设x1=1,x2=2第二步 令m=(x1+x2)/2,判断f(m)是否为0,若是,则m为所求,否则,则继续判断f(x1)f(m)大于0还是小于0。第三步 若f(x1)f(m)0则令x1=m,否则x2=m。第四步 判断|x1-x2|=100
15、?否是思考:该流程图与前面的例3中求和的流程图有何不同?小结1、循环结构的特点2、循环结构的框图表示3、循环结构有注意的问题避免死循环的出现,设置好进入(结束)循环体的条件。当型和直到型重复同一个处理过程1.1.2 1.1.2 程序框图程序框图算法初步习题课习题课城区一中学生数学模块学分认定由模块成绩决定,模块成绩由模块考试成绩和平时成绩构成,各占50%,若模块成绩大于或等于60分,获得2学分,否则不能获得学分(为0分),设计一算法,通过考试成绩和平时成绩计算学分,并画出程序框图开始结束输入a,bS=60?credit=2credit=0否是S=(a+b)*0.5输出creditns13121
16、1 、对任意正整数n,的值,并画出程序框图.开始输入一个正整数n输入S的值结束S=0i=1S=S+1/ii=i+1inYN设计一个算法求步骤A步骤B 思考:将步骤A和步骤B交换位置,结果会怎样?能达到预期结果吗?为什么?要达到预期结果,还需要做怎样的修改?例3 设计一算法,求和:1+2+3+100结束i=i+1Sum=Sum+ii=100?否是能否说说这个流程图的异同点?i=i+1Sum=Sum+i解决方法就是加上一个判断,判断是否已经加到了100,如果加到了则退出,否则继续加。直到型结构当型结构i=i+1Sum=Sum+i是否i=i+1Sum=Sum+i否是i=100?请填上判断的条件。开始
17、输入aa 0输出|a|=a输出|a|=-a结束NY练习开始X1=1X2=2m=(x1+x2)/2x2=mx1=mm*m 30|x1 x2|0.005(x1*x1 3)*(m*m 3)0输出所求的近似值m结束m=(x1+x2)/2NyyN练习下面是关于城市居民生活用水收费的问题 为了加强居民的节水意识,某市制定了以下生活用水收费标准:每户每月用水未超过时,每立方米收费 1.0 元,并加收0.2元的城市污水处理费,超过的部分,每立方米收费1.5元,并加收0.4元的城市污水处理费.开始输入xx7y=1.2xy=1.9x4.9输入y结束yNP.11习题习题A组第组第1题题程序框图程序框图开始S=0I=
18、I+1I=1S=S+I*II100输出S 结束NYP.11习题习题1.1A组第组第2题题输入x开始x3y=1.2x+1.4y=5输入y结束NYP.11习题习题A组第组第3题题程序框图程序框图开始输入50米跑成绩:xx 6.8输出提示“若要继续请按键”Y“,否则请按其他键输入到变量mm=“y”or m=“Y”结束输出xNYYNP.11习题习题1.1B组第组第1题题程序框图程序框图开始输出提出:“输入第一个方程的系数”“x的系数是”:a1“y的系数是”:b1“常数项是”:c1输出“x=”;x“y=”;y方程有无数多组解a1*b2a2*b10 x=(c2*b1 c1*b2)/(a1*b2 a2*b1
19、)y=(c2*b1 c1*b2)/(a1*b2 a2*b1)结束输出提出:“输入第二个方程的系数”“x的系数是”:a2“y的系数是”:b2“常数项是”:c2NYc1=c2方程无解P.11习题习题1.1B组第组第2题题 作业:课外整理所有讲过的例题及习题 建构程序框图的系统性1.2.2算法基本语句算法初步复习巩固1、输入语句、输出语句和赋值语句对应于算法中的哪种结构?这三种语句的一般格式是什么?2、什么是条件结构?用程序框图表示这种结构 顺序结构输入语句输出语句赋值语句INPUT“提示文字”;变量PRINT“提示内容”;表达式变量表达式满足条件?语句1语句2是否新课讲解阅读P16,思考以下问题1
20、、条件结构用怎样的程序语句来描述?这种语句的一般格式是怎样的?2、把下列语句的意义翻译成程序框图(1)IF x0 THEN y=1 ELSE y=0 END IF(2)IF x0 THEN x=ABS(x)END IF PRINT“x的绝对值为:”;xIF 条件条件 THEN 语句语句1ELSE 语句语句2END IFIF 条件条件 THEN 语句语句END IF或例5 编写程序,输入一元二次方程算法描述:S1:输入a,b,cS2:计算判别式S3:如果0有两不同实根,=0有两个相同实根,=0 THENx1=p+qx2=p-qIF x1=x2 THENPRINT“只有一个实根:只有一个实根:”;
21、x1=x1ELSEPRINT“有两个实根:有两个实根:”;“x1=”;x1,”x2=”;x2END IFELSEPRINT“没有实根没有实根”END IFEND例例6 6 编写程序编写程序,使得任意输入使得任意输入3 3个整数按大到小的顺序输出。个整数按大到小的顺序输出。算法分析:算法分析:算法思想:算法思想:3 3个数两两比较,确定大小。按个数两两比较,确定大小。按a a、b b、c c输入,要按输入,要按a a、b b、c c输出,关键要找到最大值,将它赋值给输出,关键要找到最大值,将它赋值给a a,中值赋给,中值赋给b b,最小值赋给,最小值赋给c c。第一步第一步 输入输入3 3个整数
22、个整数a a、b b、c c第二步第二步 将将a a与与b b比较,并把小者赋给比较,并把小者赋给b b,大的赋给,大的赋给a a;第三步第三步 将将a a与与c c比较,并把小者赋给比较,并把小者赋给c c,大的赋给,大的赋给a a第四步第四步 将将b b与与c c比较,并把小者赋给比较,并把小者赋给c c,大的赋给,大的赋给b b第五步第五步 按顺序输出按顺序输出a a,b b,c cINPUT“a,b,c=”;a,b,cIF b a THEN t=a a=b b=tEND IFIF c a THEN t=a a=c c=tEND IFIF c b THEN t=b b=c c=tEND
23、IFPRINT a,b,cEND相应的QBASIC程序:开始t=a,a=b,b=tt=a,a=c,c=tt=b,b=c,c=t输入a,b,c输入a,b,cba?ca?cb?结束是是是是否否否否是是否否对应的流程图练习巩固开始开始输入输入a a,b b,c ca+ba+bc c,a+c a+c b b,b+c b+c a a是否同时成立?是否同时成立?存在这样的存在这样的三角形三角形不存在这样不存在这样的三角形的三角形结束结束否否是是(1)该程序框图所表示的算法是作用是什么?并根据程序框图写出相应的程序。2、某快递公司规定甲、乙两地之间物品的托运费用根据下面的方法计算:、某快递公司规定甲、乙两地
24、之间物品的托运费用根据下面的方法计算:物品重量在物品重量在50千克以内,托运费为每千克千克以内,托运费为每千克 0.53 元,超过的话,超过部分每元,超过的话,超过部分每千克千克0.85元,试画出计算费用元,试画出计算费用f的程序框图,并写出相应的的程序框图,并写出相应的QBASIC程序。程序。程序框图:开始结束输入重量G输出运费MG=50M=0.53*GM=50*0.53+0.85*(G-50)否是对应的QBASIC程序INPUT“输入重量G=”;GIF Gb&ac)printf(if(ab&ac)printf(“%d%d”,a),a)或是或是if(aif(a=b)b)printf(prin
25、tf(“a a等于等于b b”)2 2、但也可以是其它表达式,如、但也可以是其它表达式,如赋值表达式赋值表达式等,甚至也可以是一等,甚至也可以是一个个变量变量。例如:。例如:if(a=5)if(a=5)语句;语句;if(b)if(b)语句;语句;3 3、语句若有语句若有多条语句多条语句,则用,则用 括起来,且语句后必须括起来,且语句后必须有有“;”,而而 后没有后没有“;”例如:例如:if(ab)a+;b+;if(ab)a+;b+;printf(printf(“%d,%d%d,%d”,a,b);,a,b);简单的简单的IF语句格式语句格式IF(表达式)语句 假 真 表达式语句语句max=a;i
26、f(max60 printf(“及格”);If(小白找小黑玩)printf(“走小路”);If(今天是工作日)printf(“上班”);再如:从键盘上输入两个数,求出它们俩商的相反数。这类的例子很多这类的例子很多 格式格式IF-ELSE语句语句 流程图 例题 if(表达式表达式)语句语句1;else 语句语句2;其语义是:如果表达式的值为真,则执行语句其语义是:如果表达式的值为真,则执行语句1,否,否则执行语句则执行语句2。例如:例如:if(x0)printf(“x大于大于0”);else printf(“x小于等于小于等于0);或是或是if(小黑在家小黑在家)printf(“找小黑玩找小黑玩
27、”);else printf(“找小花玩找小花玩”);IF-ELSE语句格式语句格式 如果小白找小黑玩,小黑在家吗?若在,找小黑玩,不在,就找小花玩。能用C语言来实现吗?可以,用if-else 语句就能完成。真 假小黑在家吗小黑在家吗找小黑玩找小花玩 假 真 表达式语句语句1语句语句2 If(ab)printf(max=%dn,a);else printf(max=%dn,b);输入两个整数,输出其中的大数。改用if-else语句判别a,b的大小,若a大,则输出a,否则输出b。例2:求两个数中较大的一个。格式格式if-else-if语句语句 流程图 例题 if(表达式表达式1)语句语句1;el
28、se if(表达式表达式2)语句语句2;else if(表达式表达式3)语句语句3;else if(表达式表达式m)语句语句m;else语句语句n;其语义是:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。如果所有的表达式均为假,则执行语句n。然后继续执行后续程序。if-else-if语句格式语句格式 真 假 假 假 真 真 真 假流程图流程图表达式1表达式2表达式3表达式m语句1语句2语句3语句m语句n 对优、良、及格和不及格,我们分别用5、4、3、2四个等级来表示,划分如下:分数 等级 100-90 5 89-75 4 74-60 3 59
29、-0 2main()int sorce,snum;char grade;scanf(“%d,%d”,&snum,&score);if(score89)grade=5;else if(score74)grade=4;else if(score59)grade=3;else grade=2;printf(“%d:%cn”,snum,grade);例4.P1语句语句5P2P3P4P5语语句句1语句语句2语句语句4语句语句3YYYYYNNNN商场促销商场促销,购物购物500元以上元以上,8折折购物购物300元以上元以上,85折折购物购物100元以上元以上,9折折购物购物50 元以上元以上,95折折购物
30、购物50元以下元以下,不打折不打折设设:消费量为消费量为 money 折扣为折扣为 cost 实际花费实际花费 price例:根据消费量,计算优惠率。if(money500)cost=0.2;else if(money300)cost=0.15;else if(money100)cost=0.1;else if(money50)cost=0.05;else cost=0;price=money-(money*cost);(1)(1)在三种形式的在三种形式的ifif语句中,在语句中,在ifif关键字之后均为表达式。关键字之后均为表达式。该该表达式通常是逻辑表达式或关系表达式,表达式通常是逻辑表达
31、式或关系表达式,但也可以是其它表达但也可以是其它表达式,如赋值表达式等,甚至也可以是一个变量。例如:式,如赋值表达式等,甚至也可以是一个变量。例如:if(a=5)if(a=5)语句;语句;if(b)if(b)语句;语句;都是允许的。都是允许的。三、小结小结只要表达式的值为非0,即为“真”。如在if(a=5);中表达式的值永远为非0,所以其后的语句总是要执行的,当然这种情况在程序中不一定会出现,但在语法上是合法的。又如,有程序段:if(a=b)printf(%d,a);else printf(a=0);本语句的语义是,把b值赋予a,如为非0则输出该值,否则输出“a=0”字符串。这种用法在程序中是
32、经常出现的F(2)(2)在if语句中,条件判断表达式必须用括号括起来,在语句之后必须加分号。If(b)printf(“b不是0”);(3)在if语句的三种形式中,所有的语句应为单个语句,如果要想在满足条件时执行一组 (多个)语句,则必须把这一组语句 用 括起来组成一个复合语句。但要注意的是在之后不能再加分号。例如:if(ab)a+;b+;else a=0;b=10;1.2.3 算法基本语句算法初步温故而知新1、顺序结构常用的程序语言和格式2、条件结构常用的程序语言和格式输入语句输入语句 INPUT“提示文字提示文字”;变量列表;变量列表输出语句输出语句 PRINT“提示文字提示文字”;变量列表
33、;变量列表赋值语句赋值语句 变量变量=表达式表达式(1)IF 条件成立条件成立 THEN 语句语句1ELSE 语句语句2END IF(2)IF 条件成立条件成立 THEN 语句语句END IF例5 编写程序,输入一元二次方程算法描述:S1:输入a,b,cS2:计算判别式S3:如果0有两不同实根,=0有两个相同实根,=0 THENx1=p+qx2=p-qIF x1=x2 THENPRINT“只有一个实根:只有一个实根:”;x1=x1ELSEPRINT“有两个实根:有两个实根:”;“x1=”;x1,”x2=”;x2END IFELSEPRINT“没有实根没有实根”END IFEND例例6 6 编写
34、程序编写程序,使得任意输入使得任意输入3 3个整数按大到小的顺序输出。个整数按大到小的顺序输出。算法分析:算法分析:算法思想:算法思想:3 3个数两两比较,确定大小。按个数两两比较,确定大小。按a a、b b、c c输入,要按输入,要按a a、b b、c c输出,关键要找到最大值,将它赋值给输出,关键要找到最大值,将它赋值给a a,中值赋给,中值赋给b b,最小值赋给,最小值赋给c c。第一步第一步 输入输入3 3个整数个整数a a、b b、c c第二步第二步 将将a a与与b b比较,并把小者赋给比较,并把小者赋给b b,大的赋给,大的赋给a a;第三步第三步 将将a a与与c c比较,并把
35、小者赋给比较,并把小者赋给c c,大的赋给,大的赋给a a第四步第四步 将将b b与与c c比较,并把小者赋给比较,并把小者赋给c c,大的赋给,大的赋给b b第五步第五步 按顺序输出按顺序输出a a,b b,c cINPUT“a,b,c=”;a,b,cIF b a THEN t=a a=b b=tEND IFIF c a THEN t=a a=c c=tEND IFIF c b THEN t=b b=c c=tEND IFPRINT a,b,cEND相应的QBASIC程序:开始t=a,a=b,b=tt=a,a=c,c=tt=b,b=c,c=t输入a,b,c输入a,b,cba?ca?cb?结束
36、是是是是否否否否是是否否对应的流程图练习巩固开始开始输入输入a a,b b,c ca+ba+bc c,a+c a+c b b,b+c b+c a a是否同时成立?是否同时成立?存在这样的存在这样的三角形三角形不存在这样不存在这样的三角形的三角形结束结束否否是是(1)该程序框图所表示的算法是作用是什么?并根据程序框图写出相应的程序。三中天地三中天地循环结构的定义:循环结构的定义:在一些算法中,从某处开始,按照一定条件,反复执行在一些算法中,从某处开始,按照一定条件,反复执行某一处理步骤的情况,这就是循环结构。某一处理步骤的情况,这就是循环结构。反复执行的处理步骤称为循环体。反复执行的处理步骤称为
37、循环体。两种循环结构有什么差别?两种循环结构有什么差别?AP成立成立不成立不成立While(当型)循环(当型)循环 成立成立AP不成立不成立Until(直到型)循环)循环 成立成立AP不成立不成立AP成立成立不成立不成立While(当型)循环)循环Until(直到型)循环)循环两种循环结构有什么差别?两种循环结构有什么差别?先执行循环体,然后再检查条先执行循环体,然后再检查条件是否成立,如果不成立就重件是否成立,如果不成立就重复执行循环体,直到条件成立复执行循环体,直到条件成立退出循环。退出循环。先判断指定的条件是否为真,先判断指定的条件是否为真,若条件为真,执行循环条件,若条件为真,执行循环
38、条件,条件为假时退出循环。条件为假时退出循环。先执行先执行 后判断后判断先判断先判断 后执行后执行循环结构循环结构AP成立成立不成立不成立While(当型)循环(当型)循环算法中的循环结构是由循环语句来实现的。算法中的循环结构是由循环语句来实现的。成立成立AP不成立不成立Until(直到型)循环)循环两种循环语句:两种循环语句:WHILE 条件条件 循环体循环体WEND(1)WHILE语句的一般格式:语句的一般格式:当计算机遇到当计算机遇到WHILE语句时,先判断条件的真假,如语句时,先判断条件的真假,如果条件符合,就执行果条件符合,就执行WHILE与与WEND之间的循环体;然之间的循环体;然
39、后再检查上述条件,如果条件仍符合,再次执行循环体,后再检查上述条件,如果条件仍符合,再次执行循环体,这个过程反复进行,直到某一次条件不符合为止这个过程反复进行,直到某一次条件不符合为止.这时,这时,计算机将不执行循环体,直接跳到计算机将不执行循环体,直接跳到WEND语句后,接着执语句后,接着执行行WEND之后的语句之后的语句.也叫也叫“前测试型前测试型”循环循环循环体循环体满足条件?满足条件?是是否否While(当型)循环(当型)循环练习、根据练习、根据1.1.2例例3中的程序框图,编写中的程序框图,编写 计算机程序来计算计算机程序来计算1+2+100的值的值i=100?i=1开始输出sum结
40、束否是sum=0i=i+1sum=sum+ii=1sum=0WHILE i100PRINT sumENDi=1开始开始结束结束sum=0输出输出sumi=i+1sum=sum+ii100?否否是是程序框图:程序框图:程序:程序:思考思考3 3:图图1.1-2,用按照算法执行的顺序,把程序,用按照算法执行的顺序,把程序框图中的内容转化为相应的程序语句。框图中的内容转化为相应的程序语句。开始输入nflag=1n2?d=2是d整除n?flag=0d2d=2输入nd2 THEN d=2 WHILE d=n-1 AND flag=1 IF n MOD d=0 THEN flag=0 ELSE d=d+1
41、 END IF WEND END IF IF flag=1 THEN PRINT n;是质数是质数.ELSE PRINT n;不是质数不是质数.END IF END思考题:判断质数的思考题:判断质数的算法是否还有所改进?算法是否还有所改进?练习练习 P231.根据你画出的用二分法求方程根据你画出的用二分法求方程x2-2=0的的 近似根的程序框图,写出相应的程序语句近似根的程序框图,写出相应的程序语句。2.编写程序,计算函数编写程序,计算函数f(x)=x2-3x+5当当x=1,2,3,,20时的函数值。时的函数值。3.编写一个程序,输入正整数编写一个程序,输入正整数n,计算它的,计算它的 阶乘阶
42、乘n!(n!=n*(n-1)*3*2*1)练习练习 P231.根据你画出的用二分根据你画出的用二分 法求方程法求方程x2-2=0的的 近似根的程序框图,近似根的程序框图,写出相应的程序语句写出相应的程序语句。开始x1=1,x2=2c=0.005输出x122xxx211()2f xx2()2f xxf(x1)f(x)0?否是x1=xx2=x|x1-x2|c?是否结束f(x)=0?否是练习练习 P23开始x1=1,x2=2c=0.005输出x122xxx211()2f xx2()2f xxf(x1)f(x)0?否是x1=xx2=x|x1-x2|c?是否结束f(x)=0?否是x1=1x2=2c=0.
43、005DO X=(X1+X2)/2 f(x1)=x12-2 f(x)=x2-2 IF f(x)=0 THEN PRINT 方程根为:方程根为:;x ELSE IF f(x1)*f(x)0 THEN x2=x ELSE x1=x END IF END IFLOOP UNTIL ABS(x1-x2)=cPRINT 方程的近似根为:方程的近似根为:;xEND练习练习 P232.编写程序,计算函数编写程序,计算函数f(x)=x2-3x+5当当x=1,2,3,,20时的函数值。时的函数值。x=1WHILE xnPRINT 这个数的阶乘为:这个数的阶乘为:;tEND练习巩固1 1、设计一个算法框图:逐个输
44、出、设计一个算法框图:逐个输出1 12 2,2 22 2,3 32 2,n n2 2,并,并写出相应的写出相应的QBASICQBASIC程序。程序。INPUT ni=0WHILE i =nEND结束i=0开始i=i+1:t=i2i=n?否是PRINT tINPUT n2、设计一个算法框图:求满足12 3 n10000的最小正整数n,并写出相应的QBASIC程序。结束输出ii=0,Sum=1开始i=i+1Sum=Sum*iSum10000?否是i=0sum=0DOi=i+1sum=sum+iLOOP UNTIL sum10000PRINT iEND小小 结结WHILE 条件条件 循环体循环体WE
45、NDDO 循环体循环体LOOP UNTIL 条件条件两种循环语句:两种循环语句:循环体循环体满足条件?满足条件?是是否否(1)While(当型)循环(当型)循环(2)Until(直到型)循环(直到型)循环循环体循环体满足条件?满足条件?是是否否算 法 案 例(第一课时)1、求两个正整数的最大公约数、求两个正整数的最大公约数(1)求)求25和和35的最大公约数的最大公约数(2)求)求49和和63的最大公约数的最大公约数2、求、求8251和和6105的最大公约数的最大公约数 25(1)5535749(2)77639所以,所以,25和和35的最大公约数为的最大公约数为5所以,所以,49和和63的最大
46、公约数为的最大公约数为7辗转相除法(欧几里得算法)辗转相除法(欧几里得算法)观察用辗转相除法求观察用辗转相除法求8251和和6105的最大公约数的过程的最大公约数的过程 第一步第一步 用两数中较大的数除以较小的数,求得商和余数用两数中较大的数除以较小的数,求得商和余数8251=61051+2146结论:结论:8251和和6105的公约数就是的公约数就是6105和和2146的公约数,求的公约数,求8251和和6105的最大公约数,只要求出的最大公约数,只要求出6105和和2146的公约数就可以了。的公约数就可以了。第二步第二步 对对6105和和2146重复第一步的做法重复第一步的做法6105=2
47、1462+1813同理同理6105和和2146的最大公约数也是的最大公约数也是2146和和1813的最大公约数。的最大公约数。完整的过程完整的过程8251=61051+2146 6105=21462+1813 2146=18131+3331813=3335+148333=1482+37148=374+0例例2 用辗转相除法求用辗转相除法求225和和135的最大公约数的最大公约数225=1351+90135=901+4590=452显然显然37是是148和和37的最大公约的最大公约数,也就是数,也就是8251和和6105的最的最大公约数大公约数 显然显然45是是90和和45的最大公约数,也就是的
48、最大公约数,也就是225和和135的最大公约数的最大公约数 思考思考1:从上面的两个例子可以看出计:从上面的两个例子可以看出计算的规律是什么?算的规律是什么?S1:用大数除以小数:用大数除以小数S2:除数变成被除数,余数变成除数:除数变成被除数,余数变成除数S3:重复:重复S1,直到余数为,直到余数为0 辗转相除法是一个反复执行直到余数等于辗转相除法是一个反复执行直到余数等于0停止的步骤,这实际上是停止的步骤,这实际上是一个循环结构。一个循环结构。8251=61051+2146 6105=21462+1813 2146=18131+3331813=3335+148333=1482+37148=
49、374+0m=n q r用程序框图表示出右边的过程用程序框图表示出右边的过程r=m MOD nm=nn=rr=0?是否九章算术九章算术更相减损术更相减损术 算理:算理:可半者半之,不可半者,副置分母、子之数,以少减多,更相减可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也,以等数约之。损,求其等也,以等数约之。第一步:第一步:任意给顶两个正整数;判断他们是否都是偶数。若是,则用任意给顶两个正整数;判断他们是否都是偶数。若是,则用2约简;若不是则执行第二步。约简;若不是则执行第二步。第二步:第二步:以较大的数减较小的数,接着把所得的差与较小的数比较,并以较大的数减较小的数,接
50、着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止,则这个以大数减小数。继续这个操作,直到所得的减数和差相等为止,则这个等数就是所求的最大公约数。等数就是所求的最大公约数。例例3 用更相减损术求用更相减损术求98与与63的最大公约数的最大公约数解:由于解:由于63不是偶数,把不是偶数,把98和和63以大数减小数,并辗转相减以大数减小数,并辗转相减 9863356335283528728721217141477所以,所以,98和和63的最大公约数等于的最大公约数等于7 练习:课本P36练习第1题算法案例(第二课时)计算多项式计算多项式()=当当x=5的值的值算法