首頁 現(xiàn)實

程序媛養(yǎng)成計劃

第十六章 邏輯怪和選擇狂(下)

程序媛養(yǎng)成計劃 任煦之秋 2142 2020-04-19 14:35:00

  「哈哈,這倒霉孩子,不僅他要遭,怕是還要連累很多人哦?!?p>  想到老爹描述的畫面,我不禁樂了。這倒霉孩子拉仇恨的速度恐怕只有善意提醒老師忘了布置家庭作業(yè)能與之匹敵了。

  「不錯,老師聽了頓時火冒三丈,于是讓90分以下的同學(xué)做錯了的題抄5遍。這個時候用if表達(dá)如下:

  if(分?jǐn)?shù)大于90分并且不等于100分)

  {

  把錯題抄三遍

  }

  else

  {

  把錯題抄五遍

  }」

  「嘻嘻,這下那個倒霉孩子知道89分和99分的差距在哪兒了。」

  「是啊,就在那個小朋友被數(shù)十雙透露出殺氣的眼睛看著時,他痛定思痛,決下一次一定要多考點分?jǐn)?shù),不然五支筆綁在一起真的不好握。

  這時異變又起,因為60分以上的同學(xué)不樂意了。畢竟60分是一道分水嶺,代表著兩個不同的境界??墒乾F(xiàn)在那些不足60分的人跟他們這些60分以上的人居然是相同的待遇,你說這誰能忍?

  經(jīng)過這么一說,你們老師也覺得這樣很是不妥,于是讓30分到59分這個階段的小朋友把整張卷子抄三遍。于是乎我們的if表達(dá)式就變成了這樣:

  if(分?jǐn)?shù)大于90分并且不等于100分)

  {

  把錯題抄三遍

  }

  else if(分?jǐn)?shù)大于等于60分)

  {

  把錯題抄五遍

  }

  else if(分?jǐn)?shù)大于等于30分)

  {

  把整張卷子抄三遍

  }」

  「哈,我好像明白了,if的分身else if是在矮子里邊挑高子,如果有不同的標(biāo)準(zhǔn),就可以一直挑下去。而else分身就是不滿足前邊所有if和else if條件的矮子!」

  之前老爹在說分身和魔塔游戲的時候,我的腦袋里面就有一道電光閃過,只不過我一時沒有抓住?,F(xiàn)在經(jīng)過老爹這么一說,我終于明白了。

  「嗯,不錯!」

  老爹欣慰地笑了,然后接著把抄卷子的例子講完了。

  「就在30分以下的同學(xué)覺得自己有驚無險地逃過一劫的時候,老師的一句話讓他們瞬間如遭雷擊。

  老師說讓30分以下的同學(xué)明天叫家長來學(xué)校,共同商討學(xué)習(xí)提升方案……所以,這下if結(jié)構(gòu)就變成了:

  if(分?jǐn)?shù)大于90分并且不等于100分)

  {

  把錯題抄三遍

  }

  else if(分?jǐn)?shù)大于等于60分)

  {

  把錯題抄五遍

  }

  else if(分?jǐn)?shù)大于等于30分)

  {

  把整張卷子抄三遍

  }

  else

  {

  請家長

  }」

  「明白了!那我先把書上的例程做一遍?!?p>  有了老爹的講解,再加上書上的例程,我也就差不多掌握了if分支結(jié)構(gòu)。當(dāng)然,要寫程序還需要把if和else if后面小括號中的條件轉(zhuǎn)換為邏輯表達(dá)式。

  在休息了十五分鐘后,老爹就開始講解另外一個分支結(jié)構(gòu)――switch。

  「那么我們接下來就開始說另外一個混沌先民,switch,依舊先看看它的屬性卡

  姓名:switch

  身份:混沌先民

  出身年月:1972年初

  技能:算無遺策」

  「咦,這個switch聽起來好像在混沌先民中是個智慧擔(dān)當(dāng)。」

  「很相近了!我們先來做個小調(diào)查,在平時生活中,有沒有需要你做選擇,但你又覺得很難作出選擇的情況?比如說你和好朋友中午去食堂吃飯,看著十幾種菜,糾結(jié)半天不知道吃哪幾樣?」

  「嗯吶嗯吶,經(jīng)常都有這種感覺!」

  我點了點頭。

  「這個叫做困難選擇癥,很多人都有這個問題。當(dāng)然了,我們的混沌先民也不例外。

  在推動程序世界發(fā)展的過程中,往往有很多事情需要混沌先民作出選擇,但是它們和我們一樣,都有選擇困難癥。這個時候,switch這個家伙就順勢而生了。其他人只需要把選項以及相關(guān)信息告訴它,它能立刻作出最正確的選擇!」

  「這么看來,這個switch還挺厲害的呀!」

  「有道是一個籬笆三個樁,switch之所以能夠快速果決地做出正確的選擇,還和它的三個小伙伴密不可分,它們分別是:case、default和break?!?p>  「哦哦,這么看來這個switch好像很難的樣子呀!」

  我皺著眉頭說道。

  「嗯~,說難也不難,說簡單也不簡單。這樣,我們還是以一個具體的例子來說明。用什么例子呢?有了!」

  老爹右手握成拳,用手背撞向左手掌,雙眼之中迸射出智慧的光芒。

  話音未落,老爹從口袋里把手機掏了出來,不由分說撥通了電信的客服電話10000。

  「您好,歡迎致電中國電信,查詢服務(wù)請按1,業(yè)務(wù)咨詢請按2,業(yè)務(wù)辦理請按3,如需其他幫助請按0……」

  在幾聲「嘟」之后,手機里頓時傳了電信客服妹子甜美的聲音。

  在老爹的慫恿下,我把選項都嘗試了一遍,還和人工客服聊了會兒天。

  「吶,switch就和剛剛的客服功能差不多,你輸入相應(yīng)的數(shù)字,switch就能幫你做對應(yīng)的事情,現(xiàn)在我們就用switch來實現(xiàn)一下剛剛客服的功能?!?p>  「哦,原來switch是客服小姐姐啊~」

  我若有所思地說道。

  「哈,這么說也沒有錯了。好吧,那我就帶你來實現(xiàn)這個客服小姐姐:

  switch(按鍵)

  {

  case 1:

  查詢服務(wù)

   break;

  case 2:

  業(yè)務(wù)咨詢

   break;

  case 3:

  業(yè)務(wù)辦理

   break;

  case 0:

  其他幫助

   break;

  default:

   4~9

   break;

  }」

  「case和default我現(xiàn)在知道是什么意思了,那這個break呢?」

  「這個是個很重要的知識點,往往有很多初學(xué)者都會忘記寫break,所以在寫了case后,一定要馬上寫break,以免忘記。至于break嘛,它俗稱混沌先民中的終結(jié)者,能耐大了去了。

  假設(shè)現(xiàn)在你按下了1,按道理說應(yīng)該是走case 1進(jìn)行查詢服務(wù),結(jié)果不巧的是你忘了加break,這個時候就會繼續(xù)走case 2。要是case 2也沒有加break,程序就會挨著往下面執(zhí)行,直到遇到break為止。

  如果在所有的case和default都沒有break,就會從匹配的case項依次執(zhí)行,直到switch結(jié)束。對了switch中可以有多個case,但只能有一個default!」

  「我現(xiàn)在開始理解為什么老爹你說switch是選擇狂了,看來做選擇這種費力的事情還真得交給它來做。但是我有一個疑問。」

  「說說看~」

  「我發(fā)現(xiàn)剛剛那個客服小姐姐用if也可以實現(xiàn)啊,這么看來if和switch的功能產(chǎn)生了重疊,這樣switch不是可有可無的存在了么?」

  「這個問題問得非常好,switch看起來就像是if…else if…else的特例,但是在case比較多的時候,就必須讓if修出比較多的else if分身出來,這樣是比較耗費修為的,而且可讀性也沒有switch好。

  總的來說就是,switch的效率更高,可讀性更好,所以在能夠使用switch的時候盡量使用它。

  當(dāng)然了,switch也有它自己的缺點,就是給它的關(guān)鍵信息如剛剛例子中的按鍵只能是一個確定的值,不能是范圍?!?

按 “鍵盤左鍵←” 返回上一章  按 “鍵盤右鍵→” 進(jìn)入下一章  按 “空格鍵” 向下滾動
目錄
目錄
設(shè)置
設(shè)置
書架
加入書架
書頁
返回書頁
指南