如何教孩子Scheme编程(2)

第二课 猜数字

  • 知识点
    • 变量定义
    • 嵌套调用
    • 条件判断

小朋友在课堂上经常玩这样的游戏:一个人心里想一个数字(1~100以内),另一个人猜,看谁能用最少的次数猜出来。这时告诉孩子,你心里想一个数字,让计算机猜,或者计算机想一个数字,你来猜。这个游戏,孩子是无法抗拒的。

小朋友想一个数字,计算机猜

(define lower 1)
(define upper 100)

(define guess2
  (lambda ()
    (display '计算机猜这个数字是:)
    (quotient (+ lower upper) 2)
    )
  )
(define too-small
  (lambda ()
  (set! lower (max lower (+ (guess2) 1)))
  (guess2)))

(define too-big
  (lambda ()
    (set! upper (min upper (- (guess2) 1)))
    (guess2)))

计算机想一个数字,小朋友猜

(define secret (random 100))

(define guess
  (lambda ()
    (display "请输入你猜的数字:")
    (let ((b (string->number (read-line))))
      (cond
        ((= b secret) (display '恭喜!猜对了) (display secret) (set! secret (random 100)))
        ((> b secret) (display '笨蛋!太大了) (guess))
        ((< b secret) (display '笨蛋!太小了) (guess))
        (else (display '不是有效数字) (guess))
        )
      )
    ))

这么短的代码就能实现猜数的功能,小朋友很惊讶!于是小朋友自己玩了很多遍。过了会儿就离开去干别的事情了。

程序逻辑似乎有点难,小朋友在遇到不好理解的东西时习惯性地逃避。好吧,让小朋友歇会儿,我来想想下一课的内容。最好和小朋友念的数学课有关联。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值