输入语句 输出语句 赋值语句 条件语句 循环语句 1.2基本算法语句 输入语句 输出语句 赋值语句 条件语句 循环语句 1.2.3 循环语句
两种循环结构有什么差别? 循环结构的定义: 在一些算法中,从某处开始,按照一定条件,反复执行 某一处理步骤的情况,这就是循环结构。 反复执行的处理步骤称为循环体。 A P 成立 不成立 While(当型)循环 成立 A P 不成立 Until(直到型)循环 两种循环结构有什么差别?
两种循环结构有什么差别? 先判断 后执行 先执行 后判断 先判断指定的条件是否为真,若条件为真,执行循环条件,条件为假时退出循环。 A P While(当型)循环 A P 成立 不成立 先判断指定的条件是否为真,若条件为真,执行循环条件,条件为假时退出循环。 Until(直到型)循环 先执行 后判断 成立 A P 不成立 先执行循环体,然后再检查条件是否成立,如果不成立就重复执行循环体,直到条件成立退出循环。
两种循环语句: WHILE 条件 循环体 WEND 也叫“前测试型”循环 当计算机遇到WHILE语句时,先判断条件的真假,如 满足条件? 是 否 While(当型)循环 当计算机遇到WHILE语句时,先判断条件的真假,如 果条件符合,就执行WHILE与WEND之间的循环体;然 后再检查上述条件,如果条件仍符合,再次执行循环体, 这个过程反复进行,直到某一次条件不符合为止.这时, 计算机将不执行循环体,直接跳到WEND语句后,接着执 行WEND之后的语句.
练习:根据1.1.2例6中的程序框图,编写 计算机程序来计算1+2+…+100的值。 i=1 sum=0 WHILE i<=100 开始 输出sum 结束 否 是 sum=0 i=i+1 sum=sum+i i=1 sum=0 WHILE i<=100 sum=sum+i i=i+1 WEND PRINT sum END 程序:
DO 循环体 LOOP UNTIL 条件 思考1:参照直到型循环结构,说说计算机是按怎样 思考2:用UNTIL语句编写计算机程序,来计算 也叫“后测试型”循环 Until(直到型)循环 循环体 满足条件? 否 是 DO 循环体 LOOP UNTIL 条件 思考1:参照直到型循环结构,说说计算机是按怎样 的顺序执行UNTIL语句的? 思考2:用UNTIL语句编写计算机程序,来计算 1+2+…+100的值.
思考2:用UNTIL语句编写计算机程序,来计算 1+2+…+100的值. 程序框图: 程序: i=1 sum=0 DO sum=sum+i i=i+1 LOOP UNTIL i>100 PRINT sum END 开始 i=1 sum=0 i>100? 否 是 sum=sum+I i=i+1 输出sum 结束
思考3:根据图1.1-2,把程序框图中的内容转化为相应的程序语句。(课本32页练习1) INPUT “n=”;n i=2 DO r=n MOD i i=i+1 LOOP UNTIL i>n-1 OR r=0 IF r=0 THEN PRINT “n不是质数." ELSE PRINT" n是质数." END IF END
练习 1.根据用二分法求方 程x2-2=0的近似根 的程序框图,写出相 应的程序语句。 开始 c=0.005 f(x)=0? 否 是 x1=1,x2=2 c=0.005 输出x f(x1)f(x)<0? 否 是 x1=x x2=x |x1-x2|<c? 结束 f(x)=0? 练习 1.根据用二分法求方 程x2-2=0的近似根 的程序框图,写出相 应的程序语句。
练习 开始 c=0.005 x1=1 x2=2 c=0.005 DO X=(X1+X2)/2 f(x1)=x1^2-2 f(x)=x^2-2 IF f(x)=0 THEN PRINT "方程根为:";x ELSE IF f(x1)*f(x)<0 THEN x2=x x1=x END IF LOOP UNTIL ABS(x1-x2)<c PRINT "方程的近似根为:";x END c=0.005 |x1-x2|<c? 是 否 f(x)=0? 否 是 f(x1)f(x)<0? 否 是 x1=x x2=x 输出x 结束
练习 2.编写程序,计算函数f(x)=x2-3x+5当x=1,2, 3,…,20时的函数值。 x=1 WHILE x<=20 y=x^2 -3*x+5 PRINT "x=";x PRINT "y=";y x=x+1 WEND END
例2:修改21页例1 的程序,连续输入自变量的11个 取值,输出相应的函数值 程序 i=1 DO INPUT “x=”;x y=x^3+3*x^2-24*x+30 PRINT y i=i+1 LOOP UNTIL i>11 END 程序
练习课本32页练习2 3.编写一个程序,输入正整数n,计算它的 阶乘n!(n!=n*(n-1)*…*3*2*1) t=1 i=1 INPUT "请输入n的值:";n DO LOOP UNTIL PRINT "这个数的阶乘为:";t END t=t*i i=i+1 i>n
变式训练(1): 编写程序求:n!=1×2×3×4×5×……×n的值. WHILE语句 如何写程序? INPUT “n=”;n i=1 开始 i=1 S=0 i≤100? 是 S=S+i i=i+1 否 输出S 结束 当型循环结构 如何写程序? INPUT “n=”;n 输入n i=1 S=0 S=1 S=1 WHLIE i<=100 n S=S+i S=S*i i=i+1 S=S*i WEND i≤n? PRINT S END
变式训练(2): 编写程序求:1×3×5×7×……×101的值. 如何写程序? UNITL语句 i=1 S=0 DO S=S*i S=S+i 直到型 如何写程序? UNITL语句 是 开始 结束 i=1 S=0 i=i+1 S=S+i 输出S i>100? 否 i=1 S=0 S=1 S=1 DO S=S*i S=S*i S=S+i i=i+2 i=i+1 i=i+2 i>101? LOOP UNTIL i>100 101 PRINT S END
巩固升华 1、设计一个算法框图:逐个输出12,22,32,……,n2,并写出相应的QBASIC程序。 结束 i=0 开始 i = i+1 ; t=i^2 i>=n? 否 是 PRINT t INPUT n INPUT n i = 0 WHILE i < n i = i + 1 t = i ^ 2 PRINT t WEND END INPUT n i = 0 DO i = i + 1 t = i ^ 2 PRINT t LOOP UNTIL i > = n END
2、设计一个算法框图:求满足1+2 + 3 + … + n>10000的最小正整数n,并写出相应的QBASIC程序。 结束 输出i i=0,Sum=0 开始 i = i + 1 Sum=Sum+i Sum>10000? 否 是 i = 0 sum = 0 DO i = i + 1 sum = sum + i LOOP UNTIL sum>10000 PRINT i END
3.P33页A组T3. 程序 INPUT “n=”;n i=1 S=0 WHILE i<=n S=S+(i+1)/i i=i+1 WEND PRINT “S=”;S END
4.P33页B组T2. 程序 n=1 p=1000 WHILE n<=7 p=p*(1+0.5) n=n+1 WEND PRINT p END
5.P33页B组T4. 程序 INPUT “a=”;a INPUT “n=”;n s=0 i=1 WHILE i<=n S=S+a a=a+10 * a i=i+1 WEND PRINT s END
小 结 两种循环语句: WHILE 条件 循环体 WEND DO 循环体 LOOP UNTIL 条件 循环体 满足条件? 小 结 两种循环语句: 循环体 满足条件? 是 否 (1) While(当型)循环 (2)Until(直到型)循环 WHILE 条件 循环体 WEND DO 循环体 LOOP UNTIL 条件
作业 1.用直到型循环语句写出求S=12+32+52+……+992的值的算法的程序 2.1×2×3×4×5×……×n<1000,求符合条件的最大自然数n,试写出程序。 3.给定这样一个数列: 0,1,1,2,3,5, ……, 后一个数等于前两个数的和。用直到型循环语句编写程序,输出这列数的前50个数。