书面乘法练习:非负小数的乘法

书面乘法练习:非负小数的乘法
几何画板及绘图内容加载中,请稍等……
2021-08-03 19:36
该范例展示了书面乘法的逐步计算过程,并通过“位值/部分积”的结构化呈现帮助学生理解非负小数乘法的排位与进位。核心数学概念包括:小数的位值、分配律思想(部分积相加)、以及多位数相乘时的进位规则;同时强调将“以位为单位的乘法步骤”转化为可检查的结构。作图要点:利用 Join、If、Sequence、Point、Segment、Polygon 与 Textfield 构造与标注计算布局;通过 Translate、Flatten、Zip 等命令实现对象位置变换、数据整理与批量生成;对象层面体现了固定小数位标记(如 fixedkomma)、随机数字与题目计数(randomNosM、questionCount)、典型错误检测(isTypicalError)以及正确结果字段(correctB0、correctB1 等)。适合5–6年级用于课堂操练或形成性练习,针对“能正确计算非负小数乘法”的能力目标。

GeoGebra 命令及参数

  1. Join({{5}, Join[Sequence[Shuffle[{1, 2, 3, 4, 5, 6, 7, 8, 9}], m, 1, 30]]}) → randomNosN2
  2. Join({{2}, Join[Sequence[Shuffle[{1, 2, 3, 4, 5, 6, 7, 8, 9}], m, 1, 30]]}) → randomNosN1
  3. Join({{RandomElement[{2, 3, 4, 5}]}, Join[Sequence[Shuffle[{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}], m, 1, 30]]}) → randomNosM3
  4. Join({{RandomElement[{1, 2, 3, 4, 5, 6, 7, 8, 9}]}, Join[Sequence[Shuffle[{1, 2, 3, 4, 5, 6, 7, 8, 9}], m, 1, 30]]}) → randomNosM2
  5. Join({{RandomElement[{1, 2, 3, 4}]}, Join[Sequence[Shuffle[{0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}], m, 1, 30]]}) → randomNosM1
  6. If(numCcorrect(1) ≟ 0, c0 ≟ 0 ∨ (¬Defined[c0]), c0 ≟ numCcorrect(1)) → correctC0
  7. If(numCcorrect(2) ≟ 0, c1 ≟ 0 ∨ (¬Defined[c1]), c1 ≟ numCcorrect(2)) → correctC1
  8. If(numBcorrect(3) ≟ 0, b2 ≟ 0 ∨ (¬Defined[b2]), b2 ≟ numBcorrect(2 + 1)) → correctB2
  9. If(numBcorrect(2) ≟ 0, b1 ≟ 0 ∨ (¬Defined[b1]), b1 ≟ numBcorrect(1 + 1)) → correctB1
  10. If(numAcorrect(2) ≟ 0, a1 ≟ 0 ∨ (¬Defined[a1]), a1 ≟ numAcorrect(2)) → correctA1
  11. If(numAcorrect(1) ≟ 0, a0 ≟ 0 ∨ (¬Defined[a0]), a0 ≟ numAcorrect(1)) → correctA0
  12. Zip(If[m ≟ 0, 3, RandomElement[{1, 2, 3}]], m, randomNosM1) → randomPosKomma
  13. Point(Line[FA, yAxis]) → FB
  14. Polygon(PtopLeftCornerFeedback, PtopRightCornerFeedback, PbottomRightCornerFeedback, PbottomLeftCornerFeedback) → rectangleCorrect, ptopleftcornerfeedback, ptoprightcornerfeedback, pbottomrightcornerfeedback, pbottomleftcornerfeedback
  15. Textfield(a1) → InputBoxA1
  16. Textfield(a2) → InputBoxA2
  17. Textfield(a3) → InputBoxA3
  18. Textfield(a4) → InputBoxA4
  19. Textfield(a5) → InputBoxA5
  20. Textfield(b0) → InputBoxB0
  21. Textfield(b1) → InputBoxB1
  22. Textfield(b2) → InputBoxB2
  23. Textfield(b3) → InputBoxB3
  24. Textfield(b4) → InputBoxB4
  25. Textfield(b5) → InputBoxB5
  26. Textfield(c0) → InputBoxC0
  27. Textfield(c1) → InputBoxC1
  28. Textfield(c2) → InputBoxC2
  29. Textfield(c3) → InputBoxC3
  30. Textfield(c4) → InputBoxC4
  31. Textfield(c5) → InputBoxC5
  32. Textfield(ua1) → InputBoxUA1
  33. Textfield(ua2) → InputBoxUA2
  34. Textfield(ub1) → InputBoxUB1
  35. Textfield(ub2) → InputBoxUB2
  36. Textfield(a0) → InputBoxA0
  37. If(ua1correct ≟ 0, (¬Defined[ua2]) ∨ ua2 ≟ 0, ua2 ≟ ua1correct) → correctUA2
  38. If(ua2correct ≟ 0, (¬Defined[ua1]) ∨ ua1 ≟ 0, ua1 ≟ ua2correct) → correctUA1
  39. If(ub2correct ≟ 0, (¬Defined[ub1]) ∨ ub1 ≟ 0, ub1 ≟ ub2correct) → correctUB1
  40. If(ub1correct ≟ 0, (¬Defined[ub2]) ∨ ub2 ≟ 0, ub2 ≟ ub1correct) → correctUB2
  41. Flatten(Sequence[Sequence[FA + (m * (dxFB1, 0)) + (j * (0, 1)), m, 0, 5], j, 0, 1]) → fa
  42. Polygon(fa(1), fa(2), fa(8), fa(7)) → va0, f, g, h, i
  43. Polygon(fa(2), fa(3), fa(9), fa(8)) → va1, j, k, l, p
  44. Polygon(fa(3), fa(4), fa(10), fa(9)) → va2, q, r, s, t
  45. Polygon(fa(4), fa(5), fa(11), fa(10)) → va3, a, b, c, d
  46. Polygon(fa(5), fa(6), fa(12), fa(11)) → va4, e, f_1, g_1, h_1
  47. Flatten(Sequence[Sequence[FB + (m * (dxFB1, 0)) + (j * (0, 1)), m, 0, 5], j, 0, 1]) → fb
  48. Polygon(fb(1), fb(2), fb(8), fb(7)) → vb0, i_1, j_1, k_1, l_1
  49. Polygon(fb(3), fb(2), fb(8), fb(9)) → vb1, m_1, n_1, p_1, q_1
  50. Polygon(fb(3), fb(4), fb(10), fb(9)) → vb2, r_1, s_1, t_1, a_1
  51. Polygon(fb(4), fb(5), fb(11), fb(10)) → vb3, b_1, c_1, d_1, e_1
  52. Polygon(fb(5), fb(6), fb(12), fb(11)) → vb4, f_2, g_2, h_2, i_2
  53. Point(Line[FA, yAxis]) → FC
  54. Flatten(Sequence[Sequence[FC + (m * (dxFB1, 0)) + (j * (0, 1)), m, 0, 5], j, 0, 1]) → fc
  55. Polygon(fc(1), fc(2), fc(8), fc(7)) → vc0, j_2, k_2, l_2, m_2
  56. Polygon(fc(3), fc(2), fc(8), fc(9)) → vc1, n_2, p_2, q_2, r_2
  57. Polygon(fc(3), fc(4), fc(10), fc(9)) → vc2, s_2, t_2, a_2, b_2
  58. Polygon(fc(4), fc(5), fc(11), fc(10)) → vc3, c_2, d_2, e_2, f_3
  59. Polygon(fc(5), fc(6), fc(12), fc(11)) → vc4, g_3, h_3, i_3, j_3
  60. Flatten(Sequence[Sequence[E + (m * (dxUberschlag, 0)) + (j * (0, dyUberschlag)), m, 0, 2], j, 0, 1]) → fua
  61. Polygon(fua(1), fua(2), fua(5), fua(4)) → vua1, k_3, l_3, m_3, n_3
  62. Polygon(fua(2), fua(3), fua(6), fua(5)) → vua2, p_3, q_3, r_3, s_3
  63. Segment(A, B) → h_4
  64. Sequence(C + (i * (dxFB1, 0)), i, 0, 6) → PosE1
  65. Translate(PosE1, (0, dyEingabefeld1)) → PosE2
  66. Translate(PosE2, (0, dyEingabefeld2)) → PosE3
  67. Sequence(F + (m * (abskomma, 0)), m, 0, 5) → listPosKomma0
  68. Sequence(G + (m * (abskomma, 0)), m, 0, 2) → listPosKomma1
  69. Zip(If[m ≟ 0, 3, RandomElement[{1, 2, 3}]], m, randomNosM1) → l1
  70. If(acorrect ≥ 10000, 5, If[acorrect ≥ 1000, 4, If[acorrect ≥ 100, 3, If[acorrect ≥ 10, 2, 1]]]) → stellenA
  71. If(bcorrect ≥ 10000, 5, If[bcorrect ≥ 1000, 4, If[bcorrect ≥ 100, 3, If[bcorrect ≥ 10, 2, 1]]]) → stellenB
  72. If(ccorrect ≥ 10000, 5, If[ccorrect ≥ 1000, 4, If[ccorrect ≥ 100, 3, If[ccorrect ≥ 10, 2, 1]]]) → stellenC
  73. Sequence(H + (0.4, -0.7) + (m * (abskomma2, 0)), m, 0, 2) → listPosKomma2
  74. Sequence(H + (0.4, -2.95) + (m * (abskomma2, 0)), m, 0, 3) → listPosKomma3