像機(jī)器一樣思考(五)—— 第一個(gè)應(yīng)用

經(jīng)過(guò)前面四篇注祖,我們已經(jīng)具備了最基本的思考編程的能力皱碘。我們開(kāi)始做一個(gè)真正的應(yīng)用吧询一。

例題

我們現(xiàn)在做一個(gè)應(yīng)用,該應(yīng)用是一個(gè)命令行應(yīng)用癌椿。當(dāng)程序啟動(dòng)的時(shí)候健蕊,我們會(huì)看到一個(gè)命令行的主界面:

1. 添加學(xué)生
2. 生成成績(jī)單
3. 退出
請(qǐng)輸入你的選擇(1~3):

如果我們輸入1,那么界面就會(huì)變成:

請(qǐng)輸入學(xué)生信息(格式:姓名, 學(xué)號(hào), 民族, 班級(jí), 學(xué)科: 成績(jī), ...)踢俄,按回車(chē)提交:

如果輸入格式不正確缩功,就返回:

請(qǐng)按正確的格式輸入(格式:姓名, 學(xué)號(hào), 學(xué)科: 成績(jī), ...):

如果輸入格式正確就會(huì)返回

學(xué)生xxx的成績(jī)被添加

然后打印

1. 添加學(xué)生
2. 生成成績(jī)單
3. 退出
請(qǐng)輸入你的選擇(1~3):

等于回到了主界面。
如果我們?cè)谥鹘缑孑斎肓?都办,那么界面就會(huì)變成:

請(qǐng)輸入要打印的學(xué)生的學(xué)號(hào)(格式: 學(xué)號(hào), 學(xué)號(hào),...)嫡锌,按回車(chē)提交:

如果我們輸入的不正確,就會(huì)打恿斩ぁ:

請(qǐng)按正確的格式輸入要打印的學(xué)生的學(xué)號(hào)(格式: 學(xué)號(hào), 學(xué)號(hào),...)势木,按回車(chē)提交:

如果輸入的格式正確,則會(huì)打印成績(jī)單并回到主界面歌懒。

成績(jī)單
姓名|數(shù)學(xué)|語(yǔ)文|英語(yǔ)|編程|平均分|總分 
========================
張三|75|95|80|80|82.5|330
李四|85|80|70|90|81.25|325
========================
全班總分平均數(shù):xxx
全班總分中位數(shù):xxx

如果我們輸入的學(xué)號(hào)不存在啦桌,該學(xué)號(hào)在計(jì)算時(shí)就會(huì)被忽略。

講解

這個(gè)題目比之前的復(fù)雜一點(diǎn)及皂,我們可以先按照功能簡(jiǎn)單列一下任務(wù)列表甫男。

#1 打印主菜單
#2 添加學(xué)生成績(jī)
#3 生成成績(jī)單
#4 退出

然而這個(gè)列表是跟我們的程序不等價(jià)的。我們還是應(yīng)該列出跟程序等價(jià)的任務(wù)列表躲庄。為了便于表達(dá)查剖,我們就需要畫(huà)圖。我們先不考慮面向?qū)ο笤刖剑苯用嫦蜻^(guò)程的劃分笋庄,我們畫(huà)出來(lái)的圖大概是下面這個(gè)樣子:

image

也許你覺(jué)得這個(gè)做法并不夠好,我也這么覺(jué)得倔监,那我們可以重構(gòu)這個(gè)圖直砂,畫(huà)出一種更好的解法:

image

可以看出,這兩種做法浩习,在圖形上看并沒(méi)有明顯的區(qū)別静暂,但是命名上暴露出了思路的不同,后者明顯減少了程序?qū)ν廨斎胼敵龅拇螖?shù)谱秽。所以不要隨便命名洽蛀。
但如果沒(méi)有上面那個(gè)圖摹迷,我們是看不出來(lái)buildReport這個(gè)函數(shù)他打印了還是沒(méi)打印,這就需要我們有一套約定俗成的用語(yǔ)規(guī)范郊供,從用語(yǔ)規(guī)范中可以看出來(lái)我們到底做了什么峡碉。

課后練習(xí)

  1. 針對(duì)兩張圖,分別列出所有的任務(wù)驮审。
  2. 在腦中模擬一下鲫寄,如果測(cè)試先行的方式寫(xiě)代碼,兩種實(shí)現(xiàn)的時(shí)間花費(fèi)各會(huì)是多少疯淫。按照任務(wù)列表逐項(xiàng)估出時(shí)間地来,并比較兩種實(shí)現(xiàn)的時(shí)間差異。

