计算机,说点什么

红宝石编程初学者的编程学习指南。处理各种主题,如“让计算机说话”,“星星绘制”,“红宝石在线执行器”等。

밤치 229

0. 准备: 在哪里执行代码?

你可以安装Ruby,也可以在在线执行器(搜索“ruby online repl”)中执行。

重要的是“我自己输入并执行”

只需记住一个规则

  • 不要复制粘贴,一定要自己输入。

  • 即使出现错误也没关系。那是最深刻地刻在大脑中的时刻。


1阶段: “电脑,说话吧” - 确立最小框架

1-1. 第一个代码: Hello, Ruby

puts "Hello, Ruby"
  • puts:感觉像“打印行”。表示在控制台输出一行

  • "Hello, Ruby":只是一个字符串(一串文字)

实际上,这一行就是这样的句子。

“电脑啊,把这个字打印到屏幕上。”

大脑框架(Park Moon-ho风格)

  • 框架:“代码是命令” → 一行是一个想法。

  • 可视化:可以将puts想象成嘴巴。 → 电脑的嘴巴。

  • 提取:反复输入更改文字。


练习 1-1. 创作自己的第一句话

尝试输出你想要的三行句子:

puts "编程好难啊…"
puts "先试试看。"
puts "比想象中简单吧?"

任务 A

  1. 将上述三行改成你自己的句子

  2. 尝试输出至少5行

  3. 使用puts仅用文字写下“今年想要实现的事”清单


2阶段: “说5遍吧” - 重复这种魔法

现在让我们在大脑中种下重复模式的框架。

2-1. 多次说同样的话

5.times do
  puts "编程很有趣"
end
  • 5.times:“重复5次”

  • do ... end:重复的代码范围

  • 内部的puts会执行5次

大脑框架

  • 框架:“重复的东西用循环(loop)表示。”

  • 可视化:想象自己围绕着一个圆圈,1、2、3、4、5数字在圆圈上旋转

  • 提取:尝试将数字更改为3、10、100等重复输入。


练习 2-1. 洗脑自己

10.times do
  puts "我比想象中学得更快"
end

任务 B

  1. 10.times更改为3.times7.times,然后尝试执行

  2. 更改句子为

- “我不会放弃”

- “每天至少一点点”

创作至少3个相同句子并多次输出

3阶段: 一旦看到模式 - 通过画星星来打开“视觉化电路”

现在让我们进入大脑真正视觉化模式的时刻。

就是画星星

3-1. 一行星星

puts "*"

这是一个单星号。

3-2. 竖直五颗星星

5.times do
  puts "*"
end

在屏幕上显示:

*
*
*
*
*

这样。

在这里,大脑获得了这种感觉。

“啊,这是‘竖直五颗星星’的模式。”


3-3. 制作逐渐增大的阶梯

现在是真正有趣的时刻。

1.upto(5) do |n|
  puts "*" * n
end
  • 1.upto(5):从1到5依次放入n中重复

  • |n|:每次重复使用的变量名

  • "*" * n:将"*"字符重复n次的字符串

输出结果:

*
**
***
****
*****

在这里,大脑经历了模式识别爆发

  • 数字从1→2→3→4→5增加

  • 星星数量从1→2→3→4→5也增加

  • 一个“阶梯”画在眼前

大脑框架

  • 框架:“数字与形状的关系”

  • 可视化:代码就像是画图的笔

  • 提取:尝试更改数字范围,多次绘制(3、7、10等)。


练习 3-1. 让阶梯变得更大,更大

任务 C

  1. 1.upto(5)更改为1.upto(10),然后尝试执行

  2. puts "*" * n更改为

    puts "#" * n
    

    也可以使用表情符号!

  3. 尝试自己制作以下形式:

    #
    ##
    ###
    ####
    #####
    

    → 提示:使用"#"代替"*"


4阶段: 通过条件语句将“思考”嵌入代码

现在让我们将条件(if)框架放入大脑中。

条件是一种“这样做,那样做”的思考结构。

4-1. 区分偶数/奇数

1.upto(10) do |n|
  if n.even?
    puts "#{n}是偶数"
  else
    puts "#{n}是奇数"
  end
