6(1)湫去椿来 海棠花开

十年修得柯景腾,百年修得王小贱,千年修得李大仁,万年修得湫哥哥。

嗯…,流程控制(Flow Control)是前面提到的内容的综合,尽管本章会比介绍方法的天外有天那一章要简短和容易些,但是它将打开涉及到编程潜能的整个世界(打通任督二脈 嘿嘿哈嘿)。学完这一章后我们就能够写出真正有交互的程序;在之前我们已经可以让程序输出不同的内容,但是要通过键盘输入的方式,但在本章之后程序可以真正在屏幕上显示出不同的内容。在我们能做到这之前,我们需要能够在程序中对不同的对象进行比较,我们就需要用到……

对比方法

我们可以快速浏览一下这部门内容,方便我们下一小节分支Branching的学习,许多酷的内容都在里面。要比较一个对象比另一个要大于或小于,我们用 ><

puts 1 > 2
puts 1 < 2

输出结果正常,同样地我们比较一个对象比另一个大于等于或小于等于会用 >=<=

puts 5 >= 5
puts 5 <= 4


最后我们比较两个对象是否相同用 ==(表示“它们相等吗?”)和 !=(表示“它们不等吗?”)。能否区分 ===是很重要的,= 是告诉某个变量去指向某对象(是赋值过程),而 ==是在解答问题:“这两个对象是相等的吗?”

puts 1 == 1
puts 2 != 1


当然我们也可以进行字符串之间的比较。在进行字符串比较时,实际是比较字母的顺序,也就是字典中字符串先后的顺序。cat在字典中比dog靠前,因此:

puts 'cat' < 'dog'

这里需要有个了解:电脑处理对象的方式是它们会把大写字符放在小写字符前面(这就是它们处理字体的方法,比如所有大写的字符优先前置,然后才是小写字符),这就意味着电脑会认为“Zoo”要在"ant"前面,因此如果你想知道在真正的字典里哪个单词在前面,请确保在比较前两个单词都要用小写(或大写)。

在学习Branching前还有一点要提的是:对比方法为我们输出的不是字符串 "true" 和 "false",它输出的是特殊的对象truefalse.(当然用true.to_s会输出字符串“true”)truefalse会频繁运用在下面將要介紹的分支用法中……

分支Branching

分支是一个简单的定义,但是相当有用。它简单到我都没必要解释它,只需用下面的例子演示一下:

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


但是如果我们输入不一样的名字:

上面就是分支程序:如果在if后面的判断是ture的时候,程序将会运行ifend之间的代码;而如果if后面是false时就不会运行之间的代码,分支程序就是这么简单平直。

我将ifend之间的代码缩进仅是考虑这种方式能够更明显与分支程序保持关联,几乎所有的程序员不论使用哪种计算机语言都会像这样将代码缩进。在简单的程序中可能会看不出缩进有多大用处,但当程序变得更加复杂时缩进就会起到很大的便利了。

通常我们喜欢一个程序在条件为真时做A事情,当条件为假时做B事情,这时正好需要用到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

现在让我们试一个不同的名字:



分支程序就像代码中的分叉一样:对于名字是“Chris”的人走的是一条路径,对于名字不是“Chris”的人走另外的路径。

正如一棵树的分叉一样,我们可以在已经有分支的程序中再嵌入分支:

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


运行成功,现在我把名字大写:


有时可能会分不清代码中许多的ifelseend是用在哪个分支中,我个人的解决方法是在写if的同时就写上end,所以如果让我写上面的程序,我会写成如下的样式:


然后我在中间填充注释,电脑会自动忽略这些注释:


#号后的所有内容都会被认为是注释,然后我会用代码替换掉注释。一些程序员会在程序中保留注释,我个人认为好的代码通常自身就能够很好的解释它自己(自解释),我以前会在程序中经常使用注释,但在接触Ruby后随着我对Ruby的不断熟悉,我开始变得很少用注释,并发现写注释会消耗掉许多时间。当然这只是个人的偏好,你会有属于自己的编程习惯。接下来我写程序的下一步是:


再一次,我会同时写下ifelseend。这样能够在写代码时帮助我理顺“我写的具体是哪个分支”,使我集中精力在一小部分中,在ifelse之间填充代码,使得写程序变得更加容易;同时这样写的另一个好处是使电脑能够在任何时候识别出来程序编写的进度,我显示给你的任何一个未完成的程序版本都可以运行起来,虽然程序未完成但是可以顺利运行。这样就使得我能够边写程序边进行测试,来检查程序运行情况和哪部分程序还需要继续改进。当程序通过了所有的测试,编程就顺利完成了!

打完 收工!!

啵一个
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342