Decimal Entry & Reading - Level 2

Decimal Entry & Reading - Level 2
Loading the math board and drawing, please wait…
2025-01-21 20:16
This example demonstrates how to enter and read decimals on a number line. The core math concepts involved include comparing and ordering rational numbers, and representing rational numbers on the number line. Construction highlights the use of GeoGebra commands such as Sequence, Shuffle, Flatten, If, Element, Remove, Join, Point, Textfield, Translate, Segment, Unique, KeepIf, Text, Circle, Defined; objects include btnValidate, attemptCount, questionCount, correctCount, input, counter, PStart, disP, numberOfNumbers, AllPointsList, CaseZStartList, CaseZList, CaseZ, numberStartList, numberStepList, level, Level1StartNumber, Level2StartNumber, Level3StartNumber, numberStart, numberStep, AllNumbersList, capStepList, capStep, capDis, capStartList, capStart, CapNumbersList, CaseQStartList, CaseQList, CaseQ, NumberList1, NumberMatrix, NumberDrawList, NumberList, Level1NumberList, Level1SelectedNumberList, Level2NumberList, Level3NumberList, Level2SelectedNumberList. Suitable for 7-8 grade students to practice and reinforce rational number concepts.

GeoGebra Commands & Parameters

  1. Sequence(PStart + (k * (disP, 0)), k, 0, numberOfNumbers - 1) → AllPointsList
  2. Shuffle(1…5) → CaseZStartList, {3, 2, 4, 5, 1}
  3. Flatten(Sequence[CaseZStartList, k, 1, 20]) → CaseZList
  4. If(level ≟ 1, Level1StartNumber(CaseZ, counter), level ≟ 2, Level2StartNumber(CaseZ, counter), level ≟ 3, Level3StartNumber(CaseZ, counter)) → numberStart
  5. Sequence(numberStart + (k * numberStep), k, 0, numberOfNumbers - 1) → AllNumbersList, {-1.875, -1.75, -1.625, -1.5, -1.375, -1.25, -1.125, -1, -0.875, -0.75, -0.625, -0.5, -0.375, -0.25, -0.125, 0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875, 1, 1.125, 1.25, 1.375, 1.5, 1.625, 1.75, 1.875}
  6. Element(KeepIf[Mod[a, 2] ∈ If[CaseZ ≟ 1, {0, 1}, CaseZ ≟ 2, {0}, CaseZ ≟ 3, {0, 1}, CaseZ ≟ 4, {0, 1}, {0, 0.5, 1, 1.5}], a, AllNumbersList], 1) → capStart
  7. Sequence(capStart + (k * capStep), k, 0, numberOfNumbers - 1, capDis) → CapNumbersList, {-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, 28, 29}
  8. Shuffle({1, 2}) → CaseQStartList, {1, 2}
  9. Flatten(Sequence[CaseQStartList, k, 1, 50]) → CaseQList
  10. Remove(AllNumbersList, CapNumbersList) → NumberList1
  11. Sequence(RandomElement[Element[NumberDrawList, CaseZList(k)]], k, 1, 100) → NumberList, {-0.75, -0.7, 1.8, 0.5, -1.5, 3.5, 4.5, 0.2, -1.1, 6.5, -1.1, 0.2, -2.5, -3.5, -0.75, 1.8, 3.5, 1.5, 7.5, -0.9, 6.5, 0.4, 2.75, -1.1, -6.5, -2.6, -2.25, -4.5, -0.6, -3.5, -2.25, -2.8, -2.5, 1.4, -7.5, -3.75, 0.8, 3, 0.6, -6.5, -6.5, 3.75, -1.2, 0.8, 5, 0.7, -3.5, -2.6, -5, -0.75, 5, -2.5, -5.5, -0.1, -0.8, -4.5, -0.4, -0.6, 0.25, 1.5, -2.25, -1.5, 0.2, 2.8, -2.5, -1.2, -6.5, 1, -0.4, -2.75, -1.2, 4.5, -2.8, -0.75, -0.5, 1.5, 0.7, 2.5, 1.8, 7.5, -4.5, -0.3, 0.5, -0.2, -5.5, 0.1, 7.5, -6.5, -0.75, -1.8, -2.5, -0.3, 2.6, -2.5, -2.25, -0.75, 1, -1.6, 0.1, 7.5}
  12. If(level ≟ 1, Level1SelectedNumberList(CaseZ, counter), level ≟ 2, Level2SelectedNumberList(CaseZ, counter), level ≟ 3, Level3SelectedNumberList(CaseZ, counter)) → selectedNumber
  13. Join({{StartPQ1}, AllPointsList}) → PointsQ1List
  14. Point(PointsQ1List) → PQ1
  15. If(selectedNumber < 0, SelectedIndex[dropdown01] ≟ 3, SelectedIndex[dropdown01] ∈ {1, 2}) → correctSign
  16. If(Defined[input1], input1 + input2 / input3 ≟ abs(selectedNumber), input2 / input3 ≟ abs(selectedNumber)) → correctNumber
  17. If(CaseQ ≟ 1, PQ1 ≟ SolPQ1, If[bruch, correctNumber ∧ correctSign, input ≟ selectedNumber]) → correct
  18. Sequence(Random[1, 10], i, 1, 10) → randomNumbers, {7, 2, 6, 9, 4, 3, 1, 2, 2, 8}
  19. Element(randomNumbers, Mod[questionCount, Length[randomNumbers]] + 1) → randomNumber
  20. Textfield(input) → inputBox
  21. 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
  22. 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
  23. Sequence(Sequence[Corner[4] + (RasterPixMat * ((k * RasterStepXY), (m * RasterStepXY))), k, 0, RasterMaxX / RasterStepXY], m, 0, RasterMaxY / RasterStepXY) → RasterPunkte
  24. Translate(imgChilliGrau1, Vector[(1 * Vector[((0.8 * dimChilli), 0)])]) → imgChilliGrau2
  25. Translate(imgChilliRot1, Vector[(1 * Vector[((0.8 * dimChilli), 0)])]) → imgChilliRot2
  26. Translate(imgChilliRot1, Vector[(2 * Vector[((0.8 * dimChilli), 0)])]) → imgChilliRot3
  27. Segment(PStart + ((-disEnd), 0), PStart + (((numberOfNumbers - 1) * disP) + disEnd, 0)) → Zahlengerade
  28. 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
  29. Unique(Sequence[IndexOf[true, Sequence[IsInteger[AllNumbersList(k)], k, 1, numberOfNumbers], m], m, 1, numberOfNumbers]) → AllIntegersIndexList
  30. KeepIf(IsInteger[a], a, AllNumbersList) → AllIntegersList
  31. Remove(1…numberOfNumbers, AllIntegersIndexList) → AllNotIntegersIndexList
  32. Remove(AllNumbersList, AllIntegersList) → AllNotIntegersList
  33. Sequence(abs(Numerator[AllNumbersList(k)]), k, 1, numberOfNumbers) → AllNumeratorsList, {15, 7, 13, 3, 11, 5, 9, 1, 7, 3, 5, 1, 3, 1, 1, 0, 1, 1, 3, 1, 5, 3, 7, 1, 9, 5, 11, 3, 13, 7, 15}
  34. Sequence(Denominator[AllNumbersList(k)], k, 1, numberOfNumbers) → AllDenominatorsList
  35. Sequence(If[AllNumbersList(k) < 0, "\(-\)", ""], k, 1, numberOfNumbers) → AllSignsTxtList
  36. Sequence((ReplaceAll[(AllSignsTxtList(k) * abs(AllNumbersList(k))), ".", ","] * "\vphantom{,}"), k, 1, numberOfNumbers) → AllTxtD1
  37. Sequence(((AllSignsTxtList(k) * If[k ∈ AllIntegersIndexList, ("" * abs(AllNumbersList(k))), (((("\dfrac{" * AllNumeratorsList(k)) * "}{") * AllDenominatorsList(k)) * "}")]) * "\vphantom{\dfrac{1}{2}}"), k, 1, numberOfNumbers) → AllTxtD2
  38. 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
  39. Element(KeepIf[Mod[a, 1] ∈ If[CaseZ ≟ 1, {0, 0.5}, CaseZ ≟ 2, {0, 0.5}, CaseZ ≟ 3, {0, 0.25, 0.5, 0.75}, CaseZ ≟ 4, {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
  40. KeepIf(Defined[IndexOf[a, AllNumbersList]], a, Sequence[markStart + (k * markStep), k, 0, numberOfNumbers - 1, markDis]) → MarkNumbersList
  41. 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
  42. Remove(AllNumbersList, MarkNumbersList) → NumberList2
  43. Text("\textsf{Lösung:}", PosSolution + (0, 0), false, true, 0, -1) → txtSolution2
  44. Circle(PQ1, radiusFB) → circleFB
  45. Segment(AllPointsList(IndexOf[selectedNumber, AllNumbersList]) + (0, segLength1 + 0.2), AllPointsList(IndexOf[selectedNumber, AllNumbersList]) + (0, segLength1 + 1.25)) → segSolution
  46. If(IndexOf[selectedNumber, AllNumbersList] > 5, 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
  47. Textfield(input1) → InputBox1
  48. Textfield(input2) → InputBox2
  49. Textfield(input3) → InputBox3
  50. Sequence(abs(Numerator[Mod[AllNumbersList(k), 1]]), k, 1, numberOfNumbers) → AllNumeratorsList2, {1, 1, 3, 1, 5, 3, 7, 0, 1, 1, 3, 1, 5, 3, 7, 0, 1, 1, 3, 1, 5, 3, 7, 0, 1, 1, 3, 1, 5, 3, 7}
  51. Sequence(((AllSignsTxtList(k) * If[k ∈ AllIntegersIndexList, ("" * abs(AllNumbersList(k))), (((((If[AllNumeratorsList2(k) ≠ 0, If[AllNumbersList(k) < 0, (("" * abs(ceil(AllNumbersList(k)))) * "\:"), (("" * abs(floor(AllNumbersList(k)))) * "\:")]] * "\dfrac{") * AllNumeratorsList2(k)) * "}{") * AllDenominatorsList(k)) * "}")]) * "\vphantom{\dfrac{1}{2}}"), k, 1, numberOfNumbers) → AllTxtD3
  52. Text((("\textsf{\bold{" * Element[Element[{AllTxtD1, AllTxtD2, AllTxtD3}, darstellung], IndexOf[selectedNumber, AllNumbersList]]) * "}}"), PosSolution + (If[selectedNumber < 0, -0.166, 0], -0.75), false, true, 0, -1) → txtSolution1
  53. Defined(IndexOf["/", Split[Text[inputBox], {""}]]) → isFraction
  54. If(CaseQ ≟ 1, Defined[IndexOf[PQ1, AllPointsList]], If[¬bruch, Defined[input] ∧ (¬isFraction), Defined[input2] ∧ Defined[input3]]) → clickableBtnValidate
  55. Text((("\textsf{\bold{\textcolor{black}{" * ReplaceAll[(abs(AllNumbersList(IndexOf[Point[segHint, 0] - disHint, AllPointsList]) - AllNumbersList(IndexOf[Point[segHint, 1] - disHint, AllPointsList])) * ""), ".", ","]) * "}}}"), Midpoint[segHint] + (0, segLength1 + 0.35), false, true, 0, 0) → CapHint
  56. If(CaseQ ≟ 1, markedNumber ≟ (-selectedNumber), input ≟ (-selectedNumber)) → isTypicalError
  57. 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
  58. 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
  59. Text((("\textsf{\bold{{" * Element[Element[{AllTxtD1, AllTxtD2, AllTxtD3}, darstellung], IndexOf[selectedNumber, AllNumbersList]]) * "}}}"), PQ1 + (If[selectedNumber < 0, -0.166, 0], segLength1 + 0), false, true, 0, 1) → CapPQ1
  60. Text("\textsf{Chiliant gemacht!}", PosImgDancingChilli1 + (1, 6.22), false, true, 1, -1) → txtEndPage

AI Drawing Prompt Reference

Draw a horizontal number line ranging from -2 to 2 with evenly spaced tick marks, labeling integers at whole number positions and decimal values at intermediate positions. Create an interactive exercise: randomly display a special marker point on the number line (shown as a vertical line segment), and ask students to identify the corresponding decimal value from given options or type it in an input box. Provide validation feedback - when the answer is correct, show an arc or circle above the marker point; if incorrect, display a hint line segment. Multiple difficulty levels can control decimal precision (such as 0.5, 0.25, etc.). The overall interface includes a title, answer input area, and feedback information.
The prompt above was compiled from the original drawing commands and is for reference only.