end
  • n.even?:如果n是偶数,则为true,否则为false

  • if ... else ... end:根据条件执行不同的代码

  • #{n}:将变量插入到字符串中

输出示例:

1是奇数
2是偶数
3是奇数
...
10是偶数

在这里,大脑学到了这些。

“啊,代码可以做出判断。”

“可以用规则和条件来表达所有情况。”

大脑框架

  • 框架:“根据条件分叉的分支结构”

  • 可视化:就像树枝一样,从上到下分叉成两个分支的图像

  • 提取:练习更改even?为其他条件。


练习 4-1. 处理心情分支(?)

任务 D

尝试制作以下代码,并将句子改成你自己的风格。

1.upto(5) do |score|
  if score >= 4
    puts "心情分数#{score}:今天心情最好!"
  else
    puts "心情分数#{score}:但今天也能做到。"
  end
end

额外挑战:

  • 将分数范围扩展到1.upto(10)

  • 根据score值分为三个等级

    • 大于等于8:“生活像吃饭一样简单”
    • 4~7:“虽然平凡但有意义”
    • 3或更少:“需要再喝一杯咖啡”

5阶段: 尝试制作一个非常小的“迷你程序”

现在让我们将学到的东西(输出、重复、条件)结合起来

制作一个小程序

主题:

“记录我每天学习的时间,

并告诉我当天的总学习时间的程序。”

5-1. 一天学习时间累加器

study_times = [30, 45, 60, 20]  # 分钟:四次学习

total = 0

study_times.each do |minutes|
  total = total + minutes
end

puts "今天学习时间:#{total}分钟"

if total >= 120
  puts "了不起!今天真的很努力"
elsif total >= 60
  puts "好的,这个速度足以成长"
else
  puts "有点遗憾,但起步在哪里。明天再加油"
end

代码解释

  • study_times:将今天学习时间存储为数组

  • total = 0:存储总和的变量

  • each do |minutes|:从数组中逐个取出使用minutes

  • total = total + minutes:累加

  • 最后的if ~ elsif ~ else:根据总学习时间输出不同消息

大脑框架

  • 框架:“数据(数组)+ 重复(each)+ 条件(if)= 小系统”

  • 可视化:就像四个时间值通过管道进入total盒子的感觉

  • 提取:更改数组内容,更改基准时间,更改消息。


练习 5-1. 制作自己的学习·运动·工作记录器

任务 E

  1. study_times更改为运动时间

    exercise_times = [10, 15, 20]  # 三次锻炼
    
  2. if条件根据运动标准更改为

- 超过60分钟:“今天逃离新手模式”

- 超过30分钟:“保持良好的日常习惯”

- 其他:“即使躺下也站起来了。完全有意义”
  1. 完全更换为全新主题
- “今天制作YouTube的时间”

- “今天阅读书籍的时间”

- “与孩子一起玩耍的时间”

6阶段: “这就是Ruby on Rails的基础”

现在我们所做的

实际上在Rails中会这样应用:

  • 数组 → 从数据库中获取的帖子列表(Post.all

  • each循环 → 在页面上重复输出帖子标题

  • if条件 → 如果已登录,则显示按钮,否则隐藏

  • 字符串输出 → HTML文本渲染

我们刚刚创建的这些代码片段

稍微扩展一下就会变成实际的网络服务页面

@posts.each do |post|
  if post.published?
    puts post.title
  end
end

现在只是在控制台输出,

稍微扩展一下就会成为真正的网络服务页面


最后: 今天,你已经尝试了“编程的第一滋味”

如果你跟随到这里,

你已经在大脑中建立了这样的框架。

  • 命令(输出)

  • 重复(times、upto、each)

  • 模式(画星星)

  • 条件(if)

  • 数据结构(数组)

  • 小逻辑(学习时间累加器)

这不仅仅是学习几个语法。

用Park Moon-ho的话来说,

“你的大脑已经建立了新的结构性思维回路。”

Comments

Add Comment

Your email won't be published and will only be used for reply notifications.

Get notified of new posts

We'll email you when Bamchi Blog publishes new content.

Your email will only be used for new post notifications.