高二数学 循环语句 (1)
246
200
程序框图,并写出程序。
解:从题目可以看出,分母是有规律递增 的,可以引入累加变量Sum和计数变量i, 且sum=sum+1/i是反复进行的,可用循环 结构及语句来描述算法.
2020/4/28
开始
S=0, i=2
i>200 是 输出S
结束 2020/4/28
i=i+2 S=S+1/i 否
第三步单击Enter键,再在提示符输入j, 击Enter键,输出最大j值
2020/4/28
例4.用while循环语句编写一个程序,计 算1×3×5×……×99.
解:程序为:
2020/4/28
S=1; i=1;
while i<=99 S=S*i; i=i+2;
end
S
例5. 一球从100m高度落下,每次落地后反 跳为原高度的一半,再落下。在第10次落地 时,共经过多少路程?第10次下落多高?
end Print(%io(2),S)
2020/4/28
例8.试用算法语句表示:寻找满足
1×3×5×7×……×
>10000的最小
整数的算法.
S=1;
解:本例中循环的 次数不定,因此可 用“While循环” 语句,具体描述如 下:
i=1; While S≤10000
i=i+2; S=S*I; End Print(%io(2), i)
2020/4/28
1
例6.计算
6
6
6
1
1 1
6
1
的值。
6
要求用两种循环语句分别写出程序。
解:用循环结构实现算法需搞清初值是谁.
在本问题里初值可设定为
1 a1 6
,
第到202一0/4a/283次 6循1a环2 得,到一共a2 循6 环1a1 了,4第次二。次循环得
用for语句书写程序:用while语句书写程序:
1.2.3 循环语句
2020/4/28
问题提出
1.两种条件语句的一般格式分别是什
么?
if end
格式1:
条件 语句系列1;
格式2:
if 条件 语句系列1;
else 语句系列2;
end
2020/4/28
在算法程序语言中,一般通过循环语 句来处理算法中的循环结构。
我们知道,在实际问题中会遇到许多 有规律的重复运算,或者在程序中需要 对某些语句进行重复执行,这样就需要 用到循环语句进行控制。
2020/4/28
例3. 求平方值小于1000的最大整数。
解答:Scilab的格式来解决这个问题
--> j=1; --> while j*j<1000, j=j+1; end
--> j=j-1;
--> j j= 31.
2020/4/28
在输入完程序的第二行后,击Enter键, 再在提示符下输入j,击Enter键后,输出 最大的j值.
解:算法分析:
第1次下落高度h1=100;
第2次下落高度h2=50;
……
第10次下落高度h10=h9/2.
2020/4/28
递推公式:h1=100, hn+1=hn/2, n=1,2,……,9. 到第10次落地时,共经过了 h1+2h2+2h3+……+2h10(m).
S=0; h=100; S=S+h; for i=2; 10, h=h/2; S=S+2*h; end S h
m=1; i=1; n=input( “n=”); While i<=n
m=m*i; i=i+1; end print(%io(2),m)
m=1; n=input( “n=”); for i=1:1:n
m=m*i; i=i+1; end print(%io(2),m)
2020/4/28
3、根据下面的程序, 画出其算法的程序 框图.
i=-1; while i<=1
y=i*i*i; i=i+0.2; y end
2020/4/28
开始 i=-1
i<=1 否 输出y 结束
i=i+0.2 y=i*i*i 是
步骤: 第一步是选择一个变量j表示数值,并赋
给初值1; 第二步开始进入while循环语句
循环体:j*j<1000, j=j+1;
2020/4/28
解释:j=1时,1*1=1<1000, j=1+1=2; 遇到end开始第二次循环;
j=2时,2*2=4<1000, j=2+1=3; 遇到end 开始第三次循环;…
解答:用for循环语句来 实现计算 这个程序一共四步:
第一步是选择一个变量S 表示和,并赋给初值为0.
S=0; for i=1:1:1000 S=S+i; End S
2020/4/28
第二步开始进入for循环语句,首先设i 为循环变量,分别设定其初值、步长、 终值。步长为1, 可以省略不写,若为其他值,则不可省 略),终值为1000。
2020/4/28
练习题
1、编写程序,计算函数f(x)=x2-3x+5当 x=1,2, 3,…,20时的函数值。
x=1; while x<=20
y=x^2-3*x+5;
for x=1:1:20 y=x^2-3*x+5;
x=x+1; end
2020/4/28
x=x+1; end
2.编写一个程序,输入正整数n,计算它的 阶乘n!(n!=n*(n-1)*…*3*2*1)。
x=1/6; for i=1:1:4
x=1/(6+x); end Print(%io(2),x)
2020/4/28
x=1/6; i=1; while i<=4
x=1/(6+x); i=i+1; end Print(%io(2),x)
例7. 编程求12-22+32-42+……+992- 1002的值.
第三步为循环表达式(循环体)。
第四步用“end”控制结束一次循环,开始 一次新的循环。
2020/4/28
对循环体的认识:
对第三步循环表达式“S=S+i”的理解:
i=1 S=S+i 是 S=S+1,并把0+1赋值给S, 第一次循环结束时S为1,此时S记录了 第一个数的值,遇到“end”开始第二次 循环;
认真比较两个程序的区别!
S=0; for i=1:1:1000 S=S+i; End S
S=0; for i=1:1:1000 S=S+i End S
2020/4/28
在例1的程序中,如果我们将初值、步长、 终值、循环体分别改变,情形又如何呢? 1. 将初值改变,如改为“i=100:1:1000” 则该程序描述的算法为求和 “100+101+102+……+1000 . 2. 终值改变的情形类似. 如改为“i=1:1:100”则该程序描述的算法 为求和“1+2+3+……+100 .
解:这可以通过分别求奇数项与偶数项的 和,然后综合起来;也可以运用求余数换 算modulo(n,k)编写,下面的程序:
函数modulo(n,k)的意义是求整数n除以 k所得到的余数。
2020/4/28
S=0 for i=1:1:100
if modulo(i,2)=1 S=S+i^2;
else S=S-i^2; end
i=2 S=S+i 是 S=S+2,并把1+2赋值给S, 第二次循环结束S为1+2=3,此时S记录了 前两个数的和,遇到“end”开始第三次循 环;2020/4/28
i=3 S=S+i 是 S=S+3,并把(1+2)+3赋值 给S,第三次循环结束时S为1+2+3=6,此 时S记录的是前三个数的和,遇到“end” 开始第四次循环;
S=0; for i=2:2:200
S=S+1/i; End S
二、 while循环语句 While 循环语句的一般格式为: While 表达式
循环体 End 这是一种“当型”循环结构。
2020/4/28
While 表达式 循环体
End
说明:当程序执行时,遇到while语句,先 对表达式所描述的条件进行判断,如果条 件成立,则执行while和end之间的循环体, 然后再判断上述条件,再次执行循环体, 这个过程反复执行,直到某一次不符合条 件为止,这时不再执行循环体,将跳到end 语句后,执行end后面的语句;
…… 一直到i=1000, 此时S为1+2+3+……+1000.
结果输出:
把上述程序存到一个文件(“C:instum.sci”), 点击菜单中的“Load into Scilab”就会在 Sc20i2l0/a4/2b8 中执行你写的程序:
如果在程序的第三行后,去掉分号,再 运行程序,可以在屏幕上显示每一步循 环输出的结果。
Scilab程序语言中提供了两种循环语句: for 循环和while 循环。
2020/4/28
一、 for循环语句 for 循环语句的一般格式:
for 循环变量=初值:步长:终值 循环体
end
这是一种“直到型” 循环结构。
2020/4/28
例1. 求1+2+3+…+1000=?
算法思想:可以采用重复计算,而且数字 1、2、3、…、1000是有规律的一列数, 逐渐循环递增,每次增幅为1.