官术网_书友最值得收藏!

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

  • 程序媛養成計劃
  • 任煦之秋
  • 2200字
  • 2020-04-19 14:35:00

「哈哈,這倒霉孩子,不僅他要遭,怕是還要連累很多人哦。」

想到老爹描述的畫面,我不禁樂了。這倒霉孩子拉仇恨的速度恐怕只有善意提醒老師忘了布置家庭作業能與之匹敵了。

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

if(分數大于90分并且不等于100分)

{

把錯題抄三遍

}

else

{

把錯題抄五遍

}」

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

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

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

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

if(分數大于90分并且不等于100分)

{

把錯題抄三遍

}

else if(分數大于等于60分)

{

把錯題抄五遍

}

else if(分數大于等于30分)

{

把整張卷子抄三遍

}」

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

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

「嗯,不錯!」

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

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

老師說讓30分以下的同學明天叫家長來學校,共同商討學習提升方案……所以,這下if結構就變成了:

if(分數大于90分并且不等于100分)

{

把錯題抄三遍

}

else if(分數大于等于60分)

{

把錯題抄五遍

}

else if(分數大于等于30分)

{

把整張卷子抄三遍

}

else

{

請家長

}」

「明白了!那我先把書上的例程做一遍。」

有了老爹的講解,再加上書上的例程,我也就差不多掌握了if分支結構。當然,要寫程序還需要把if和else if后面小括號中的條件轉換為邏輯表達式。

在休息了十五分鐘后,老爹就開始講解另外一個分支結構――switch。

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

姓名:switch

身份:混沌先民

出身年月:1972年初

技能:算無遺策」

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

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

「嗯吶嗯吶,經常都有這種感覺!」

我點了點頭。

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

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

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

「有道是一個籬笆三個樁,switch之所以能夠快速果決地做出正確的選擇,還和它的三個小伙伴密不可分,它們分別是:case、default和break。」

「哦哦,這么看來這個switch好像很難的樣子呀!」

我皺著眉頭說道。

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

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

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

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

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

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

「吶,switch就和剛剛的客服功能差不多,你輸入相應的數字,switch就能幫你做對應的事情,現在我們就用switch來實現一下剛剛客服的功能。」

「哦,原來switch是客服小姐姐啊~」

我若有所思地說道。

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

switch(按鍵)

{

case 1:

查詢服務

break;

case 2:

業務咨詢

break;

case 3:

業務辦理

break;

case 0:

其他幫助

break;

default:

4~9

break;

}」

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

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

假設現在你按下了1,按道理說應該是走case 1進行查詢服務,結果不巧的是你忘了加break,這個時候就會繼續走case 2。要是case 2也沒有加break,程序就會挨著往下面執行,直到遇到break為止。

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

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

「說說看~」

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

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

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

當然了,switch也有它自己的缺點,就是給它的關鍵信息如剛剛例子中的按鍵只能是一個確定的值,不能是范圍。」

主站蜘蛛池模板: 二手房| 勃利县| 温泉县| 澄江县| 安福县| 横峰县| 永新县| 霍山县| 五家渠市| 黄浦区| 武宣县| 东城区| 呼伦贝尔市| 仁化县| 吴堡县| 江达县| 包头市| 大同市| 兴国县| 周宁县| 柘荣县| 资讯 | 马关县| 墨玉县| 千阳县| 益阳市| 南康市| 湖州市| 苗栗县| 开封县| 中宁县| 炎陵县| 卢龙县| 禄劝| 江永县| 玛多县| 定南县| 西华县| 微博| 罗甸县| 皮山县|