举三反一,通过例子归纳的学习方式

show case

input

[
  'a/f/e.md',
  'b/d.md'
]

output

[
  [
    "a",
    [
      [
        "f",
        [
          "a/f/e.md"
        ]
      ]
    ]
  ],
  [
    "b",
    [
      "b/d.md"
    ]
  ]
]

first, traverse 'a/f/e.md'

1. it is a branch, append 'a'

[  <- cursor is init here

]

+ 

[
  'a',
  [ 

  ]
]

=

[
  [
    'a',
    [  <- cursor is here now

    ]
  ]
]

2. it is a branch, append 'f'

[
  [
    'a',
    [  <-cursor is  keep here

    ]
  ]
]

+ 

[
  'f',
  [ 

  ]
]

= 

[
  [
    'a',
    [ 
      [
        'f',
        [   <- cursor is here now

        ]
      ]
    ]
  ]
]

3. it is a leaf, append 'a/f/e.md'

[
  [
    'a',
    [ 
      [
        'f',
        [   <- cursor is keep here

        ]
      ]
    ]
  ]
]

+ 
'a/f/e.md'  value

= 

[
  [
    'a',
    [ 
      [
        'f',
        [   <- cursor is keep here
          'a/f/e.md'
        ]
      ]
    ]
  ]
]

second, traverse 'b/d.md'

1. it is a branch, append 'b'

[  <- cursor is here again
  [
    'a',
    [ 
      [
        'f',
        [  
          'a/f/e.md'
        ]
      ]
    ]
  ]
]

+

[
  'b',
  [ 

  ]
]

= 

[  
  [
    'a',
    [ 
      [
        'f',
        [  
          'a/f/e.md'
        ]
      ]
    ]
  ],
  [
    'b',
    [  <- cursor is here now
    
    ]
  ]
]

2. it is a leaf, append 'b/d.md'

[  
  [
    'a',
    [ 
      [
        'f',
        [  
          'a/f/e.md'
        ]
      ]
    ]
  ],
  [
    'b',
    [  <- cursor is keep here
    
    ]
  ]
]

+ 

'b/d.md'

= 

[  
  [
    'a',
    [ 
      [
        'f',
        [  
          'a/f/e.md'
        ]
      ]
    ]
  ],
  [
    'b',
    [  <- cursor is keep here
      'b/d.md'
    ]
  ]
]

举三反一

我希望你看到这里了,因为如果你是一个好奇的人,这里是我放的彩蛋。我们常常希望学习中有举一反三的能力,但是为了得到举一反三的能力,我们常常要反其道而行之,使用举三反一的教学方式。我在这里放几个低龄的案例,我没有数据支撑这些案例是否行之有效,但是我至少可以说,案例在交互对象看来是有趣的,并且我希望这种有趣的举三反一,埋下了它应该有的种子。

位数

“10里面的0是什么位?“
“个位。”
“1呢?”
“十位。”
“那么10是几位数?”
“10位数啊!”

不对劲,问:“ 9是几位数?”
“个位数啊!”

额,“123的3是什么位?”
“个位”
“2呢?”
“十位。”
“1呢?”
“百位。”
“那它是几位数?”
“百位数啊?”

“8是什么位?”
“个位。”
“ 你看,8只有一个个位,所以是1位数。”

“17的7是什么位?”
“个位”
“1呢?”
“十位。”
“你看,17有个位和10位两个位,所以是2位数。”

“126的6是什么位?”
“个位。”
“2呢?”
“十位。”
“1呢?”
“百位。”
“你看,126只有个位,十位,百位三个位,是3位数。”
“哦,我懂了。”

“好,那最大的两位数是多少?”
“额,100?”
“喂!最大的个位数多少?”
“这个简单,9。”
“最大的两位数多少?”
“99!”
“最大的三位数多少?”
“999!”
“最大的四位数呢?”
“9999!”

“好,换一个,最小的个位数多少?”
“0!”
“最小的两位数呢?”
“1 0!”
“最小的三位数呢?”
“100!”
“最小的四位数呢?”
“1000!”
“10000是最小的几位数?”
“1,2,3,4,5最小的5位数!”

“好了,你可以继续做作业了,居然不知道什么是2位数…”
“哼,今天老师刚教一点点,还没说到这个几位数,只分了个十百…。”
“是么,做完了叫我。”

大马哈过河

“小马过河的故事听说过么”
“这个早就听过了”
“你听过?那你说下这个故事”
“就是,从前有一只小马,它过河的时候,不知道水深浅,于是...”

