带条件的循环语句 - while


我们在研究for循环的时候说过,如果已知任何动作的重复次数,那么就可以使用for循环运算符来缩短程序。但是,如果不知道重复次数怎么办?这种情况经常发生。
例如,让我们记住一个数字从十进制数字系统到任何其他数字系统的转换:我们需要将数字(然后是除法结果)除以数字系统的底数,直到我们在答案中得到零。我们将共享多少次未知。并且有相当多的程序实现了这样的算法。 
这是如何实现的?
在编程中对于这种情况,有一个带条件的循环运算符。 
在 Pascal 编程语言中,条件循环语句以单词 while 开头并具有以下结构。 <前> <代码>同时 <条件>;开始 循环体 结束 我们已经知道:
- 条件是一个表达式,其结果可以是真或假(如在条件语句中)
- 循环体是需要重复的命令
- beginend 如果循环体只包含一个运算符

运算符的工作原理:
1. 首先,程序计算 while 之后的条件。如果满足条件 (true),则程序执行循环体中包含的语句。
2. 和for循环一样,如果循环体只有一条语句,那么强调循环体的begin和end可以省略。
3.循环体执行完成后,程序返回检查条件,再次检查。
4. 重复这些动作(检查条件——执行循环体)直到条件变为假。
5. 如果在第一次执行该运算符时,条件没有立即满足(假),则程序将永远不会执行循环体。

分析这个运算符的工作,应该清楚循环体必须包含一个影响条件的运算符。
例如,循环可以增加条件中使用的变量的值。

我们称之为“静默计数”
的程序示例 让程序代替我们来计数,例如,最多 10。
该程序应输出短语“开始”和“完成”,并在这些操作之间显示正在计算的数字。
像这样, 
开始
1 2 3 4 5 6 7 8 9 10
完成
使用 while 循环的程序看起来像这样。 <前> <代码>var i:整数; 开始     writeln('开始');    我:= 1;    当我 <= 10 开始时        写(我, ' ');        我+=1; //影响条件中变量变化的运算符        结尾;    写入();     writeln('完成'); 结束。 在这个程序中,我们给变量赋值 i := 1 - the origin
更进一步,只要我们有变量i的值不大于(即小于等于)我们需要的值,我们 
 1 - 显示变量i的值 
 2 - 将变量 i 的值增加 1 - 此运算符影响括号中条件的值。变量 i 递增,即在某个时候条件 i<=10 将变为假。当 i 等于 11 时会发生这种情况。此时循环体将不再执行,程序将执行循环后的下一条语句,即writeln();
writeln('完成');

让我们尝试编写一个程序来解决以下问题:

您必须输入一个数字(小于3,000,000)并确定其中的位数。

解决思路


让我们开始计算一个数字的数字。最初,计数器为 0。我们只需要依次从数字中删除最后一位(这可以通过将数字减少 10 次,使用整数除以 10 来完成),每次我们需要将计数器增加1. 
这样一来,我们把所有的数字都截掉之后,在计数器中我们就会得到数字中的位数。
换句话说,该算法可以表述如下:
直到数字不为零,将其减少 10 次并将计数器增加 1。 <头> <正文> 该程序将如下所示。 <前> <代码>var n,计数:整数; 开始    阅读(n);    计数:= 0;    而 n <> 0开始        计数 += 1;         n := n div 10;    结尾;     writeln('Number - ', n, ' 包含', count, ' digits'); 结尾。 你需要牢记这个程序,因为。在此基础上,解决了其他许多与数字计算有关的问题。

数 (n) 计数器
123 0
12 1
1 2
0 3

任务

程序的输入是数据流—以零结尾的整数序列(零不包含在序列中)。 你需要找到这个序列的元素的总和。
 
求解算法
<前> 总和=0 input x // 输入第一个数字 while x != 0 // 条件中设置了输入结束标志,  nc // 也就是说,直到您输入零    sum = sum + x // 你可以用原始数字做一些事情。 // 您可以为某些条件添加数字检查等。    input x // 输入下一个数字 节 print sum //结果输出