查看: 15413|回复: 80

[通用发布] 学过C系语言的Ruby快速入门

[复制链接]
梦石
0
星屑
50
在线时间
16 小时
注册时间
2014-6-21
回帖
25
发表于 2014-6-26 10:14:43 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 琳lin爱妮爱 于 2014-7-6 18:11 编辑

在发帖之前一直有着比较忐忑的心情,因为图书馆里就有关于Ruby语言的入门基础,是零基础的入门。
由于本人是学过C与Java的孩纸,所以看零基础教程的时候就有一点无奈,有些东西是相同的,但有些东西有着不太相同的地方,还有一些东西完全不同。于是我看教程的时候也一直不敢快速的跳过。
于是,我是这么想的:如果是学过C系语言的孩纸,那么通过一些有针对性的简单的异同的讲解,一定可以用更短的时间学会Ruby这门语言。
我也不知道是不是已经有人写过相同的东西了,所以等待审批~如果版主认同我可以这么做的话,我就开始编写教程~~

【本人的心愿】
由于本人自己也不是特别的精通Ruby,也许在大神们看来还是处于入门级的阶段里
所以这段时间的编写已经出了相当多的问题,我也知道已经令很多大神无语了
正如题目所说,我是从C系语言走过来的孩纸,而且我的Ruby是自学的,所以我无法知道有些东西是不是理解正确或是有所遗漏
事实也证明如此,我每写完一个篇章,总是会有大神发现问题并且提了出来,同时我也长了很多的Ruby知识,对此我表示非常感谢
我希望通过这样的方法,与一起从C系语言走过来的各位孩纸,从初学到慢慢的理解Ruby,再到所谓的精通
我也相信,通过慢慢的编辑修改,以后也一定可以成为一篇好的教程,同时也希望各位大神能够继续帮助我


那么,请大家跟我一起攀登这长长的坡道吧~

【从4F开始进行连载~】

欢迎大家提出错误与意见

一、数字的计算
二、变量与变量的赋值   
三、逻辑运算符与条件运算符  
四、选择判断语句 <--【已更新】
五、循环控制语句 <--【已更新】

点评

最喜欢看Ruby教程了,我是新人,什么都不会~不过咱可说好了,Ruby教程写到后面不能写成RGSS教程了,那样各位大大会生气的~  发表于 2014-7-1 10:10
只是上手当然简单  发表于 2014-6-28 11:37
个人认为只要逻辑相同,任何语言都能快速入手==  发表于 2014-6-27 22:56

评分

参与人数 2星屑 +66 梦石 +2 收起 理由
RyanBern + 66 精品文章
Sion + 2 教程奖励

查看全部评分

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-6-26 11:23:44 来自手机 | 显示全部楼层
届时请参加本区活动。活动预告见水区,蓝色高亮的帖子
回复

使用道具 举报

梦石
0
星屑
50
在线时间
16 小时
注册时间
2014-6-21
回帖
25
 楼主| 发表于 2014-6-26 12:09:30 | 显示全部楼层
taroxd 发表于 2014-6-26 11:23
届时请参加本区活动。活动预告见水区,蓝色高亮的帖子

因为我是第一次编写教程之类的,可能还弄的不好,所以我想先在这个帖子里写一写。如果版主觉得可以搬上正式舞台了,到时候我一定会参加活动的。
【ps:由于最近几天要考试,所以更贴的速度会很慢。考试完我会努力加速的~~】

点评

但是,由于你想要写的东西和我活动的内容不同,届时你可能无法参加那个活动……不是能否搬上正式舞台的原因……  发表于 2014-6-26 16:58
对于愿意发布教程的,我们肯定支持啦……  发表于 2014-6-26 16:57
回复

使用道具 举报

梦石
0
星屑
50
在线时间
16 小时
注册时间
2014-6-21
回帖
25
 楼主| 发表于 2014-6-26 13:55:48 | 显示全部楼层
这里开始正文吧~
题目已经顾名思义,本教程是针对学过C系语言的人所编写的。其实也不能叫编写,就是给大家一些学习Ruby的捷径。
由于C系语言与Ruby语言有一定的相通之处,所以学过C系语言的人在2-3个小时之内入门Ruby是完全有可能的。
这里所说的C系语言,包括C,C++,Java。C是面向过程,Java是面向对象的,而C++是插于两者之间的,既有面向过程,又有面向对象。所以这里本人将不着重说C++。
如果你是学过Java的,那么你只需要半天就能快速入门Ruby。
如果你是学过C语言,而没有学过Java的,那么你可能需要长一点的时间。主要在于需要弄懂面向对象是如何设计的【也就是俗称的类、对象与方法的定义与操作】。
当然,如果你有熟练的C语言与Java的编程能力,那么一定还能更快的学会。

