你好, 欢迎｡ 在这节课里, 我想讲一下while和while循环｡
我们已经讨论过for循环, 它本质上允许你重复代码｡
c中还有其他的while和do while结构, 它们用不同的语法做同样的事情｡
因此while循环是一种重复一组语句的机制,
只要指定的逻辑表达式求值为真, 它就允许执行继续｡
所以在这里更多的是相同的｡
就像if陈述式会执行特定程式码一样, while陈述式也会根据布林评估多次执行特定程式码｡
你在for循环中可以做的所有事情, 你都可以在while循环中做,
只是语法不同｡
while循环是这样的｡
在一个非常高的层次上, 如果我们在看伪代码, 当这个条件为真时,
继续这样做｡
所以把它与一个更世界化的例子联系起来｡
基本上, 当你饿的时候, 吃三明治之类的东西｡
所以你要重复代码｡ 你饿的时候会一直吃很多三明治｡
while循环的一般语法如下所示｡
这里显示的是正文中一条语句的语法, 所以你不需要提供括号或花括号｡
我倾向于在同一个术语中使用术语花括号和括号｡
下面是一个语句与多个语句的语法对比｡
多个语句, 你必须有那些括号, 单个语句,
你不需要, 它们是可选的｡ 你不能拥有它们, 或者你不必拥有它们｡
表达式放在括号内, 就像for循环和if语句一样｡
这里的表达式与for循环的不同之处在于它是一个单一的退出条件｡
只是表达而已｡ 不初始化循环控制变量｡
不要修改括号中的循环控制变量｡
这只是表达式, 只是退出条件｡
while循环的继续条件在开始时测试｡
这是循环的顶部｡
这意味着这是预测试循环｡
这意味着它可以在体内执行0次或者多次｡
同样, 这也是相关的, 因为do while循环做的事情有点不同｡
如果表达式的开头为false, 则不会执行主体中的任何循环语句｡
这就是为什么它是最高测试｡
所以如果你回答第一个问题不我不饿, 那你就永远不会吃三明治.
你要直接进入咖啡或者下一行代码｡ 你不会进入循环的主体｡
如果循环条件开始时为true,
则循环体必须包含一个机制, 以便在循环结束时更改此条件｡
否则, 你将有一个无限循环｡
所以在for循环中, 你可以在一条语句中修改循环控制变量, 这和while循环是一样的,
只不过你必须在while循环体中修改｡
while循环将初始化某个地方的循环控制变量, 然后在代码体内部进行修改.
正如我提到的, while循环可以做for循环所做的一切, 只是语法不同｡
同样, for循环也更短｡
你可以在一行中做所有的事情, 而while循环你必须在不同的行中做这三件事｡
所以在这个例子中,
我们有一个int count等于0｡ 这是循环控制变量｡ 这在while循环语句之外｡
如果你使用for语句, 这将进入for循环, 就像第一个分号之前一样｡
这就是初始化循环控制变量地方
然后是while关键字, 括号里是布尔表达式.
这相当于for循环, 即第二个分号前面的第二个语句｡
所以这就是你要检查的真假｡ 如果它是真或假, 你进入循环的主体｡
如果count小于等于5, 那么你将打印出count｡
接下来的一行代码非常重要, 因为它修改了循环控制变量｡
你必须这样做, 否则你永远不会退出循环, 因为在顶部的条件说,
如果计数小于等于5｡ 如果计数始终等于1, 则会出现无限循环｡
所以加和计数非常非常重要｡
加号加计数记住是一个增量运算符｡
它只是说计数等于计数加1｡
此循环将运行5次｡
它将以计数等于1､
计数等于2､ 计数等于3､ 计数等于4和计数等于5的方式运行｡
一旦count等于6, 它就会跳出循环,
不再退出主体中的任何语句｡
同样, 您应该考虑for循环｡
它只是循环控制变量, 而循环控制变量的修改不在实际循环的声明中｡
它不像for循环那样全部在一行中｡
这是另一个控制逻辑以结束循环的示例｡
在我展示的第一个例子中, 这是一个计数器控制循环｡
它将始终执行相同的次数, 即5次｡
在下一示例中, 这是循环可以执行100次或0次的示例｡
我们在while键中计算的num不等于-1的条件,
完全取决于用户输入的内容, 因为num就是用户输入的内容｡
所以这个循环可能执行0次, 也可能执行100次｡
这完全取决于键盘的输入｡
这就是所谓的哨兵控制回路｡ 它不是反控制的｡
它是基于逻辑和可变的｡
所以当num不等于-1时, num会存储我们在键盘上输入的值｡
如果用户从未在键盘上输入负1, 则此循环将永远不会退出｡
所以这里的语法和while的语法是一样的｡
我们的循环控制变量是num｡
我们初始化顶部的0, 然后读入修改它,
看看我们是否会根据用户在键盘上输入的内容进入循环｡
然后在while关键字的括号内, 我们实际上检查它是否是负1｡
然后在while循环的主体中, 有括号,
括号不需要在那里, 因为只有一个语句, 但我喜欢把它们放在那里.
然后我们也读取下一个输入并存储在num中｡
如果用户为下一个输入输入负1, 它将跳出循环｡
如果他们不这样做, 它将继续执行, 并要求他们输入信息｡
do
while循环与while循环中的for循环稍有不同, 因为它被视为测试后循环｡
因此在while循环中, 当条件为真时, 主体将被执行｡
在do while循环中, 第一次无条件地执行主体,
do
while循环因为测试在底部, 意味着你总是至少执行一次循环.
你总是会执行一次,
至少一次, 可能会多次, 但总是一次, 永远不会是0.
因为测试出口的条件在底部｡
这称为测试后循环｡ 它也被称为出口控制循环｡
因此, 如果希望循环至少进入一次, 则应使用do a
while循环｡
通常情况下, 你不需要使用do
while循环, 因为如果你愿意, 你仍然可以在for循环中做同样的事情,
你只需要把代码放在循环之外｡
因此, do while循环并不是真正必要的, 但在某些情况下, 您可能需要使用它｡
在初始执行之后, 仅当条件为true时才执行主体｡
所以在第一次循环之后, 它会像普通的循环一样运行｡ 如果条件为false, 它将跳出｡
这就是它的样子｡ do在顶部,
然后条件的测试在底部, 带有while关键字｡
do是一个新的关键字, 然后你将有括号或没有括号, 这取决于你是否在主体中有多个语句｡
如果正文中只有一条语句, 就不会有括号｡
你只需要在循环的顶部执行然后在循环的底部执行while.
在while的括号里, 你会得到布尔值, 它是你要检查的条件｡
但同样, 因为条件在底部, 所以总是保证至少执行一次语句｡
左边的例子是一条语句, 右边的例子是多条语句｡
所以你有括号, 花括号｡
在第二个例子中, 你说你可能有类似密码提示的东西, 读取用户输入,
而输入不等于密码｡
但你总是会提示输入密码至少一次｡
于是再做一个while循环的例子｡
这里的第一个例子是一个循环如何执行一次或多次的例子, 但永远不会0｡
这完全取决于用户输入的内容｡ 它总是至少执行一次, 但这是从键盘阅读输入｡
我们看到scanf函数｡
只要用户不输入20, 他们就会执行这个循环｡
while循环也可以是计数器控制循环, 这意味着它将执行一定的次数｡
在本例中, 它将执行4次｡
我们有整数等于4｡
然后我们在顶部有do, 然后我们有括号, 因为我们在主体中有多个语句｡
我们在程序体中递增循环控制变量, number plus plus｡
然后检查的条件仍然在底部｡ 因此, 您将执行此操作4次｡
您会注意到while关键字不必与右大括号在同一行上｡
通常情况下, 它是, 但它不一定是｡
底部的while关键字也以分号结尾, 您也应该注意到这一点｡
我们已经了解了这些循环for循环while和do while｡
您应该使用哪些循环？
首先你要决定你要使用什么样的循环, 你要它是预测试还是后测试？
您希望它至少执行一次, 还是不希望至少执行一次？ 如果你想让它至少执行一次,
那么你就要使用do while｡
如果这不是一个条件, 那么你可以使用for或while或do while｡
因此, 在大多数情况下, 当您决定使用哪种循环时,
它始终是一个预测试循环｡ 你应该远离do while循环｡
在大多数情况下, 这是一个更好的选择｡ 这样更容易阅读｡
最好在循环之前查看一下｡
只是不要开始循环, 最好检查顶部的条件｡
出于可读性的考虑, 如果循环处于测试阶段, 那么它将更加直观｡
所以在开始时进行循环检查, 使用for或while｡
在许多情况下, 如果最初没有满足测试, 则完全跳过循环是很重要的｡
同样, 因为是这种情况, 测试应该在顶部｡ 您不应该总是执行至少一次｡
在大多数情况下, 你可能总是不想执行｡
所以你应该用一阵子｡
现在的问题归结为我该用哪一种, 一会儿一个｡
这实际上是个人喜好的问题｡ 这没关系,
因为就像我在这节课开始时说的, 你能在一段时间内完成的事情, 你也能在一段时间内完成｡
所以如果你更喜欢for循环,
for有时会更快一些, 因为所有的循环控制修改, 初始化和退出条件都可以在一行中｡
但这真的取决于你
通常, 我会用for循环来实现计数器控制的循环｡
但同样, 你可以使用相同的｡
如果你真的想使用for循环, 让它看起来像while,
你就没有第一个和第三个表达式, 你只有一个表达式.
所以for分号测试分号和while测试是一样的｡
这只是向你们展示了while中的for可以做同样的事情, 只是稍微改变一下语法｡
如果你想实际使用while循环,
但又想让它像for循环一样运行, 那么你可以在它前面加上初始化, 并在主体中包含update语句｡
所以你要做的就是这样的事情通常你总是在while循环中这样做｡
但这是一个for循环的等价物｡
初始化是在循环外的控制变量, 即循环控制变量｡
test的条件在括号内, 然后在while循环体中更新循环控制变量｡
这与for循环初始化测试更新和主体相同｡
没有区别｡
同样, 正如我提到的, 我使用for循环可能更多地用于计数器控制循环｡
但我会根据我那天的感觉, 交替使用for和while｡
所以如果你想在一行中初始化和更新一个变量, for循环可能更合适｡
当条件为其他情况时, while循环更好｡
同样, 计数器控制循环, 哨兵控制循环可能是while循环｡
这是一个while循环的例子, 它有一个sentinel控制循环和一个for循环,
它又在做同样的事情, 或者一个for循环, 它是一个计数器控制的｡
虽然循环可以根据用户输入的内容运行多次, 但for循环是由计数器控制的｡
所以这是在做的同时｡ 希望这是清楚的｡
请熟悉这些循环, 因为您经常需要重复代码｡
在这节课中, 我们将介绍一些嵌套循环,
以及使用break或continue退出循环的不同机制｡
-谢谢—谢谢