从锦囊妙计想到的12–锦囊打包与函数和过程

这里是“从锦囊妙计想到的12”, 本文是通过给锦囊打包, 从而引出函数(或者过程,子程序)的概念,从而对指令部分进行细化分析。

一. 给众多小锦囊打个包

还是说个故事,依然还是烙饼的故事(谁让这个东西好吃呢)。

关羽写锦囊, 张飞烙饼, 已经持续很多天了, 就像柯南永远也长不大那样,故事就这么一个场景, 反正, 人家柯南每次都不一样, 我们每次内容说明的知识也是不一样的。

关羽已经吃惯了张飞烙的大饼,每天都要来蹭一顿, 每天关羽都要写呀写呀一些锦囊,然后老张去烙饼。

最近老有人来蹭饭因此每次烙的饼数不一样了, 这样关羽每次都得重新写一下, 关羽很郁闷。 后来关于发现数量的变化可以通过增加一个锦囊, 在锦囊里面放一个装豆子的袋子就解决了。

不过每次锦囊数量很多,拿起来很不方便, 然后还得整理一番, 给这些锦囊重新编号。  关羽还是个聪明的人, 他用了一个非常大的袋子把这些锦囊都收集到一起,然后每次把这个大袋子给张飞拿起, 然后张飞可以打开袋子从里面拿出锦囊(也就是指令去执行了)去工作。如下图

通过一个大好的 麻袋把众多带有指令的锦囊和带有数据的锦囊打包到一起, 然后做为一个整体进行处理,管理,使用等就方便多了。

二. 形实结合的参数

上面通过一个麻袋把全部锦囊都打包的办法可以解决了很多的问题了, 但是还有一个问题就是, 每次当有需要修改麻袋里面内容的时候,需要将麻袋整体打开,然后修改, 最后在整体都打包在一起。

这样尽管也可以, 但是长时间工作后发现,有的时候由于士兵粗心,在重新装麻袋时会偶尔忘记个别的锦囊,这样就有了麻烦。如何解决这个问题?

出现这个问题是, 每次还是有一些东西要修改, 由于这些要修改的东西同其他东西放到一起了, 因此造成修改这些东西时,可能由于不小心等影响了其他东西, 简单的办法就是, 将要修改的东西同, 其他不修改的东西分开,然后在结合起来就可以避免了。如下图

如上图, 在一个大袋子里面放两个小袋子, 小袋子1里面存放需要变化的东西

在小袋子2中放不需要变化的东西。

在使用时, 先准备两小袋子A1和B1, 然后将大袋子那过来, 把A1里面的东西, 注入到A中, 将B1中的东西注入到B中, 然后这个修改好的大袋子整体就可以使用了, 如下图

如山图, 用A1 =》A  ,  B1 =》 B的过程 一般叫做  实参替换形参。

其实A是大的袋子里面参与工作的一个袋子, B也是带袋子里面参与工作的一个袋子, 因此通常都成为参数(计算机里面都是数, 因此叫做参数, 你也可以理解是参与变化的袋子都可以, 总之到了计算机里面名称可以根据需要进行适当的变化)。

上面的在工作时通过一个具体的小袋子A1和B1替换真正的A和B的过程就是实参替换形参的过程。

整个过程是计算机函数的工作基础。

三. 函数、过程、子程序和参数

在计算机中经常需要将一系列的小袋子(指令)封装到一个袋子中, 然后在袋中在分为一部分为可以替换的部分, 一部分为固定的部分,这个过程通常叫做封装。 封装后的东西一般叫做“函数”, 也有的叫做“过程”, 还有的地方叫做“子程序”, 总之都可以理解为一个大袋子。

由于大袋子每次工作里面都有可能有些不一样的东西, 因此就了参数的概念, 其实参数就是一个可以更改的小区域, 这个区域在那个大袋子里是独立一个区域。

在实际工作过程中, 首先要实际的小袋子(变量A1和B1)替换A和B,

然后, 在通知其他人可以用这个袋子工作了, 这个时候在工作时在获取A和B其实就是取得A1和B1的内容了。

那么这种划分袋子的办法有什么好处?

由于在一个复杂的计算机中, 可能有非常多的功能也就需要非常多的指令(锦囊),因此若是这些锦囊零散的放着, 管理维护都不方便, 因此我们就需要将这些锦囊(指令)分类,打包, 这样我们就维护这些打包好的, 然后你会发现, 大部分都不需要经常修改。 你仅仅每次需要修改很少的一些大袋子(函数)。

这样提高了效率, 降低了发生错误的次数(可能性)

另外, 函数,过程和子程序 本质上没有特多区别。  函数一般都会有个返回值。

什么是返回值呢? 就是干完活说一声我干完了, 结果是多少! 这个值要告诉调用者。

四. 变量的作用域

我们从前面看到的A袋子, 仅仅在特定的A袋子里面是有效的,在其他的袋子里面即使有个同名的A袋子, 也是不一样的。

例如,北京市的 一个赵大妈, 同辽宁省的赵大妈  尽管名称相同, 但是他们的地域是不同的。

这种一个名称的有效的区域叫做变量作用域, 最常见的作用域就是函数内部,当然还有很多, 以后会慢慢提到。

今天就这么多吧, 明天说一下交互的事情,

 

 

相关文章

计算机介绍                                  从锦囊妙计想到的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