【果果编程课】003 《魔法数字串 —— list、car、cdr、lambda 基础》

今天我们要学会的三件小魔法

  1. 把一堆数字串成一条“魔法数字链”(list)
  2. 从链子上“摘第一个数字”(car)和“看剩下的一串”(cdr)
  3. 请一个“不需要名字的临时小助手”帮忙算东西(lambda)

开场故事(5分钟)

老师拿着几颗糖果(或画在纸上的数字:10、20、30、40、50),串成一串:

“果果每周攒零花钱:
第一周10元,第二周20元,第三周30元……
如果我们想一次告诉电脑‘我攒了这些钱’,要怎么说呢?
一个一个写太麻烦啦!
今天我们学会用一个魔法,把它们全部串成一条‘魔法数字链’!”

第一关:学会串数字链(list)(10分钟)

在DrRacket里一起敲:

1
2
(define savings (list 10 20 30 40 50))
savings

屏幕显示:
‘(10 20 30 40 50)

老师解释:
“这个括号里的东西,就是一条数字链!
就像糖葫芦:10连着20,20连着30……
电脑一下子就记住了整串!”

再试一个:

1
2
(define scores (list 85 90 95 100))
scores

问孩子:
“你们猜猜,你们班的数学成绩如果串成一条链,会长什么样?”

小练习(让孩子自己敲):

  1. 定义一条你喜欢的数字链,比如喜欢的零食价格
    (例如:(define snacks (list 5 8 12 15)))

第二关:摘糖葫芦 —— car 和 cdr(15分钟)

老师指着糖葫芦串:
“现在我想先吃第一颗(10元),用什么魔法?”

敲代码:

1
(car savings)

答案:10

老师说:
“car 就是‘摘第一个’!
读作‘卡’——就像火车的第一节车厢。”

再敲:

1
(cdr savings)

答案:’(20 30 40 50)

老师说:
“cdr 就是‘去掉第一个,给我剩下的整串’!
读作‘抠得儿’——就像把第一颗摘掉,剩下的一串还连着。”

层层剥开演示(一起数):

1
2
3
(car (cdr savings))          ; 20
(car (cdr (cdr savings))) ; 30
(car (cdr (cdr (cdr savings)))) ; 40

白板画过程(推荐):

1
2
3
4
5
原来链子:10 → 20 → 30 → 40 → 50
car: 10
cdr: 20 → 30 → 40 → 50
再car: 20
再cdr: 30 → 40 → 50

孩子动手练习(8-10分钟):

  1. 用你刚才定义的链子,敲 (car 你的链子名字)
  2. 敲 (cdr 你的链子名字)
  3. 试试连续用 car 和 cdr,找出“第3个数字”

老师巡回:孩子卡住就一起数“第一个、第二个、第三个……”

第三关:请临时小助手 —— lambda(12分钟)

老师说:
“现在我想把这条攒钱链上的每个数字都翻倍(×2),怎么办?
一个一个写太慢!
我们可以请一个‘临时小助手’,他不需要名字,只干一件事——把数字×2。”

先简单玩玩计算:

1
2
(* 10 2)   ; 20
(* 30 2) ; 60

再介绍 lambda:

1
(lambda (n) (* n 2))

老师解释:
“这个就是临时小助手!
意思是:拿一个数字 n,把它×2。”

直接用他算:

1
2
((lambda (n) (* n 2)) 25)   ; 50
((lambda (n) (* n 2)) 7) ; 14

再试加法助手:

1
((lambda (x) (+ x 100)) 50)   ; 150

小练习(孩子敲):

  1. 请一个临时小助手,把数字+10
    试算:((lambda (y) (+ y 10)) 30) → 应该得40
  2. 请一个临时小助手,把数字平方
    试算:((lambda (z) (* z z)) 5) → 应该得25

果果编程第3课

结束总结 + 预告(3分钟)

老师一起回顾:
“今天我们学会了三招:

  1. list —— 把数字串成一条链
  2. car —— 摘第一个,cdr —— 看剩下的链
  3. lambda —— 请一个临时小助手帮忙算

下节课我们要把这些本领用在画图上!
可以一次把一串颜色变成一串气球,一串数字变成一串不同大小的星星……
准备好画生日礼物了吗?”

回家小作业(简单版)

  1. 写一条你自己的数字链(至少4个数字)
  2. 用 car 取出第一个,用 cdr 看剩下的
  3. 请一个 lambda 小助手,把某个数字×3,算一算

这个版本:

  • 每部分都只有1-2个核心代码
  • 语言超级口语化,像聊天一样
  • 完全不涉及图像,只用数字和糖葫芦比喻
  • 练习量小,成功率高

如果觉得还是太快,可以把第三关(lambda)再拆成两节课,或者把作业再简化。
需要我再调整某一部分,或者准备下一节(图形+函数+map)的课程形式,随时告诉我!