从锦囊妙计想到的05–循环结构介绍

知识回顾

重要的事情多说几遍,这样小朋友才能多学会点。

1. 计算机就是个小白痴, 你告诉他一句, 他就做一句, 你没了指示他就 蒙了,  你给计算机的每一句都是指示和命令,这些简称就是指令。 到底啥是计算机, 通俗点, 就是执行你安排给他的指令的机器, 就是计算机(不是特别准确)

2. 这个小白痴, 也有优点, 就是做的快, 你的命令一旦下达, 他能用非常非常快的  速度执行完成, 然后继续等待你的指示(指令, 命令, 锦囊  等等词都可以)

3. 这些指令(命令, 锦囊)要预先安排好, 按照一定方式组织到一起, 然后计算机就可以按照一定的顺序(可以是锦囊里面 指示下一个锦囊在哪里, 或者是那个锦囊)进行执行。  这些预先搞定的锦囊 其实就是一个程序, 程序是啥?  程序就是一系列的指令(就是锦囊)。

4. 计算机在快, 也需要时间, 因此程序执行是需要一定的时间的。 正在执行中的 程序, 就是进程(进行中的程序)。

5. 在编写程序时(就是编写锦囊时)程序还没有执行, 因此有很多事情无法全部预计到, 因此有了各种情况, 因此做锦囊(或者指令)时要预计这些情况, 因此就有了分支(每个分支对应一种情况)。 这个是分支产生的原因。

6. 尽管程序有分支, 但是程序在具体执行时, 到底要执行那个分支? 还是都执行?   答案是, 根据具体的当时实际情况, 会选择一个确定的分支(重要的事情 在说几遍, 是一个 确定的具体的分支)。

7. 程序具体执行时(就是锦囊被执行或者做时), 无论多么复杂, 你看都会一个一个事情(指令被执行, 或者锦囊被执行), 这些一个接着一个被执行的锦囊(指令)是前后连接的, 因此这些连接到一起的 指令流, 好像被一条线穿起来似的, 因此具体的执行过程 一般称为一个线程。

8. 一个进程中可以有很多线程(可能很多人都在 一起执行, 每个人执行都是独立, 都是同时发生的), 但是必须至少有一个线程, 否则程序就啥功能都没有了。

9. 一个程序可以 被执行很多次, 每次执行都是一个 相互独立的 进程, 自然,每个独立进程中的 线程也有很多, 但是可能执行的过程是不一样的。为啥???   因为每次时间的不同, 当时的具体情况不同,造成可能执行不同的分支语句。

说故事

故事1 , 张飞 烙饼(完全纯属虚构)

将曹军打败后, 大家回城准备庆祝,几位将军和主要的人物, 都准备好好庆祝一番, 张飞主动邀请大家去他 帐篷喝酒。 大家知道张飞喜好喝酒,推辞不过, 都来到张的大帐中,酒至半酣, 大家想吃点 主食(差点打成 猪食),大家思来想去一致同意 让张飞给大家亲自下厨做烙饼!!

张飞一听, 连连摇头, 我老张, 哪里会烙饼!!!大家放过在下吧!!

一旁的关羽看到三弟如此,也太丢我们兄弟的面子, 说, 三弟不必着急,为兄会呀, 我来写几个锦囊给你, 你依次执行就可以烙饼了!!!

张飞说好吧, 就依二哥!

关羽吩咐一下, 小的们(好像老妖怪的说法!!)准备笔墨和  数百个 锦囊来

小的们(小妖, 士兵都可以), 准保好东西, 铺好桌案, 关羽提笔在手, 写下如下锦囊。

锦囊1: 打开面粉,和面, 然后锦囊2

锦囊2: 用和好的面, 做一个饼, 然后锦囊3

锦囊3:生火, 把锅烧热, 放上油, 然后锦囊4

锦囊4:把饼放到锅上烙2分钟, 然后锦囊5

锦囊5:把饼翻动一下,在烙2分钟, 然后进行锦囊6

锦囊6:关火,把饼放到盆中, 完成一张饼的烙制, 进行锦囊7

锦囊7: 打开面粉,和面, 然后锦囊8

锦囊8: 用和好的面, 做一个饼, 然后锦囊9

锦囊9:生火, 把锅烧热, 放上油, 然后锦囊10

锦囊10:把饼放到锅上烙2分钟, 然后锦囊11

锦囊11:把饼翻动一下,在烙2分钟, 然后进行锦囊12

锦囊12:关火,把饼放到盆中, 完成一张饼的烙制, 进行锦囊13

锦囊13: 打开面粉,和面, 然后锦囊14

锦囊15: 用和好的面, 做一个饼, 然后锦囊16

锦囊16:生火, 把锅烧热, 放上油, 然后锦囊17

锦囊17:把饼放到锅上烙2分钟, 然后锦囊18

锦囊18:把饼翻动一下,在烙2分钟, 然后进行锦囊19

锦囊19:关火,把饼放到盆中, 完成一张饼的烙制, 进行锦囊20

。。。。。。

锦囊2000:关火,把饼放到盆中, 完成一张饼的烙制, 进行锦囊2001

3个小时过后, 关羽终于写完了2000多个锦囊, 累得浑身发抖, 说某家在城外杀死曹军无数, 也没这么累过。