題外話 - 1

對(duì)于接觸本文章的編程初學(xué)者熙掺,我需要多說(shuō)幾句:我們可以看到未斑,其實(shí)一個(gè)真正的應(yīng)用也是由一些簡(jiǎn)單函數(shù)構(gòu)成的,那就說(shuō)明編程思想和技巧并不受限于應(yīng)用的表象适掰。前端颂碧、后端荠列、應(yīng)用类浪、系統(tǒng)之類(lèi)的名詞,往往是從分工的角度來(lái)講的肌似,如果從個(gè)人發(fā)展的角度來(lái)講费就,不要拿這些名詞限制自己。這也是我們這個(gè)系列只講一些簡(jiǎn)單應(yīng)用的緣故川队,抽象來(lái)講思路是一樣的力细。

題外話 - 2

到這里,你應(yīng)該能感覺(jué)到我們這些題目固额,其實(shí)是一個(gè)個(gè)思維訓(xùn)練眠蚂,對(duì)于這個(gè)思維訓(xùn)練,最重要的事情有三點(diǎn):

  1. 語(yǔ)文問(wèn)題(用詞精確斗躏,前后一致)
  2. 接口問(wèn)題(完全窮盡)
  3. 每個(gè)函數(shù)之間互相不知道對(duì)方的內(nèi)在實(shí)現(xiàn)(各自獨(dú)立)
    能做好這三點(diǎn)逝慧,代碼就能完勝行業(yè)里的大多數(shù)人:)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市啄糙,隨后出現(xiàn)的幾起案子笛臣,更是在濱河造成了極大的恐慌,老刑警劉巖隧饼,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件沈堡,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡燕雁,警方通過(guò)查閱死者的電腦和手機(jī)诞丽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)鲸拥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人僧免,你說(shuō)我怎么就攤上這事崩泡。” “怎么了猬膨?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵角撞,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我勃痴,道長(zhǎng)谒所,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任沛申,我火速辦了婚禮劣领,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘铁材。我一直安慰自己尖淘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布著觉。 她就那樣靜靜地躺著村生,像睡著了一般。 火紅的嫁衣襯著肌膚如雪饼丘。 梳的紋絲不亂的頭發(fā)上趁桃,一...
    開(kāi)封第一講書(shū)人閱讀 49,144評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音肄鸽,去河邊找鬼卫病。 笑死,一個(gè)胖子當(dāng)著我的面吹牛典徘,可吹牛的內(nèi)容都是我干的蟀苛。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼逮诲,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼帜平!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起汛骂,我...
    開(kāi)封第一講書(shū)人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤罕模,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后帘瞭,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體淑掌,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年蝶念,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了抛腕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片芋绸。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖担敌,靈堂內(nèi)的尸體忽然破棺而出摔敛,到底是詐尸還是另有隱情,我是刑警寧澤全封,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布马昙,位于F島的核電站,受9級(jí)特大地震影響刹悴,放射性物質(zhì)發(fā)生泄漏行楞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一土匀、第九天 我趴在偏房一處隱蔽的房頂上張望子房。 院中可真熱鬧,春花似錦就轧、人聲如沸证杭。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)解愤。三九已至,卻和暖如春携丁,著一層夾襖步出監(jiān)牢的瞬間琢歇,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工梦鉴, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人揭保。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓肥橙,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親秸侣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子存筏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 一、Python簡(jiǎn)介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡(jiǎn)介】: Python 是一個(gè)...
    _小老虎_閱讀 5,723評(píng)論 0 10
  • ¥開(kāi)啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開(kāi)一個(gè)線程味榛,因...
    小菜c閱讀 6,358評(píng)論 0 17
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類(lèi)型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,089評(píng)論 1 32
  • 有時(shí)候想想搏色,老子的這句話真是相當(dāng)深刻善茎,當(dāng)然這可能只是我的臆想。 老子說(shuō)频轿,不現(xiàn)可欲垂涯,使民心不亂烁焙。 而我們?nèi)缃竦慕?jīng)濟(jì)政...
    曹無(wú)傷閱讀 829評(píng)論 5 13
  • 你說(shuō)歲月安好流年勿擾 你說(shuō)去年今日心事暗寄 你說(shuō)花開(kāi)堪折不及月下獨(dú)酌 錯(cuò)過(guò)馬蹄噠噠 拆了的信紙寫(xiě)著相思無(wú)期 把你的...
    重橫行閱讀 205評(píng)論 1 7