根据数字和位值写数

根据数字和位值写数
几何画板及绘图内容加载中,请稍等……
2023-08-05 01:45
这个范例演示如何根据给定的数字和位值来写出相应的数。涉及的核心数学概念包括位值、十进制数和指数表示法。作图要点使用了 GeoGebra 命令如 Sequence, Zip, Min, Take, Element, If, centerBox, Textfield, Corner, PointToPixels, onboardingTextOffset, IndexOf, Text, expandQuad, RemoveUndefined, Remove; 对象如 spaceRowV, spaceDecimal, row1Start, spaceEnd, row2Location, row3Location, row3Start, numCorrectChecked, numWholeDigits, numDecimalDigits, showsolution, animateControl, numDigits, animateRows, startHomeAnchors, startEnd, countQuestion, allRandomSeeds, numRandoms, randIndex, currentRandomSeeds, shift, shuffleIndex, possibleDigits, indexDigitList, indexDigit7, indexDigit4, indexDigit6, indexDigit5, indexDigit3, indexDigit2, indexDigit1, digit1, digit2, digit3, digit4, digit5, digit6, digit7, indexDigit8。适合小学4-5年级学生学习如何读写数字,特别是在使用小数和指数形式进行扩展表示时。

GeoGebra 命令及参数

  1. Sequence((0, (-spaceRowV)) + row1Start + (k * (spaceEnd, 0)), k, 0, 18) → row2Location
  2. Zip(A + (0, (-spaceRowV)), A, row2Location) → row3Location
  3. Min(4, ceil(numCorrectChecked / 2) + 1) → numWholeDigits
  4. Min(floor(numCorrectChecked / 2) + 2, 3) → numDecimalDigits
  5. Min(floor(animateControl), (2 * numDigits) + 1) → animateRows
  6. Sequence(Random[0, 99] / 100, A, 1, 200) → allRandomSeeds, {0.13, 0.25, 0.41, 0.7, 0.68, 0.32, 0.05, 0.02, 0.38, 0.49, 0.13, 0.34, 0.64, 0.62, 0.7, 0.31, 0.01, 0.88, 0.9, 0.65, 0.96, 0.12, 0.36, 0.09, 0.91, 0.03, 0.47, 0.22, 0.11, 0.24, 0.01, 0.16, 0.69, 0.99, 0, 0.45, 0.64, 0.27, 0.62, 0.25, 0.08, 0.45, 0.7, 0.36, 0.43, 0.17, 0.11, 0.99, 0.78, 0.35, 0.04, 0.81, 0.85, 0.26, 0.93, 0.89, 0.96, 0.77, 0.97, 0.89, 0.22, 0.35, 0.41, 0.81, 0.97, 0.81, 0.42, 0.5, 0.18, 0.67, 0.47, 0.35, 0.75, 0.07, 0.27, 0.73, 0.46, 0.93, 0.38, 0.15, 0.38, 0.16, 0.46, 0.88, 0.22, 0.92, 0.49, 0.73, 0.74, 0.91, 0.01, 0.44, 0.86, 0.1, 0.45, 0.88, 0.09, 0.39, 0.87, 0.28, 0.23, 0.55, 0.31, 0.22, 0.31, 0.9, 0.11, 0.56, 0.53, 0.52, 0, 0.37, 0.2, 0.16, 0.78, 0.22, 0.44, 0.84, 0.04, 0.05, 0.02, 0.28, 0.95, 0.8, 0.17, 0.88, 0.97, 0.35, 0.21, 0.69, 0.66, 0.56, 0.51, 0.68, 0.95, 0.83, 0.49, 0.78, 0.99, 0.98, 0.92, 0.44, 0.83, 0.99, 0.6, 0.14, 0.94, 0.6, 0.95, 0.2, 0.94, 0.97, 0.7, 0.76, 0.19, 0.29, 0.77, 0.71, 0.01, 0.68, 0.74, 0.84, 0.4, 0.09, 0.22, 0.38, 0.36, 0.99, 0.36, 0.75, 0.59, 0.66, 0.47, 0.62, 0.65, 0.4, 0.67, 0.87, 0.67, 0.38, 0.55, 0.89, 0.28, 0.01, 0.82, 0.2, 0.8, 0.42, 0, 0.65, 0.89, 0.86, 0.36, 0.67, 0.13, 0.56, 0.64, 0.49, 0.79, 0.81}
  7. Take(allRandomSeeds, randIndex, randIndex + numRandoms - 1) → currentRandomSeeds
  8. Sequence(((2 + floor((currentRandomSeeds(A) * 3))) / 10 * (-1)^(A)), A, 1, 7) → shift, {-0.4, 0.2, -0.3, 0.2, -0.4, 0.2, -0.3}
  9. Zip(1 + floor((currentRandomSeeds(K) * (Length[possibleDigits] - K + 1 - If[K ≟ 1 ∨ K ≟ numWholeDigits + numDecimalDigits, 1, 0]))), K, Sequence[9]) → indexDigitList
  10. Element(possibleDigits, indexDigit1) → digit1
  11. Element(Remove[possibleDigits, {digit1}], indexDigit2) → digit2
  12. Element(Remove[possibleDigits, {digit1, digit2}], indexDigit3) → digit3
  13. Element(Remove[possibleDigits, {digit1, digit2, digit3}], indexDigit4) → digit4
  14. Element(Remove[possibleDigits, {digit1, digit2, digit3, digit4}], indexDigit5) → digit5
  15. Element(Remove[possibleDigits, {digit1, digit2, digit3, digit4, digit5}], indexDigit6) → digit6
  16. Element(Remove[possibleDigits, {digit1, digit2, digit3, digit4, digit5, digit6}], indexDigit7) → digit7
  17. Element(Remove[possibleDigits, {digit1, digit2, digit3, digit4, digit5, digit6, digit7}], indexDigit8) → digit8
  18. Element(Remove[possibleDigits, {digit1, digit2, digit3, digit4, digit5, digit6, digit7, digit8}], indexDigit9) → digit9
  19. Element(Element[{{}, shuffleOptions2, shuffleOptions3, shuffleOptions4, shuffleOptions5, shuffleOptions6, shuffleOptions7}, numWholeDigits + numDecimalDigits], shuffleIndex) → shuffleChoice
  20. Zip(currentDigits(K), K, shuffleChoice) → shuffledDigits
  21. Zip((("\text{" * K) * "}"), K, shuffledDigits) → boxText
  22. If(countQuestion ≤ 1, startHomeAnchors, Zip[A + (0, B), A, Sequence[startEnd + (K * (spaceEnd, 0)), K, 0, 10], B, shift]) → allHomeAnchors
  23. If(¬showsolution, 0, If[animateRows + 1 > numDigits ∨ animateControl < 0.01, 0, Min[numDigits, animateRows + 1]]) → animateTopRowIndex
  24. Sequence(row1Start + (k * (spaceEnd, 0)), k, 0, 18) → row1Location
  25. Take(allUnitNum, 5 - numWholeDigits, 4 + numDecimalDigits) → currentUnitNum
  26. Zip(currentUnitNum(K), K, shuffleChoice) → currentUnitsNumShuffled
  27. Zip((K * L), K, shuffledDigits, L, currentUnitsNumShuffled) → row1Nums
  28. Min(floor(animateControl + 0.5), (2 * numDigits) + 1) → animateTopRow
  29. Take(allUnitList, 5 - numWholeDigits, 4 + numDecimalDigits) → currentUnitText
  30. Zip(currentUnitText(K), K, shuffleChoice) → currentUnitsShuffled
  31. Sequence(startBoxes + (If[k ≥ numWholeDigits, spaceDecimal, 0], 0) + (k * (spaceBoxes, 0)), k, 0, 10) → boxAnchors
  32. Sequence(allHomeAnchors(K) + ((1 / 17 * spaceEnd), 0), K, 1, numDecimalDigits + numWholeDigits) → allHomeLabelLoc
  33. Element(allHomeAnchors, numDigits) → onboardingPoint
  34. Zip(IndexOf[K, shuffleChoice], K, Sequence[1, numDigits]) → correctOrder
  35. centerBox(boxWidth, boxHeight, boxAnchors(7)) → frame7
  36. centerBox(boxWidth, boxHeight, boxAnchors(6)) → frame6
  37. centerBox(boxWidth, boxHeight, boxAnchors(5)) → frame5
  38. centerBox(boxWidth, boxHeight, boxAnchors(4)) → frame4
  39. centerBox(boxWidth, boxHeight, boxAnchors(3)) → frame3
  40. centerBox(boxWidth, boxHeight, boxAnchors(2)) → frame2
  41. centerBox(boxWidth, boxHeight, boxAnchors(1)) → frame1
  42. Zip(currentStudentDigitsHint(IndexOf[k, shuffleChoice]), k, Sequence[j, j, 1, numDigits]) → currentStudentDigitsRearranged
  43. Sequence(currentLocations(k), k, 1, Length[currentLocations]) → inputCurrent, {-1, -1, -1}
  44. Textfield(input1) → InputBox1
  45. Textfield(input2) → InputBox2
  46. Corner(5) → layoutAppSize
  47. PointToPixels(Corner[onboardingDisplayText, 2], Corner[1], Corner[3], Corner[5]) → layoutOnboarding
  48. onboardingTextOffset(Corner[onboardingText, 1], Corner[onboardingText, 3], onboardingCase, Corner[1], Corner[3], Corner[5]) → OnboardingTextOffset
  49. Sequence(k, k, 1, 10) → homeIndices
  50. Zip(allHomeAnchors(J), J, homeIndices) → homeLocations
  51. Take({P1, P2, P3, P4, P5, P6, P7, P8}, 1, numDragBoxes) → movingPoints
  52. Sequence((("SetFixed(box" * K) * ",false,enableInput)"), K, 1, Length[movingPoints]) → cmdFixBoxes
  53. centerBox(boxWidth, boxHeight, P1) → box1
  54. centerBox(boxWidth, boxHeight, P2) → box2
  55. centerBox(boxWidth, boxHeight, P3) → box3
  56. centerBox(boxWidth, boxHeight, P4) → box4
  57. centerBox(boxWidth, boxHeight, P5) → box5
  58. centerBox(boxWidth, boxHeight, P6) → box6
  59. Element(movingPoints, movingIndex) → PMove
  60. Take({frame1, frame2, frame3, frame4, frame5, frame6, frame7}, 1, numDigits) → frameList
  61. IndexOf(true, Zip[IsInRegion[PMove, K], K, frameList]) → locationPMove
  62. centerBox(boxWidth, boxHeight, PMove) → highlightBox
  63. centerBox(boxWidth, boxHeight, boxAnchors(locationPMove)) → highlightFrame
  64. Zip(Text[("" * K), J, true, true, 0, 0], K, boxText, J, movingPoints) → boxTextDisplay
  65. Text(("" * boxText(movingIndex)), If[Defined[PMove], PMove, (300, 300)], false, true, 0, 0) → textHightlight
  66. Sequence(HOME, k, 1, numDragBoxes) → allHome
  67. centerBox(boxWidth, boxHeight, P7) → box7
  68. centerBox(boxWidth, boxHeight, P8) → box8
  69. centerBox(boxWidth, boxHeight, boxAnchors(8)) → frame8
  70. Sequence((((("SetValue(P" * K) * ",homeLocations(") * K) * "))"), K, 1, numDragBoxes) → cmdSendHome
  71. Zip(centerBox[boxWidth, boxHeight, K], K, Take[allHomeAnchors, 1, numDragBoxes]) → homeBoxes
  72. Text("\text{.}", decLocation - (0, boxHeight / 11), true, true, 0, 0) → textDecimal
  73. Sequence(row1Start + (spaceRowH / 2, 0) + (k * (spaceRowH, 0)), k, 0, 18) → row1PlusLoc
  74. Zip((K * L), K, currentDigits, L, currentUnitNum) → row2Nums
  75. Take(Zip[Text[L, J, true, true, 1, 0], L, row2Nums, J, row2Location], 1, Max[1, animateRows - numDigits - 1]) → row2Labels
  76. If(animateControl > (numDigits * 2) + 1, animateControl - animateRows, 0) → animateFinalNum
  77. Sequence(If[k ≥ numWholeDigits, ((0.38 * spaceDecimal), 0), (0, 0)] + (k * (spaceDecimal, 0)) + row3Start, k, 0, numDecimalDigits + numWholeDigits) → finalPoints
  78. Zip(Vector[(animateFinalNum * Vector[K, J])], K, row3Location, J, finalPoints) → finalVectors
  79. Zip(If[IndexOf[K, currentDigits] ≟ numWholeDigits, (("" * K) * "."), (("" * K) * "")], K, currentDigits) → currentDigitRearrangedText
  80. Zip((((("\text{\textbf{" * K) * "} \times ") * J) * "}"), K, shuffledDigits, J, currentUnitsShuffled) → solutionList
  81. Sequence(SolutionStart + (K * (spaceEnd, 0)), K, 0, 120) → solutionPoints
  82. Zip(Text[K, J, true, true, 1, 0], K, solutionList, J, solutionPoints) → solutionText
  83. If(animateControl < numDigits, 0, Min[animateControl - animateRows, 1]) → animateMovingNums
  84. Zip(row1Location(IndexOf[K, shuffleChoice]), K, Sequence[1, numDigits]) → moveRow1Location
  85. Zip(Vector[K, J], K, moveRow1Location, J, row2Location) → moveVectors
  86. If(animateRows ≥ numDigits, animateRows - numDigits, 0) → indexRow2
  87. Take(Zip[Text[L, J, true, true, 1, 0], L, row1Nums, J, row1Location], 1, Min[numDigits, animateTopRow]) → row1Labels1
  88. expandQuad(Vertex[box1, 1], Vertex[box1, 2], Vertex[box1, 3], Vertex[box1, 4], (7 * pulsing), Corner[1], Corner[3], Corner[5]) → pulsingBox1
  89. expandQuad(Vertex[box2, 1], Vertex[box2, 2], Vertex[box2, 3], Vertex[box2, 4], (7 * pulsing), Corner[1], Corner[3], Corner[5]) → pulsingBox2
  90. expandQuad(Vertex[box3, 1], Vertex[box3, 2], Vertex[box3, 3], Vertex[box3, 4], (7 * pulsing), Corner[1], Corner[3], Corner[5]) → pulsingBox3
  91. expandQuad(Vertex[box4, 1], Vertex[box4, 2], Vertex[box4, 3], Vertex[box4, 4], (7 * pulsing), Corner[1], Corner[3], Corner[5]) → pulsingBox4
  92. expandQuad(Vertex[box5, 1], Vertex[box5, 2], Vertex[box5, 3], Vertex[box5, 4], (7 * pulsing), Corner[1], Corner[3], Corner[5]) → pulsingBox5
  93. expandQuad(Vertex[box6, 1], Vertex[box6, 2], Vertex[box6, 3], Vertex[box6, 4], (7 * pulsing), Corner[1], Corner[3], Corner[5]) → pulsingBox6
  94. expandQuad(Vertex[box7, 1], Vertex[box7, 2], Vertex[box7, 3], Vertex[box7, 4], (7 * pulsing), Corner[1], Corner[3], Corner[5]) → pulsingBox7
  95. expandQuad(Vertex[box8, 1], Vertex[box8, 2], Vertex[box8, 3], Vertex[box8, 4], (7 * pulsing), Corner[1], Corner[3], Corner[5]) → pulsingBox8
  96. Zip(Translate[K, Vector[J]], K, row3Location, Vector[J], finalVectors) → finalMovingPoints
  97. Zip(Text["\text{+}", J, true, true, 1, 0], J, Take[row2PlusLoc, 1, Length[row2Labels] - 1]) → row2Plus
  98. If(Defined[movePointLocation], Text[moveText, movePointLocation, true, true, 1, 0], Text[moveText, (0, 0), true, true, 0, 0]) → movingText
  99. Zip(currentDigits(IndexOf[K, shuffleChoice]), K, Sequence[1, numDigits]) → currentStudentDigits
  100. Zip(If[correctOrder(k) ≟ currentLocations(k), k], k, Sequence[numDigits]) → hintCorrectIndex
  101. RemoveUndefined(Zip[If[IndexOf[k, currentLocations] ≟ IndexOf[k, shuffleChoice], k], k, Sequence[numDigits]]) → indexCorrectBoxLocation
  102. Remove(Sequence[numDigits], indexCorrectBoxLocationChecked) → indexIncorrectBoxLocation
  103. Zip(allFrames(k), k, indexIncorrectBoxLocation) → boxesIncorrect
  104. Zip(allFrames(k), k, indexCorrectBoxLocationChecked) → boxesCorrect
  105. Zip(inputCurrent(k) ≠ inputSaved(k), k, Sequence[numDigits]) → indexChanged
  106. Zip((((("" * K) * "\times") * L) * ""), K, shuffledDigits, L, currentUnitsShuffled) → row1Text
  107. Take(Zip[Text[L, J, true, true, 1, 0], L, row1Text, J, row1Location], animateTopRow + 1, Min[numDigits, animateRows + 1]) → row1Labels2
  108. Zip(Text[("" * K), J, true, true, 0, 0], K, Take[boxText, animateTopRowIndex, animateTopRowIndex], J, Take[allHomeAnchors, animateTopRowIndex, animateTopRowIndex]) → boxTextHomeHighlight
  109. Zip(Text[("" * K), J, true, true, 0, 0], K, Join[{Take[boxText, 1, animateTopRowIndex - 1], Take[boxText, animateTopRowIndex + 1, numDigits]}], J, Join[{Take[allHomeAnchors, 1, animateTopRowIndex - 1], Take[allHomeAnchors, animateTopRowIndex + 1, numDigits]}]) → boxTextHome
  110. Zip(Text[("\times\hspace{7px}" * K), J, true, true, 1, 0], K, Join[{Take[currentUnitsShuffled, 1, animateTopRowIndex - 1], Take[currentUnitsShuffled, animateTopRowIndex + 1, numDigits]}], J, Join[{Take[allHomeLabelLoc, 1, animateTopRowIndex - 1], Take[allHomeLabelLoc, animateTopRowIndex + 1, numDigits]}]) → unitLabels
  111. Zip(Text[("\times\hspace{7px}" * K), J, true, true, 1, 0], K, Take[currentUnitsShuffled, animateTopRowIndex, animateTopRowIndex], J, Take[allHomeLabelLoc, animateTopRowIndex, animateTopRowIndex]) → unitLabelsHighlight
  112. Zip(Text[K, J, true, true, 1, 0], K, currentDigitRearrangedText, J, Take[finalMovingPoints, 1, numDigits]) → row3Labels

AI 绘图提示语参考

绘制一个用于练习按数位写数的教学互动图形。画面包含多行可拖动的数字卡片,每张卡片上标有数字,卡片按整数部分和小数部分分组排列,上方有输入框用于填写答案。数字卡片的位置会随机打乱,并带有轻微上下偏移。图形下方或侧边显示数位标签(如个位、十位、十分位等),并配有提示文字和动画控制按钮。整体布局清晰,适合小学生观察数位与数值的关系。
以上提示语为根据原始绘图命令整理而来,仅供参考。