RubyRuby入门

6(2)歧路好风光 兜兜又转转

2017-09-25  本文已影响14人  彩虹门票
Fire

下面的小贴士能够在你们写分支程序中有所帮助,同时也能运用在其他的流程控制中:

循环Loop

我们经常想让电脑一遍又一遍得做相同的事--毕竟这正是电脑被认为所擅长的。

当你告诉你的电脑保持重复做某事时,你也需要告诉它在何时停止做这件事。电脑从来不会为重复做某事而感到厌烦的,如果不告诉它何时停止它就会无限重复这件事。在告诉电脑在某个特定条件是真时重复程序中某部分时,我们也要确保它不会无限重复下去。这与if条件语句很相似:

command = ''

while command != 'bye'
  puts command
  command = gets.chomp
end

puts 'Come again soon!'


上面就是一个循环(你可能注意到在输出的开头有一个空行,这是在我们输入数据前程序的第一个输出。你可以试试如何修改程序来去除第一行,你的程序是不是能像上面程序一样成功运行?)

循环能够让我们做各种有趣的事,你们能想到的都能做到。然而如果你写的程序有错误循环程序就会产生问题,如果电脑运行程序进入了无限循环怎么办?不用太担心,如果你认为程序已经进入无限循环,你只需要同时按下CtrlC键就可以。

在我们开始学习循环前,我们先学习一点其他的内容来使后面的学习更加容易一些。

一点逻辑知识

让我们再回顾一下我们第一个分支程序。假如我妻子回到家看到这个程序跑了一下程序,程序没有告诉她有一个美丽可爱的名字?好吧……可能她不一定太在乎这个,但是我在乎啊!因此让我们重写一下:

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

运行无误……但并不太完美。有什么问题吗?好吧,我在这些年的编程中学到的最好的规则是DRY规则:不要重复你自己!( Don't Repeat Yourself)我甚至可以写一本讨论DRY规则为什么如此有效的书。在我们的程序中我们重复写了两遍'What a lovely name!'的命令,你可能会问这样也不太重要吧?好吧,假如我第二遍写的过程中有拼写错误呢?假如我想将两行中的‘lovely’都改成‘beautiful’呢?要知道我很懒的,因此如果我想要程序在遇到‘Chris’或‘Katy’时做相同的事,它的确应该运行下面相同的命令
puts 'Hello, what\'s your name?'
name = gets.chomp
puts 'Hello, ' + name + '.'
if (name == 'Chris' or name == 'Katy')
  puts 'What a lovely name!'
end

完美!上面程序中为了使程序顺利运行我用到了or这个逻辑运算符,还有两个逻辑运算符是andnot.当用到它们时最明智的做法是与括号一起用,下面让我们来看看它们是如何使用的:
iAmChris  = true
iAmPurple = false
iLikeFood = true
iEatRocks = false

puts (iAmChris  and iLikeFood)
puts (iLikeFood and iEatRocks)
puts (iAmPurple and iLikeFood)
puts (iAmPurple and iEatRocks)
puts
puts (iAmChris  or iLikeFood)
puts (iLikeFood or iEatRocks)
puts (iAmPurple or iLikeFood)
puts (iAmPurple or iEatRocks)
puts
puts (not iAmPurple)
puts (not iAmChris )
output
其中可能骗到你的是or这个运算符。在英语中我们通常用or表示“这一个或者那一个,但不包含两个”。比如你妈妈说:“你可以吃pie或者cake作为餐后甜点.”她并不是说你可以两个都做甜点一起吃掉!但是在计算机中用or表示“这一个或者那一个,或者两个都包含”(或者说至少包含一个),这样来看计算机比你们的妈妈宽容多了。

牛刀小试

当你完成了这些程序,让自己放松一下!你已经学了许多,祝贺你!你会惊讶于你已经可以让电脑去做如此多的事情了!再学习几个章节,你就能够编出任何程序了,这是真的!回顾一下你能够写的所有程序,现在你已经离不开循环和分支程序了。

下期我们将了解一种新的对象阵列,它对于处理其他对象的列表很有帮助。

上一篇 下一篇

猜你喜欢

热点阅读