#一、这里是注释,是单行注释,类似于//
puts 3/5#这里是整数形式的结果
puts 3/5.0#这里是小数形式的结果
=begin
这是多行注释,实际上这也是Ruby内嵌文档格式,类似于Java doc
=end不但要有起止,还要缩进才有用。
=end
#二、连行
puts "Hello Ruby!"; puts "This is a "/
"String";#行尾的分号可以省略?‘/’是连行符,行尾即默认为一个语句的结束,可以没有分号,如果不希望它结束但想换行,需要加连行符'/'且之后不能再加行注释。
#三、print,puts,printf
#puts可以加多个参数在后面,每输出一个参数自动加一个换行符,而print不加换行符
puts "%d,%s",100,"string, hello!";
#用格式吕输出有点像C语言风格,用printf
printf "%d,%s",100,"string, hello!";
#四、一些语法知识
#0开头表8进制数,0x开头表16进制数,0b开头表二进制,单引号双引号都可引字符串
#一个数组中的元素可以互不相同,是弱类型语言
#区间:1..5表1,2,3,4,5。1...5表示1,2,3,4
#赋值可用这种形式a,b,c=3,4,5;
#比较运算时。==最弱,只要值相同即可,如1==1.0为真,eql?强一点,需要值为类型相同,如1==1,equal?最强需要两个变量的地址相同,如a=b,b==a才为真。
#<=>比较两个对象的大小,大于等于小于分别返回1,0,-1。如“aaa” <=> "abc"返回-1
#===用来返回右边的值是否属于左边的区间,如 (0..9) === 4返回true
#=~和!~分别用来表示正则表达式是否匹配,前者匹配时返回位置,不匹配时返回nil。后者返回true或false
#五、选择语句
#这是if语句,单行,多行情况,与Java及C/C++不同的是,它有then end等关键词。
(puts "/n1==1";puts "and 2==2";) if(1==1 and 2==2)
if(1==1) then puts"here is 1==1, then end"; end;
if (1==2)
puts 1==2
elsif(2==2)
puts "2==2 is true"
else
puts 2434
end
#unless相当于if not.我觉得仅是如此的话,没什么意义
unless (1==2)
puts "unless 1==2"
end
#case的用法如下.结果:x=3;其它可能。case其实用得比较少,即使我自己编程也用得比较少。
x=3
case x
when 1..2
print "x=",x,";在 1..2中"
when 4..9, 0
print "x=",x,";在4..9,0中,或是0"
else
print "x=",x,";其它可能/n"
end
#六、循环语句
=begin
一. while(当…) 循环
while 条件
语句1; 语句2 ; 语句…
end
二. 单行 while 循环
( 语句1; 语句2 ; 语句… ) while 条件
=end
#while,单行while与单行if一样的写法,比c语言之类的,多了个end
a=1
while a <10
print a," "
a=a+1
end
print"/n"
#until,完全可以用while,多学一个意义不大,看得懂即可
a=1
until a >=10
print a," "
a=a+1
end
puts#用来换行比较方便
#1 2 3 4 5 6 7 8 9这个应该容易看懂
for i in 1..9
print i," "
end
#在循环体内,如果遇到:
#break ,跳出当层循环;
#next ,忽略本次循环的剩余部分,开始下一次的循环;相当于continue
#redo ,重新开始循环,还是从这一次开始;
#retry ,重头开始这个循环体。
#循环语句示例:求50以内的素数
puts"/n求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
#七、控制语句次数的一些语法,看得懂即可,自己的话,刚开始会用if,while,for 等来解决问题
#times , upto , downto , each ,step
3.times { print "Hi!" } #Hi!Hi!Hi!
1.upto(9) {|i| print i if i<7 } #123456
9.downto(1){|i| print i if i<7 } #654321
(1..9).each {|i| print i if i<7} #123456
0.step(11,3) {|i| print i } #0369
#八、综合示例二,求素数,尽量多地展现语法,Ruby中没有大括号,用缩进来表示会清晰一些。
# E3.12-1.rb 求50以内的素数
puts
$arr=[ ] #建立一个全局数组 $arr
$arr[0]=2
def add_prime(n) #定义方法 将 n以内的奇素数加入$arr
3.step(n,2){|num|$arr <<num if is_prime?num }
end
def is_prime?(number) #定义方法 判断一个数是否是素数
j=0 #数组下标
while $arr[j] * $arr[j] <=number
return false if number % $arr[j] ==0
j +=1
end
return true
end
add_prime(50)
print $arr.join(", "),"/n" #转换成字符串输出