`
凌川__
  • 浏览: 82267 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
社区版块
存档分类
最新评论

3.10 循环语句

阅读更多

一. while(当…) 循环
while 条件
 语句1; 语句2 ; 语句…
end

二. 单行 while 循环
  ( 语句1; 语句2 ; 语句… )   while   条件

三. until(直到…)  循环
我们想输出数字1到9,看程序 E3.10-1.rb,E3.10-2.rb :

a=1
 while a <10
 print a," "
 a=a+1
end
  # => 1 2 3 4 5 6 7 8 9
 
a=1
 until a >=10
 print a," "
 a=a+1
end
  # => 1 2 3 4 5 6 7 8 9
 

一边是while  a <10,一边是until  a >=10,其它代码都一样,结果也一样。从这两个小程序可以看出:  until  条件  =  while  not (条件) 

四. for…in 循环
for  变量   in   对象
    语句1; 语句2 ; 语句…
end
对象可以是数组,区间,集合…, 看程序 E3.10-3.rb:

ruby 代码 
  1. #  E3.10-3.rb   
  2. for  i  in  1..9   
  3.   print  i," "             # => 1 2 3 4 5 6 7 8 9   
  4. end  
  5.     

 

 

五.break , next  &  redo  &  retry
在循环体内,如果遇到:
break ,跳出当层循环;
next ,忽略本次循环的剩余部分,开始下一次的循环;
redo ,重新开始循环,还是从这一次开始;
retry ,重头开始这个循环体。
1).看程序 E3.10-5.rb 。

ruby 代码 
  1. puts "演示break"  
  2. c='a'   
  3.   for i in 1..4   
  4.     if i == 2 and c =='a'   
  5.       c = 'b'   
  6.       print "\n"  
  7.       break  
  8.     end  
  9.     print i,c," "  
  10.   end  
  11.  puts "\n\n"  

 #=>演示break
      1a

变量 c 在循环体之前赋值为 'a' ,程序执行了 2 次,遇到 break ,退出了本层循环,不再执行第 2 次的print i,c," "。

 

2).看程序 E3.10-5.rb 。

ruby 代码 
  1. puts "演示next"    
  2. c='a'   
  3.   for i in 1..4       
  4.     if i == 2 and c =='a'   
  5.       c = 'b'   
  6.       print "\n"  
  7.       next  
  8.     end  
  9.     print i,c," "  
  10.   end  
  11.   puts "\n\n"  

 #=>演示next
  1a
  3b 4b
变量 c 在循环体之前赋值为 'a' ,程序执行到第 2 次,c 又赋值为 'b',遇到 next ,退出了本次循环,不再执行第 2 次的print i,c," ",开始第 3 次循环,此时,c = 'b',i = 3。

 

3).看程序 E3.10-5.rb 。

ruby 代码 
  1. puts "演示redo"    
  2. c='a'   
  3.   for i in 1..4       
  4.     if i == 2 and c =='a'   
  5.       c = 'b'   
  6.       print "\n"  
  7.       redo  
  8.     end  
  9.     print i,c," "  
  10.   end  
  11.   puts "\n\n"  

 #=>演示redo
  1a
  2b 3b 4b
变量 c 在循环体之前赋值为 'a' ,程序执行到第 2 次,c 又赋值为 'b',遇到 redo ,重新开始循环,还是从这一次开始 ,此时,c = 'b',i = 2。

 

4).看程序 E3.10-5.rb 。

ruby 代码
  1. puts "演示retry"  
  2. c='a'   
  3.   for i in 1..4       
  4.     if i == 2 and c =='a'   
  5.       c = 'b'   
  6.       print "\n"  
  7.       retry  
  8.     end  
  9.     print i,c," "  
  10.   end  
  11.  puts "\n\n"  

#=>演示retry
  1a
  1b 2b 3b 4b
变量 c 在循环体之前赋值为 'a' ,程序执行到第 2 次,c 又赋值为 'b',遇到 retry ,重头开始这个循环体 ,此时,c = 'b',i = 1。


六. 求50以内的素数。

ruby 代码
  1. #  E3.10-4.rb         求50以内的素数                    
  2. for  i  in  2..50      #50以内                           
  3.   f=true             #起始假定每个数都是素数            
  4.   for  p  in  2...i    #比自身小的正整数(1和自身除外)   
  5.     if  i%p==0      #如果能整除                        
  6.       f=!f           #那么这个数不是素数                
  7.       break          #并且跳出这层循环                  
  8.     end              # if 结束                           
  9.   end                #内层循环结束                      
  10.   print  i," "  if  f    #如果这个数保持起始假定,则打印    
  11. end                  #外层循环结束     

 # => 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
E3.10-6.rb 这个小程序不是最优化的,你可以复制到自己的编辑器内,试着反复重构优化。

 

完整阅读,请看我写的 Ruby语言中文教程all in one    
 

分享到:
评论

相关推荐

    Ruby语言入门教程

    3.10 循环语句........................................................................................................................24 3.11 常与线程......................................................

    《Web程序设计》第2版

    所有特效及书本网页演示 第1章 Web编程基础知识 8_例1.1 一个最简单的网页 ...67_例3.11 对象数组,用循环语句将数组项的值赋予各文本框 69_例3.12 求阶乘函数返回n!;并定义输入、计算、输出过程

    程序设计初步(2013级-C++程序设计)

    2013级,C++程序设计课件。第3章 程序设计初步。内容: 3.1 面向过程程序设计和算法 3.2 C++程序和语句 ...3.11 循环结构和循环语句 3.12 循环的嵌套 3.13 break语句和continue语句 3.14 编写循环结构的程序

    精通JavaScript

    • 4.9.htm do-while循环语句 • 4.10.htm for循环语句 • 4.11.htm for循环语句之二 • 4.12.htm continue语句 第5章(\第5章) • 5.1.htm 函数定义 • 5.2....

    21天学通Java-由浅入深

    while循环语句举例 74 4.5 for循环语句 75 4.5.1 for循环语句的语法 75 4.5.2 用for循环来实现其他循环语句 76 4.5.3 for循环语句的举例 77 4.6 如何中断和继续语句的执行 78 4.6.1 break:中断语句执行 78 4.6.2 ...

    Matlab教程 我觉得很好

    2.5.2 条件和循环语句 第三章 MATLAB图形制作 3.1 函数 plot 3.2 函数 ezplot 3.2.1 绘制隐函数的平面曲线 3.2.2 绘制参数函数 3.3 函数 ezpolar 3.3.1 绘制极坐标函数的平面曲线(一) 3.3.2 绘制极坐标函数的...

    UbuntuChina12

    8.9 循环语句的I/O重定向 221 8.9.1 while循环的I/O重定向 221 8.9.2 until循环的I/O重定向 222 8.9.3 for循环的I/O重定向 222 8.10 Here文档 223 8.11 Shell函数 227 8.12 逻辑与和逻辑或并列结构 232 8.12.1 逻辑...

    JavaScript权威指南-第六版

     3.10 变量作用域56  第4章 表达式和运算符60  4.1 原始表达式60  4.2 对象和数组的初始化表达式61  4.3 函数定义表达式62  4.4 属性访问表达式63  4.5 调用表达式64  4.6 对象创建表达式64  4.7 运算符...

    振中TP900系列掌机开发环境及TPOS 嵌入式操作系统开发 支持Delphi,ZZDBASE语言,VisualBasic,

    件、分支、循环、子程序等程序结构控制语句,也有赋值、运算等语句和一些常用函数,还有 基本的数据录入、修改、查询、显示等数据库操作语句。用户能够用这种语言,编出在 TP900 系列数据采集终端上对DBF库文件进行...

    程序设计教程 陈家骏等编著

    3.5.4 三种循环语句的使用原则 61 3.5.5 循环程序设计实例 64 3.6 转移语句 70 3.6.1 break语句 70 3.6.2 continue语句 71 3.6.3 goto语句 73 3.7 空语句 74 3.8 程序设计风格 75 3.8.1 结构化程序设计 76 3.8.2 ...

    ASP.NET3.5从入门到精通

    2.6.3 do while 循环语句 2.6.4 foreach 循环语句 2.7 异常处理语句 2.7.1 throw 异常语句 2.7.2 try-catch 异常语句 2.7.3 try-finally 异常语句 2.7.4 try-catch-finally 异常语句 2.8 小结 第 3 章面向对象设计...

    C++和面向对象数值计算

    2.3.7 循环语句 2.4 斐波纳契数 2.5 练习 第3章派生类型 3.1 常量和宏 3.2 枚举类型 3.3 数组 3.4 结构 3.5 联合和比特域 3.6 指针 3.6.1 指针运算 3.6.2 多重指针 3.6.3 偏移量指针 ...

    ASP.NET 3.5 开发大全11-15

    2.6.3 do while循环语句 2.6.4 foreach循环语句 2.7 异常处理语句 2.7.1 throw异常语句 2.7.2 try-catch异常语句 2.7.3 try-finally异常语句 2.7.4 try-catch-finally异常语句 2.8 小结 第3章 面向对象设计基础 3.1 ...

    ASP.NET 3.5 开发大全

    2.6.3 do while循环语句 2.6.4 foreach循环语句 2.7 异常处理语句 2.7.1 throw异常语句 2.7.2 try-catch异常语句 2.7.3 try-finally异常语句 2.7.4 try-catch-finally异常语句 2.8 小结 第3章 面向对象设计基础 3.1 ...

    ASP.NET 3.5 开发大全1-5

    2.6.3 do while循环语句 2.6.4 foreach循环语句 2.7 异常处理语句 2.7.1 throw异常语句 2.7.2 try-catch异常语句 2.7.3 try-finally异常语句 2.7.4 try-catch-finally异常语句 2.8 小结 第3章 面向对象设计基础 3.1 ...

    JavaScript基础和实例代码

    2.8.5 while和do-while循环语句 2.8.6 使用break和continue进行循坏控制 2.8.7 with对象操作语句 2.8.8 使用for…in进行对象循坏 2.8.9 含标签的语句 2.9 函数 2.9.1 函数的基本组成 2.9.2 全局函数与局部函数 2.9.3...

    ASP.NET 3.5 开发大全word课件

    2.6.3 do while循环语句 2.6.4 foreach循环语句 2.7 异常处理语句 2.7.1 throw异常语句 2.7.2 try-catch异常语句 2.7.3 try-finally异常语句 2.7.4 try-catch-finally异常语句 2.8 小结 第3章 面向对象设计基础 3.1 ...

    ASPNET35开发大全第一章

    2.6.3 do while循环语句 2.6.4 foreach循环语句 2.7 异常处理语句 2.7.1 throw异常语句 2.7.2 try-catch异常语句 2.7.3 try-finally异常语句 2.7.4 try-catch-finally异常语句 2.8 小结 第3章 面向对象设计基础 3.1 ...

    Ubuntu权威指南(2/2)

    8.9 循环语句的I/O重定向 221 8.9.1 while循环的I/O重定向 221 8.9.2 until循环的I/O重定向 222 8.9.3 for循环的I/O重定向 222 8.10 Here文档 223 8.11 Shell函数 227 8.12 逻辑与和逻辑或并列结构 232 8.12.1 逻辑...

Global site tag (gtag.js) - Google Analytics