3.4用for语句实现循环结构

什么是循环结构

for语句

1.什么是循环结构?

循环结构又称为重复结构,是利用计算机运算速度快以及能进行逻辑控制的特点来重复执行某些操作。重复执行的部分称为循环体。

2.for语句

格式:当步长为1时,表达式2可省略。

说明:

1、 for语句针对向量的每一个元素执行一次循环体。

2、退出循环之后,循环变量的值就是向量中最后的元素值。

3、当向量为空时,循环体一次也不执行。

计算圆周率π

(1)利用无穷级数展开式求π 的近似值。(迭代法)

  • 这是求n个数之和的累加问题,可用以下递推式来描述:

    yi=yi-1+fi  (y0=0)  // 上次循环的累加和加上当前的累加项f

  • 可用以下赋值语句来实现。

    y=y+f

  • 其中累加项f的符号可用以下赋值语句来实现(每循环一次反号一次)。

    g=-g

  • 累加项f就可用以下赋值语句来实现。

    f=g/(2*i-1)

程序:

y=0;  //y存放最后的累加值

g=-1;  //类加项的符号

n=input('n=?’);

for i=1:n

g=-g;  //每一次先求符号

y=y+g/(2*i-1);  //累加到y中

end

pai=4*y

迭代法:设置一个变量(称为迭代变量y),其值在原来值得基础上按递推关系计算出来。迭代法就用到了循环的概念,把求n个数之和的问题转化为求两个数之和的重复。

向量求和的方法实现程序:

n=input('n=?');

x=1:2:(2*n-1);     //生成一个向量x

y=(-1).^(2:n+1)./x;   //y的各累加项

pai=sum(y)*4  //sun函数

(2)利用定积分的近似值求π 的近似值。

求函数f(x)在[a,b]上的定积分,就是求曲线y=f(x)与直线x=a,x=b,y=0所围成的曲边梯形的面积。近似求出每个小曲边梯形面积,然后将n个小曲边梯 形的面积加起来,就得到总面积,也就是定积分的近似值。

a=0;

b=1;

n=input('n=?');

h=(b-a)/n;   //求宽度

x=a:h:b;    //n+1个自变量的值

f=sqrt(1-x.*x);  //点乘

s=[];

for k=1:n

  s1=(f(k)+f(k+1))*h/2;  //小梯形的面积

  s=[s,s1];   //s1追加到s中去

end

pai=4*sum(s)

//当然matlab也提供了关于数值积分的标准函数

(3)利用蒙特卡洛法求π 的近似值。

在正方形内随机投点,设点落在圆内的概率为P。

P=π /4 ——>π =4P

P=落在圆内的点数/所投点的总数

所投的点落在圆内的充要条件是x2+y2≤1。 

s=0;

n=input('n=?');

for i=1:n

  x=rand(1);

  y=rand(1);     //x和y取一个随机数

  if x*x+y*y<=1

    s=s+1;

  end

end

pai=s/n*4

按照Matlab的定义,for语句的循环变量也可以是一个列向量。

for 循环变量=矩阵表达式

循环体语句

end

执行过程是依次将矩阵的各列元素赋给循环变量,然后执行循环体语句,直到各列元素处理完毕循环结束。

s=0;

a=[12,13,14;15,16,17;18,19,20;21,22,23]

for k=a  //三列

s=s+k;  //一列累加到s中去

end

s

s=

  39

  48

  57

  66

下面两个for语句引导的循环结构,其循环体执行的次数相同吗?如果不相同,分别是多少?

3.5  用while语句实现循环结构

while语句

break语句和continue语句

循环的嵌套

For语句用于事先确立循环次数的较方便。

1.while语句

While通过判断循环条件是否成立来决定是否要继续循环的一种循环控制语句。也叫条件循环语句。

格式:

例1  从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们之和。

msum=0;    //累加和

n=0;    //输入数值的个数

x=input('Enter a number (end in 0):');

while x~=0

  msum=msum+x;

  n=n+1;

  x=input('Enter a number (end in 0):');

end

if n>0

  msum     //输出累加值

  mean=msum/n   //输出平均值mean

end

while语句多用于循环次数不确定的情况,而对于循环次数确定的情况,使用for语句更方便。

针对不同情况可以选择不同的循环语句,但从功能上讲两种循环语句可以相互替代

2.break语句和continue语句——流程转向语句

一般与if语句配合使用。

break语句用来跳出循环体,结束整个循环。

continue语句用来结束本次循环,接着进行下一次是否执行循环的判断。只是结束本次循环。

例2  求[100,200]之间第一个能被21整除的整数。

for n=100:200

  if rem(n,21)~=0

    continue

  end

  n     //第一个能被21整除的整数

  break

end

3.循环的嵌套

如果一个循环结构的循环体又包括一个循环结构,就称为循环的嵌套,或称为多重循环结构。处于内部的循环叫做内循环,处于外部的循环叫做外循环。

例3  用筛选法求某自然数范围内的全部素数。(素数时大于1,而且是除了1和他本身之外不能被其他任何整数所整除的整数)

筛选法求素数的基本思想:要找出2~m之间的全部素数,首先在2~m中划去2的倍数(不包括2),然后划去3的倍数(不包括3),由于4已被划去,再找5的倍数(不包括5),…,直到再划去不超过根号m的倍数,剩下的数就都是素数了。

m=input('m=');

p=1:m;   //p包含1-m的m个元素

p(1)=0;   //表示1不是素数

  for i=2:sqrt(m)

    for j=2*i:i:m

      p(j)=0;  //p中以i的倍数为序号的元素赋值为0

    end

end

n=find(p~=0);   //调用find函数,找出p中非零元素的下标赋给变量n

p(n)   //输出所有素数

TIP:

1.循环语句可以互相嵌套

2.内循环必须包含在外层循环的循环体中,注意内外循环之间的关系。不允许出现交叉的现象。

循环结构(for、while)的更多相关文章

  1. Python学习--04条件控制与循环结构

    Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...

  2. Swift -运算符和循环结构

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Menlo; color: #4dbf56 } p.p2 { margin: 0.0px 0. ...

  3. 浅析PHP中for与foreach两个循环结构遍历数组的区别

    遍历一个数组是编程中最常见不过的了,这里跟大家讨论下for和foreach两种方法.用这两种方法执行遍历的场景太多太多了,这里我们只针对以下两个数组作为例子来讨论.所谓管中窥豹,多少能理清一点两者的区 ...

  4. PHP流程控制之循环结构

    计算机程序最擅长的功能之一就是按规定的条件,重复执行某些操作.循环结构可以减少源程序重复书写的工作量,即在给定条件成立时,反复执行某程序段,直到条件不成立为止.给定的条件称为循环条件,反复执行的程序段 ...

  5. python基础之循环结构以及列表

    python基础之编译器选择,循环结构,列表 本节内容 python IDE的选择 字符串的格式化输出 数据类型 循环结构 列表 简单购物车的编写 1.python IDE的选择 IDE的全称叫做集成 ...

  6. C语言-循环结构及break、continue

    循环结构 --1-- 结构循环 1.1 while循环 1.2 do…while循环 1.3 for循环 --2-- break和continue 2.1 break关键字 2.2 continue关 ...

  7. 黑马程序员——C语言基础 流程控制 选择结构和循环结构

    ---恢复内容开始--- Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)流程控制 1> 顺序结构:默认的流程 ...

  8. Java 第8章 循环结构进阶

    循环结构进阶 什么是二重循环? 二重循环的执行顺序是什么?

  9. luogg_java学习_03_流程控制及循环结构

    本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! 程序流程控制 顺序结构 分支结构:if-else,sw ...

  10. C语言中的循环结构与选择结构

    1. 为什么使用循环? 重复执行某段代码 2. while(条件){ 循环体: } 当条件成立的时候就执行循环体,条件不成立,就退出循环,继续执行while后面的语句 3. for ( 初始表达式 : ...

随机推荐

  1. Wpf之HandyControls与MaterialDesign混用之DataGrid

    首先在App.Xaml引入相关资源 <Application.Resources> <ResourceDictionary> <ResourceDictionary.Me ...

  2. 如何提高你使用windows的逼格(windows用成Linux的赶脚)

    一.准备工作 作为一个整洁而有内涵的人,电脑桌面一定要清洁 二.桌面整洁了,软件怎么打开呢?     方案一 方案二.敲重点   我们可以使用终端指令打开windows安装的任意软件: 打开Windo ...

  3. AJ学IOS(06)UI之iOS热门游戏_超级猜图

    AJ分享,必须精品 先看效果图 思路 需求分析 1,搭建界面 1>上半部分,固定的,用Storyboard直接连线(OK) 2>下半部分,根据题目的变化,不断变化和调整,用代码方式实现比较 ...

  4. Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(十二)之Error Handling with Exceptions

    The ideal time to catch an error is at compile time, before you even try to run the program. However ...

  5. 利用SSIS进行SharePoint 列表数据的ETL

    好几年前写了一篇<SSIS利用Microsoft Connector for Oracle by Attunity组件进行ETL!>,IT技术真是日新月异,这种方式对于新的SQL SERV ...

  6. 原创zookeeper3.4.6集群安装

    tar -zxvf zookeeper-3.4.6.tar.gz -C /home/hadoop/ vi ~/.bash_profile export ZOOKEEPER_HOME=/home/had ...

  7. 跑Linux内存占用率的shell脚本

    #!/bin/bash ################################################################ # Mem Used Script # eg. ...

  8. AI vs PS 矢量 VS 位图

    矢量图 AI最大可以放大64000%.不会失真,依然很清晰.原理是不同的点以及点与点之间的路径构成的,不论放大的多大,点在路径在,就可以精确的计算出它的区域.AI中无法直接编辑位图. 位图 代表PS, ...

  9. jarvisoj MISC 取证2

    打开之后一个文件和一个镜像 TrueCrypt....记住他了,再看一眼那个文件,好的,TrueCrypt加密..找密码 把Truecrypt.exe直接dump下来,用efdd解密就行了

  10. async 和 await 例子

    /// <summary> /// C# 5.0 /// .net framework4.5 /// CLR4.0 /// 引入了async 和 await.这两个关键字可以让你更方便的写 ...