- 浏览: 83837 次
- 性别:
最近访客 更多访客>>
最新评论
-
Bernice_liu:
谢谢分享,受益匪浅,适合我——初学者
Ruby语言中文教程all in one -
何枫abc:
怎么感觉Ruby有点像C!!!
3.5 标识名和变量的作用域 3.6 类库 3.7 数据类型 -
何枫abc:
谢谢了!!!你写的很好,现在我正在学Ruby!!!
第二章 运行环境 -
yangzhihuan:
正想知道ruby是怎么样生成像javadoc那样的文档,多谢了 ...
3.1 注释与分行 -
whisper:
从lambda演算的角度说我们并不关心一个东西到底是什么,而只 ...
变量一定要有类型吗(一)
一. 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:
- # E3.10-3.rb
- for i in 1..9
- print i," " # => 1 2 3 4 5 6 7 8 9
- end
五.break , next & redo & retry
在循环体内,如果遇到:
break ,跳出当层循环;
next ,忽略本次循环的剩余部分,开始下一次的循环;
redo ,重新开始循环,还是从这一次开始;
retry ,重头开始这个循环体。
1).看程序 E3.10-5.rb 。
- puts "演示break"
- c='a'
- for i in 1..4
- if i == 2 and c =='a'
- c = 'b'
- print "\n"
- break
- end
- print i,c," "
- end
- puts "\n\n"
#=>演示break
1a
变量 c 在循环体之前赋值为 'a' ,程序执行了 2 次,遇到 break ,退出了本层循环,不再执行第 2 次的print i,c," "。
2).看程序 E3.10-5.rb 。
- puts "演示next"
- c='a'
- for i in 1..4
- if i == 2 and c =='a'
- c = 'b'
- print "\n"
- next
- end
- print i,c," "
- end
- 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 。
- puts "演示redo"
- c='a'
- for i in 1..4
- if i == 2 and c =='a'
- c = 'b'
- print "\n"
- redo
- end
- print i,c," "
- end
- puts "\n\n"
#=>演示redo
1a
2b 3b 4b
变量 c 在循环体之前赋值为 'a' ,程序执行到第 2 次,c 又赋值为 'b',遇到 redo ,重新开始循环,还是从这一次开始 ,此时,c = 'b',i = 2。
4).看程序 E3.10-5.rb 。
- puts "演示retry"
- c='a'
- for i in 1..4
- if i == 2 and c =='a'
- c = 'b'
- print "\n"
- retry
- end
- print i,c," "
- end
- puts "\n\n"
#=>演示retry
1a
1b 2b 3b 4b
变量 c 在循环体之前赋值为 'a' ,程序执行到第 2 次,c 又赋值为 'b',遇到 retry ,重头开始这个循环体 ,此时,c = 'b',i = 1。
六. 求50以内的素数。
- # E3.10-4.rb 求50以内的素数
- for i in 2..50 #50以内
- f=true #起始假定每个数都是素数
- for p in 2...i #比自身小的正整数(1和自身除外)
- if i%p==0 #如果能整除
- f=!f #那么这个数不是素数
- break #并且跳出这层循环
- end # if 结束
- end #内层循环结束
- print i," " if f #如果这个数保持起始假定,则打印
- end #外层循环结束
# => 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
E3.10-6.rb 这个小程序不是最优化的,你可以复制到自己的编辑器内,试着反复重构优化。
完整阅读,请看我写的 Ruby语言中文教程all in one
发表评论
-
8.4 迭代器、代码块、闭包
2007-02-13 06:25 1768先看一句代码: ruby 代码 (1..9). ... -
8.3 正则表达式
2007-02-13 06:13 1562一本入门小书,不想涉及正则表达式,但是正则表达式与Ruby语言 ... -
8.2 再说字符串
2007-02-13 06:07 1347一. 生成一个字符串 字 ... -
8.1 再说数组
2007-02-13 06:03 1476一. 建立一个数组 ruby 代码 #E8.1- ... -
7.4 require 和 load
2007-02-13 05:59 1359程序 E7.3-1.rb中先写了Me模块,然后include ... -
7.3 糅和(Mix-in) 与多重继承
2007-02-13 05:55 1807糅和,也译作混合插入,也许就称作 Mix-in 比较合适。 现 ... -
7.1 模块 7.2 命名空间
2007-02-13 05:50 22447.1 模块 我们常常把许 ... -
6.5 访问控制
2007-02-13 05:43 1182在Ruby里,要读取,或是改变对象的属性,唯一的途径是调用对象 ... -
6.4 单例方法
2007-02-13 05:16 1039同一份设计蓝图(类),不同的实例对象,可以表现出不同的行为特征 ... -
6.3 实例变量、类变量、类方法
2007-02-13 05:28 2273学习编程的过程,就是深化理解变量的过程。在面向对象编程中也不例 ... -
6.2 增强父类方法
2007-02-13 04:39 1036如果我们只是想增强父类的方法,而不是完全地替代它,就可以用关键 ... -
6.1 重载?重写
2007-02-13 04:11 1927在Java 中,重载(overload)和重写(overrid ... -
5.5 一些编码建议
2007-02-13 03:37 1148这里不是 Ruby语言的编 ... -
5.4 蓝图可以改变吗? ——动态语言
2007-02-13 03:28 777Ruby 是动态语言,你可以改变 Ruby 程序的结构,功能, ... -
5.3 详解变量—— 动态类型
2007-02-13 03:22 1186变量是什么?变量有哪些特征呢?学习编程的过程,就是深化理解变量 ... -
5.1 为什么是Ruby? 5.2 Ruby会长久么?
2007-02-13 03:16 10205.1 为什么是Ruby? 现 ... -
4.5 多态
2007-02-13 03:07 798不同的子类继承一个父 ... -
4.4 继承
2007-02-13 03:04 838如果我们要写一个学生 ... -
4.3 封装
2007-02-13 02:53 932让我们来定义一个类,类名是Person,类名首字母要大写;属性 ... -
4.1 两种思维方式 4.2 对象
2007-02-13 02:47 9344.1 两种思维方式 人们 ...
相关推荐
**3.10 循环语句** 循环语句如For...Next、Do...Loop等,用于重复执行某段代码。 **3.11 过程** 过程是可重用的代码块,包括Sub和Function。Sub过程无返回值,Function过程可以返回一个值。 **3.12 本章小结** 本...
- **控制结构**:提供了常见的流程控制语句,如if-else、for循环、while循环等。 - **函数定义与调用**:支持自定义函数的定义和调用,方便实现复杂逻辑。 - **纹理采样**:提供了多种纹理采样方法,如texture2D()...
2. **匹配语句(Match Case)**:新增的`match`关键字提供了模式匹配功能,类似于其他语言中的switch语句,但更加灵活和强大。 3. **可选类型注解**:在3.5版本引入类型提示后,3.10进一步加强了类型注解的使用,...
这个版本引入了类型注解的增强,比如PEP 572中的赋值表达式(也称为"walrus operator": `:=`),这使得在条件语句和循环中可以更方便地处理变量赋值。此外,它还优化了字典的性能,尤其是对于频繁的插入和删除操作。...
它支持变量声明、条件语句(如IF-THEN-ELSE)、循环结构(如WHILE-WEND和FOR-NEXT)以及函数定义。 2. **Windows API调用**:AutoIt能够直接调用Windows API函数,极大地扩展了其功能,可以进行窗口操作、消息发送...
这种类型的题目可以帮助读者理解数组的概念和使用,熟悉循环语句和条件语句的使用。 【3.4】:計算1-3+5-7+…-99+101的值 这个题目要求读者使用C语言计算1-3+5-7+…-99+101的值。这种类型的题目可以帮助读者理解...
所有特效及书本网页演示 第1章 Web编程基础知识 8_例1.1 一个最简单的网页 ...67_例3.11 对象数组,用循环语句将数组项的值赋予各文本框 69_例3.12 求阶乘函数返回n!;并定义输入、计算、输出过程
同时,熟悉Python的数据结构(如列表、字典)和控制流(if语句、for循环)也是必不可少的。 在开发过程中,调试和测试是关键步骤。Python提供了丰富的调试工具,如pdb模块,以及各种第三方库,如pytest,用于编写...
Python 提供了多种条件和循环语句,包括 if 语句、while 语句和 for 语句等,可以根据需要选择合适的语句来控制程序的流程。 7. 函数定义 Python 允许用户定义自己的函数,可以将一组语句封装在一起,以便重复使用...
例如,`match` 语句用于模式匹配,类似于其他编程语言中的 switch 语句,但更灵活且支持复杂的数据结构,使得条件判断更加清晰。 在性能方面,Python 3.10 带来了更快的字典查找速度,这得益于新的哈希表实现。此外...
解决这个问题的关键在于使用循环语句和条件语句来查找最小元素。 【3.4】数学计算问题 在这个问题中,我们需要计算一系列数学表达式的值。这个问题考察了读者的数学基础知识和编程能力。解决这个问题的关键在于...
首先,我们需要了解Python的基础知识,包括变量、数据类型(如字符串、列表、元组、字典)、流程控制(if语句、for循环、while循环)以及函数的定义和调用。这些基础知识是编写任何Python代码的基础。 在自动化测试...
TINY+是一种扩展自TINY的语言,增加了诸如声明、条件语句、循环语句、字符串类型等功能。以下内容将涵盖TINY+的词汇约定、语法结构(使用扩展巴科斯范式(EBNF)表示)、主要语义以及示例程序。 #### 二、TINY+ 的...
• 4.9.htm do-while循环语句 • 4.10.htm for循环语句 • 4.11.htm for循环语句之二 • 4.12.htm continue语句 第5章(\第5章) • 5.1.htm 函数定义 • 5.2....
- 控制流:包括条件语句(if-else)、循环(for、while)、异常处理(try-except)和函数定义。 - 模块与包:解释如何组织代码,导入和使用其他模块,以及创建自定义模块和包。 - 类与对象:涵盖面向对象编程的...
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 ...
- **命令式编程**:OCaml 也支持命令式的控制结构,如循环和条件语句,允许开发者灵活地处理状态和副作用。 - **面向对象编程**:OCaml 的面向对象模型是基于模块和接口的,提供了类、继承和多态性。 - **模式...
- 避免使用 `goto` 语句,可以通过循环和其他控制结构替代。 - 对程序进行模块化设计,将主要逻辑分解为更小的函数,提高代码的可读性和可维护性。 综上所述,这个简单的手持计算器程序通过定义一个计算器类实现...