要学习的最终核心编程控制流构造是条件语句( if 和 if/else )。
一个 if/else 当且仅当提供时,语句执行“if”代码块测试对于程序到达声明时的世界状态是正确的。否则程序执行“else”代码块。
if( 测试 ){
如果是代码块
} else {
否则代码块
}
为了了解条件语句可能派上用场的地方,让我们编写一个让Karel反转锥体秒的程序。如果一个广场以前有锥体 ,卡雷尔应该拿起它。如果一个方格没有锥体 ,卡雷尔应该放下一个。
注意一个 if 声明不需要有 else 块 - 在这种情况下,语句操作类似于 while 只执行一次的循环:
if( 测试 ){
如果是代码块
}
最后一个例子使用了一个新条件。以下列出了卡雷尔所知道的所有条件:
| 测试 | 相反 | 它检查什么 |
|---|---|---|
frontIsClear() |
frontIsBlocked() |
卡雷尔面前有墙吗? |
beepersPresent() |
noBeepersPresent() |
这个角落有锥体吗? |
leftIsClear() |
leftIsBlocked() |
卡雷尔左边有墙吗? |
rightIsClear() |
rightIsBlocked() |
Karel有没有墙? |
beepersInBag() |
noBeepersInBag() |
在Karel的包里有锥体吗? |
facingNorth() |
notFacingNorth() |
卡雷尔面向北方吗? |
facingSouth() |
notFacingSouth() |
卡雷尔面向南方? |
facingEast() |
notFacingEast() |
卡雷尔面向东方吗? |
facingWest() |
notFacingWest() |
卡雷尔面向西方? |
恭喜!您现在知道所有核心编程控制流程块。当你使用Karel,方法,while循环,for循环学习它们时,if / else语句在几乎所有主要语言(包括Java)中都以相同的方式工作。
现在您已经拥有了构建块,您可以将它们组合在一起,为更复杂的问题构建解决方案。在很大程度上,编程是通过计算机解决问题的科学。由于问题通常很困难,因此解决方案以及实施这些解决方案的程序也很困难。为了使您更容易开发这些解决方案,您需要采用一种方法和规程,将复杂程度降低到可管理的规模。