122-3基本算法语句.ppt
1.2.2基本算法语句基本算法语句 条件语句条件语句算法中的条件结构是由条件语句来表达的算法中的条件结构是由条件语句来表达的, ,条件语句是处理条件分支逻辑结构的算法语句条件语句是处理条件分支逻辑结构的算法语句 . .条件语句的一般格式条件语句的一般格式 满足条件?满足条件?语句语句是是否否只含一个只含一个“分支分支”的条件结构的条件结构写成条件语句为写成条件语句为IFIF 条件条件 THENTHEN 语句体语句体END IFEND IF当计算机执行这种形式的条件语句时,首先对当计算机执行这种形式的条件语句时,首先对IFIF后的条件进行判断,如果条件符合,就执行后的条件进行判断,如果条件符合,就执行THENTHEN后的语句体,否则执行后的语句体,否则执行END IFEND IF之后的语句之后的语句. . 满足条件?满足条件?语句语句1 1语句语句2 2是是否否含两个含两个“分支分支”的条件结构的条件结构写成条件语句为写成条件语句为IFIF 条件条件 THENTHEN 语句体语句体1 1ELSEELSE 语句体语句体2 2END IFEND IF当计算机执行上述语句时,首先对当计算机执行上述语句时,首先对IFIF后的后的条件进行判断,如果条件符合,就执行条件进行判断,如果条件符合,就执行THENTHEN后后的语句体的语句体1 1,否则执行,否则执行ELSEELSE后的语句体后的语句体2. 2. 【例题解析【例题解析】例例1 1:编写程序,输入一元二次方程:编写程序,输入一元二次方程axax2 2+bx+c=0+bx+c=0的系的系数,输出它的实数根。数,输出它的实数根。算法分析算法分析: : 一元二次方程的根有三种不同情况一元二次方程的根有三种不同情况:设判别式设判别式=b=b2 2-4ac -4ac (1)当当0时时,一元二次方程有两个不等的实数根一元二次方程有两个不等的实数根.(2)当当=0时时,一元二次方程有两个相等的实数根一元二次方程有两个相等的实数根.122bxxa (3)当当IF d= =0 THEN0 THEN p=-b/(2*a) q=SQR(d)/(2*a)IF d=0 THEN PRINT “One real root:”;pELSE x1=p+q x2=p-q PRINT “Two real roots:“;x1,x2 END IFELSEELSE PRINT “No real root! !”END IFENDEND例例2 2:编写程序,使得任意输入的:编写程序,使得任意输入的3 3个整个整数按从大到小的顺序输出。数按从大到小的顺序输出。算法分析:算法分析:用用a a,b b,c c表示输入的表示输入的3 3个整数;为个整数;为了节约变量,把它们重新排列后,仍用了节约变量,把它们重新排列后,仍用a a,b b,c c表表示,并使示,并使abcabc. .具体操作步骤如下。具体操作步骤如下。第一步:输入第一步:输入3 3个整数个整数a a,b b,c.c.第二步:将第二步:将a a与与b b比较,并把小者赋给比较,并把小者赋给b b,大者,大者赋给赋给a.a.第三步:将第三步:将a a与与c c比较比较. . 并把小者赋给并把小者赋给c c,大者,大者赋给赋给a a,此时,此时a a已是三者中最大的。已是三者中最大的。第四步:将第四步:将b b与与c c比较,并把小者赋给比较,并把小者赋给c c,大者,大者赋给赋给b b,此时,此时a a,b b,c c已按从大到小的顺序排列好。已按从大到小的顺序排列好。第五步:按顺序输出第五步:按顺序输出a a,b b,c.c.c=bb=tb=tc=ta=c【程序框图【程序框图】开始开始输入输入a,b,cba?是是t=aa=b否否ca?是是t=a否否cb?t=c是是否否输出输出a,b,c交换交换a,ba,b的值的值【程序【程序】INPUT “a,b,c =”;a,b,cIF ba THEN t=a a=b b=tEND IFIF ca THEN t=a a=c c=tEND IFIF cb THEN t=b b=c c=tEND IF END IF PRINT a,b,cENDEND 【课堂小结【课堂小结】 本节课主要学习了条件语句的结构、特点、本节课主要学习了条件语句的结构、特点、作用以及用法,并懂得利用它解决一些简单问作用以及用法,并懂得利用它解决一些简单问题。条件语句使程序执行产生的分支,根据不题。条件语句使程序执行产生的分支,根据不同的条件执行不同的路线,使复杂问题简单化。同的条件执行不同的路线,使复杂问题简单化。条件语句一般用在需要对条件进行判断的条件语句一般用在需要对条件进行判断的算法设计中,如判断一个数的正负,确定两个算法设计中,如判断一个数的正负,确定两个数的大小等问题,还有求分段函数的函数值等,数的大小等问题,还有求分段函数的函数值等,往往要用条件语句,有时甚至要用到条件语句往往要用条件语句,有时甚至要用到条件语句的嵌套。的嵌套。【课堂练习【课堂练习】1.1.课本课本P29P29页页T2.T2.读程序读程序, ,说明程序的运行过程说明程序的运行过程. .INPUT “x=:”;xIF 9x AND xc AND a+cb AND b+ca THEN PRINT “Yes.”ELSE PRINT “No.”END IFEND参考答案:参考答案:3.3.课本课本P29P29页页T3.T3.编写求一个数是偶数还是奇数的编写求一个数是偶数还是奇数的程序程序, ,从键盘输入一个整数从键盘输入一个整数, ,输出该数的奇偶性输出该数的奇偶性. .INPUT “a=”; aIF a MOD 2 =0 THEN PRINT “Even.”ELSE PRINT “Odd.”END IFEND参考答案:参考答案:4.4.课本课本P29P29页页T1.T1.闰年指年闰年指年份能被份能被4 4整除整除但不能被但不能被100100整除整除, ,或者能或者能被被400400整除的整除的年份年份. .编写一编写一个程序个程序, ,判断判断输入的年份输入的年份是否为闰年是否为闰年. .INPUT “Please input a year:”;y b=y MOD 4 c=y MOD 100 d=y MOD 400IF b=0 AND c0 THEN PRINT “Leap year.”ELSEIF d=0 THEN PRINT “Leap year.”ELSE PRINT “Not leap year.” END IFEND IFEND参考答案:参考答案:表示表示c0c06.(P33页页B组组T3)INPUT “x=”;xIF x=1 AND x10 THEN y=2x-1ELSE y=3x-11 END IFEND IFPRINT“y=”;yEND参考答案:参考答案: 1.2.3基本算法语句基本算法语句 循环语句循环语句算法中的循环结构是由循环语句来实现的算法中的循环结构是由循环语句来实现的 . .循环结构有两种循环结构有两种-当型与直到型当型与直到型.满足条件?满足条件?循环体循环体是是否否当型循环结构当型循环结构(当条件满当条件满足时反复执行循环体足时反复执行循环体)直到型循环结构直到型循环结构(反复执反复执行循环体直到条件满足行循环体直到条件满足)循环体循环体是是否否满足条件?满足条件?对应于程序框图中的两种循环结构,一般对应于程序框图中的两种循环结构,一般程序设计语言中也有当型(程序设计语言中也有当型(WHILEWHILE型)和直到型型)和直到型(UNTILUNTIL型)两种语句结构。型)两种语句结构。 即即WHILEWHILE语句和语句和UNTILUNTIL语句。语句。 (1)WHILE(1)WHILE语句的一般格式是语句的一般格式是: :WHILE WHILE 条件条件 循环体循环体WENDWEND其中循环体是由计算机反复执行的一组语句其中循环体是由计算机反复执行的一组语句构成的。构成的。WHLIEWHLIE后面的后面的“条件条件”是用于控制计算机是用于控制计算机执行循环体或跳出循环体的。执行循环体或跳出循环体的。WHILEWHILE当当 时候时候WENDWEND朝朝方向方向 行走行走(1)WHILE(1)WHILE语句的一般格式是语句的一般格式是 WHILE 条件条件 循环体循环体WEND 当计算机遇到当计算机遇到WHILEWHILE语句时语句时, ,先判断条件的真假先判断条件的真假, ,如果条件如果条件符合符合, ,就执行就执行WHILEWHILE与与WENDWEND之间之间的循环体的循环体; ;然后再检查上述条然后再检查上述条件件, ,如果条件仍符合如果条件仍符合, ,再次执行再次执行循环体循环体, ,这个过程反复进行这个过程反复进行, ,直直到某一次条件不符合为止到某一次条件不符合为止. .这这时时, ,计算机将不执行循环体计算机将不执行循环体, ,直直接跳到接跳到WENDWEND语句后语句后, ,接着执行接着执行WENDWEND之后的语句之后的语句. . 满足条件?满足条件?循环体循环体是是否否当型循环结构当型循环结构(2)UNTIL(2)UNTIL语句的一般格式是语句的一般格式是: :DODO 循环体循环体LOOP UNTIL LOOP UNTIL 条件条件循环体循环体是是否否满足条件?满足条件?直到型循环结构直到型循环结构DODO做什么做什么LOOP UNTILLOOP UNTIL绕环回线走绕环回线走, ,直到达到某种直到达到某种 条件为止条件为止思考思考: :参照其直到型循环结构对应的程序框图参照其直到型循环结构对应的程序框图, ,说说说说计算机是按怎样的顺序执行计算机是按怎样的顺序执行UNTILUNTIL语句的?语句的? (2)UNTIL(2)UNTIL语句的一般格式是语句的一般格式是: :DODO 循环体循环体LOOP UNTIL LOOP UNTIL 条件条件循环体循环体是是否否满足条件?满足条件?直到型循环结构直到型循环结构从从UNTILUNTIL型循环结构分析型循环结构分析, ,计算机执行该语句时计算机执行该语句时, ,先先执行一次循环体执行一次循环体, ,然后进行条件的判断然后进行条件的判断, ,如果条件不如果条件不满足满足, ,继续返回执行循环体继续返回执行循环体, ,然后再进行条件的判断然后再进行条件的判断, ,这个过程反复进行这个过程反复进行, ,直到某一次条件满足时直到某一次条件满足时, ,不再执不再执行循环体行循环体, ,跳到跳到LOOP UNTILLOOP UNTIL语句后执行其他语句语句后执行其他语句, ,是先执行循环体后进行条件判断的循环语句是先执行循环体后进行条件判断的循环语句. .提问提问: :通过对照通过对照, ,大家觉得大家觉得WHILEWHILE型语句与型语句与UNTILUNTIL型型语句之间有什么区别呢?语句之间有什么区别呢? 区别区别:在:在WHILEWHILE语句中语句中, ,是当条件是当条件满足满足时执行循环时执行循环体体, ,而在而在UNTILUNTIL语句中语句中, ,是当条件是当条件不满足不满足时执行循环时执行循环体。体。WHILEWHILE语句的一般格式语句的一般格式WHILE WHILE 条件条件 循环体循环体WENDWENDUNTILUNTIL语句的一般格式语句的一般格式DODO 循环体循环体LOOP UNTIL LOOP UNTIL 条件条件例例1.1.编写程序编写程序, ,计算自然数计算自然数1+2+3+1+2+3+99+100+99+100的和的和. .分析分析: :这是一个累加问题这是一个累加问题. .我们可我们可以用以用WHILEWHILE型语句型语句, ,也可以用也可以用UNTILUNTIL型语型语句。句。WHILEWHILE语句语句开始开始结束结束i=1S=0i=i+1S=S+i输出输出Si100?是是否否当型循环结构当型循环结构i=1S=0WHLIE i100?否否是是直到型直到型i=1S=0DOS=S+ii=i+1LOOP UNTIL i100PRINT SEND开始开始i=1S=0i100?是是S=S+ii=i+1否否输出输出S结束结束当型循环当型循环结构结构变式训练变式训练(1):(1):编写程序求编写程序求:n!=1:n!=12 23 34 45 5n n的值的值. .如何修改如何修改? ?输入输入nWHILEWHILE语句语句i=1S=0WHLIE i100PRINT SENDS=1101S=Sii=i+2是是开始开始结束结束i=1S=0i=i+1S=S+i输出输出Si100?否否直到型直到型S=1S=Si i=i+2i101?例例2:2:根据根据P7P7页图页图1.1-2,1.1-2,将程序框图转化为程序语句将程序框图转化为程序语句. .分析分析: :仔细观察仔细观察, ,该程序框图中既有条件结该程序框图中既有条件结构构, ,又有循环结构。又有循环结构。INPUT “n=”;ni=2DO r=n MOD i i=i+1LOOP UNTIL i=n OR r=0IF r=0 THEN PRINT “n is not a prime number.”ELSE PRINT “n is a prime number.”END IFEND程序程序练习:练习:1P33页页B组组T2.程序程序n=1p=1000WHILE n=7p=p(1+0.5)n=n+1WENDPRINT pEND2.P50页页A组组T4.程序程序INPUT “n=”;ni=1S=0WHILE i=nS=S+1/ii=i+1WENDPRINT “S=”;SEND3.P50页页A组组T2. 程序框图程序框图程序程序INPUT a1,b1,c1,a2,b2,c2IF a10 THENu=-a2/a1b=b2+b1uc=c2+c1uy=c/bx=(c2-b2y)/a2ELSEy=c1/b1x=(c2-b2y)/a2END IFPRINT x,yEND 继续继续开始开始程序框图程序框图输入输入a1,b1,c1,a2,b2,c2a10?是是u=-a2/a1b=b2+b1uc=c2+c1uy=c/bx=(c2-b2y)/a2否否y=c1/b1输出输出x,y结束结束返回返回4.P33页页B组组T4.程序程序INPUT “a=”;aINPUT “n=”;ntn=0sn=0i=1WHILE i=ntn=tn+asn=sn+tna=a10i=i+1WENDPRINT snEND