我刚开始学习 C 语言的时候,就是有点晕头转向,这是个什么玩意,跟我有个 J8 关系。后来随着学习的深入越来越觉得看不懂,什么指针,数组,函数,文件系统啥的。。。后来工作了才发现,除了 函数 + 数组 + 各种流程转换 其他你都不会用到(真的假的?当然是假的,只是骗骗你而已,一个好的程序员,必定指针操作的飞起,我这只不过骗你入门,就忽悠忽悠你们这群小傻子而已)。
回归我们这节的主题,身临其境:想想你就是电脑,当你学会用电脑的方式处理问题的时候,那你的编程之路就不会坎坷了。请看完下面的小故事,深深的体会一下。(啥?体会不了,那你可能不适合秃头这行,毕竟聪明绝顶)下面的故事把‘我’当成是电脑。
情景一:人为判断
-
这天,我懵懵懂懂的从床上醒来 ----- 程序启动阶段。
-
突然发现旁边的 Main 小姐不见了,我就疯狂的出门找啊找啊,总算在茫茫人海中(类似于各种各样的函数)找到 main 小姐 ----- 电脑查找 Main 入口。
-
她正一脸惆怅的盯着两个苹果A,B。然后和我说,她想知道 A 和 B 中最重的那一个有多重。----- 有两个变量 A,B.需要比较大小!
-
她回忆起来,她大表哥 GetMax 这个函数好像可以比较两个数的大小。而现在她又需要盯着这里,防止两个苹果被人家买走,又不能直接拿走去找他大表哥然后再还回来(老板不打死她我都不信)。刚好我来,她就站在这作为人质,让我拿着两个苹果赶紧去找他大表哥。 ----- 电脑调用 GetMax 函数功能。
-
我找到 GetMax 函数后,把 A 和 B 丢了进去,大表哥兴奋的和我说到,两个中最重的一个有 10斤。----- GetMax 函数执行。
-
我兴奋的跑回去和 main 小姐说,大表哥说了,最终的那个货有 10 斤呢! main 小姐总算笑嘻嘻的和我回家了。我们又能嘿嘿嘿了。。。。 ----- 输出结果继续 main 执行
电脑运行的步骤依次是:11->12->13->14->3->4->(5或则7)->15。
情景二:一根筋站岗
好了现在你已经可以写一些简单的程序了,但是只知道上面这种一行一行的代码是远远不够的。(为啥?我不是已经可以写代码了吗?)。看,我下面开始要装逼了。请注意。
很简单的问题:我们计算从 1 + 2 + ... + 100。请问这个程序怎么写?(这还不简单,瞧好了你的,老师,下面就是我的代码,是不是很简单)。
大家看下,这个代码怎么样?这位同学直接手写 1 + 2 + 3 + ... + 100.这就意味着什么意思,他自己手动写了 1,2,3,4...100 这一百个数字。如果我把数字增加到 1000 是不是要写 1000 次?请问,如果你有这么多时间写数字的,不如提升下自己的编程水平。
其实,所有的编程技巧和规则只是为了简化和优化我们编程的结构和时间。说得更简单一点,就是为了让人可以偷懒而已。
好了,我把上面的内容简化以下:
这个写法是不是和上面那个同学的写法差不多?(看不懂的就算了)
好了到了我们数学上喜闻乐见的找规律环节。。。规律如下:
-
每行都在 +一个数字
-
后一行的数字都比前面一行的数字大 1
-
最大到 100
-
想想一下,你是电脑,这时候你有一个空盒子,里面什么都没有(也就是 0)
-
第一次你往里面放了一个 1
-
第二次你往里面放了一个 2
-
第二次你往里面放了一个 3
-
。。。 省略中间 4 - 99 的步骤
-
最后你放了一个 100
-
结束了。
有没有觉得这个过程既重复又枯燥。那下面我要把它进行变形了。
为什么可以这么变形呢?其实就是因为一个结构
这个格式就是个死规定,就比如单词为什么see = 看,eat = 吃。就是定死的东西。我只能告诉你,其中 1,2,3,4 标志的意思和运行规律是什么样子的。
-
一个框大家肯定能理解,就是让 num = 0
-
第二个框其实效果和 if(num < 100) 功能类似,只是在这里必须把 if 去掉。
-
第三个框其实就是让 num 在现有的基础之上 + 1。比如现在是10,从3这里执行以后num就变成了 11.
-
第4个框其实就是把 num 现在的数字和 sum 之前全部的数字加在一起。
好了现在把你想象成电脑,这时候,你已经运行到了第6行也就是运行到 for 的位置,那么下面的顺序依次是 1 -> 2 -> 4 -> (3 -> 2 -> 4) -> (3 -> 2 -> 4) ... -> (3 -> 2 -> 4)...好了,你就会慢慢一直直的走下去。直到天荒地老。(怎么可能呢?那你不是一直死在里面吗)那么你在什么时候才会结束呢?当你在第二步检测出来比 100 大的时候,你就会跳出整个循环了,就不会再进入到第 4 步了。