Expanded Form to Standard Form: Visual Place-Value Decomposition

Expanded Form to Standard Form: Visual Place-Value Decomposition
Loading the math board and drawing, please wait…
2023-10-26 19:54
This GeoGebra example teaches students to build numbers in expanded form and visually observe how they convert into standard form. It centers on number sense and place value: understanding natural numbers by decomposing digits into the sum of place-value parts (multiplication plus addition) and recognizing the equivalence between expanded notation and standard notation. The construction uses Sequence to generate digit/number data and Take/If to select the needed pieces; Append collects items for the current problem. GeoGebra graphics are assembled with Translate, Segment, Polygon, and Corner, while Sum aggregates computed parts. To reflect changing place values, expandSegment and Dilate scale or extend graphical segments (e.g., bar/segment representations). The example also uses interactive/animated elements such as anim and inputCurrent to drive question generation and display results. Suitable for grades 4–5 and for classroom exploration or guided practice on 3- and 4-digit numbers.

GeoGebra Commands & Parameters

  1. Sequence(Random[0, 99] / 100, A, 1, 200) → allRandomSeeds, {0.93, 0.26, 0.28, 0.23, 0.08, 0.3, 0.76, 0.53, 0.41, 0.37, 0.31, 0.71, 0.85, 0.35, 0.66, 0.41, 0.65, 0.17, 0.37, 0.57, 0.74, 0.39, 0.91, 0.07, 0.41, 0.62, 0.82, 0.7, 0.82, 0.53, 0.27, 0.97, 0.59, 0.8, 0.9, 0.48, 0.27, 0.5, 0.51, 0.69, 0.6, 0.83, 0.21, 0.6, 0.1, 0.36, 0.36, 0.87, 0.18, 0.66, 0.54, 0.28, 0.03, 0.93, 0.78, 0.17, 0.33, 0.66, 0.95, 0.33, 0, 0.07, 0.68, 0.93, 0.59, 0.37, 0.4, 0.78, 0.35, 0.33, 0.6, 0.14, 0.34, 0.72, 0.13, 0.66, 0.82, 0.36, 0.98, 0.82, 0.11, 0.95, 0.39, 0.85, 0.43, 0.98, 0.99, 0.77, 0.18, 0.13, 0.31, 0.51, 0.06, 0.91, 0.71, 0.8, 0.46, 0.76, 0.96, 0.63, 0.44, 0.34, 0.01, 0.58, 0.71, 0.93, 0.67, 0.72, 0.87, 0.4, 0.68, 0.14, 0, 0.01, 0.22, 0.39, 0.94, 0.81, 0.97, 0.15, 0.21, 0.16, 0.51, 0.95, 0.92, 0.36, 0.25, 0.46, 0.99, 0.06, 0.36, 0.87, 0.9, 0.31, 0.98, 0.38, 0.6, 0.8, 0.1, 0.15, 0.66, 0.88, 0.34, 0.07, 0.74, 0.67, 0.16, 0.95, 0.36, 0.92, 0.33, 0.98, 0.41, 0.77, 0.86, 0.98, 0.33, 0.31, 0.29, 0.27, 0.19, 0.66, 0.76, 0.19, 0.73, 0.02, 0.09, 0.79, 0.73, 0.23, 0.15, 0.71, 0.71, 0.72, 0.76, 0.21, 0.68, 0.06, 0.68, 0.8, 0.61, 0.85, 0.53, 0.56, 0.38, 0.31, 0.89, 0.83, 0.47, 0.92, 0.98, 0.75, 0.17, 0.96, 0.02, 0.34, 0.08, 0.56, 0.83, 0.63}
  2. Take(allRandomSeeds, randIndex, randIndex + numRandoms - 1) → currentRandomSeeds
  3. If(countQuestion ≟ 0, 4, If[currentRandomSeeds(7) ≥ 0.5, 4, 4]) → numOfDigits
  4. Sequence((x(Cor11) + wid / 2 + (ii * (wid + Hspace)), -0.8), ii, 0, numOfDigits - 1) → PosProducts
  5. Translate(PosProducts, (0, -1)) → PosResults
  6. Translate(PosResults, Vector[(0, 1.6 - 2.5)]) → PosResults'
  7. Append(Max[floor((currentRandomSeeds(1) * 10)), 1], Take[Zip[floor((nn * 10)), nn, currentRandomSeeds], 2, numOfDigits]) → digits
  8. Corner(5) → layoutAppSize
  9. Polygon(inputPoint, TriA, TriB) → tri, b, inputpoint, a
  10. Polygon({(-5, -6.5), (-5, 6.5), (6, 6.5), (6, -6.5)}) → viewbox
  11. onboardingTextOffset(Corner[onboardingText, 1], Corner[onboardingText, 3], onboardingCase, Corner[1], Corner[3], Corner[5]) → OnboardingTextOffset
  12. Polygon({(A1, 0), (A1 + 1, 0), (A1 + 1, 1), (A1, 1)}) → B1
  13. Polygon({(A2, 0), (A2 + 1, 0), (A2 + 1, 1), (A2, 1)}) → B2
  14. Polygon({(A3, 0), (A3 + 1, 0), (A3 + 1, 1), (A3, 1)}) → B3
  15. Polygon({(A4, 0), (A4 + 1, 0), (A4 + 1, 1), (A4, 1)}) → B4
  16. Polygon({(A5, 0), (A5 + 1, 0), (A5 + 1, 1), (A5, 1)}) → B5
  17. Polygon({(A6, 0), (A6 + 1, 0), (A6 + 1, 1), (A6, 1)}) → B6
  18. Polygon({(A7, 0), (A7 + 1, 0), (A7 + 1, 1), (A7, 1)}) → B7
  19. Translate(B1, Vector[(0, 1)]) → C1
  20. Translate(C1, Vector[(0, 1)]) → D1
  21. Translate(D1, Vector[(0, 1)]) → E1
  22. Translate(E1, Vector[(0, 1)]) → F1
  23. Translate(F1, Vector[(0, 1)]) → G1
  24. Translate(G1, Vector[(0, 1)]) → H1
  25. Translate(H1, Vector[(0, 1)]) → I1
  26. Translate(I1, Vector[(0, 1)]) → J1
  27. Translate(B2, Vector[(0, 1)]) → C2
  28. Translate(C2, Vector[(0, 1)]) → D2
  29. Translate(D2, Vector[(0, 1)]) → E2
  30. Translate(E2, Vector[(0, 1)]) → F2
  31. Translate(F2, Vector[(0, 1)]) → G2
  32. Translate(G2, Vector[(0, 1)]) → H2
  33. Translate(H2, Vector[(0, 1)]) → I2
  34. Translate(I2, Vector[(0, 1)]) → J2
  35. Translate(B3, Vector[(0, 1)]) → C3
  36. Translate(C3, Vector[(0, 1)]) → D3
  37. Translate(D3, Vector[(0, 1)]) → E3
  38. Translate(E3, Vector[(0, 1)]) → F3
  39. Translate(F3, Vector[(0, 1)]) → G3
  40. Translate(G3, Vector[(0, 1)]) → H3
  41. Translate(H3, Vector[(0, 1)]) → I3
  42. Translate(I3, Vector[(0, 1)]) → J3
  43. Translate(B4, Vector[(0, 1)]) → C4
  44. Translate(C4, Vector[(0, 1)]) → D4
  45. Translate(D4, Vector[(0, 1)]) → E4
  46. Translate(E4, Vector[(0, 1)]) → F4
  47. Translate(F4, Vector[(0, 1)]) → G4
  48. Translate(G4, Vector[(0, 1)]) → H4
  49. Translate(H4, Vector[(0, 1)]) → I4
  50. Translate(I4, Vector[(0, 1)]) → J4
  51. Translate(B5, Vector[(0, 1)]) → C5
  52. Translate(C5, Vector[(0, 1)]) → D5
  53. Translate(D5, Vector[(0, 1)]) → E5
  54. Translate(E5, Vector[(0, 1)]) → F5
  55. Translate(F5, Vector[(0, 1)]) → G5
  56. Translate(G5, Vector[(0, 1)]) → H5
  57. Translate(H5, Vector[(0, 1)]) → I5
  58. Translate(I5, Vector[(0, 1)]) → J5
  59. Translate(B6, Vector[(0, 1)]) → C6
  60. Translate(C6, Vector[(0, 1)]) → D6
  61. Translate(D6, Vector[(0, 1)]) → E6
  62. Translate(E6, Vector[(0, 1)]) → F6
  63. Translate(F6, Vector[(0, 1)]) → G6
  64. Translate(G6, Vector[(0, 1)]) → H6
  65. Translate(H6, Vector[(0, 1)]) → I6
  66. Translate(I6, Vector[(0, 1)]) → J6
  67. Translate(B7, Vector[(0, 1)]) → C7
  68. Translate(C7, Vector[(0, 1)]) → D7
  69. Translate(D7, Vector[(0, 1)]) → E7
  70. Translate(E7, Vector[(0, 1)]) → F7
  71. Translate(F7, Vector[(0, 1)]) → G7
  72. Translate(G7, Vector[(0, 1)]) → H7
  73. Translate(H7, Vector[(0, 1)]) → I7
  74. Translate(I7, Vector[(0, 1)]) → J7
  75. Sequence(Sequence[(x(Cor11) + wid / 2 + (ii * (Hspace + wid)), jj), jj, 0.5, 8.5, 1], ii, 0, numOfDigits - 1) → PosPlacesValues, {{(1.25, 0.5), (1.25, 1.5), (1.25, 2.5), (1.25, 3.5), (1.25, 4.5), (1.25, 5.5), (1.25, 6.5), (1.25, 7.5), (1.25, 8.5)}, {(3.75, 0.5), (3.75, 1.5), (3.75, 2.5), (3.75, 3.5), (3.75, 4.5), (3.75, 5.5), (3.75, 6.5), (3.75, 7.5), (3.75, 8.5)}, {(6.25, 0.5), (6.25, 1.5), (6.25, 2.5), (6.25, 3.5), (6.25, 4.5), (6.25, 5.5), (6.25, 6.5), (6.25, 7.5), (6.25, 8.5)}, {(8.75, 0.5), (8.75, 1.5), (8.75, 2.5), (8.75, 3.5), (8.75, 4.5), (8.75, 5.5), (8.75, 6.5), (8.75, 7.5), (8.75, 8.5)}}
  76. Sum(Sequence[(digits(nn) * 10^(numOfDigits - nn)), nn, 1, numOfDigits]) → targetNumber
  77. Segment(EPL1, EPR1) → Segment1
  78. Segment(EPL2, EPR2) → Segment2
  79. Segment(EPL3, EPR3) → Segment3
  80. Segment(EPL4, EPR4) → Segment4
  81. Segment(EPL5, EPR5) → Segment5
  82. Segment(EPL6, EPR6) → Segment6
  83. Segment(EPL7, EPR7) → Segment7
  84. Polygon(Cor11, Cor12, EPR1, EPL1) → q1, f, g, h, i
  85. Polygon(Cor21, Cor22, EPR2, EPL2) → q2, j, k, l, m
  86. Polygon(Cor31, Cor32, EPR3, EPL3) → q3, n, p, q, r
  87. Polygon(Cor41, Cor42, EPR4, EPL4) → q4, s, t, c, d
  88. Polygon(Cor51, Cor52, EPR5, EPL5) → q5, e, f_1, g_1, h_1
  89. Polygon(Cor61, Cor62, EPR6, EPL6) → q6, i_1, j_1, k_1, l_1
  90. Polygon(Cor71, Cor72, EPR7, EPL7) → q7, m_1, n_1, p_1, q_1
  91. Zip(Text[((nn * "\times") * 10^(numOfDigits - ii))], nn, inputCurrent, ii, Sequence[1, numOfDigits]) → Products
  92. Zip(Text[(nn * 10^(numOfDigits - ii))], nn, inputCurrent, ii, Sequence[1, numOfDigits]) → ProductsResults
  93. Sequence((5 + ((2.5 * Min[Max[3 - anim, 0.15], 1]) * ii), -2.5), ii, -1, 1) → posInputDigits
  94. Translate(hGL, Vector[(Vector[Corner[1], Corner[4]] / 500 * 16)]) → hGL'
  95. expandSegment(EPL1, EPR1, (7 * pulsing), Corner[1], Corner[3], Corner[5]) → pulsingObject1
  96. expandSegment(EPL2, EPR2, (7 * pulsing), Corner[1], Corner[3], Corner[5]) → pulsingObject2
  97. expandSegment(EPL3, EPR3, (7 * pulsing), Corner[1], Corner[3], Corner[5]) → pulsingObject3
  98. expandSegment(EPL4, EPR4, (7 * pulsing), Corner[1], Corner[3], Corner[5]) → pulsingObject4
  99. Take(Zip[Midpoint[PP, QQ], PP, PosResults, QQ, Take[PosResults, 2]], 1, numOfDigits - 1) → posPlusSigns
  100. Zip(Text["+", PP, true, true, 0, 0], PP, posPlusSigns) → plusSigns
  101. Zip(Polygon[{PP, PP + (wid, 0), PP + (wid, dd), PP + (0, dd)}], PP, Corners, dd, digits) → polySol
  102. Zip(((dd * "\times") * 10^(nn)), dd, digits, nn, Reverse[Sequence[0, numOfDigits - 1]]) → tableSol
  103. Sequence(Zip[Text[10^(abs(numOfDigits - ii)), PP, true, true, 0, 0], PP, Element[PosPlacesValues, ii]], ii, 1, numOfDigits) → PlacesValues
  104. Sequence(Polygon[{Cor11 + (0, ii), Cor12 + (0, ii), Cor12 + (0, ii + 1), Cor11 + (0, ii + 1)}], ii, 0, 8) → l1
  105. Sequence(Polygon[{Cor21 + (0, ii), Cor22 + (0, ii), Cor22 + (0, ii + 1), Cor21 + (0, ii + 1)}], ii, 0, 8) → l2
  106. Sequence(Polygon[{Cor31 + (0, ii), Cor32 + (0, ii), Cor32 + (0, ii + 1), Cor31 + (0, ii + 1)}], ii, 0, 8) → l3
  107. Sequence(Polygon[{Cor41 + (0, ii), Cor42 + (0, ii), Cor42 + (0, ii + 1), Cor41 + (0, ii + 1)}], ii, 0, 8) → l4
  108. Translate(PosProducts, (0, -3.5)) → PosProducts'
  109. Zip(Text[tt, PP, true, true, 0, 0], tt, tableSol, PP, PosProducts') → l5
  110. Zip(Text["+", PP, true, true, 0, 0], PP, Zip[Midpoint[QQ, RR], QQ, PosProducts', RR, Take[PosProducts', 2]]) → l6
  111. Take(Zip[Text[(((("\textcolor{" * col) * "}{") * tt) * "}"), PP, true, true, 0, 0], tt, ProductsResults, PP, PosResults, col, colors], 1, Min[((anim - 1) * 22), numOfDigits]) → ResultsPositioned
  112. Zip(Text[(((("\textcolor{" * col) * "}{") * tt) * "}"), pp, true, true, 0, 0], tt, Products, pp, PosProducts, col, colors) → ProductsPos
  113. Dilate(PosResults', Min[Max[3 - anim, 0.1], 1], (5, -3)) → PosResults''
  114. Sum(Zip[(nn * 10^(ii)), nn, inputCurrent, ii, Reverse[Sequence[0, 3]]]) → numberCreated
  115. If(numberCreated ≤ 9, 4, If[numberCreated ≤ 99, 3, If[numberCreated ≤ 999, 2, 1]]) → start
  116. Take(Zip[Text[(((("\textcolor{" * col) * "}{") * tt) * "}"), PP, true, true, 0, 0], tt, inputCurrent, PP, PosResults'', col, colors], start) → inputDigits

AI Drawing Prompt Reference

Create a classroom-style visual with a central triangular figure and a structured stack of identical small rectangular blocks beneath it. Draw one triangle from three vertices, then use a second positioning step to shift the same triangle/related layout upward so it visually corresponds to the decomposed parts. Build the lower base by placing several unit-height rectangles in a row at fixed x-positions, then produce additional layers by repeatedly translating the row upward to form multiple stacked levels. Include an overall framing view boundary and a small layout anchor at a corner, and place an instruction text near the corner region to guide the place-value decomposition-to-standard-form idea.
The prompt above was compiled from the original drawing commands and is for reference only.