本人观点认为,如果你想在2-3个小时内学会Ruby,那么需要你有以下的几个能力要求:
1.能熟练掌握如何进行程序的赋值、判断、循环操作;
2.能熟练进行函数的定义与调用;
3.能熟练的进行类的定义、类的操作、实例化对象与调用类内方法的操作【Java】;
4.做过小型程序,并能在平台上成功运行。
其实说到底,就是需要比较熟练的语言编写能力。

废话不多说了,准备开始~
回复 0 1

使用道具 举报

梦石
0
星屑
50
在线时间
16 小时
注册时间
2014-6-21
回帖
25
 楼主| 发表于 2014-6-26 14:04:36 | 显示全部楼层
【这一楼是暂时作为目录的,以后再进行编辑~~】

点评

都编辑到顶楼吧。  发表于 2014-6-26 21:39
回复 1 0

使用道具 举报

老黄鸡

梦石
4
星屑
45699
在线时间
7948 小时
注册时间
2009-7-6
回帖
13337

MZ评测员RM创作大赛01组委会开拓者贵宾

发表于 2014-6-26 14:46:45 | 显示全部楼层
已转入发布版块。
RGDirect - DirectX驱动的RGSS,点我了解.
(排满,暂停)RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复

使用道具 举报

梦石
0
星屑
50
在线时间
16 小时
注册时间
2014-6-21
回帖
25
 楼主| 发表于 2014-6-27 13:34:28 | 显示全部楼层
本帖最后由 琳lin爱妮爱 于 2014-6-28 16:27 编辑

在正文开始之前,先普及几个语法点:

首先Ruby同C系语言一样,大小写敏感。请一定要注意大小写。

1.Ruby的注释语句:
分为单行与多行两种
单行注释为:#
例如:
[pre lang="ruby" line="1"]p 3 + 4  #p 7[/pre]
输出为7.
这个使用的非常之多,而且与C与Java的注释语句不同,请记好。

多行的注释为:=begin 到=end
例如:
[pre lang="ruby" line="1"]p 3 + 4
=begin
这么简单的东西你可能不会算吗?
p 7
=end[/pre]
输出7.
但在RM脚本编译器中是很少使用的。【至少我是暂时没发现脚本中使用了这个】

想要注释多行时,一般情况下是这样使用的:
[pre lang="ruby" line="1"]#==============================================================================
# ■ Vocab
#------------------------------------------------------------------------------
#  定义了用语和信息。将部分资料定义为常量。用语部分来自于 $data_system 。
#==============================================================================
[/pre]
大家随手打开一个都是能够看到的。

2.Ruby的语句的输出语句:
p  ,  print  ,  puts

[pre lang="ruby" line="1"]#使用p 语句输出
p 3 + 4
p "谁告诉我3+4等于8的?"

#使用print语句输出
print 3 + 4
print "谁告诉我3+4等于8的?"

#使用puts语句输出
puts 3 + 4
puts "谁告诉我3+4等于8的?"[/pre]

以上三个语句大致上可以通用,但是puts会在语句的后面自动添加一个换行符,直接换行。而print则不会。需要换行时使用 '\n' , 这里同C系语言一样。
另外,p 语句则更适合进行检查,因为p输出采用的是数组字面量的表示法,而prints与puts只是简单的将每个元素打印出来。这里可以暂时不必仔细研究。
输出语句在RM脚本编译器中很少出现。就如同Java的System.out.print语句一样,在后台命令中使用的非常多,而在图形界面设计的时候却从不会使用。但是在发现出错时,却可以巧妙的利用输出语句来输出当前的数据或文本,对解决BUG还是很有用处的。

3.Ruby语句的断句:
在Ruby语言中,同C系语言一样,用  ;   表示一句话的结束,也可以选择直接换行来表示一句话的结束。
在RM脚本编译器中使用的是直接换行。

如果语句太长,可以用“ \ ”连接下一行。
例如:
[pre lang="ruby" line="1"] print "真的可以"\
"连行啊"
#  真的可以连行啊[/pre]
同样在RM脚本编译器中很少使用。

点评

多谢指出,以前都没认真注意过这几个输出语句的区别的说  发表于 2014-6-28 16:29
一般来说,p是给程序员看的,puts和print是给用户看的。因为inspect往往有更多更可读的信息  发表于 2014-6-27 20:57
以下错误已改正,如发现哪里还有问题,请一定告知我,谢谢~  发表于 2014-6-27 20:31
字符串还是用puts吧,又带换行又没引号  发表于 2014-6-27 16:18
p和print的主要区别不是引号问题……  发表于 2014-6-27 16:17
回复

