我剛開始學(xué)習(xí) C 語言的時(shí)候,就是有點(diǎn)暈頭轉(zhuǎn)向,這是個(gè)什么玩意,跟我有個(gè) J8 關(guān)系。后來隨著學(xué)習(xí)的深入越來越覺得看不懂,什么指針,數(shù)組,函數(shù),文件系統(tǒng)啥的。。。后來工作了才發(fā)現(xiàn),除了 函數(shù) + 數(shù)組 + 各種流程轉(zhuǎn)換 其他你都不會(huì)用到(真的假的?當(dāng)然是假的,只是騙騙你而已,一個(gè)好的程序員,必定指針操作的飛起,我這只不過騙你入門,就忽悠忽悠你們這群小傻子而已)。
回歸我們這節(jié)的主題,身臨其境:想想你就是電腦,當(dāng)你學(xué)會(huì)用電腦的方式處理問題的時(shí)候,那你的編程之路就不會(huì)坎坷了。請(qǐng)看完下面的小故事,深深的體會(huì)一下。(啥?體會(huì)不了,那你可能不適合禿頭這行,畢竟聰明絕頂)下面的故事把‘我’當(dāng)成是電腦。
情景一:人為判斷
-
這天,我懵懵懂懂的從床上醒來 ----- 程序啟動(dòng)階段。
-
突然發(fā)現(xiàn)旁邊的 Main 小姐不見了,我就瘋狂的出門找啊找啊,總算在茫茫人海中(類似于各種各樣的函數(shù))找到 main 小姐 ----- 電腦查找 Main 入口。
-
她正一臉惆悵的盯著兩個(gè)蘋果A,B。然后和我說,她想知道 A 和 B 中最重的那一個(gè)有多重。----- 有兩個(gè)變量 A,B.需要比較大??!
-
她回憶起來,她大表哥 GetMax 這個(gè)函數(shù)好像可以比較兩個(gè)數(shù)的大小。而現(xiàn)在她又需要盯著這里,防止兩個(gè)蘋果被人家買走,又不能直接拿走去找他大表哥然后再還回來(老板不打死她我都不信)。剛好我來,她就站在這作為人質(zhì),讓我拿著兩個(gè)蘋果趕緊去找他大表哥。 ----- 電腦調(diào)用 GetMax 函數(shù)功能。
-
我找到 GetMax 函數(shù)后,把 A 和 B 丟了進(jìn)去,大表哥興奮的和我說到,兩個(gè)中最重的一個(gè)有 10斤。----- GetMax 函數(shù)執(zhí)行。
-
我興奮的跑回去和 main 小姐說,大表哥說了,最終的那個(gè)貨有 10 斤呢! main 小姐總算笑嘻嘻的和我回家了。我們又能嘿嘿嘿了。。。。 ----- 輸出結(jié)果繼續(xù) main 執(zhí)行
電腦運(yùn)行的步驟依次是:11->12->13->14->3->4->(5或則7)->15。
情景二:一根筋站崗
好了現(xiàn)在你已經(jīng)可以寫一些簡單的程序了,但是只知道上面這種一行一行的代碼是遠(yuǎn)遠(yuǎn)不夠的。(為啥?我不是已經(jīng)可以寫代碼了嗎?)???,我下面開始要裝逼了。請(qǐng)注意。
很簡單的問題:我們計(jì)算從 1 + 2 + ... + 100。請(qǐng)問這個(gè)程序怎么寫?(這還不簡單,瞧好了你的,老師,下面就是我的代碼,是不是很簡單)。
大家看下,這個(gè)代碼怎么樣?這位同學(xué)直接手寫 1 + 2 + 3 + ... + 100.這就意味著什么意思,他自己手動(dòng)寫了 1,2,3,4...100 這一百個(gè)數(shù)字。如果我把數(shù)字增加到 1000 是不是要寫 1000 次?請(qǐng)問,如果你有這么多時(shí)間寫數(shù)字的,不如提升下自己的編程水平。
其實(shí),所有的編程技巧和規(guī)則只是為了簡化和優(yōu)化我們編程的結(jié)構(gòu)和時(shí)間。說得更簡單一點(diǎn),就是為了讓人可以偷懶而已。
好了,我把上面的內(nèi)容簡化以下:
這個(gè)寫法是不是和上面那個(gè)同學(xué)的寫法差不多?(看不懂的就算了)
好了到了我們數(shù)學(xué)上喜聞樂見的找規(guī)律環(huán)節(jié)。。。規(guī)律如下:
-
每行都在 +一個(gè)數(shù)字
-
后一行的數(shù)字都比前面一行的數(shù)字大 1
-
最大到 100
-
想想一下,你是電腦,這時(shí)候你有一個(gè)空盒子,里面什么都沒有(也就是 0)
-
第一次你往里面放了一個(gè) 1
-
第二次你往里面放了一個(gè) 2
-
第二次你往里面放了一個(gè) 3
-
。。。 省略中間 4 - 99 的步驟
-
最后你放了一個(gè) 100
-
結(jié)束了。
有沒有覺得這個(gè)過程既重復(fù)又枯燥。那下面我要把它進(jìn)行變形了。
為什么可以這么變形呢?其實(shí)就是因?yàn)橐粋€(gè)結(jié)構(gòu)
這個(gè)格式就是個(gè)死規(guī)定,就比如單詞為什么see = 看,eat = 吃。就是定死的東西。我只能告訴你,其中 1,2,3,4 標(biāo)志的意思和運(yùn)行規(guī)律是什么樣子的。
-
一個(gè)框大家肯定能理解,就是讓 num = 0
-
第二個(gè)框其實(shí)效果和 if(num < 100) 功能類似,只是在這里必須把 if 去掉。
-
第三個(gè)框其實(shí)就是讓 num 在現(xiàn)有的基礎(chǔ)之上 + 1。比如現(xiàn)在是10,從3這里執(zhí)行以后num就變成了 11.
-
第4個(gè)框其實(shí)就是把 num 現(xiàn)在的數(shù)字和 sum 之前全部的數(shù)字加在一起。
好了現(xiàn)在把你想象成電腦,這時(shí)候,你已經(jīng)運(yùn)行到了第6行也就是運(yùn)行到 for 的位置,那么下面的順序依次是 1 -> 2 -> 4 -> (3 -> 2 -> 4) -> (3 -> 2 -> 4) ... -> (3 -> 2 -> 4)...好了,你就會(huì)慢慢一直直的走下去。直到天荒地老。(怎么可能呢?那你不是一直死在里面嗎)那么你在什么時(shí)候才會(huì)結(jié)束呢?當(dāng)你在第二步檢測(cè)出來比 100 大的時(shí)候,你就會(huì)跳出整個(gè)循環(huán)了,就不會(huì)再進(jìn)入到第 4 步了。