“好吧,小马过河的故事你听过了,那今天就讲一个大马过河的故事”
“啥,还有大马过河的故事”
“不只是大马,这只大马还叫大马哈呢”
“哈哈哈”

“从前,有一只叫大马哈的大马,大马哈来到了一条河,这条河叫做流沙河。”
“怎么是西游记里的流沙河,哈哈”
“这不是西游记,是大马哈故事里的流沙河!”
“明明就是!”
“这条河只有一座桥,这座桥最多只能承重15斤,而大马哈自己有10斤,它的行李有4斤,并且这只大马哈路上遇到了一只小老虎,这只小老虎胆子小,必须跟着大马哈才敢过桥,小老虎有5斤。”
“你说,一共需要几趟才能过桥?”
“一趟?”
“不对,这个桥只能承重15斤,如果全部过桥,大马哈+行李+小老虎总共几斤?”
“哦,一共19斤,不能过去”
“那么是两趟?可以小老虎先过去,然后大马哈和它的行李一起过去?”
“不对吧,那小老虎胆子小,必须大马哈带着才行”
“额,那就只能大马哈带着行李先过去,然后大马哈再过来带小老虎去,一共是,3趟!”
“对了,是3趟”

“大马哈继续往前走,走啊走,又遇到了一只小狮子,小狮子就和小老虎一起边玩边走。他们又遇到了一条河,你猜,这条河叫什么名字?”
“不知道”
“嘿嘿,刚好,这条河叫通天河”
“不对,通天河是西游记里的”
“哪里哪里,这是大马哈故事里的,不是西游记的”
“通天河就是西游记!”
...
“反正通天河上面刚好也只有一座桥,这座桥只能承重16斤,而小狮子有6斤,你说他们这下过河要几次?偷偷告诉你,这条小狮子也胆小,只敢这个大马哈一起过桥!”
“四次?”
“不对哦”
“五次?”
“对了,为什么是五次呢?”
“因为,大马哈带行李过去,回来带老虎过去后,要再回来一次,最后带狮子过去,一共是五次。”
“答对!”

“话说,大马哈就带着行李、小老虎、小狮子继续往前走。你猜发生了什么?”
“它们不会又遇到什么动物了吧?”
“猜对!大马哈、小老虎、小狮子、又遇到了一只小野豹!”
“不会这只小野豹也胆小吧。。”
“嘿嘿,是的,它就是一只胆小的小野豹,反正小老虎、小狮子、小野豹仨就欢快的边走边玩了”
“大马哈带着小老虎、小狮子、小野豹继续往前走啊走,你猜遇到了什么?”
“哈哈哈,又遇到了一条河?”
“没错,你猜这条河叫什么名字?”
“快说快说!”
“这条河呢,就叫做大-沙-河!”
“哈哈,大沙河,怎么可能是大沙河。。”
“...”
“反正,就是大沙河了,这个大沙河上又有一座桥,并且只能承重17斤,然后你只小野豹,有7斤吧”
“我知道了,它们过去要7趟!”
“为什么是7趟?”
“你看原来没有小野豹的时候,需要5趟嘛,现在增加两趟就要7趟。”
“增加的两趟是哪里来的?”
“就是,大马哈把行李、小老虎、小狮子都带过桥后,它再返回来一下,再带小野豹过去一次,总共多出来两趟哈。”
“对了,对了,大马哈的故事就是这样的,可以睡觉了。”
“哼,这么短!”
“。。。”

几个两位数

