写给所有人的编程思维-循环篇(for循环)

写给所有人的编程思维-循环篇(for循环)

首页休闲益智恐龙编程2更新时间:2024-05-11

上篇介绍算法编写时,有些东西不仅繁琐而且还有重复。我们知道编程语言设计的初衷就 是为了便捷高效,那么一定有方法能避免重复指令的书写。

可喜的是,“循环”就能解决这一问题。循环就是能够使重复指令的编写变得更为高效的结构。你之前一定遇见过循环。地球绕着太阳转就 是每年你所参与的最大的循环,每365天重复一次。而比这小一点的循环呢?地球每24小时自转一周。循环无所不在,只要事物重复,就有循环存在。

我们来用“循环”处理一些基础的指令,使其变得简单一些。假设你站在距离我5步远的地方,我想让你走过来,我可能会说:

“向我走1步”

“向我走1步”

“向我走1步”

“向我走1步”

“向我走1步”

结果,我会因为发布了这么多条指令而筋疲力尽,而你一下子听到5次相同的要求,可能也会特别烦。

你可能已经猜到,较好的解决方案就是我告诉你:“向我走5步。”

这就用到了循环。循环就是执行重复指令,直至过程结束的一种结构。循环分为两种:以次数控制的计数循环和以环境控制的条件循环(之后会讲到)

通过计数控制的循环,叫for循环。for循环会多次重复指令,不管结果如何。比如说,在我叫你“向我走5步”的时候,你我之间可能隔着一堵砖墙,但如果你真要严格执行我的指令,那是不可能阻止你向我走来的。你可能中途被砖墙给挡住了,但你已经正确地执行了我的指令。

while循环属于条件循环,是通过循环的条件来控制循环次数的。在满足条件之前,循环会持续运行。假设我告诉你:向前走,一直走到我身边。”这次的情形和上面让你向我走5步的情形不同,你可能得花点时间绕墙啦!

我们再想想前面做奶酪三明治的算法,是不是只给一片面包涂抹黄油就花了不少功夫?如果能够运用循环,那效率是不是会提高很多呢?

做个升级版的奶酪三明治

1.拿起一片面包。

2.将面包放在厨房的操作台上。

3.把黄油盒的盖子打开。

4.把盖子放下。

5.握住手柄拿起刮取黄油的小刀。

6.一只手握住小刀的手柄,让刀口向外。

7.放低小刀并在黄油上刮取三秒钟。

8.拿起小刀。

9.使小刀靠近面包片。

10.放低小刀,在面包片上涂抹三秒钟,一共涂抹两次。

11.重复以上1~10步。

注意到了吗?我们只要多加一条指令,就能省下不少时间,也能使奶酪三明治的口感更好。这样我们就完善了算法的前半部分,那么对后半部分还需要做些什么吗?

12.把小刀放在操作台上。

13.拿起一片奶酪。

14.把奶酪片放在涂有黄油的两片面包片中的一片上。

15.再拿来另一片涂有黄油的面包片。

16.将其覆盖在有奶酪的面包片上。

在算法中,我们必须修改一个步骤,来处理另外一片已经抹有黄油的面包片。这样,把循环引入算法中,通过修改一个语句几乎就能完成双倍的编程工作!

或许你已经意识到了,我们把循环加进算法以后,又出现了新的问题。我们没有为制作三明治的程序发布停止重复1~10步的指令!要知道计算机可是完全按照你的指令行事的。步骤11出现了无限循环——这是一定要避免的。按照我们书写的算法,计算机会一直为面包片涂抹黄油,直到没有面包片可用,最后程序崩溃,这样就糟糕了。因此我们必须对程序进行修补,我们可以为步骤11做如下修改:

11.重复以上1~10步,给两片面包片涂完黄油终止。

这样,在算法中,我们就为循环在其完成之前加上了一个特定的条件。现在,我们可以品尝美味的(也是制作高效的)奶酪三明治了。

其他循环

以下是一款流行的扑克牌游戏,你能从游戏说明中找到循环吗?

“钓鱼”游戏规则:

参与游戏人数:2~6人

游戏目标:集齐尽可能多的“册牌”。一册牌即为牌面数字相同花色不同的四张牌(如四个A、四个2)。

1.给每位玩家发五张牌(若只有两三位玩家,则每人发七张牌)。然后把剩下的牌牌面朝下放在中间,成为“池塘”。

2.从发牌者左边的人开始,为第一位玩家,他可以根据手中的牌向另一位玩家要一张牌,要的这张牌一定要和自己手中至少一张牌数字相同,不可以要(或者钓)一张和自己手中牌面数字不同的牌。

3.如果那位玩家手中有被要的牌,则必须交给这位要牌的玩家。

4.成功之后,这位玩家再继续问其他玩家要牌。

5.如果被要牌的玩家手中没有这位玩家所要的牌,他就告诉这位玩家“去钓鱼吧”。于是这位玩家就从中间的池塘中拿出一张牌。然后,就轮到下一位玩家来要牌。

6.一旦玩家手中有四张数字相同花色不同的牌(一册牌),玩家就拿出来,放在自己的面前。

7.如果玩家手中一张牌也没有了,就从池塘中拿一张。

8.当池塘中没有牌时游戏结束,拥有册牌多者获胜。在步骤1中,发牌者给每位玩家轮番发牌时,我们就可以看到第一个循环(循环1)。“先给第一位玩家发一张牌,再给第二位玩家发一张牌,再给第三位玩家……”你可以想象如果指令是这样的,该有多么无聊!其实,只需一个指令,发牌者就会不断发牌,最多可以发出30张,最少可以发出14张。

接着,游戏开始以后,在步骤2中又是一个循环(循环2)。

一位玩家向其他玩家要牌,直至要不到牌的这个过程又是一个循环(循环3)。

游戏结束后,循环1才最终结束。

明日预告:写给所有人的编程思维-条件语句(条件循环)篇

今日内容节选自《写给所有人的编程思维》,作者:吉姆.克里斯蒂安 ,如侵权,联系本号删除

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved