算法一詞可能并不常見憎夷,聽起來也有些不好懂。算法其實(shí)就是為了完成某項(xiàng)特定的任務(wù)而要按照既定順序執(zhí)行的一系列明確的指令昧旨。我們?cè)凇熬幊叹褪且唵巍币还?jié)中曾經(jīng)做過簡單的探討拾给,當(dāng)時(shí)就是給“小智”制訂了一套明確的整理床鋪的指令富拗。
算法中指令越具體、越明確鸣戴,指令運(yùn)行時(shí)出現(xiàn)錯(cuò)誤的概率就越小。算法就像是做菜使用的“食譜”粘拾,是計(jì)算機(jī)所要執(zhí)行的命令窄锅。我們來試一下,給小智發(fā)出指令缰雇,讓它為我們做個(gè)加奶酪的三明治:
1.拿起一片面包入偷。
2.將面包放在廚房的操作臺(tái)上。
3.把黃油盒的蓋子打開械哟。
4.把蓋子放下疏之。
5.握住手柄拿起刮取黃油的小刀。
6.一只手握住小刀的手柄暇咆,讓刀口向外锋爪。
7.放低小刀并在黃油上刮取三秒鐘。
8.拿起小刀爸业。
9.使小刀靠近面包片其骄。
10.放低小刀,在面包片上涂抹三秒鐘扯旷,一共涂抹兩次拯爽。我們已經(jīng)完成了10個(gè)步驟,卻只給面包片的一面涂上了黃油钧忽!
11.把小刀放在操作臺(tái)上毯炮。
12.拿起一片奶酪。
13.把奶酪片放在涂有黃油的面包片上耸黑。
14.再拿起一片面包桃煎。
15.將其覆蓋在奶酪和有黃油的面包片上。
你是否留意到崎坊,上面的指令非常具體备禀,甚至提到了如何握刀?其實(shí)我們還可以更加具體奈揍,描述使用小刀時(shí)的角度及涂抹黃油時(shí)小刀的速度曲尸。在第7步和第10步中,我們的描述還包括計(jì)算機(jī)要取男翰、涂黃油的時(shí)間另患。畢竟,小智不知道刀上的黃油有多少算夠了蛾绎,面包怎樣才算抹好了昆箕。因此鸦列,我們做出估算,大概需要三秒鐘的時(shí)間鹏倘。
單步調(diào)試
西方有句古老的諺語薯嗤,“量兩次,裁一刀”纤泵。其本質(zhì)意義是說骆姐,干活時(shí)多核查要比出了問題后返回來彌補(bǔ)更有效率。對(duì)于編程的初學(xué)者而言捏题,這應(yīng)該成為不成文的規(guī)則玻褪。檢查算法時(shí),應(yīng)該單步調(diào)試(一步一步檢查代碼的過程公荧〈洌——編者注)、逐步進(jìn)行循狰,確保其合理規(guī)范窟社。
我們?cè)賮砜戳硪粋€(gè)關(guān)于算法的例子。這是一個(gè)游戲晤揣,需要用些數(shù)學(xué)知識(shí)桥爽,來猜測人的年齡。猜年齡游戲在這個(gè)“數(shù)學(xué)魔術(shù)”的戲法中昧识,你可以先告訴朋友钠四,你不用他們說就能猜出他們的年齡。游戲具體如下:
1.讓你的朋友在一頁紙上寫下他的年齡跪楞。
2.將這個(gè)數(shù)字乘以2缀去。
3.再加上1。
4.然后乘以5甸祭。
5.再加上5缕碎。
6.再乘以10。
7.再減掉100池户。
8.最后再畫掉末尾兩位數(shù)咏雌。
最后剩下的數(shù)字就是他的年齡,一共只用了簡單的八個(gè)步驟校焦。
明日預(yù)告:寫給所有人的編程思維-循環(huán)篇
今日內(nèi)容節(jié)選自《寫給所有人的編程思維》赊抖,作者:吉姆.克里斯蒂安??,如侵權(quán)寨典,聯(lián)系本號(hào)刪除