- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
循环语句学习中应该注意的几个问题
循环语句是算法语句中很重要的语句,它包括两种,一种是for循环,一种是while循环。两种循环只是实现方式的不同,但两种循环是可以相互转化的。熟练掌握for循环和while循环可以顺利实现由无限运算到有限运算的过渡,真正实现运算的革命,但笔者在教授算法的过程中,发现正确、合理的使用for循环和while循环语句,并非一件容易的事情,下面就结合教学的实际谈一下学习中应该注意的几个问题。
一、注意for循环与while循环的应用
for循环
while循环
格式
for 循环变量=初值:步长:终值
循环体;
end
while 条件
循环体;
end
适用条件
只有“循环次数确定”的时候才能用for循环
“循环次数不确定”和“循环次数不确定”的时候,都能用while循环
循环过程
当程序执行时,遇到for语句,首先把初值赋给循环变量,记下终值和步长,并比较初值和终值,若初值没有超过终值,就开始执行for语句后面的语句,执行到end语句时,计算机让循环变量增加一个步长值,然后用增值后的循环变量值与终值比较,如果超过终值,就执行end后面的语句,否则执行for语句后面的语句。
当程序执行时,遇到while语句,先判断条件是否成立,如果成立,则执行while和end之间的循环体,然后再判断上述条件,再次执行循环体,这个过程反复执行,直到某一次不符合条件为止,这时不再执行循环体,将跳到end语句后,执行end语句后面的语句。
注意点
要注意设定好循环变量的初值、步长、终值,避免出现多一次循环或者少一次循环的现象。
要注意表达式的写法,当表达式为真时执行循环体,表达式为假时结束循环体,以防出现表达式正好相反的错误。
写出12+22+32+…+1002计算的值的程序。
解法1:用while循环语句写出循环过程如下:
sum=0;
i=1;
while i=100
sum=sum+i^2;
i=i+1;
end
print(%io(2),sum)
解法2:用for循环语句写出循环过程如下:
sum=0;
for i=1:1:100
sum=sum+i^2;
end
print(%io(2),sum)
二、循环体中循环变量是用于控制算法中循环次数的变量,一般起计数作用,我们经常用到i=i+1等循环变量的自加操作,但循环变量的自加位置不当会出现意想不到的结果。
例2 求1+2+3+…..+20的和。
解:i=1;
sum=0;
while i=20
sum=sum+i;
i=i+1; //循环变量自加操作
end
print(%io(2),sum)
例3 求2+3+4+…..+21的和。:
解:i=1;
sum=0;
while i=20
i=i+1; //循环变量自加操作
sum=sum+i;
end
print(%io(2),sum)
在实际的编程过程中循环变量自加的位置一定需要斟酌清楚,不然会出现想不到的后果。其实在循环体中语句的顺序直接影响程序执行的结果。
下面是用欧几里德算法求最大公约数的程序:
很多同学误写成下面的程序,而得不出正确的结果:
a=input(“a=”);
b=input(“b=”);
r=modulo(a,b);
while r0
r=modulo(a,b);
a=b;
b=r;
end
print(%io(2),b)
本程序的循环体中三段代码的顺序决定了,这段程序不会运行出满意的结果,应该将程序修正为:
a=input(“a=”);
b=input(“b=”);
r=modulo(a,b);
while r0
a=b;
b=r;
r=modulo(a,b);
end
print(%io(2),b)
三、在很多的问题中我们需要在循环中加入一个记录循环次数的变量,用于记录循环次数,控制循环,求解循环次数很容易出现问题,个别同学会忘记初次循环次数等
例4 已知for i=(-200):10:300是某一循环程序中的一句,则该循环体共执行循环多少次?
误解:因为(300-(-200))÷10=50,因此循环50次。
正解:上述循环次数可以理解为求闭区间[-200,300]之间能被10整除的元素的个数,其个数有51个,所以循环51次
人教B版必修3p30
例题:求平方值小于1000的最大整数。
解:再scilab的文本编辑器中写出程序如下:
代码:j=1;
while j*j1000
j=j+1;
end
j=j-1;
j
很多同学在书写程序时候,最后到底是输出j还是j-1产生困惑,这主要是对循环的次数没有把握好的原因。下面多举一组例子以飨读者:
例题:
(1)?????? i=1;
sum=0;
while sum=20
sum=sum+i;
i=i+1;
end
print(%io
文档评论(0)