在一看其他宾客,都等不及者顿 烙饼, 早已纷纷离开, 会自己的 大帐(住所)去吃东西了。

张飞了坏了, 我终于不用烙饼了!!

----------  说明一下, 这里最大问题, 就是写锦囊的人 有太多的重复劳动了, 2000个锦囊, 烙了300多个饼。

若是全军都吃饼, 关二爷, 飞得累的吐血不可。

如下图:

累的像狗一样

-----------

这一天, 就这样了, 大家不欢而散, 关二爷, 也郁闷的回家了, 回家他苦思, 如何烙饼的活, 三弟没累到(因为写完锦囊, 客人都走了, 因此张飞就不用烙了, 但是关二爷, 写了很长很长时间), 我到累了一身是汉, 解决。。。

累极, 二爷进入梦乡, 做了个美妙梦, 醒来, 有了个奇妙的注意, 心想, 明天定要饼烙好, 我又不累!

---------------

第二天,关二爷, 又召集众位, 到张飞哪里 去喝酒, 张飞心想, 喝就喝呗, 反正烙饼 我不会, 写锦囊, 也会累坏大家的, 还有人陪我喝酒,心里很得意。

酒至半酣, 又提到烙饼的事情, 张飞又说, 俺老张(好像李逵的话)不会呀!  关二爷说, 我来写锦囊, 于是写了起来!!

如下:

锦囊1: 打开面粉,和面, 然后锦囊2

锦囊2: 用和好的面, 做一个饼, 然后锦囊3

锦囊3:生火, 把锅烧热, 放上油, 然后锦囊4

锦囊4:把饼放到锅上烙2分钟, 然后锦囊5

锦囊5:把饼翻动一下,在烙2分钟, 然后进行锦囊6

锦囊6:关火,把饼放到盆中, 完成一张饼的烙制, 进行锦囊1

写完, 对张飞说, 三弟去烙饼吧!!

张飞一见, 啊啊啊, 瞬间写完了, 全不像 昨天写了3小时, 没办法只好到了厨房依锦囊工作起来。。。。

8个小时后, 张飞累极, 晕倒在厨房!!

为啥???

我们来看张图!!

死循环

--------------

解说一下, 为啥张飞会累晕!

上图一次执行 1,2,3,4,5,6 这些执行完成后, 继续执行1,2,3,4,5,6, 然后继续是1,2,3,4,5,6  , 能否执行完, 由于 首尾相接, 好似一个环, 就像在操场的环形跑道上跑, 永远没有头。 因此 张飞最后被累晕了!!

-------

像这种, 程序(或者锦囊)执行时, 最后形成首尾相连,执行的叫做循环

环, 形容首尾相连, 就像操场跑道

循, 遵循,依照,  这里就是依照跑道的上一个方向一直进行下去

------

死循环,   就是没有循环的退出, 一直循环, 直到累死或者累晕为止的循环

-----------------------

第二天, 张飞来到诸葛亮那里, 说关二哥, 找了办法戏耍自己, 把俺老张都累晕了。 丞相文明缘由后, 把关二爷的 锦囊稍加修改, 然后给了张飞, 说明天继续请客, 没问题了。到底如何修改的?如下图

循环语句

如上图, 通过添加一个 判断是否到了300张饼, 然后决定是否继续进行, 然后就就解决了死循环的出现。

-----------------------------

总结, 循环, 就是有首尾相连的执行过程

死循环,就是无法退出的循环

正常的循环需要一个判断是否退出循环的 条件判断

若是满足退出条件就退出循环, 不在执行

不满足退出循环 就要继续循环!!

-------------------

酒宴继续, 大家继续喝。。。

 

相关文章

计算机介绍                                  从锦囊妙计想到的01

流程图(分支结构)介绍          从锦囊妙计想到的02

线程介绍                                     从锦囊妙计想到的03

循环结构介绍                             从锦囊妙计想到的05

流程线程总结                             从锦囊妙计想到的06

cpu和线程定义、开始               从锦囊妙计想到的07

分布式计算                                  从锦囊妙计想到的08

分布式中事件和计数                 从锦囊妙计想到的09

内容总结                                     从锦囊妙计想到的10

数据类型,变量简介                从锦囊妙计想到的11

函数和参数                                从锦囊妙计想到的12

用户交互与数据输入输出       从锦囊妙计想到的13

人机交互界面                            从锦囊妙计想到的15 

过程与对象                                从锦囊妙计想到的16

同步和异步                                从锦囊妙计想到的17

顺序打印                                    从锦囊妙计想到的18

数据输入输出                            从锦囊妙计想到的19

屏幕坐标和打印                        从锦囊妙计想到的20

java函数控制输出                     从锦囊妙计想到的21

逐步细化解决复杂问题           从锦囊妙计想到的22

java入门                                    从锦囊妙计想到的23

java复杂过程分析                   从锦囊妙计想到的25

中间辅助功能解决问题          从锦囊妙计想到的26

叠加操作输出复杂图形          从锦囊妙计想到的27

时间和空间                               从锦囊妙计想到的28

编写边测解决问题                  从锦囊妙计想到的29

让程序动起来                          从锦囊妙计想到的30

程序往复运动                           从锦囊妙计想到的31