你好, 欢迎｡ 在这节课中, 我想谈谈决策,
特别是if语句｡
因此, c编程语言以if语句的形式提供了通用的决策能力｡
我们知道到目前为止的声明是什么｡
现在我们在它前面加一个关键字, 然后把它放在括号里.
所以它看起来是这样的｡
If关键字, 然后在左括号和右括号内,
你有一个表达式｡
我们知道什么是表达式以及语句之间的区别｡
该表达式的计算结果必须为true或false｡
然后你有一个程序语句｡
这是最简单的if语句｡
所以如果你说expression, 然后是程序语句, 你可以用一些伪代码来代替, 比如if it
is not raining
then I will go swimming.
如果你把这个伪代码翻译成c,
伪代码不是真实的的语法, 它英语语言描述代码的一种方式｡
所以如果我们用c语言写一个if语句, 你所要做的就是把条件放在括号里, 它不是在下雨｡
然后在if语句之后是单个语句或多个语句｡
如果有多个语句, 则应将它们放在大括号内｡
但在这种情况下, 我们有一个声明｡
所以在这个体里面if语句是I will go swimming.
所以必须不下雨才能执行我去游泳｡
这就是它在控制流中的原因｡ 你不是一直在执行我去游泳.
这取决于条件和它是真还是假｡
因此, 在这种情况下, 您可能会跳过代码｡ 所以你没有一个连续的过程｡
因此,
if语句用于规定基于指定条件的程序语句的执行, 这是一种决策能力｡
所以你只有在不下雨的情况下才去游泳｡
只有在没有下雨的情况下, 才执行if语句主体中的代码｡
if块中的复合语句需要使用大括号｡
比如说, 如果不下雨, 我就去游泳, 或者在你去游泳之前,
你要穿上泳衣, 穿好衣服,
然后去游泳｡
那你就得把那些花括号放进去｡
同样, 我们会有具体的例子来说明｡
但如果只有一条语句, 则不需要花括号, 它们是可选的｡
你可以提供或不提供｡
我通常在所有的if语句中提供花括号, 只是为了保持一致｡
下面是一个c编程语言中常见的if语句的例子｡
在本例中, 我们声明了两个变量, 一个名为score, 另一个名为big｡
分数是95, 大如90｡
在这里, 我们在主体中只有一个简单的语句,
它没有括号｡ 基本上, 我们是说, 如果分数大于大,
分数就是95｡
所以如果95大于90, 它就是一个布尔表达式｡ 在这种情况下, 它的值为true.
所以屏幕上显示的是头奖｡
然后我们有同样的例子,
除了我们用了花括号, 因为在if语句的主体中有不止一个语句｡
在下面的例子中, 如果score大于big, 我们用一个左大括号开始if语句块,
用一个右大括号结束if语句块｡
它引用if语句的主体｡
在这个例子中, 我们有两个语句｡ 我们先将分数加1, 然后显示您获胜｡
请注意这里的区别, 括号与非括号｡
你仍然可以把括号放在一个语句中, 它们是可选的｡
但如果有多个语句, 则需要使用括号｡
左括号表示块的开始, 右括号表示块的结束｡
If语句非常简单,
只要在表达式的圆括号内, 在左括号和右括号中添加一个If关键字即可｡
当if语句变得更加复杂时, 这些表达式可能会变成多个表达式｡
所以你可以开始使用一些我们学过的逻辑运算符,
我们可以使用and, or, or｡
因此, 如果分数大于大, 则需要其他东西｡
所以我们可以在一个if语句中有多个问题, 或者我们可以把它们分解｡
但这是一个基本的if语句示例, 语法也很基本, 在if语句的末尾看不到分号, 只有在printfs的末尾｡
所以你只有结束和开始括号｡
现在, 您还可以在if语句中添加else子句｡
这是由c支持的｡
因此, 您可以通过一个小的附加项对其进行扩展, 从而使您具有更大的灵活性｡
比如说, 如果今天的雨比昨天的雨更大, 我会带着雨伞｡
如果雨不像昨天那么大的话, 我就去拿我的夹克｡
所以else是指当问题的答案为假时会发生什么｡
不然我就拿上我的外套然后去上班｡
因此, 这正是if else语句所提供的决策｡
当事情是真的时候要做, 当事情是假的时候也要做｡
所以你有if, 关键字, 然后在括号里你有布尔表达式,
它的值是真还是假｡
然后你有一个语句, 如果它为真, 它就会被执行.
否则, 使用else关键字｡
它是可选的, 您并不总是需要提供else｡
只有当布尔表达式为假的时候, 你才需要执行语句二.
同样在这个例子中,
我们在if块或者else块的主体中没有任何括号, 因为我们只有单个语句｡
如果在其中一个主体中有多个语句, 则必须为开始和结束提供一个括号｡
这里有一个带if的else语句的例子｡
在这个例子中, 我们要确定一个数是偶数还是奇数｡
所以我们有我们的主要功能, 这是我们进入｡
我们创建了几个变量, 一个叫做待测数, 一个叫做余数｡
它们都是int类型｡
我们在同一行声明它们, 并以逗号分隔｡
我们尚未初始化它们｡
在下一行代码中, 我们将打印一些输出, 要求用户输入一些信息｡
然后使用scanf函数｡
我们阅读一个整数, 这样我们就可以计算percent i或者percent d｡
我们没有阅读字符串或任何单词｡
所以我们要把&号放在变量前面, 我们要在那里存储数据｡
所以用户要输入一些数字来测试｡
然后我们还要得到他们在2之前输入的余数, 因为它能告诉我们是偶数还是奇数｡
如果你能把一个数除以2, 余数是0,
那就意味着它是一个偶数｡ 否则就奇怪了｡
这个程序最重要的部分是我们使用条件的底部｡
到目前为止, 每一行都已执行｡
但是当我们在括号里有一个if语句和一个条件时, 如果余数等于等于零, 你会注意到你总是要用等于来比较,
你就不用等于了｡
请记住, equals是指赋值, 将数据赋给一个值｡ 等于等于是比较数字｡
我们在比较一个余数变量和零｡
如果是零, 我们就打印出偶数｡
Else, 关键字在下一行, 我们输出odd.
你会注意到if或else中没有括号, 因为只有一个语句｡
让我们运行它, 看看它在代码块中是如何工作的｡
这是我们的计划 就像我刚才提到的, 它的描述完全一样｡
我们只需要打印出偶数或奇数｡ 让我们继续建造这个｡
我们要确保没有任何错误｡
这里有几个额外的换行符｡
现在当我们运行这个程序时, 我们基本上可以得到偶数或奇数的输出｡
它会询问我们要测试的数字｡ 我输入33, 这很奇怪｡
它会说这个数是奇数｡ 这是一个非常简单程序
这里重要的是, 您没有执行某些代码｡
如果余数等于0, 你要么执行第19行｡
如果不是的话, 你就去21号线｡ 括号也是可选的｡
您可以将它们放在那里, IDE将为您执行一些自动完成操作, 这非常好｡
但是, 我通常喜欢添加它们, 因为它们很容易,
而且使代码更具可读性｡
这取决于您的格式样式｡
有些人喜欢在else语句的开头加上括号, 就像这样｡
有些喜欢把它放在其他行上, 这取决于你的格式如何｡
实际上, 这可以在IDE中通过格式化代码自动完成｡
但这是同样的工作方式, 它几乎更容易阅读｡
如果你需要添加更多的语句,
你可以很容易地添加它们, 而不必担心添加括号｡
所以我习惯了加括号｡
同样, 这里的另一个重要的事情是这个等于｡
你不能平等｡ 如果你做equals并运行这个程序, 你会发现有很大的不同｡
所以一个非常简单的if else语句, 非常非常有用｡ 如果余数是奇数, 你只会执行第19行｡
否则, 您将执行第22行｡
让我们再多讨论一下else if语句｡
所以你也可以有别的｡ 如果是这样的话, 我们已经了解了如果, 我们已经了解了其他｡
您可以通过向else子句添加if语句来处理其他复杂的决策｡
所以这就像问了一个额外的问题｡
如果初始if语句中的条件为假, 你不会真的执行, 你会问另一个问题.
如果表达式1为真, 那么你有一些代码要执行｡
否则,
否则, 你说如果在它之后, 这是完全法律的的｡
这是else语句中的if语句｡
然后执行程序二｡ 否则, 执行其他操作｡
这就把if语句从二值逻辑判定扩展到了三值逻辑判定｡
你在问两个问题｡
如果第一个问题的答案是真的, 你就执行程序语句一｡
然后你问第二个问题, 只有当第一个问题是真的或第一个问题是假的｡
如果这是真的, 那么你实际上是在执行其他代码｡
所以这里有三个分支,
三行独立的代码, 可以执行, 也可以不执行.
程序语句1､ 程序语句2或程序语句3｡
您可以重写此代码以使用else if｡
现在if在单独的一行, 但是你可以这样做, if表达式1做其他的if｡
您不必将其放在单独的行中｡
它可以是一行, 然后在它的外面有一个else.
唯一棘手的是else子句将要被执行｡
和这是一回事｡ 所以这个else子句将对这三个变量执行｡
所以在第一个例子中有点混乱, 因为看起来第二个else只有在另一个if为false时才被执行｡
但是如果第一个表达式也是假的, 它就真的被执行了｡
如果你在这里有方括号, 你实际上可以嵌套那些if语句｡
而最外层, 最后一个else只会根据第二个if的问题答案来执行｡
当我们讨论嵌套if语句和嵌套循环时, 我们将进入嵌套｡
嵌套的if语句只是把if和if放在一起, 你必须小心else子句的位置,
因为else必须与最后一个if语句相对应｡
这是另一个例子, 我们将尝试实现sign函数｡
我们将返回-10或1｡
这是一个三层评估｡
这个程序在主例程中所做的是我们创建了一对int, number和sign类型的变量｡
我们让用户输入一个数字, 并将其存储在number变量中｡
如果这个数小于0, 符号就等于-1｡
否则如果这个数等于0, 它就会是0｡
否则, 如果这两个都是假的, 它的符号将等于1, 意味着它是正的｡
这是一个else if非常有用的例子｡
你可以有多个其他的如果｡ 我们只看到一个, 但如果我们想的话, 我们可以有100个｡
如果number等于2, 则为else;如果number等于3, 则为else;如果number等于4, 则为else｡
你也可以看到这里没有使用括号,
但是如果正文中有多个语句, 我们会使用括号｡
当你使用if语句的时候, 你也应该注意到你会用到很多逻辑运算符,
比较运算符和关系运算符｡
所以你在这里用了小于号｡ 请记住, 逻辑运算符是“与”符号｡
其中两个是and or和关系运算符, 用于比较值｡
所以当你做小于等于大于的时候｡
当你在if语句表达式中使用数字的时候, 经常会用到这些｡
当你使用&符号时, 你实际上是在问多个问题｡
如果这是真的, 并且这是真的, 或者如果这是真的, 或者｡
这也是一种减少其他else if语句的方法｡
所以如果number小于0, 你可以重写这个代码｡
而且,
如果你想拥有这个标志, 你不能实际上是现在的样子｡
但是如果你可以在这里加上一个&, 你可以说如果数字小于等于0,
那么符号就是-1, 0｡
我的意思是, 你不能具体地这样做, 但你可以看到你可以在这里添加多个问题｡
所以我们将面临一个特殊的挑战, 我们要写一个使用if语句的程序｡
这些都是很好的例子｡ 您可能希望将这些示例放到IDE中, 然后看看会发生什么｡
但是, “如果”又是一种问多个问题的方式｡
巢状if else陈述式｡
嵌套if l语句意味着可以在一个if或else if语句中使用另一个if或else
if语句｡
所以这就是为什么它被称为嵌套｡
你可以在里面使用多种东西, 你可以一遍又一遍地这样做｡
您没有看到的嵌套数量没有限制｡
所以语法看起来像这样｡
如果一个布尔表达式等于true,
那么在它里面, 当你做嵌套的时候, 通常, 你要用括号｡
即使你不必为单个语句, 因为它使它更可读｡
所以如果布尔表达式1为真, 那么在里面你说如果布尔表达式2为真｡
除非布尔表达式1为真, 否则如果布尔表达式2,
您实际上不会执行｡
然后在布尔表达式2的主体中, 如果这是真的, 你将执行代码｡
一个嵌套的if语句的例子看起来像这样｡
如果游戏结束等于0, 然后里面如果玩家移动等于你, 那么你就得到了一个指纹.
这里的关键是注意到没有括号, 这有点难理解｡
唯一的方法是通过缩进, 这是在代码块中编写if语句时要做的另一件事｡
您总是希望缩进块, 因为这样更易于阅读｡
想象一下,
如果它没有缩进, 匹配else和if会有多困难｡
因此, 使用缩进, 但也可能使用括号, 括号有助于使它更可读｡
请记住, 可读性很重要, 因为可读性可以帮助您更快地找到并修复错误｡
所以在这种情况下, 我们只会在player
to move等于u game over等于0的情况下执行你的移动.
我们只执行屏幕上显示的我的移动如果game等于0但player
to move不等于u.
最后, 我们只在博弈不等于0的情况下执行博弈结束.
所以我们有三个条件来打印出三个不同的语句｡
你可以写, 如果博弈结束等于,
等于, 和号, 移动的参与者等于, u.
但问题是, 你的其他我的移动可能不正确,
因为你仍然需要比较球员的移动｡
所以有时候你可以用&号来简化代码, 有时候你不能｡
在这种情况下, 您不能这样做, 因为第一个else在嵌套的if中｡
因此嵌套是非常适用的, 您将使用它,
所以要熟悉它｡ 同样, if语句的语法非常简单｡
布尔表达式内部, 然后用括号对单个语句进行括起｡
否则, 请使用方括号｡
对于单个状态, 不使用括号｡ 否则, 请使用括号｡
在程序中还有第三种提问方式｡
这叫做条件运算符, 我们在讲运算符的时候也讲过,
但还需要进一步理解.
所以条件运算符是一个非常独特的运算符｡
它不像C语言中的其他运算符｡
c语言中的大多数运算符不是一元就是二元｡
一元意味着运算符采用单个参数或单个操作数｡
二进制意味着它们的两边都有操作数｡
所以加运算符是二元运算符因为你要做5加3, 两个操作数.
负数是一元运算符因为你说像-3｡
还有第三种选择, 三元运算符, 它有三个操作数.
这是条件运算符｡
你有两个符号来表示这个运算符, 这个条件运算符｡
是问号和冒号｡
它实际上等同于if else语句｡
它看起来像是第一个操作数放在问号之前, 这就是条件,
前面例子中的布尔表达式.
然后问号和冒号之间的第二个东西基本上就是if语句的主体如果if语句为真的话.
冒号是第三个, 如果条件的值为false, 你就可以执行这段代码了,
这就像else语句的主体.
所以这个转折运算符只不过是一个if else语句, 只是一个速记符号,
你可以写得更快｡
这里的区别还在于没有方括号, 所以在问号或冒号之后的主体中只能有单个表达式或语句｡
因此如果条件运算符求值为两个表达式中的一个, 则取决于逻辑表达式是否为, 取决于条件是否为真｡
如果条件为false, 则计算表达式2｡
因此, 它的行为就像if else语句一样｡
还要注意运算符与操作数的关系｡
问号字符跟在逻辑表达式条件后面｡
问号的右边是两个操作数, 表达式一和表达式二｡
它们代表了选择｡
如果条件的计算结果为true, 则运算产生的值将是表达式1的值｡
然后是表达式二的值如果它为假｡ 所以我说的是真的｡
让我们看一个例子｡
看起来很有趣, 但是这是说如果x等于y大于7, 那么这是在做什么？
难道是在做作业？
X等于Y｡ 所以如果x是5,
y是9, 它会说如果x大于9, 它会把数字设为25x｡
否则, 它会将x设置为50｡
所以先看会有点混乱｡
这样做的结果是, 如果y大于7, 则将x设置为25, 否则设置为50｡
所以这是一个简单的方法来给表达式赋值｡
X等于y大于7｡
如果y大于7, 则x等于25, 否则为50｡
这就是为什么x等于有一个色情片｡
所以三元运算符和条件在赋值的右边, 这就是你通常的用法｡
你说x等于, 三元运算符的结果｡
所以整个三元运算符是y大于7｡ 所以它只是说如果y大于7, 就是25,
否则就是50｡ 然后你把它赋给x｡
这就是你通常使用它的方式｡
这和使用if语句是一样的｡ 如果y大于7, 则x等于25, 否则x等于50｡
但它的代码要少得多｡
这个条件运算子的限制是,
您只能使用条件运算子写入两个变数, 一个是最大值, 另一个是最小值｡
你不可能做一大堆｡ 所以这是一个小的限制｡ 通常用于分配任务｡
所以讲了很长的课, 很多不同的例子｡
当我们进行挑战时, 这将更适用｡
但是if语句要用到吨, 而且它们真的,
真的很容易学会｡ 在你知道它之前,
你会知道语法, 就像你的手背,
括号, 括号, if else关键字｡
有时候, 你会用到这个条件运算符｡
同样, 当你在c语言中变得更高级的时候,
你会开始意识到,
哇, 这个if语句花了我很长时间来写, 也许我可以用一个带问号和冒号的条件运算符写在一行中｡
同样, 对于根据条件分配变量非常有用｡ -谢谢—谢谢