使用道具 举报

梦石
0
星屑
50
在线时间
16 小时
注册时间
2014-6-21
回帖
25
 楼主| 发表于 2014-6-27 14:12:43 | 显示全部楼层
本帖最后由 琳lin爱妮爱 于 2014-6-27 14:17 编辑

一、数字的计算

1.基本的加减乘除运算与优先顺序同C系语言

[pre lang="ruby" line="1"]#四则运算
p 1 + 1 # 加法
p 5 - 3 # 减法
p 2 * 5 # 乘法
p 3 / 9 # 除法
#优先顺序
p 2 * 2 + 1 * 3 # p 7
p 2 * (2 + 3) * 4 # p 40
p 2 * (2 + 3 * 4) # p 28 [/pre]

2.浮点数的运算,除数或被除数至少要有一个是浮点数,计算的答案就会是浮点数。
[pre lang="ruby" line="1"]p 5 / 2 # p 2
p 5.0 / 2 # p 2.5
p 5 / 2.0 # p 2.5 [/pre]

3.求余数的计算同C系语言,使用 %
[pre lang="ruby" line="1"]p 5 % 2 # p 1[/pre]

4.幂的计算,使用 **
例如求2的3次方
[pre lang="ruby" line="1"]p 2 ** 3 #p 8[/pre]
这个与C系语言不同,请注意。

点评

Python就是**计算幂的  发表于 2018-7-17 17:00
回复

使用道具 举报

梦石
0
星屑
50
在线时间
16 小时
注册时间
2014-6-21
回帖
25
 楼主| 发表于 2014-6-28 15:46:54 | 显示全部楼层
本帖最后由 琳lin爱妮爱 于 2014-6-28 15:50 编辑

二、变量与变量的赋值
1.变量命名的规则
规则同C系语言一样,命名只能用英文字母、数字或_(下划线)开头,并且第一个字符必须是小写英文字母或 _(下划线)。  
另外,不能使用关键字作变量的名称。学过C系语言的都应该知道关键字是什么意思,这里就不多说了。

Ruby的关键字有:
模块定义:module
类定义:  class
方法定义:def , undef
检查类型:defined?
条件语句:if , then  , else , elsif ,case ,when ,unless
循环语句:for ,in ,while ,until  ,next, break ,do , redo ,retry ,yield
逻辑判断:not ,and ,or
逻辑值和空值:true ,false , nil   
异常处理:rescue  ,ensure   
对象引用:super ,self   
块的起始:begin/end
嵌入模块:BEGIN ,END   
文件相关:__FILE__ , __LINE__
方法返回:return   
别名:    alias

大家现在不必着重去记忆,以后多多使用自然而然就会记住的。

2.变量的赋值
首先说变量为数字时的情况。
请先看一下用C语言赋值变量:
[pre lang="c" line="1"]#include<stdio.h>
void main()
{
int x=4,y=3;
printf("%d",x+y);
}[/pre]
下面是Ruby语言赋值变量:
[pre lang="ruby" line="1"]x = 4
y = 3
p x + y  #p  7[/pre]

注意到有什么区别了吗?Ruby无需像C系语言那样定义int , float , double等数据类型就可以直接赋值。
大家也可以看看上面的Ruby关键字,就能注意到Ruby并没有关于数据类型的关键字。

其次是变量为字符串时的情况。
由于Ruby输出的语句有很多,但是我比较习惯用print输出语句,所以就用这个作为输出字符串的语句来讲解了。
同上面一样,Ruby无需使用char , string定义,字符串加上"",即可直接赋值给变量。
[pre lang="ruby" line="1"]a = "我才不会告诉你我最喜欢什么东西呢。" #谁想知道这么无聊的事情
print a  #输出赋值给a的字符串[/pre]
另外,Ruby语言还支持字符串变量的加法与乘法,这个会在后面详细说明。

3.全局变量  $
在变量名前加 $ 号,赋值方法和局部变量完全相同。
关于全局变量的定义,与C系语言一模一样,就是能在程序的任何地方都可以使用。
[pre lang="ruby" line="1"]$x
$y[/pre]

这个在RM脚本编译器里非常的常见,且是C系语言里所没有的,请注意一下。
回复

使用道具 举报

梦石
0
星屑
995
在线时间
6 小时
注册时间
2014-6-24
回帖
1
发表于 2014-6-28 16:35:05 | 显示全部楼层
计算机系的路过
好评如潮
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部