1[1].2.3循环语句5_第1页
1[1].2.3循环语句5_第2页
1[1].2.3循环语句5_第3页
1[1].2.3循环语句5_第4页
1[1].2.3循环语句5_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1.2.3 循环语句循环语句 在算法程序语言中,一般通过循环语在算法程序语言中,一般通过循环语句来处理算法中的循环结构。句来处理算法中的循环结构。 我们知道,在实际问题中会遇到许多我们知道,在实际问题中会遇到许多有规律的重复运算,或者在程序中需要有规律的重复运算,或者在程序中需要对某些语句进行重复执行,这样就需要对某些语句进行重复执行,这样就需要用到循环语句进行控制。用到循环语句进行控制。 Scilab程序语言中提供了两种循环语句:程序语言中提供了两种循环语句:for 循环循环和和while 循环循环。一、一、 for循环语句循环语句for 循环语句的一般格式:循环语句的一般格式:for 循环

2、变量循环变量=初值:步长:终值初值:步长:终值 循环体循环体end 这是一种这是一种“直到型直到型”循环结构。循环结构。解答:用解答:用for循环语句来循环语句来实现计算实现计算S=0;for i=1:1:1000S=S+i;EndS这个程序一共四步:这个程序一共四步: 第一步是选择一个变量第一步是选择一个变量S表示和,并赋给表示和,并赋给初值为初值为0.例例1. 求求1+2+3+1000=? 算法思想:可以采用算法思想:可以采用重复计算重复计算,而且数字,而且数字1、2、3、1000是有规律的一列数,是有规律的一列数,逐渐循环递增,每次增幅为逐渐循环递增,每次增幅为1. 第二步开始进入第二步

3、开始进入for循环语句,首先设循环语句,首先设i为循环变量,分别设定其为循环变量,分别设定其初值、步长、初值、步长、终值终值。这里初值为。这里初值为1,步长为,步长为1(步长是(步长是指循环变量指循环变量i 每次增加的值。步长为每次增加的值。步长为1,可以省略不写,若为其他值,则不可省可以省略不写,若为其他值,则不可省略),终值为略),终值为1000。第三步为循环表达式(循环体)。第三步为循环表达式(循环体)。第四步用第四步用“end”控制结束一次循环,开始控制结束一次循环,开始一次新的循环。一次新的循环。对循环体的认识:对循环体的认识: 对第三步循环表达式对第三步循环表达式“S=S+i”的理

4、解:的理解: i=1 S=S+i 是是 S=S+1,并把并把0+1赋值给赋值给S, 第一次循环结束时第一次循环结束时S为为1,此时,此时S记录了记录了第一个数的值,遇到第一个数的值,遇到“end”开始第二次开始第二次循环;循环; i=2 S=S+i 是是 S=S+2,并把并把1+2赋值给赋值给S, 第二次循环结束第二次循环结束S为为1+2=3,此时,此时S记录了记录了前两个数的和,遇到前两个数的和,遇到“end”开始第三次循开始第三次循环环; i=3 S=S+i 是是 S=S+3,并把并把(1+2)+3赋值赋值给给S,第三次循环结束时第三次循环结束时S为为1+2+3=6,此,此时时S记录的是前

5、三个数的和,遇到记录的是前三个数的和,遇到“end”开始第四次循环;开始第四次循环; 一直到一直到i=1000, 此时此时S为为1+2+3+1000.结果输出:结果输出: 把上述程序存到一个文件把上述程序存到一个文件(“C:instum.sci”),点击菜单中的点击菜单中的“Load into Scilab”就会在就会在Scilab中执行你写的程序:中执行你写的程序:如果在程序的第三行后,去掉分号,再如果在程序的第三行后,去掉分号,再运行程序,可以在屏幕上显示每一步循运行程序,可以在屏幕上显示每一步循环输出的结果。环输出的结果。S=0;for i=1:1:1000S=S+iEndSS=0;fo

6、r i=1:1:1000S=S+i;EndS认真比较两个程序的区别!认真比较两个程序的区别! 在例在例1的程序中,如果我们将的程序中,如果我们将初值、步长、初值、步长、终值、循环体终值、循环体分别改变,情形又如何呢分别改变,情形又如何呢?1. 将初值改变将初值改变,如改为,如改为“i=100:1:1000”则该程序描述的算法为求和则该程序描述的算法为求和“100+101+102+1000 .2. 终值改变终值改变的情形类似的情形类似.如改为如改为“i=1:1:100”则该程序描述的算法则该程序描述的算法为求和为求和“1+2+3+100 .3.将步长改变将步长改变,如改为,如改为“i=1:2:1

7、000,则表示求和则表示求和1+3+5+999; 如改为如改为“i=1:3:1000”,则表示求和,则表示求和1+4+7+1000;4.将循环体改变将循环体改变,如改变为,如改变为“S=S+1/i”,则表示求和则表示求和1111231000例例2. 画出计算画出计算 值的算法值的算法程序框图,并写出程序。程序框图,并写出程序。 1111246200解:从题目可以看出,分母是有规律递增解:从题目可以看出,分母是有规律递增的,可以引入的,可以引入累加变量累加变量Sum和和计数变量计数变量i,且且sum=sum+1/i是反复进行的,可用是反复进行的,可用循环循环结构及语句结构及语句来描述算法来描述算

