while循环--北太天元学习7
while循环
北太天元学习5和6,我们看到for循环对于运行对于给定次数的循环是很有用的。
这个for循环的缺点是程序员必须提前知道循环运行多少次。为了对循环次数事先未知的代码段
进行循环执行,我们可以使用while循环。while循环将循环执行被关键字while和end圈定
特定代码段,直到满足某个条件后跳出循环。
while循环的一般形式如下:
while 逻辑表达式
特定代码段
end
逻辑表达式是一个true或false的语句, 只要逻辑表达式返回值为true,就执行循环。
如果逻辑表达式返回值为false,则北太天元将跳过特定代码段,并继续执行end之后的语句。
例如:我们对一个物体的温度随着时间的变化进行数学建模, 假设就是刚煮好的一个鸡蛋,
温度是 T(0) = 100度, 室温是20度, 下一个时刻和当前时刻的温度关系由下面的式子
给出 T(n+1) = T(n) - 0.2*(T(n) - 20);
求当 n 是的多少的时候, 温度降到37度以下(包含37度)?
while 循环代码如下:
T = 100;
n = 0;
while T > 37
n = n + 1;
T = T - 0.2*(T - 20);
end
fprintf("当n=%5.0f时,温度T开始降到了37度以下, 此时温度T=%4.2f\n",n, T);
注意,如果我们把 逻辑表达式由 T > 37 改成了 T>19, 你会发现这个条件总是满足,
北太天元将会陷入了无限循环中,原因是 上面例子给出的鸡蛋的温度在n趋向于无穷时是
单调递减趋向于20, 也就是说温度都是大于20的,因此 上面的while循环的跳出条件
总也不满足(T>37总也不会返回false)。 此时后,你可以使用 ctrl+c 中断程序执行。
我们通过了一定的分析才能发现 T 总是大于20的,如果没有这个分析,我又担心会陷入无限
循环里,把 T>19 改成 T>19 && n < 2000 两个逻辑表达式的组合,其中 && 表示逻辑且。
组合逻辑表达式北太天元什么时候返回true 呢?
p && q 当且仅当 p 和 q 都为true 时返回 true;
p || q 当且仅当 p 和 q 至少有一个为true 时返回 true;
因此,即使碰到 T > 19 总是成立的时候,当 n < 2000 时,T > 19 && n < 2000 返回false,
此时while循环也会终止。
我们是使用for 循环和while 循环呢,有时候都可以,就看你自己的喜好了。
停止北太天元脚本
当北太天元运行完脚本或者命令后,您应该看到>>出现在命令的下一行, 不然说明
还在运行中,而且在图形界面的左下角会有一个小图标不断从 . 变到 .. 再变到 ...
再变到 . 如果您厌倦了等待这种情况发生,请单击命令窗口并使用
“Ctrl+C”停止运行脚本或者命令。刚才,我们说得while循环陷入死循环也会
出现这种长时间等待的情况,此时请用"Ctrl+C"停止程序或者命令。
注释代码
随着代码变得越来越复杂,注释变得越来越重要。即使是简单的代码,它在回忆程序的意图
时非常有用,尤其是当您需要在编写完脚本文件后的一段时间内返回查看脚本文件。
假设我们想要编写一个实现除法算法的北太天元脚本。
该算法取一个非负整数a,一个正整数d,并找到唯一的整数q和r
即a=dq+r且0≤r<d。换句话说,我们想将a除以d,并找到唯一的商q
和余数r。我们有时用表示mod(a,d)来表示余数。
我们简单地应用除法算法来找到这些整数。为了找到q和r,我们重复
从a中减去d,直到结果小于d但非负为止。
%计算a除以d时的商和余数。
%输出商(q)和余数(r)
a=20 %a为初始数字, 这是单行注释
d=3 %d是除数
r=a; %将r初始化为a
q=0;
/*
这是多行注释
商q是从r中减去d的次数
下面开始while循环
*/
while r>=d %循环,直到r小于d
r=r-d; %r减去d
q=q+1; %q加1
end
fprintf(" %3.0f = %3.0f x %3.0f + %3.0f\n", a, q, d , r);
fprintf(" q = %3.0f , r = %3.0f\n", q, r);
注意,20=3x6+2,所以我们应该有一个q=6的商和r=2的余数。
顶部代码包含一个注释,描述代码的作用以及输出的值。