高二数学 循环语句 (1)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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” 开始第四次循环;
1.2.3 循环语句
2020/4/28
问题提出
wk.baidu.com
1.两种条件语句的一般格式分别是什
么?
if end
格式1:
条件 语句系列1;
格式2:
if 条件 语句系列1;
else 语句系列2;
end
2020/4/28
在算法程序语言中,一般通过循环语 句来处理算法中的循环结构。
我们知道,在实际问题中会遇到许多 有规律的重复运算,或者在程序中需要 对某些语句进行重复执行,这样就需要 用到循环语句进行控制。
解:这可以通过分别求奇数项与偶数项的 和,然后综合起来;也可以运用求余数换 算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
Scilab程序语言中提供了两种循环语句: for 循环和while 循环。
2020/4/28
一、 for循环语句 for 循环语句的一般格式:
for 循环变量=初值:步长:终值 循环体
end
这是一种“直到型” 循环结构。
2020/4/28
例1. 求1+2+3+…+1000=?
算法思想:可以采用重复计算,而且数字 1、2、3、…、1000是有规律的一列数, 逐渐循环递增,每次增幅为1.
认真比较两个程序的区别!
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 .
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后面的语句;
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、根据下面的程序, 画出其算法的程序 框图.
2020/4/28
3.将步长改变,如改为“i=1:2:1000, 则表示求和1+3+5+……+999;
如改为“i=1:3:1000”,则表示求和 1+4+7+……+1000;
4.将循环体改变,如改变为“S=S+1/i”,
则表示求和1 1 1 L 1
23
1000
2020/4/28
例2. 画出计算 1 1 1 L 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的值.
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值.
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 是
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 否
解答:用for循环语句来 实现计算 这个程序一共四步:
第一步是选择一个变量S 表示和,并赋给初值为0.
S=0; for i=1:1:1000 S=S+i; End S
2020/4/28
第二步开始进入for循环语句,首先设i 为循环变量,分别设定其初值、步长、 终值。这里初值为1,步长为1(步长是 指循环变量i 每次增加的值。步长为1, 可以省略不写,若为其他值,则不可省 略),终值为1000。
步骤: 第一步是选择一个变量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 开始第三次循环;…
…… 一直到i=1000, 此时S为1+2+3+……+1000.
结果输出:
把上述程序存到一个文件(“C:instum.sci”), 点击菜单中的“Load into Scilab”就会在 Sc20i2l0/a4/2b8 中执行你写的程序:
如果在程序的第三行后,去掉分号,再 运行程序,可以在屏幕上显示每一步循 环输出的结果。
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)。
第三步为循环表达式(循环体)。
第四步用“end”控制结束一次循环,开始 一次新的循环。
2020/4/28
对循环体的认识:
对第三步循环表达式“S=S+i”的理解:
i=1 S=S+i 是 S=S+1,并把0+1赋值给S, 第一次循环结束时S为1,此时S记录了 第一个数的值,遇到“end”开始第二次 循环;
解:算法分析:
第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
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语句书写程序:
第三步单击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次下落多高?
i=3 S=S+i 是 S=S+3,并把(1+2)+3赋值 给S,第三次循环结束时S为1+2+3=6,此 时S记录的是前三个数的和,遇到“end” 开始第四次循环;
1.2.3 循环语句
2020/4/28
问题提出
wk.baidu.com
1.两种条件语句的一般格式分别是什
么?
if end
格式1:
条件 语句系列1;
格式2:
if 条件 语句系列1;
else 语句系列2;
end
2020/4/28
在算法程序语言中,一般通过循环语 句来处理算法中的循环结构。
我们知道,在实际问题中会遇到许多 有规律的重复运算,或者在程序中需要 对某些语句进行重复执行,这样就需要 用到循环语句进行控制。
解:这可以通过分别求奇数项与偶数项的 和,然后综合起来;也可以运用求余数换 算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
Scilab程序语言中提供了两种循环语句: for 循环和while 循环。
2020/4/28
一、 for循环语句 for 循环语句的一般格式:
for 循环变量=初值:步长:终值 循环体
end
这是一种“直到型” 循环结构。
2020/4/28
例1. 求1+2+3+…+1000=?
算法思想:可以采用重复计算,而且数字 1、2、3、…、1000是有规律的一列数, 逐渐循环递增,每次增幅为1.
认真比较两个程序的区别!
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 .
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后面的语句;
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、根据下面的程序, 画出其算法的程序 框图.
2020/4/28
3.将步长改变,如改为“i=1:2:1000, 则表示求和1+3+5+……+999;
如改为“i=1:3:1000”,则表示求和 1+4+7+……+1000;
4.将循环体改变,如改变为“S=S+1/i”,
则表示求和1 1 1 L 1
23
1000
2020/4/28
例2. 画出计算 1 1 1 L 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的值.
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值.
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 是
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 否
解答:用for循环语句来 实现计算 这个程序一共四步:
第一步是选择一个变量S 表示和,并赋给初值为0.
S=0; for i=1:1:1000 S=S+i; End S
2020/4/28
第二步开始进入for循环语句,首先设i 为循环变量,分别设定其初值、步长、 终值。这里初值为1,步长为1(步长是 指循环变量i 每次增加的值。步长为1, 可以省略不写,若为其他值,则不可省 略),终值为1000。
步骤: 第一步是选择一个变量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 开始第三次循环;…
…… 一直到i=1000, 此时S为1+2+3+……+1000.
结果输出:
把上述程序存到一个文件(“C:instum.sci”), 点击菜单中的“Load into Scilab”就会在 Sc20i2l0/a4/2b8 中执行你写的程序:
如果在程序的第三行后,去掉分号,再 运行程序,可以在屏幕上显示每一步循 环输出的结果。
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)。
第三步为循环表达式(循环体)。
第四步用“end”控制结束一次循环,开始 一次新的循环。
2020/4/28
对循环体的认识:
对第三步循环表达式“S=S+i”的理解:
i=1 S=S+i 是 S=S+1,并把0+1赋值给S, 第一次循环结束时S为1,此时S记录了 第一个数的值,遇到“end”开始第二次 循环;
解:算法分析:
第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
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语句书写程序:
第三步单击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次下落多高?