Modeling Numbers in Expanded Form: Standard to Expanded Notation
Loading the math board and drawing, please wait…
This GeoGebra activity dynamically models the conversion of standard-form three- and four-digit natural numbers into expanded form, where each digit is multiplied by its place value (thousands, hundreds, tens, ones) and summed. The core mathematical concept is place value and expanded notation, helping learners grasp the actual quantity represented by each digit. Construction details include using RandomUniform to generate random numbers, Take to extract individual digits, Sequence and Sum to build the expanded expression, Segment and Polygon to draw place-value blocks or digit cards, and sliders/animation for interactive control. The tool visually links standard and expanded forms, making it ideal for grades 4-5 students to practice number sense, for classroom demonstrations, or for self-paced exploration. It is a verified resource with Spanish translation available.
GeoGebra Commands & Parameters
RandomUniform(0, 0.99, 200) → allRandomSeeds, {0.07954672871484644, 0.1878686659496377, 0.4333445561106654, 0.5853211786086292, 0.937639933438409, 0.5704580888666277, 0.46490130540654107, 0.09321356629716207, 0.16082100850027972, 0.6359808268373074, 0.4622994500399079, 0.8474260115250616, 0.9115012065787352, 0.36222889357641136, 0.04172809820882454, 0.9424002752517879, 0.8263508432207558, 0.4631390386840701, 0.582516069083396, 0.2448279498037438, 0.12663635580091756, 0.22029497950736357, 0.788451644970508, 0.26404640018184666, 0.6817452312389842, 0.9700675234696439, 0.6844703194018052, 0.3878347390230222, 0.07330331170570042, 0.6793319041647495, 0.8315396323462364, 0.8236531350737136, 0.02618542952327112, 0.9118323918516457, 0.17631066731092646, 0.49309388247691066, 0.4388042317126488, 0.35108237351940685, 0.11803352201906213, 0.24472465911225555, 0.028333681940612143, 0.07419420475662282, 0.21334924641885872, 0.9576037192259804, 0.046982733676241645, 0.9242265514065371, 0.6598733247270424, 0.6145342985248754, 0.6930809204094496, 0.9065173978808239, 0.39197635212963505, 0.6705998573319918, 0.6355719181819257, 0.5470398319993803, 0.24684494148018593, 0.3286839377053541, 0.0825322632526421, 0.558072910498426, 0.10577140379228345, 0.5195279357922572, 0.7135418581852024, 0.23842403504362225, 0.34467328686011794, 0.05941772873824648, 0.4721286519582947, 0.5620694195254066, 0.15908418131769342, 0.053813544856268235, 0.6480949433018621, 0.7003979134656738, 0.6322848850516559, 0.530151152132626, 0.6403029269876884, 0.2792495718693013, 0.4808594534226643, 0.257640462642447, 0.7784574107369217, 0.8126329551688971, 0.3997629986010915, 0.7161760426975208, 0.2675689715048724, 0.8503869479363979, 0.9189786789302341, 0.880447809079233, 0.3411156345622512, 0.42712044976774083, 0.5460190764393441, 0.3890027440089585, 0.09844221629108237, 0.12451966988175157, 0.4628919794224882, 0.8213575922595842, 0.28864554221081845, 0.4285557356891851, 0.16270385407955085, 0.27930044058937736, 0.5770901420946256, 0.8572566603883349, 0.3898141310596197, 0.41124273928394206, 0.4617835602478176, 0.2035254139895884, 0.748381398330245, 0.3108961452743611, 0.9251108145167776, 0.27099247293678386, 0.2472576779724683, 0.7236476103820503, 0.6318877312013773, 0.8290837614875551, 0.6544897466049036, 0.5657939293409178, 0.8773384491119943, 0.5963666477195299, 0.5821768486576366, 0.2432709187389558, 0.3284370125811513, 0.7588040484240912, 0.23211145529724292, 0.9776747327268392, 0.6090739016575647, 0.27180352153685367, 0.8344956064407287, 0.35822276714866413, 0.5337177612951521, 0.7318907498401991, 0.7760774786447221, 0.948838024744144, 0.5756389411255878, 0.9654683204353809, 0.8602933310349411, 0.6997662476220904, 0.6743453187041555, 0.2284386287979471, 0.4104279507122511, 0.3330462795824972, 0.26265250273146257, 0.49147573634131886, 0.9374214106280261, 0.2507548208757654, 0.42676948561787226, 0.7114246290026408, 0.2067531370209947, 0.5042328510306566, 0.04292734340336534, 0.3496866025427905, 0.30382445543102765, 0.5914762094948541, 0.2614121786520255, 0.45351848856745813, 0.4144381063260421, 0.5185347491652972, 0.6833858059960617, 0.43592884714533636, 0.4663393014806885, 0.9691139848165743, 0.8375856663185666, 0.6442979165892025, 0.5893344997089566, 0.45461066002479433, 0.24289276791801204, 0.24697859751755982, 0.9552454492442527, 0.8645375149428975, 0.618839949182938, 0.1509545761999046, 0.8248829106086012, 0.5047056298804969, 0.2294044288625968, 0.4121372534233236, 0.1973401869553882, 0.2376313727917984, 0.2358876308280886, 0.11307639859170712, 0.5472092160758812, 0.47642295427708853, 0.46233144850082913, 0.6107407190286841, 0.5678120211017278, 0.7498752035192998, 0.5917547333180302, 0.19959250856013885, 0.49321838025187187, 0.652664597565596, 0.9435145208686262, 0.08243644183025658, 0.09868562711237897, 0.6203847445374666, 0.7613059587982116, 0.2834664262086348, 0.86820907773105, 0.25470077898961685, 0.577711360998716, 0.2545643232999231, 0.09911214181992106, 0.7691251966146154, 0.004792622267180083, 0.7472238179833313, 0.8070327241937706, 0.8908297486292573}Take(allRandomSeeds, randIndex, randIndex + numRandoms - 1) → currentRandomSeedsIf(countQuestion ≟ 0, 3, If[currentRandomSeeds(7) ≥ 0.5, 3, 4]) → numOfDigitsAppend(Max[floor((currentRandomSeeds(1) * 10)), 1], Take[Zip[floor((nn * 10)), nn, currentRandomSeeds], 2, numOfDigits]) → digitsCorner(5) → layoutAppSizePolygon(inputPoint, TriA, TriB) → tri, b, inputpoint, aPolygon({(-5, -6.5), (-5, 6.5), (6, 6.5), (6, -6.5)}) → viewboxonboardingTextOffset(Corner[onboardingText, 1], Corner[onboardingText, 3], onboardingCase, Corner[1], Corner[3], Corner[5]) → OnboardingTextOffsetPolygon({(A1, 0), (A1 + 1, 0), (A1 + 1, 1), (A1, 1)}) → B1Polygon({(A2, 0), (A2 + 1, 0), (A2 + 1, 1), (A2, 1)}) → B2Polygon({(A3, 0), (A3 + 1, 0), (A3 + 1, 1), (A3, 1)}) → B3Polygon({(A4, 0), (A4 + 1, 0), (A4 + 1, 1), (A4, 1)}) → B4Polygon({(A5, 0), (A5 + 1, 0), (A5 + 1, 1), (A5, 1)}) → B5Polygon({(A6, 0), (A6 + 1, 0), (A6 + 1, 1), (A6, 1)}) → B6Polygon({(A7, 0), (A7 + 1, 0), (A7 + 1, 1), (A7, 1)}) → B7Translate(B1, Vector[(0, 1)]) → C1Translate(C1, Vector[(0, 1)]) → D1Translate(D1, Vector[(0, 1)]) → E1Translate(E1, Vector[(0, 1)]) → F1Translate(F1, Vector[(0, 1)]) → G1Translate(G1, Vector[(0, 1)]) → H1Translate(H1, Vector[(0, 1)]) → I1Translate(I1, Vector[(0, 1)]) → J1Translate(B2, Vector[(0, 1)]) → C2Translate(C2, Vector[(0, 1)]) → D2Translate(D2, Vector[(0, 1)]) → E2Translate(E2, Vector[(0, 1)]) → F2Translate(F2, Vector[(0, 1)]) → G2Translate(G2, Vector[(0, 1)]) → H2Translate(H2, Vector[(0, 1)]) → I2Translate(I2, Vector[(0, 1)]) → J2Translate(B3, Vector[(0, 1)]) → C3Translate(C3, Vector[(0, 1)]) → D3Translate(D3, Vector[(0, 1)]) → E3Translate(E3, Vector[(0, 1)]) → F3Translate(F3, Vector[(0, 1)]) → G3Translate(G3, Vector[(0, 1)]) → H3Translate(H3, Vector[(0, 1)]) → I3Translate(I3, Vector[(0, 1)]) → J3Translate(B4, Vector[(0, 1)]) → C4Translate(C4, Vector[(0, 1)]) → D4Translate(D4, Vector[(0, 1)]) → E4Translate(E4, Vector[(0, 1)]) → F4Translate(F4, Vector[(0, 1)]) → G4Translate(G4, Vector[(0, 1)]) → H4Translate(H4, Vector[(0, 1)]) → I4Translate(I4, Vector[(0, 1)]) → J4Translate(B5, Vector[(0, 1)]) → C5Translate(C5, Vector[(0, 1)]) → D5Translate(D5, Vector[(0, 1)]) → E5Translate(E5, Vector[(0, 1)]) → F5Translate(F5, Vector[(0, 1)]) → G5Translate(G5, Vector[(0, 1)]) → H5Translate(H5, Vector[(0, 1)]) → I5Translate(I5, Vector[(0, 1)]) → J5Translate(B6, Vector[(0, 1)]) → C6Translate(C6, Vector[(0, 1)]) → D6Translate(D6, Vector[(0, 1)]) → E6Translate(E6, Vector[(0, 1)]) → F6Translate(F6, Vector[(0, 1)]) → G6Translate(G6, Vector[(0, 1)]) → H6Translate(H6, Vector[(0, 1)]) → I6Translate(I6, Vector[(0, 1)]) → J6Translate(B7, Vector[(0, 1)]) → C7Translate(C7, Vector[(0, 1)]) → D7Translate(D7, Vector[(0, 1)]) → E7Translate(E7, Vector[(0, 1)]) → F7Translate(F7, Vector[(0, 1)]) → G7Translate(G7, Vector[(0, 1)]) → H7Translate(H7, Vector[(0, 1)]) → I7Translate(I7, Vector[(0, 1)]) → J7Sequence(Sequence[(x(Cor11) + wid / 2 + (ii * (Hspace + wid)), jj), jj, 0.5, 8.5, 1], ii, 0, numOfDigits - 1) → PosPlacesValues, {{(2.5, 0.5), (2.5, 1.5), (2.5, 2.5), (2.5, 3.5), (2.5, 4.5), (2.5, 5.5), (2.5, 6.5), (2.5, 7.5), (2.5, 8.5)}, {(5, 0.5), (5, 1.5), (5, 2.5), (5, 3.5), (5, 4.5), (5, 5.5), (5, 6.5), (5, 7.5), (5, 8.5)}, {(7.5, 0.5), (7.5, 1.5), (7.5, 2.5), (7.5, 3.5), (7.5, 4.5), (7.5, 5.5), (7.5, 6.5), (7.5, 7.5), (7.5, 8.5)}}Sum(Sequence[(digits(nn) * 10^(numOfDigits - nn)), nn, 1, numOfDigits]) → targetNumberSegment(EPL1, EPR1) → Segment1Segment(EPL2, EPR2) → Segment2Segment(EPL3, EPR3) → Segment3Segment(EPL4, EPR4) → Segment4Segment(EPL5, EPR5) → Segment5Segment(EPL6, EPR6) → Segment6Segment(EPL7, EPR7) → Segment7Polygon(Cor11, Cor12, EPR1, EPL1) → q1, f, g, h, iPolygon(Cor21, Cor22, EPR2, EPL2) → q2, j, k, l, mPolygon(Cor31, Cor32, EPR3, EPL3) → q3, n, p, q, rPolygon(Cor41, Cor42, EPR4, EPL4) → q4, s, t, c, dPolygon(Cor51, Cor52, EPR5, EPL5) → q5, e, f_1, g_1, h_1Polygon(Cor61, Cor62, EPR6, EPL6) → q6, i_1, j_1, k_1, l_1Polygon(Cor71, Cor72, EPR7, EPL7) → q7, m_1, n_1, p_1, q_1Zip(Text[((nn * "\times") * 10^(numOfDigits - ii))], nn, inputCurrent, ii, Sequence[1, numOfDigits]) → ProductsSequence((x(Cor11) + wid / 2 + (ii * (wid + Hspace)), -0.8), ii, 0, numOfDigits - 1) → PosProductsZip(Text[(nn * 10^(numOfDigits - ii))], nn, inputCurrent, ii, Sequence[1, numOfDigits]) → ProductsResultsTranslate(PosProducts, (0, -0.8)) → PosResultsSequence((5 + ((2.5 * Min[Max[3 - anim, 0.15], 1]) * ii), -2.5), ii, -1, 1) → posInputDigitsTranslate(hGL, Vector[(Vector[Corner[1], Corner[4]] / 500 * 16)]) → hGL'expandSegment(EPL1, EPR1, (7 * pulsing), Corner[1], Corner[3], Corner[5]) → pulsingObject1expandSegment(EPL2, EPR2, (7 * pulsing), Corner[1], Corner[3], Corner[5]) → pulsingObject2expandSegment(EPL3, EPR3, (7 * pulsing), Corner[1], Corner[3], Corner[5]) → pulsingObject3expandSegment(EPL4, EPR4, (7 * pulsing), Corner[1], Corner[3], Corner[5]) → pulsingObject4Take(Zip[Midpoint[PP, QQ], PP, PosResults, QQ, Take[PosResults, 2]], 1, numOfDigits - 1) → posPlusSignsZip(Text["+", PP, true, true, 0, 0], PP, posPlusSigns) → plusSignsZip(Polygon[{PP, PP + (wid, 0), PP + (wid, dd), PP + (0, dd)}], PP, Corners, dd, digits) → polySolZip(((dd * "\times") * 10^(nn)), dd, digits, nn, Reverse[Sequence[0, numOfDigits - 1]]) → tableSolSequence(Zip[Text[10^(abs(numOfDigits - ii)), PP, true, true, 0, 0], PP, Element[PosPlacesValues, ii]], ii, 1, numOfDigits) → PlacesValuesSequence(Polygon[{Cor11 + (0, ii), Cor12 + (0, ii), Cor12 + (0, ii + 1), Cor11 + (0, ii + 1)}], ii, 0, 8) → l1Sequence(Polygon[{Cor21 + (0, ii), Cor22 + (0, ii), Cor22 + (0, ii + 1), Cor21 + (0, ii + 1)}], ii, 0, 8) → l2Sequence(Polygon[{Cor31 + (0, ii), Cor32 + (0, ii), Cor32 + (0, ii + 1), Cor31 + (0, ii + 1)}], ii, 0, 8) → l3Sequence(Polygon[{Cor41 + (0, ii), Cor42 + (0, ii), Cor42 + (0, ii + 1), Cor41 + (0, ii + 1)}], ii, 0, 8) → l4Translate(PosResults, Vector[(0, 1.6 - 2.5)]) → PosResults'Dilate(PosResults', Min[Max[3 - anim, 0.1], 1], (5, -2.5)) → PosResults''Zip(Text[(((("\textcolor{" * col) * "}{") * tt) * "}"), PP, true, true, 0, 0], tt, inputCurrent, PP, PosResults'', col, colors) → inputDigitsTranslate(PosProducts, (0, -3.5)) → PosProducts'Zip(Text[tt, PP, true, true, 0, 0], tt, tableSol, PP, PosProducts') → l5Zip(Text["+", PP, true, true, 0, 0], PP, Zip[Midpoint[QQ, RR], QQ, PosProducts', RR, Take[PosProducts', 2]]) → l6Take(Zip[Text[(((("\textcolor{" * col) * "}{") * tt) * "}"), pp, true, true, 0, 0], tt, Products, pp, PosProducts, col, colors], 1, Min[(anim * 22), numOfDigits]) → ProductsPosTake(Zip[Text[(((("\textcolor{" * col) * "}{") * tt) * "}"), PP, true, true, 0, 0], tt, ProductsResults, PP, PosResults, col, colors], 1, Min[((anim - 1) * 22), numOfDigits]) → ResultsPositioned
AI Drawing Prompt Reference
Create a dynamic model showing how three or four-digit natural numbers convert to expanded form. Randomly generate numbers, extract each digit, and represent each place value (thousands, hundreds, tens, ones) with rectangles stacked vertically. The height of each rectangle corresponds to the digit's value, and connecting lines illustrate the relationship between standard and expanded forms. The background is light gray with a deep gray-bordered rectangle as the canvas.
The prompt above was compiled from the original drawing commands and is for reference only.