6(1)湫去椿來 海棠花開

十年修得柯景騰,百年修得王小賤,千年修得李大仁,萬年修得湫哥哥随夸。

嗯…苹享,流程控制(Flow Control)是前面提到的內(nèi)容的綜合,盡管本章會(huì)比介紹方法的天外有天那一章要簡(jiǎn)短和容易些标捺,但是它將打開涉及到編程潛能的整個(gè)世界(打通任督二脈 嘿嘿哈嘿)伶跷。學(xué)完這一章后我們就能夠?qū)懗稣嬲薪换サ某绦颍辉谥拔覀円呀?jīng)可以讓程序輸出不同的內(nèi)容松逊,但是要通過鍵盤輸入的方式,但在本章之后程序可以真正在屏幕上顯示出不同的內(nèi)容肯夏。在我們能做到這之前经宏,我們需要能夠在程序中對(duì)不同的對(duì)象進(jìn)行比較,我們就需要用到……

對(duì)比方法

我們可以快速瀏覽一下這部門內(nèi)容驯击,方便我們下一小節(jié)分支Branching的學(xué)習(xí)烁兰,許多酷的內(nèi)容都在里面。要比較一個(gè)對(duì)象比另一個(gè)要大于或小于徊都,我們用 ><

puts 1 > 2
puts 1 < 2

輸出結(jié)果正常沪斟,同樣地我們比較一個(gè)對(duì)象比另一個(gè)大于等于或小于等于會(huì)用 >=<=

puts 5 >= 5
puts 5 <= 4


最后我們比較兩個(gè)對(duì)象是否相同用 ==(表示“它們相等嗎?”)和 !=(表示“它們不等嗎暇矫?”)主之。能否區(qū)分 ===是很重要的,= 是告訴某個(gè)變量去指向某對(duì)象(是賦值過程)李根,而 ==是在解答問題:“這兩個(gè)對(duì)象是相等的嗎槽奕?”

puts 1 == 1
puts 2 != 1


當(dāng)然我們也可以進(jìn)行字符串之間的比較。在進(jìn)行字符串比較時(shí)房轿,實(shí)際是比較字母的順序粤攒,也就是字典中字符串先后的順序。cat在字典中比dog靠前囱持,因此:

puts 'cat' < 'dog'

這里需要有個(gè)了解:電腦處理對(duì)象的方式是它們會(huì)把大寫字符放在小寫字符前面(這就是它們處理字體的方法夯接,比如所有大寫的字符優(yōu)先前置,然后才是小寫字符)纷妆,這就意味著電腦會(huì)認(rèn)為“Zoo”要在"ant"前面盔几,因此如果你想知道在真正的字典里哪個(gè)單詞在前面,請(qǐng)確保在比較前兩個(gè)單詞都要用小寫(或大寫)凭需。

在學(xué)習(xí)Branching前還有一點(diǎn)要提的是:對(duì)比方法為我們輸出的不是字符串 "true" 和 "false",它輸出的是特殊的對(duì)象truefalse.(當(dāng)然用true.to_s會(huì)輸出字符串“true”)truefalse會(huì)頻繁運(yùn)用在下面將要介紹的分支用法中……

分支Branching

分支是一個(gè)簡(jiǎn)單的定義问欠,但是相當(dāng)有用肝匆。它簡(jiǎn)單到我都沒必要解釋它,只需用下面的例子演示一下:

puts 'Hello, what\'s your name?'
name = gets.chomp
puts 'Hello, ' + name + '.'
if name == 'Chris'
  puts 'What a lovely name!'
end


但是如果我們輸入不一樣的名字:

上面就是分支程序:如果在if后面的判斷是ture的時(shí)候顺献,程序?qū)?huì)運(yùn)行ifend之間的代碼旗国;而如果if后面是false時(shí)就不會(huì)運(yùn)行之間的代碼,分支程序就是這么簡(jiǎn)單平直注整。

我將ifend之間的代碼縮進(jìn)僅是考慮這種方式能夠更明顯與分支程序保持關(guān)聯(lián)能曾,幾乎所有的程序員不論使用哪種計(jì)算機(jī)語言都會(huì)像這樣將代碼縮進(jìn)。在簡(jiǎn)單的程序中可能會(huì)看不出縮進(jìn)有多大用處肿轨,但當(dāng)程序變得更加復(fù)雜時(shí)縮進(jìn)就會(huì)起到很大的便利了寿冕。

通常我們喜歡一個(gè)程序在條件為真時(shí)做A事情,當(dāng)條件為假時(shí)做B事情椒袍,這時(shí)正好需要用到else:

puts 'I am a fortune-teller.  Tell me your name:'
name = gets.chomp
if name == 'Chris'
  puts 'I see great things in your future.'
else
  puts 'Your future is... Oh my!  Look at the time!'
  puts 'I really have to go, sorry!'
end

output

現(xiàn)在讓我們?cè)囈粋€(gè)不同的名字:



