魔法锅:整数加法与二次函数探索

魔法锅:整数加法与二次函数探索
几何画板及绘图内容加载中,请稍等……
2025-06-02 16:39
本范例演示一个交互式的数学练习工具,通过「魔法锅」的情境引导学生进行整数加法和减法运算。核心数学概念包括:整数的加减运算、二次函数的图像特征、多项式函数的基本性质。作图要点:利用Sequence命令生成随机数列,Element命令提取练习数据,If命令实现条件判断和反馈机制,Text命令显示题目和提示信息,Segment命令绘制几何辅助线,并结合按钮控件(btnNew、btnNext、btnShowSolution)实现完整的练习流程。该工具适合初中数学教学,可用于巩固整数运算、理解函数图像与性质、训练解题思路。

GeoGebra 命令及参数

  1. Sequence(Random[1, 10], i, 1, 10) → randomNumbers, {4, 4, 3, 7, 7, 4, 7, 1, 2, 3}
  2. Element(randomNumbers, Mod[questionCount, Length[randomNumbers]] + 1) → randomNumber
  3. Textfield(input) → inputBox
  4. 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
  5. 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
  6. Sequence(Sequence[Corner[4] + (RasterPixMat * ((k * RasterStepXY), (m * RasterStepXY))), k, 0, RasterMaxX / RasterStepXY], m, 0, RasterMaxY / RasterStepXY) → RasterPunkte
  7. PointIn(AreaDDStones(1)) → PStone1
  8. PointIn(AreaDDStones(1)) → PStone2
  9. PointIn(AreaDDStones(1)) → PStone3
  10. PointIn(AreaDDStones(1)) → PStone4
  11. PointIn(AreaDDStones(1)) → PStone5
  12. PointIn(AreaDDStones(1)) → PStone6
  13. PointIn(AreaDDStones(1)) → PStone7
  14. Sequence(IsInRegion[AllPStones(k), RegionZK(1)], k, 1, Length[AllPStones]) → StoneInRegion
  15. Sum(Sequence[If[StoneInRegion(k), AllNumbersStones(k), 0], k, 1, Length[AllNumbersStones]]) → actualTemperature
  16. Ellipse(Midpoint[PointsAZK(1), PointsAZK(2)] + (sqrt(Distance[PointsAZK(2), Midpoint[PointsAZK(1), PointsAZK(2)]]^(2) - Distance[PointsBZK(2), Midpoint[PointsAZK(1), PointsAZK(2)]]^(2)), 0), Midpoint[PointsAZK(1), PointsAZK(2)] + ((-sqrt(Distance[PointsAZK(2), Midpoint[PointsAZK(1), PointsAZK(2)]]^(2) - Distance[PointsBZK(2), Midpoint[PointsAZK(1), PointsAZK(2)]]^(2))), 0), Distance[PointsAZK(1), PointsAZK(2)] / 2) → ellZK
  17. Sequence(PointsThermoEnd(1) + (k * (0, Distance[PointsThermoEnd(1), PointsThermoEnd(2)] / (thermoEnd - thermoStart))), k, 0, thermoEnd - thermoStart, 1) → PointsThermo
  18. RemoveUndefined(Sequence[If[Mod[TemperatureList(k), thermoStepMark] ≟ 0, Segment[PointsThermo(k) + (((-segLengthThermo)) / 2, 0), PointsThermo(k) + (segLengthThermo / 2, 0)]], k, 1, Length[PointsThermo]]) → segMarkThermo
  19. RemoveUndefined(Sequence[If[Mod[TemperatureList(k), thermoStepCap] ≟ 0, Text[((("\textsf{\(" * If[TemperatureList(k) > 0, "+", ""]) * TemperatureList(k)) * "\)}"), PointsThermo(k) + ((6 / 5 * segLengthThermo), 0.05), false, true, 0, 0]], k, 1, Length[PointsThermo]]) → CapThermo
  20. Sequence(((dimStoneA * cos(k°)), (dimStoneB * sin(k°))), k, 0, 360, 5) → PointStone
  21. Text((("\textsf{\bold{\textcolor{white}{" * If[showMinusStone, (If[numberStone1 > 0, "+", numberStone1 ≟ 0, "\phantom{+}", "\(-\)"] * abs(numberStone1)), (abs(numberStone1) * "")]) * "}}}"), PStone1 + (0, 0.05), false, true, 0, 0) → txtStone1
  22. Text((("\textsf{\bold{\textcolor{white}{" * If[showMinusStone, (If[numberStone2 > 0, "+", numberStone2 ≟ 0, "\phantom{+}", "\(-\)"] * abs(numberStone2)), (abs(numberStone2) * "")]) * "}}}"), PStone2 + (0, 0.05), false, true, 0, 0) → txtStone2
  23. Text((("\textsf{\bold{\textcolor{white}{" * If[showMinusStone, (If[numberStone3 > 0, "+", numberStone3 ≟ 0, "\phantom{+}", "\(-\)"] * abs(numberStone3)), (abs(numberStone3) * "")]) * "}}}"), PStone3 + (0, 0.05), false, true, 0, 0) → txtStone3
  24. Text((("\textsf{\bold{\textcolor{white}{" * If[showMinusStone, (If[numberStone4 > 0, "+", numberStone4 ≟ 0, "\phantom{+}", "\(-\)"] * abs(numberStone4)), (abs(numberStone4) * "")]) * "}}}"), PStone4 + (0, 0.05), false, true, 0, 0) → txtStone4
  25. Text((("\textsf{\bold{\textcolor{white}{" * If[showMinusStone, (If[numberStone5 > 0, "+", numberStone5 ≟ 0, "\phantom{+}", "\(-\)"] * abs(numberStone5)), (abs(numberStone5) * "")]) * "}}}"), PStone5 + (0, 0.05), false, true, 0, 0) → txtStone5
  26. Text((("\textsf{\bold{\textcolor{white}{" * If[showMinusStone, (If[numberStone6 > 0, "+", numberStone6 ≟ 0, "\phantom{+}", "\(-\)"] * abs(numberStone6)), (abs(numberStone6) * "")]) * "}}}"), PStone6 + (0, 0.05), false, true, 0, 0) → txtStone6
  27. Text((("\textsf{\bold{\textcolor{white}{" * If[showMinusStone, (If[numberStone7 > 0, "+", numberStone7 ≟ 0, "\phantom{+}", "\(-\)"] * abs(numberStone7)), (abs(numberStone7) * "")]) * "}}}"), PStone7 + (0, 0.05), false, true, 0, 0) → txtStone7
  28. Textfield(input031) → InputBox031
  29. SelectedIndex(dropdown041) → index041
  30. SelectedIndex(dropdown051) → index051
  31. SelectedIndex(dropdown071) → index071
  32. SelectedIndex(dropdown072) → index072
  33. If(step ≟ 2, done02, step ≟ 7, correctdd071 ∧ correctdd072, true, step ≟ 3, correct031, step ≟ 4, correctdd041, step ≟ 5, correctdd051, step ≟ 6, moved06) → clickableBtnNext
  34. Segment(Midpoint[Corner[txtZiehMich021, 1], Corner[txtZiehMich021, 2]], Midpoint[Corner[txtZiehMich021, 1], Corner[txtZiehMich021, 2]] + (0.75 * UnitVector[Vector[Midpoint[Corner[txtZiehMich021, 1], Corner[txtZiehMich021, 2]], Midpoint[PointParkedStones(1), PointParkedStones(4)]]])) → arrowZiehMich021
  35. Segment(Midpoint[Corner[txtZiehMich022, 1], Corner[txtZiehMich022, 4]], Midpoint[Corner[txtZiehMich022, 1], Corner[txtZiehMich022, 4]] + (0.75 * UnitVector[Vector[Midpoint[Corner[txtZiehMich022, 1], Corner[txtZiehMich022, 4]], Center[RegionZK(1)]]])) → arrowZiehMich022
  36. Sequence(Text[(("\textsf{\bold{\textcolor{white}{" * If[showMinusStone, (If[Element[{10, 5, -7, -5, 3, -8}, k] > 0, "+", Element[{10, 5, -7, -5, 3, -8}, k] ≟ 0, "\phantom{+}", "\(-\)"] * abs(Element[{10, 5, -7, -5, 3, -8}, k])), (abs(Element[{10, 5, -7, -5, 3, -8}, k]) * "")]) * "}}}"), PosStonesDecorationEnd(k) + (0, 0.05), false, true, 0, 0], k, 1, 6) → CapStoneDecorationEnd
  37. Text(((("\textsf{\colorbox{#d0d0d0}{\bold{\(" * If[actualTemperature > 0, "+", ""]) * actualTemperature) * "\)}}}"), PointsThermo(IndexOf[actualTemperature, TemperatureList]) + ((-6 / 5 * segLengthThermo), 0.05), false, true, 0, 0) → CapActualTemperature