8、法.S=0;for i=2:2:200 S=S+1/i;EndS开始开始S=S+1/iS=0, i=2结束结束输出输出Si=i+2i200否否是是二、二、 while循环语句循环语句While 循环语句的一般格式为:循环语句的一般格式为:While 表达式表达式 循环体循环体End这是一种这是一种“当型当型”循环结构。循环结构。说明:当程序执行时,遇到说明:当程序执行时,遇到while语句,先语句,先对表达式所描述的对表达式所描述的条件进行判断条件进行判断,如果条,如果条件成立,则执行件成立,则执行while和和end之间的循环体,之间的循环体,然后再判断上述条件,再次执行循环体,然后再判断上

9、述条件,再次执行循环体,这个过程反复执行,直到某一次不符合条这个过程反复执行,直到某一次不符合条件为止,这时不再执行循环体,将跳到件为止,这时不再执行循环体,将跳到end语句后,执行语句后,执行end后面的语句;后面的语句;While 表达式表达式 循环体循环体End例例3. 求平方值小于求平方值小于1000的最大整数。的最大整数。解答:解答:Scilab的格式来解决这个问题的格式来解决这个问题- j=1;- while j*j j=j1;- j j= 31. 在输入完程序的第二行后,击在输入完程序的第二行后,击Enter键,键,再在提示符下输入再在提示符下输入j,击,击Enter键后,输出键

10、后,输出最大的最大的j值值.步骤:步骤: 第一步是选择一个变量第一步是选择一个变量j表示数值,并表示数值,并赋给初值赋给初值1; 第二步开始进入第二步开始进入while循环语句循环语句循环体:循环体:j*j1000, j=j+1; 解释:解释:j=1时,时,1*1=11000, j=1+1=2;遇到遇到end开始第二次循环;开始第二次循环; j=2时,时,2*2=41000, j=2+1=3; 遇到遇到end开始第三次循环;开始第三次循环; 第三步单击第三步单击Enter键,再在提示符输入键,再在提示符输入j,击击Enter键,输出最大键,输出最大j值值例例4.用用while循环语句编写一个程

11、序,计循环语句编写一个程序,计算算13599.解:程序为:解:程序为: S=1;i=1;while i=99 S=S*i; i=i+2;endS例例5. 一球从一球从100m高度落下,每次落地后反高度落下,每次落地后反跳为原高度的一半,再落下。在第跳为原高度的一半,再落下。在第10次落地次落地时,共经过多少路程?第时,共经过多少路程?第10次下落多高?次下落多高?解:算法分析:解:算法分析:第第1次下落高度次下落高度h1=100;第第2次下落高度次下落高度h2=50;第第10次下落高度次下落高度h10=h9/2.递推公式:递推公式:h1=100, hn+1=hn/2,n=1,2,9.到第到第1

12、0次落地时,共经过了次落地时,共经过了h1+2h2+2h3+2h10(m).S=0;h=100;S=S+h;for i=2; 10, h=h/2; S=S+2*h; endSh例例6.计算计算 的值。的值。要求用两种循环语句分别写出程序。要求用两种循环语句分别写出程序。 1161616166在本问题里初值可设定为在本问题里初值可设定为 ,第一次循环得到第一次循环得到 ,第二次循环得,第二次循环得到到 ,一共循环了,一共循环了4次。次。 116a 2116aa3216aa解:用循环结构实现算法需搞清解:用循环结构实现算法需搞清初值初值是谁是谁.用用for语句书写程序:语句书写程序:x=1/6;f

13、or i=1:1:4 x=1/(6+x);endPrint(%io(2),x)用用while语句书写程序语句书写程序:x=1/6;i=1;while i10000的最的最小整数的算法小整数的算法解:本例中循环的解:本例中循环的次数不定,因此可次数不定,因此可用用“While循环循环”语句,具体描述如语句,具体描述如下:下:S=1;i=1;While S10000 i=i+2; S=S*I; EndPrint(%io(2), i) 例例9抛掷一枚硬币时,既可能出现正面,抛掷一枚硬币时,既可能出现正面,也可能出现反面,预先作出确定的判断也可能出现反面,预先作出确定的判断是不可能的,但是假如硬币质量

14、均匀,是不可能的,但是假如硬币质量均匀,那么当抛掷次数很多时,出现正面的频那么当抛掷次数很多时,出现正面的频率应接近率应接近50% 试设计一个循环语句模拟抛掷硬币的试设计一个循环语句模拟抛掷硬币的过程,并计算抛掷中出现正面的频率过程,并计算抛掷中出现正面的频率. 分析:抛掷硬币的过程实际上是一个不断分析:抛掷硬币的过程实际上是一个不断重复地做同一件事情的过程,利用循环语重复地做同一件事情的过程,利用循环语句,我们很容易在计算机上模拟这一过程句,我们很容易在计算机上模拟这一过程.在程序设计中,有一个随机函数在程序设计中,有一个随机函数“rand()”,它能产生它能产生0与与1之间的随机数这样我们

15、可之间的随机数这样我们可用大于用大于0.5的随机数表示出现正面,不大于的随机数表示出现正面,不大于的的0.5随机数表示出现反面随机数表示出现反面解:本题算法如下:解:本题算法如下:S=0;n=input(“n=”); For i=1:1:n a=rand(); if a0.5 S=S+1; endend Print(%io(2), S/n)练习题练习题1、编写程序,计算函数、编写程序,计算函数f(x)=x23x+5当当x=1,2, 3,,20时的函数值。时的函数值。x=1;while x=20 y=x23*x+5; x y x=x+1;endfor x=1:1:20 y=x23*x+5; x y x=x+1;endm=1;i=1;n=input( “n=”);While i=n m=m*i; i=i+1;endprint(%io(2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论