分支程序就像代碼中的分叉一樣:對(duì)于名字是“Chris”的人走的是一條路徑驼唱,對(duì)于名字不是“Chris”的人走另外的路徑。

正如一棵樹的分叉一樣驹暑,我們可以在已經(jīng)有分支的程序中再嵌入分支:

puts 'Hello, and welcome to 7th grade English.'
puts 'My name is Mrs. Gabbard.  And your name is...?'
name = gets.chomp

if name == name.capitalize
  puts 'Please take a seat, ' + name + '.'
else
  puts name + '?  You mean ' + name.capitalize + ', right?'
  puts 'Don\'t you even know how to spell your name??'
  reply = gets.chomp

  if reply.downcase == 'yes'
    puts 'Hmmph!  Well, sit down!'
  else
    puts 'GET OUT!!'
  end
end


運(yùn)行成功玫恳,現(xiàn)在我把名字大寫:


有時(shí)可能會(huì)分不清代碼中許多的ifelseend是用在哪個(gè)分支中优俘,我個(gè)人的解決方法是在寫if的同時(shí)就寫上end京办,所以如果讓我寫上面的程序,我會(huì)寫成如下的樣式:


然后我在中間填充注釋帆焕,電腦會(huì)自動(dòng)忽略這些注釋:


#號(hào)后的所有內(nèi)容都會(huì)被認(rèn)為是注釋惭婿,然后我會(huì)用代碼替換掉注釋。一些程序員會(huì)在程序中保留注釋叶雹,我個(gè)人認(rèn)為好的代碼通常自身就能夠很好的解釋它自己(自解釋)财饥,我以前會(huì)在程序中經(jīng)常使用注釋,但在接觸Ruby后隨著我對(duì)Ruby的不斷熟悉浑娜,我開始變得很少用注釋佑力,并發(fā)現(xiàn)寫注釋會(huì)消耗掉許多時(shí)間。當(dāng)然這只是個(gè)人的偏好筋遭,你會(huì)有屬于自己的編程習(xí)慣打颤。接下來我寫程序的下一步是:


再一次,我會(huì)同時(shí)寫下if漓滔,elseend编饺。這樣能夠在寫代碼時(shí)幫助我理順“我寫的具體是哪個(gè)分支”,使我集中精力在一小部分中响驴,在ifelse之間填充代碼透且,使得寫程序變得更加容易;同時(shí)這樣寫的另一個(gè)好處是使電腦能夠在任何時(shí)候識(shí)別出來程序編寫的進(jìn)度,我顯示給你的任何一個(gè)未完成的程序版本都可以運(yùn)行起來秽誊,雖然程序未完成但是可以順利運(yùn)行鲸沮。這樣就使得我能夠邊寫程序邊進(jìn)行測(cè)試,來檢查程序運(yùn)行情況和哪部分程序還需要繼續(xù)改進(jìn)锅论。當(dāng)程序通過了所有的測(cè)試讼溺,編程就順利完成了!

打完 收工W钜住怒坯!

啵一個(gè)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市藻懒,隨后出現(xiàn)的幾起案子剔猿,更是在濱河造成了極大的恐慌,老刑警劉巖嬉荆,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件归敬,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡员寇,警方通過查閱死者的電腦和手機(jī)弄慰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蝶锋,“玉大人,你說我怎么就攤上這事什往“饴疲” “怎么了?”我有些...
    開封第一講書人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵别威,是天一觀的道長躯舔。 經(jīng)常有香客問我,道長省古,這世上最難降的妖魔是什么粥庄? 我笑而不...
    開封第一講書人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮豺妓,結(jié)果婚禮上惜互,老公的妹妹穿的比我還像新娘。我一直安慰自己琳拭,他們只是感情好训堆,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著白嘁,像睡著了一般坑鱼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上絮缅,一...
    開封第一講書人閱讀 52,255評(píng)論 1 308
  • 那天鲁沥,我揣著相機(jī)與錄音呼股,去河邊找鬼。 笑死画恰,一個(gè)胖子當(dāng)著我的面吹牛彭谁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播阐枣,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼马靠,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了蔼两?” 一聲冷哼從身側(cè)響起甩鳄,我...
    開封第一講書人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎额划,沒想到半個(gè)月后妙啃,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡俊戳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年揖赴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抑胎。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡燥滑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出阿逃,到底是詐尸還是另有隱情铭拧,我是刑警寧澤,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布恃锉,位于F島的核電站搀菩,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏破托。R本人自食惡果不足惜肪跋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望土砂。 院中可真熱鬧州既,春花似錦、人聲如沸瘟芝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽锌俱。三九已至晤郑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背造寝。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來泰國打工磕洪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人诫龙。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓析显,卻偏偏與公主長得像,于是被迫代替她去往敵國和親签赃。 傳聞我的和親對(duì)象是個(gè)殘疾皇子谷异,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359