高二数学循环语句4.ppt_第1页
高二数学循环语句4.ppt_第2页
高二数学循环语句4.ppt_第3页
高二数学循环语句4.ppt_第4页
高二数学循环语句4.ppt_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、1.2.3 循环语句,问题提出,1.两种条件语句的一般格式分别是什么?,在算法程序语言中,一般通过循环语句来处理算法中的循环结构。 我们知道,在实际问题中会遇到许多有规律的重复运算,或者在程序中需要对某些语句进行重复执行,这样就需要用到循环语句进行控制。 Scilab程序语言中提供了两种循环语句:for 循环和while 循环。,一、 for循环语句,for 循环语句的一般格式: for 循环变量=初值:步长:终值 循环体 end,这是一种“直到型”循环结构。,解答:用for循环语句来实现计算,S=0; for i=1:1:1000 S=S+i; End S,这个程序一共四步:,第一步是选择一

2、个变量S表示和,并赋给初值为0.,例1. 求1+2+3+1000=?,算法思想:可以采用重复计算,而且数字1、2、3、1000是有规律的一列数,逐渐循环递增,每次增幅为1.,第二步开始进入for循环语句,首先设i为循环变量,分别设定其初值、步长、终值。这里初值为1,步长为1(步长是指循环变量i 每次增加的值。步长为1,可以省略不写,若为其他值,则不可省略),终值为1000。,第三步为循环表达式(循环体)。,第四步用“end”控制结束一次循环,开始一次新的循环。,对循环体的认识:,对第三步循环表达式“S=S+i”的理解:,i=1 S=S+i 是 S=S+1,并把0+1赋值给S, 第一次循环结束时

3、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记录的是前三个数的和,遇到“end”开始第四次循环; ,一直到i=1000, 此时S为1+2+3+1000.,结果输出:,把上述程序存到一个文件(“C:instum.sci”),点击菜单中的“Load into Scilab”就会在Scilab中执行你写的程序:,如果在程序的第三行

4、后,去掉分号,再运行程序,可以在屏幕上显示每一步循环输出的结果。,S=0; for i=1:1:1000 S=S+i End S,S=0; for i=1:1:1000 S=S+i; End S,认真比较两个程序的区别!,在例1的程序中,如果我们将初值、步长、终值、循环体分别改变,情形又如何呢? 1. 将初值改变,如改为“i=100:1:1000”则该程序描述的算法为求和 “100+101+102+1000 . 2. 终值改变的情形类似. 如改为“i=1:1:100”则该程序描述的算法为求和“1+2+3+100 .,3.将步长改变,如改为“i=1:2:1000,则表示求和1+3+5+999;

5、如改为“i=1:3:1000”,则表示求和1+4+7+1000;,4.将循环体改变,如改变为“S=S+1/i”,则表示求和,例2. 画出计算 值的算法程序框图,并写出程序。,解:从题目可以看出,分母是有规律递增的,可以引入累加变量Sum和计数变量i,且sum=sum+1/i是反复进行的,可用循环结构及语句来描述算法.,S=0; for i=2:2:200 S=S+1/i; End S,开始,S=S+1/i,S=0, i=2,结束,输出S,i=i+2,i200,否,是,二、 while循环语句,While 循环语句的一般格式为:,While 表达式 循环体 End,这是一种“当型”循环结构。,说

6、明:当程序执行时,遇到while语句,先对表达式所描述的条件进行判断,如果条件成立,则执行while和end之间的循环体,然后再判断上述条件,再次执行循环体,这个过程反复执行,直到某一次不符合条件为止,这时不再执行循环体,将跳到end语句后,执行end后面的语句;,While 表达式 循环体 End,例3. 求平方值小于1000的最大整数。,解答:Scilab的格式来解决这个问题,- j=1; - while j*j j=j-1; - j j= 31.,在输入完程序的第二行后,击Enter键,再在提示符下输入j,击Enter键后,输出最大的j值.,步骤: 第一步是选择一个变量j表示数值,并赋给

7、初值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循环语句编写一个程序,计算13599.,解:程序为:,S=1; i=1; while i=99 S=S*i; i=i+2; end S,例5. 一球从100m高度落下,每次落地后反跳为原高度的一半,再落下。在第10次落地时,共经过多少路程?第10次下落多高?,解:算

8、法分析: 第1次下落高度h1=100; 第2次下落高度h2=50; 第10次下落高度h10=h9/2.,递推公式: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,例6.计算 的值。 要求用两种循环语句分别写出程序。,在本问题里初值可设定为 , 第一次循环得到 ,第二次循环得到 ,一共循环了4次。,解:用循环结构实现算法需搞清初值是谁.,用for语句书写程序:,x=1/6; for i=1:1:4 x=1/(6

9、+x); end Print(%io(2),x),用while语句书写程序:,x=1/6; i=1; while i=4 x=1/(6+x); i=i+1; end Print(%io(2),x),例7. 编程求1222+3242+9921002的值.,解:这可以通过分别求奇数项与偶数项的和,然后综合起来;也可以运用求余数换算modulo(n,k)编写,下面的程序:,函数modulo(n,k)的意义是求整数n除以k所得到的余数。,S=0 for i=1:1:100 if modulo(i,2)=1 S=S+i2; else S=Si2; end end Print(%io(2),S),例8试用

10、算法语句表示:寻找满足1357 10000的最小整数的算法,解:本例中循环的次数不定,因此可用“While循环”语句,具体描述如下:,S=1; i=1; While S10000 i=i+2; S=S*I; End Print(%io(2), i),练习题,1、编写程序,计算函数f(x)=x23x+5当x=1,2, 3,,20时的函数值。,x=1; while x=20 y=x23*x+5; x=x+1; end,for x=1:1:20 y=x23*x+5; x=x+1; end,m=1; i=1; n=input( “n=”); While i=n m=m*i; i=i+1; end print(%io(2),m),2.编写一个程序,输入正整数n,计算它的 阶乘n!(n!=n*(n1)*3*2*1)。,m=1; n=input( “n=”); for i=1:1:n

温馨提示

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

评论

0/150

提交评论