如何教孩子Scheme编程(2)
2017-06-11 21:46
567 查看
第二课 猜数字
知识点变量定义
嵌套调用
条件判断
小朋友在课堂上经常玩这样的游戏:一个人心里想一个数字(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)) ) ) ))
这么短的代码就能实现猜数的功能,小朋友很惊讶!于是小朋友自己玩了很多遍。过了会儿就离开去干别的事情了。
程序逻辑似乎有点难,小朋友在遇到不好理解的东西时习惯性地逃避。好吧,让小朋友歇会儿,我来想想下一课的内容。最好和小朋友念的数学课有关联。
相关文章推荐
- 如何教孩子Scheme编程(1)
- 如何在家里教孩子玩 Scratch、学 Python 编程
- 如何把孩子玩游戏动力转换为学习动力,或是编程入门引导?
- 不同年龄段的孩子如何开始学习编程
- [转]如何进行 Socket 编程
- 如何编程实现在快速启动栏创建快捷方式
- 如何动态加载控件以及插件编程思想(C#)
- 求助:在vc中gdi编程中如何实现图形放缩和平移?
- 如何动态加载控件以及插件编程思想(C#)
- VB编程时如何检测A驱有无磁盘或磁盘写保护?
- 揭开极端编程的神秘面纱:如何成为 XP 客户 [Z]
- 如何进行 Socket 编程
- 如何编程实现启用禁用网卡
- 【转载】VC编程中如何在视图区显示工具提示
- C程序员如何使用D编程(二)
- 不编程,如何在ie中下载word文件
- [转帖]如何提高自己的编程水平
- 如何走好编程入门之路
- 由2个和尚打水想到的---如何学习VB编程思想喝C++编程思想
- 如何用编程获取CD-ROM的驱动器盘符?