分数标注与读取练习 - 第二级

分数标注与读取练习 - 第二级
几何画板及绘图内容加载中,请稍等……
2025-01-21 20:16
该范例是一个交互式数学练习,用于训练学生在数轴上标注和读取分数(有理数)的能力。核心数学概念是有理数的表示、比较与排序,特别是将分数精确地定位在数轴上。作图要点包括:使用GeoGebra的Sequence、Join、Flatten等命令生成数轴上的刻度与分数点,通过If、Element、Remove等命令控制题目生成与验证逻辑,利用Textfield和Button实现用户输入与交互,并通过Translate、Segment、Circle等对象构建清晰的视觉界面。该练习适合7-8年级学生,作为课堂练习或家庭作业,通过连续答对3题晋级下一难度,有效提升学生对分数数轴表示的理解。

GeoGebra 命令及参数

  1. Sequence(PStart + (k * (disP, 0)), k, 0, numberOfNumbers - 1) → AllPointsList
  2. Join({{1}, Shuffle[2…6]}) → CaseZStartList
  3. Flatten(Sequence[CaseZStartList, k, 1, 20]) → CaseZList
  4. If(example, numberStartList(1), If[level ≟ 1, Level1StartNumber(CaseZ, counter), level ≟ 2, Level2StartNumber(CaseZ, counter), level ≟ 3, Level3StartNumber(CaseZ, counter)]) → numberStart
  5. If(example, numberStepList(1), numberStepList(CaseZ)) → numberStep
  6. Sequence(numberStart + (k * numberStep), k, 0, numberOfNumbers - 1) → AllNumbersList, {-3.75, -3.5, -3.25, -3, -2.75, -2.5, -2.25, -2, -1.75, -1.5, -1.25, -1, -0.75, -0.5, -0.25, 0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 2.25, 2.5, 2.75, 3, 3.25, 3.5, 3.75}
  7. If(example, 1, capStepList(CaseZ)) → capStep
  8. Element(KeepIf[Mod[a, 2] ∈ If[CaseZ ≟ 1, {0, 1}, CaseZ ≟ 2, {0}, CaseZ ≟ 3, {0, 1}, CaseZ ≟ 4, {0, 1}, CaseZ ≟ 5, {0, 1}, {0, 0.5, 1, 1.5}], a, AllNumbersList], 1) → capStart
  9. Sequence(capStart + (k * capStep), k, 0, numberOfNumbers - 1, capDis) → CapNumbersList, {-3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27}
  10. Flatten(Sequence[CaseQStartList, k, 1, 50]) → CaseQList
  11. Remove(AllNumbersList, CapNumbersList) → NumberList1
  12. Sequence(If[k ≟ 1, RandomElement[KeepIf[abs(a) > 1, a, Element[NumberDrawList, CaseZList(1)]]], RandomElement[Element[NumberDrawList, CaseZList(k)]]], k, 1, 100) → NumberList
  13. If(level ≟ 1, Level1SelectedNumberList(CaseZ, counter), level ≟ 2, Level2SelectedNumberList(CaseZ, counter), level ≟ 3, Level3SelectedNumberList(CaseZ, counter)) → selectedNumber
  14. Join({{StartPQ1}, AllPointsList}) → PointsQ1List
  15. Point(PointsQ1List) → PQ1
  16. If(selectedNumber < 0, SelectedIndex[dropdown01] ≟ 3, SelectedIndex[dropdown01] ∈ {1, 2}) → correctSign
  17. If(Defined[input1], input1 + input2 / input3 ≟ abs(selectedNumber), input2 / input3 ≟ abs(selectedNumber)) → correctNumber
  18. If(CaseQ ≟ 1, PQ1 ≟ SolPQ1, If[bruch, correctNumber ∧ correctSign, input ≟ selectedNumber]) → correct
  19. Sequence(Random[1, 10], i, 1, 10) → randomNumbers, {6, 5, 10, 1, 6, 8, 8, 3, 9, 5}
  20. Element(randomNumbers, Mod[questionCount, Length[randomNumbers]] + 1) → randomNumber
  21. Textfield(input) → inputBox
  22. Join({Sequence[Segment[Corner[4] + (RasterPixMat * ((k * RasterStepXY), 0)), Corner[4] + (RasterPixMat * ((k * RasterStepXY), RasterMaxY))], k, 0, RasterMaxX / RasterStepXY], Sequence[Segment[Corner[4] + (RasterPixMat * (0, (k * RasterStepXY))), Corner[4] + (RasterPixMat * (RasterMaxX, (k * RasterStepXY)))], k, 0, RasterMaxY / RasterStepXY]}) → RasterStrecken
  23. Join({Sequence[Text[UnicodeToLetter[65 + k], Midpoint[Corner[4] + (RasterPixMat * ((k * RasterStepXY), RasterMaxY)), Corner[4] + (RasterPixMat * (((k + 1) * RasterStepXY), RasterMaxY))], false, true, 0, -1], k, 0, RasterMaxX / RasterStepXY - 1], Sequence[Text[("" * k), Midpoint[Corner[4] + (RasterPixMat * (RasterMaxX, ((k - 1) * RasterStepXY))), Corner[4] + (RasterPixMat * (RasterMaxX, (k * RasterStepXY)))], false, true, 1, 0], k, 1, RasterMaxY / RasterStepXY]}) → RasterBeschriftung
  24. Sequence(Sequence[Corner[4] + (RasterPixMat * ((k * RasterStepXY), (m * RasterStepXY))), k, 0, RasterMaxX / RasterStepXY], m, 0, RasterMaxY / RasterStepXY) → RasterPunkte
  25. Translate(imgChilliGrau1, Vector[(1 * Vector[((0.8 * dimChilli), 0)])]) → imgChilliGrau2
  26. Translate(imgChilliRot1, Vector[(1 * Vector[((0.8 * dimChilli), 0)])]) → imgChilliRot2
  27. Translate(imgChilliRot1, Vector[(2 * Vector[((0.8 * dimChilli), 0)])]) → imgChilliRot3
  28. Segment(PStart + ((-disEnd), 0), PStart + (((numberOfNumbers - 1) * disP) + disEnd, 0)) → Zahlengerade
  29. Sequence(Segment[PStart + ((k * disP), If[IsInteger[AllNumbersList(k + 1)], segLength1, segLength2]), PStart + ((k * disP), (-If[IsInteger[AllNumbersList(k + 1)], segLength1, segLength2]))], k, 0, numberOfNumbers - 1) → AllSegList
  30. Unique(Sequence[IndexOf[true, Sequence[IsInteger[AllNumbersList(k)], k, 1, numberOfNumbers], m], m, 1, numberOfNumbers]) → AllIntegersIndexList
  31. KeepIf(IsInteger[a], a, AllNumbersList) → AllIntegersList
  32. Remove(1…numberOfNumbers, AllIntegersIndexList) → AllNotIntegersIndexList
  33. Remove(AllNumbersList, AllIntegersList) → AllNotIntegersList
  34. Sequence(abs(Numerator[AllNumbersList(k)]), k, 1, numberOfNumbers) → AllNumeratorsList, {15, 7, 13, 3, 11, 5, 9, 2, 7, 3, 5, 1, 3, 1, 1, 0, 1, 1, 3, 1, 5, 3, 7, 2, 9, 5, 11, 3, 13, 7, 15}
  35. Sequence(Denominator[AllNumbersList(k)], k, 1, numberOfNumbers) → AllDenominatorsList
  36. Sequence(If[AllNumbersList(k) < 0, "\(-\)", ""], k, 1, numberOfNumbers) → AllSignsTxtList
  37. Sequence((ReplaceAll[(AllSignsTxtList(k) * abs(AllNumbersList(k))), ".", ","] * "\vphantom{,}"), k, 1, numberOfNumbers) → AllTxtD1
  38. Sequence(((AllSignsTxtList(k) * If[k ∈ AllIntegersIndexList, ("" * abs(AllNumbersList(k))), (((("\dfrac{" * AllNumeratorsList(k)) * "}{") * AllDenominatorsList(k)) * "}")]) * "\vphantom{\dfrac{1}{2}}"), k, 1, numberOfNumbers) → AllTxtD2
  39. Sequence(Text[If[IsInteger[AllNumbersList(k)], (("\textsf{" * AllTxtD1(k)) * "}"), ""], AllPointsList(k) + (If[AllNumbersList(k) < 0, -0.166, 0], (-segLength1)), false, true, 0, -1], k, 1, numberOfNumbers) → TxtIntegers
  40. Element(KeepIf[Mod[a, 1] ∈ If[CaseZ ≟ 1, {0, 0.5}, CaseZ ≟ 2, {0, 0.5}, CaseZ ≟ 3, {0, 1 / 3, 2 / 3}, CaseZ ≟ 4, {0, 0.25, 0.5, 0.75}, CaseZ ≟ 5, {0.2, 0.4, 0.6, 0.8, 0}, {0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0}], a, AllNumbersList], 1) → markStart
  41. KeepIf(Defined[IndexOf[a, AllNumbersList]], a, Sequence[markStart + (k * markStep), k, 0, numberOfNumbers - 1, markDis]) → MarkNumbersList
  42. KeepIf(a ≠ "", a, Sequence[Text[If[Defined[IndexOf[AllNumbersList(k), CapNumbersList]], (("\textsf{" * AllTxtD1(k)) * "}"), ""], AllPointsList(k) + (If[AllNumbersList(k) < 0, -0.166, 0], (-segLength1)), false, true, 0, -1], k, 1, numberOfNumbers]) → TxtDec
  43. Remove(AllNumbersList, MarkNumbersList) → NumberList2
  44. Text("\textsf{Lösung:}", PosSolution + (0, 0), false, true, 0, -1) → txtSolution2
  45. Circle(PQ1, radiusFB) → circleFB
  46. Segment(AllPointsList(IndexOf[selectedNumber, AllNumbersList]) + (0, segLength1 + 0.2), AllPointsList(IndexOf[selectedNumber, AllNumbersList]) + (0, segLength1 + 1.25)) → segSolution
  47. If(IndexOf[selectedNumber, AllNumbersList] > 6, Segment[AllPointsList(IndexOf[MarkNumbersList(2), AllNumbersList]) + disHint, AllPointsList(IndexOf[MarkNumbersList(1), AllNumbersList]) + disHint], Segment[AllPointsList(IndexOf[MarkNumbersList(Length[MarkNumbersList]), AllNumbersList]) + disHint, AllPointsList(IndexOf[MarkNumbersList(Length[MarkNumbersList] - 1), AllNumbersList]) + disHint]) → segHint
  48. Textfield(input1) → InputBox1
  49. Textfield(input2) → InputBox2
  50. Textfield(input3) → InputBox3
  51. Sequence(abs(Numerator[Mod[AllNumbersList(k), 1]]), k, 1, numberOfNumbers) → AllNumeratorsList2, {1, 1, 3, 0, 1, 1, 3, 0, 1, 1, 3, 0, 1, 1, 3, 0, 1, 1, 3, 0, 1, 1, 3, 0, 1, 1, 3, 0, 1, 1, 3}
  52. Sequence(RandomElement[If[-1 < NumberList(k) < 1, {3}, {3}]], k, 1, 100) → DarstellungList, {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3}
  53. If(CaseQ ≟ 1, Defined[IndexOf[PQ1, AllPointsList]], If[¬bruch, Defined[input] ∧ (¬isDecimal), (¬isDecimal) ∧ NoMinus ∧ Defined[input2] ∧ Defined[input3]]) → clickableBtnValidate
  54. Segment(Midpoint[Corner[txtZiehMich, 1], Corner[txtZiehMich, 4]] + (0.1 * Vector[Midpoint[Corner[txtZiehMich, 1], Corner[txtZiehMich, 4]], StartPQ1]), Midpoint[Corner[txtZiehMich, 1], Corner[txtZiehMich, 4]] + (0.6 * Vector[Midpoint[Corner[txtZiehMich, 1], Corner[txtZiehMich, 4]], StartPQ1])) → segZiehMich
  55. If(CaseQ ≟ 1, markedNumber ≟ (-selectedNumber), correctNumber ∧ (¬correctSign)) → isTypicalError
  56. Text((("\textsf{\bold{" * If[darstellung ≟ 1, txtD1, darstellung ≟ 2, txtD2, txtD3]) * "}}"), PosSolution + (If[selectedNumber < 0, -0.166, 0], -0.75), false, true, 0, -1) → txtSolution1
  57. If(abs(selectedNumber) < 1, (txtD2 * ""), ((txtD2 * " = ") * txtD3)) → txtSolutionAlternative
  58. Textfield() → InputBoxEx11
  59. Textfield() → InputBoxEx12
  60. Textfield() → InputBoxEx13
  61. Textfield() → InputBoxEx21
  62. Textfield() → InputBoxEx22
  63. Textfield() → InputBoxEx23
  64. Sequence(((AllSignsTxtList(k) * If[k ∈ AllIntegersIndexList, ("" * abs(AllNumbersList(k))), (((((If[AllNumeratorsList2(k) ≠ 0, If[AllNumbersList(k) < 0, If[abs(ceil(AllNumbersList(k))) ≠ 0, (("" * abs(ceil(AllNumbersList(k)))) * "\:"), ""], If[abs(floor(AllNumbersList(k))) ≠ 0, (("" * abs(floor(AllNumbersList(k)))) * "\:"), ""]], ""] * "\dfrac{") * 5) * "}{") * 10) * "}")]) * "\vphantom{\dfrac{1}{2}}"), k, 1, numberOfNumbers) → AllTxtD35
  65. KeepIf(a ≠ "", a, Sequence[Text[If[Defined[IndexOf[AllNumbersList(k), CapNumbersList]], (("\textsf{" * AllTxtD35(k)) * "}"), ""], AllPointsList(k) + (If[AllNumbersList(k) < 0, -0.166, 0], (-segLength1)), false, true, 0, -1], k, 1, numberOfNumbers]) → Txt05
  66. Sequence(((AllSignsTxtList(k) * If[k ∈ AllIntegersIndexList, ("" * abs(AllNumbersList(k))), (((((If[AllNumeratorsList2(k) ≠ 0, If[AllNumbersList(k) < 0, If[abs(ceil(AllNumbersList(k))) ≠ 0, (("" * abs(ceil(AllNumbersList(k)))) * "\:"), ""], If[abs(floor(AllNumbersList(k))) ≠ 0, (("" * abs(floor(AllNumbersList(k)))) * "\:"), ""]]] * "\dfrac{") * AllNumeratorsList2(k)) * "}{") * AllDenominatorsList(k)) * "}")]) * "\vphantom{\dfrac{1}{2}}"), k, 1, numberOfNumbers) → AllTxtD3
  67. Text((("\textsf{\bold{\textcolor{black}{" * If[CaseZ ≟ 1 ∨ CaseZ ≟ 2, "\frac{1}{2}", CaseZ ≟ 3, "\frac{1}{3}", CaseZ ≟ 4, "\frac{1}{4}", CaseZ ≟ 5, "\frac{1}{5}", CaseZ ≟ 6, "\frac{1}{10}"]) * "}}}"), Midpoint[segHint] + (0, segLength1 + 0.45), false, true, 0, 0) → CapHint
  68. KeepIf(a > 0, a, Sequence[Segment[PStart + ((k * disP), If[Defined[IndexOf[AllNumbersList(k + 1), MarkNumbersList]], If[AllNumbersList(k + 1) ≟ 0, segLength0, IsInteger[AllNumbersList(k + 1)], segLength1, segLength2], 0]), PStart + ((k * disP), (-If[Defined[IndexOf[AllNumbersList(k + 1), MarkNumbersList]], If[AllNumbersList(k + 1) ≟ 0, segLength0, IsInteger[AllNumbersList(k + 1)], segLength1, segLength2], 0]))], k, 0, numberOfNumbers - 1]) → SegMarkList
  69. Text((("\textsf{\bold{{" * If[darstellung ≟ 1, txtD1, darstellung ≟ 2, txtD2, txtD3]) * "}}}"), PQ1 + (If[selectedNumber < 0, -0.166, 0], segLength1 + 0), false, true, 0, 1) → CapPQ1
  70. Text("\textsf{Chiliant gemacht!}", PosImgDancingChilli1 + (1, 6.22), false, true, 1, -1) → txtEndPage

AI 绘图提示语参考

在坐标平面上绘制一条水平数轴,并在数轴上等距标出一组有理数点(包含整数与分数),点与刻度需要对应同一尺度范围(从负到正)。在数轴上方或下方为每个数点放置对应的文字表示:整数用加粗/文本样式呈现,分数用分式形式显示其分子与分母(必要时带负号)。同时给出一个可交互的选定点(用明显标记的标点),并在该选定点处画一个圆形强调区域。最后在选定点附近用一条竖向或短线段作提示/参考,并预留输入框位置用于回答该分数的读法。
以上提示语为根据原始绘图命令整理而来,仅供参考。