(A)
多米: 21,22,23,24…,不对,数错了,重新数,1,2,3…21,22,23…
我: 多米你在数什么?
多米: 在数100里有几个两位数啊。
我: 你前面不是刚数过100里有几个1位数么?
多米:对啊,9个嘛。
我:那你为什么一个一个数两位数?
多米:是啊,题目就是问有几个两位数,要不然怎么数?
我:等下,你先算第三个小题。
多米: 有几个三位数?那,不就是只有一个100么?(不确定状)。
我: 对,就一个100。(儿童在学习新概念中经常会不确定,即使看上去很显然)
我: 那么,你说1到100之间有几个数?(特意指明区间:1到100)
多米:不就是100个么?(在多次提问中,他会每个回答都带有不确定性)
我: 对啊,一共100个。那么,你说1到100之间,除了一位数,和三位数,剩下的是什么?
多米:是…,两位数?
我:对,那你说两位数有几个?
多米: [饥饿] ,80个?(儿童喜欢用猜的,在不确定的情况下,会用各种猜答案的方式)
我: 什么80,又乱猜。你先算下一位数和三位数总共几个?
多米: 一位数有9个,三位数只有一个100,那不就是10个么!(这个倒是确定)。
我:对,然后1到100一共多少个数?
多米: 一共100个啊?
我:对,这100个除了一位数,三位数,剩下的是什么数?
多米:两位数,哦,我知道了我知道了?
我:你知道了什么?(意图他自己说出来)
多米:一共100个,去掉10个,剩下…(思考,停顿)…一共90个!
我: 90个怎么来的?(再次确认)
多米: 你看,就是100个嘛,减去9个一位数和一个三位数一共10个,100减去10不就等于90!
我:嗯,没错,那你前面在傻傻数什么?数那么久还数不出来?
多米:我第一遍数错了,重新数嘛,不过现在不用数了!
我:你确定会了么?我再问你一个,1到1000里有几个一位数?(他已经能计数到千,万,所以可以扩大范围重复举例)
多米:1,2,3,…9,10,一共10个!
我:喂,哪来10个!(有趣的是,每次需要重新数,重新数的时候会再犯低阶错误,这是正常的)
多米:不对,10不是,一共9个!
我: 你说10以内有几个一位数?
多米:1,2,3…9,9个!
我,那100以内有几个一位数?
多米: 有…啊,原来一位数不会变多,还是9个!(发现了位置不变,不错)
我:那1000以内有几个一位数呢?(again,重复确认)
多米:哈哈,还是9个。
我:好,那1000以内几个两位数?
多米:额,两位数?
我:100以内几个两位数?(回溯到已经算过的)
多米:前面算过了啊,9,90个!
我:对,90个。那么1000以内有几个两位数?
多米:哈哈,也还是90个,没有变多!
我:对了,你发现了吧。
我:那么1000以内有几个三位数?
多米:额,不知道啊,这怎么算。
我:额,1000以内有几个四位数?
多米:四位数?哪里有四位数?
我:你说10是几位数?
多米:两位数啊!
我:100呢?
多米:三位数啊?
我:1000呢?
多米:哦!4位数!那就只有一个4位数!
我:对了。那么1000以内除了一位数,两位数,四位数,剩下的是什么?我们把它写下来吧,免得你记不住,你来写。
多米: 哼,好吧。
我:1,2,3,4我帮你写了,你圈一下,把1000以内每个数位有几个数写在它们头上。
多米:…
我:好,你看一位数有几个?
多米:9个。
我:两位数呢?
多米:90个
我:四位数呢?
多米:1个!
我:1到1000一共几个数?
多米:1000个!
我:1000以内的一位数加两位数加四位数一共多少个?
多米:哦!一共100个!
我:所以…
多米:我知道了,三位数有1000减去100,剩下…(停顿,计算)…900个!
我:对了,不错,那我现在算个10000以内的。
多米:10000!这么多啊(做哭脸状)
我:对,10000,你说10000以内几个一位数?
多米:哼,9个!没变。
我:几个两位数?
多米:90个!
我:几个三位数?
多米:9,…900个!
我:你写下来,等下忘记了。
多米:又要写…
我:有几个5位数?
多米:一个。
我:那么一位数,加两位数加三位数,加五位数一共几个?
多米:加加加,就知道加…,一共1000个。
我:那剩下几个四位数?
多米:啊,…(停顿,停顿,计算)…9,9000个?(不确定中)
我:对了,好,这次就这样吧。(其实,他可能睡一觉就又忘记这些了)

记录下来,是我怕不写下来就忘记了这过程:)
again,again,and again.

备注: 从《The Little Scheme》这本书里,我学到了这种自底向上的举三反一的教学方式,并且我认识到知识的构建中,很多时候我们需要不厌其烦的重复、重复、再重复,从多个维度去重复,不厌其烦的展示不同维度下知识结构的复现,这样教学对象可以在这个过程中有一个经提示的自我再发现的过程。我希望这使得知识的构建变得立体、对于教学对象来说,有「意义」,你说呢?

证据1: 观看这个小学一年级连加的教学视频,专业的小学一年级教师的整个教学过程符合这个思想:https://v.qq.com/x/page/b0568uvdlsn.html ,这个过程和计算机的计算思维是一样的,again,again,and again. 但是这个教学限制了小朋友只学了10以内的数字,如果一个小朋友已经有百、千、万的概念,就可以像我上面的例子那样,在数据的维度上纵向扩展,这样的扩展会有一些挑战。

[©️版权所有,本文禁止转载。]

--end--

posted @   ffl  阅读(473)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示