|
山东省德州市德州二中 秦玲玲
在算法程序语言中,一般通过循环语句来处理算法中的循环结构,Scilab语言中提供了两种循环语句:for循环和while循环,对于已知循环次数的循环问题,这两种循环语句都可以用;而对于不知道循环次数的循环问题,一般都用while循环。下面举例说明这两种语句的应用。
一、格式
(1)for循环:
for 循环变量=初值:步长:终值
循环体
end
(2) while循环:
while 表达式
循环体
end
二、应用举例
例1 求1×2+2×3+3×4+…+99×100
分析:本题为累积求和问题,而且循环次数已知,因此两种循环语句都可以使用。
解法1 (for循环)
s=0;
for i=1:1:99
s=s+i*(i+1);
end
print(%io(2),s)
解法2 (while循环)
s=0;i=1;
while i<100
s=s+i*(i+1);
i=i+1;
end
print(%io(2),s)

例2 已知 1×2+2×3+3×4+…+n×(n+1)<1 000求n的最大值。
分析:本题不知道循环次数,因此用while循环语句
解:程序如下:
s=0;i=1;
s=s+i*(i+1);
while s<1000
i=i+1;
s=s+i*(i+1);
end
i=i-1;
print(%io(2),i)
类似可求(1)1×2+2×3+3×4+…+n×(n+1)=1 000中n的最小值,
(2)1×2×3×…×n<1 000中n的最大值等等。
例3 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾又多吃了一个;第二天早上又将剩下的桃子吃了一半又多吃了一个;以后每天早上都吃了前一天的一半又多一个,到第10天早上想再吃时,见只剩下一个桃子,试编写一个程序,求第一天共摘了多少桃子?
分析:设吃前第一天、第二天、第三天……第十天的桃子数分别为s1,s2,s3,…,s10,则 s10=1,s9=2×(s10+1),s8=2(s9+1),…, s2=2×(s3+1), s1=2×(s2+1)。
解法1 (for循环)
s=1;
for i=1:1:9
s=2*(s+1);
end
print(%io(2),s)
解法2 (while循环)
s=1;i=1 ;
while i<10
s=2*(s+1);
i=i+1;
end
print(%io(2),s)
总之,对于已知循环变量循环次数的循环问题用for循环、while循环均可,一般用for循环;对于不知道循环变量循环次数的循环问题,一般用while循环。掌握了这一点,应用起来就不会感到太困难了。 |