小于10000的数比较与排序练习

小于10000的数比较与排序练习
几何画板及绘图内容加载中,请稍等……
2023-09-19 07:16
该范例通过“逐位比较”的方式,让学生把一组各位数均小于10000的数字正确排序,并观察比较逻辑如何决定大小关系。核心数学概念包括自然数位值表示、位值比较(从最高位到最低位判断)、数的大小关系(<, >)与有序排列/排序。作图与实现要点:从构造摘要可见,它先用 RandomUniform 与 Sequence 生成随机种子与候选数字,再用中心框/布局相关对象(centerBox、boxWidth、boxAnchors、boxHeight、frame1~frame5、onboardingTextOffset)组织界面;通过 Element、IndexOf、Sort、Zip 等将数字选取、索引与排序过程结构化;随后用 If、Take、Unique、RemoveUndefined 处理可能的无效项与不同位置的比较情形;用 Join 与绘制相关对象(Polygon、Corner)及移动动画参数(movingIndex、PMove、currentLocations)在交互中呈现排序变化,最终形成 allNumbers 与可能的有序序列对照。适合4–5年级用于数感与比较排序能力训练,也可作为进阶练习或课堂复习活动。

GeoGebra 命令及参数

  1. RandomUniform(0, 0.99, 200) → allRandomSeeds, {0.7138753912393578, 0.8004224962896724, 0.08717411803160012, 0.3934317747669698, 0.21057834960550073, 0.7356046703769683, 0.3573589466461531, 0.8877190150451826, 0.13570916386431345, 0.6651450308162201, 0.08402620917079458, 0.3463028780573658, 0.7371111350143716, 0.806648693842285, 0.5357762481250332, 0.3262261179890885, 0.023927845309359964, 0.27710590169193633, 0.38760169589027044, 0.007154266962984593, 0.2454774436328166, 0.353629298779344, 0.5013684032389668, 0.5034295410529208, 0.8503196002564415, 0.5774556512576402, 0.43596924677037846, 0.21475695028929165, 0.08042070921344854, 0.7849042701480214, 0.787188567259033, 0.18555776196494905, 0.05394622289585016, 0.26940444601913843, 0.6464065192186728, 0.8626643429538854, 0.9872691704484972, 0.5550615135834314, 0.969801996637565, 0.42160585976502507, 0.8822824880588419, 0.4045261358515978, 0.3956793622519773, 0.9732488525367919, 0.43903788705462576, 0.8821639116343475, 0.026949069056631452, 0.38500723793523006, 0.6261072423105988, 0.6976920541418127, 0.09863334295095122, 0.08422534381479854, 0.9618728071708943, 0.2255576505994622, 0.006547917105532342, 0.005663424287187703, 0.7292011910963816, 0.011376727755304116, 0.9230274245207024, 0.580279207982417, 0.783640759723744, 0.9787358862733678, 0.7287164094759055, 0.238699550759381, 0.32140570737933016, 0.8275778464290181, 0.8760393915446406, 0.9499159113254314, 0.7479707538201702, 0.599250402466117, 0.21999337952472464, 0.9738122790933263, 0.3110975957345329, 0.9430923728096436, 0.10537250368960623, 0.8851492263483127, 0.3035510267807142, 0.035163019967126764, 0.976438503170413, 0.7965776649008203, 0.8706344840133352, 0.42139138614878613, 0.7853936446722718, 0.7791455438227641, 0.17598633036839476, 0.18502907789391543, 0.619790674339834, 0.09058616127952393, 0.14582541511484862, 0.6018353712252966, 0.07623201255643781, 0.2044411368353131, 0.8670205680480132, 0.9359053868149457, 0.20836461185474914, 0.30677153900984705, 0.28798149538049417, 0.9244726561471148, 0.6312683157721565, 0.20184987119018818, 0.23342905892578542, 0.741374422381453, 0.351865273060732, 0.39380153670460355, 0.42460104675527366, 0.5661626884747002, 0.015944398679203567, 0.5976782848779181, 0.5753852535368175, 0.8890774317722988, 0.07679974170246244, 0.5408968777989802, 0.9822441708641264, 0.25126677218158827, 0.8383224275693789, 0.6443655235898182, 0.2716069073617808, 0.04474819955850506, 0.766666438263152, 0.861946165333223, 0.46265137130108236, 0.8376480360309692, 0.4793238781013758, 0.637164944347679, 0.6860857184960061, 0.5472400051460881, 0.9186011358701568, 0.7172836970996967, 0.6706607660997561, 0.47622327801204745, 0.738077654216715, 0.42698488160489584, 0.9087059000450591, 0.6565376290449688, 0.3756597111213528, 0.6569974244398068, 0.00997886860625827, 0.3098084342868597, 0.7353072328549706, 0.8970057198117217, 0.6595556272853457, 0.6642469327465044, 0.2714169727889049, 0.3071343259207547, 0.25035918105615146, 0.21450022140233357, 0.025186304662206005, 0.8581902430995719, 0.2542367785312881, 0.5335540686114367, 0.021061741165477328, 0.6176702200235983, 0.937243851991295, 0.9843357370986386, 0.5035929599084132, 0.8763047822568748, 0.6349769466279918, 0.6431463208494929, 0.8606672923511957, 0.3286113397051128, 0.41242264919428046, 0.8974728266312342, 0.898191572636662, 0.05056796000167893, 0.7798489556090733, 0.6270869806679473, 0.9338173623746321, 0.5180947741017445, 0.8817639903271405, 0.5896326090056954, 0.6432726166616209, 0.7215446506124847, 0.9399023683877328, 0.4601365295851502, 0.8322670393522948, 0.6538550338534816, 0.36357295417484065, 0.7080470364273987, 0.48977982460277203, 0.6934020065550304, 0.6015115487979341, 0.26551199553286986, 0.13481858368232227, 0.5069238821963054, 0.1386308155262164, 0.8266533018014134, 0.3184542523471796, 0.32314479198668855, 0.1187451400335893, 0.5195769253931748, 0.3860913790835892, 0.7539306071642276, 0.14047057665230267, 0.43077745863551214, 0.8115252723413383, 0.5969474584861123, 0.3580616629480323, 0.6154540967563212, 0.5043661798691998, 0.2918700024428461}
  2. Sequence(Anchor + (((A * 1.5) * boxWidth), 0), A, 0, 4) → boxAnchors
  3. centerBox((1.1 * boxWidth), (1.1 * boxHeight), boxAnchors(5)) → frame5
  4. centerBox((1.1 * boxWidth), (1.1 * boxHeight), boxAnchors(2)) → frame2
  5. centerBox((1.1 * boxWidth), (1.1 * boxHeight), boxAnchors(1)) → frame1
  6. centerBox((1.1 * boxWidth), (1.1 * boxHeight), boxAnchors(3)) → frame3
  7. centerBox((1.1 * boxWidth), (1.1 * boxHeight), boxAnchors(4)) → frame4
  8. Element(movingPoints, movingIndex) → PMove
  9. Take(allRandomSeeds, randIndex, randIndex + numRandoms - 1) → currentRandomSeeds
  10. Element(specialOptions, 1 + floor((currentRandomSeeds(6) * Length[specialOptions]))) → specialCurrent
  11. Unique(Zip[round((A * 10000)), A, Take[currentRandomSeeds, 1, 15]]) → numberOptions
  12. RemoveUndefined(Zip[If[A > 100 ∧ A ≠ specialOptions(1) ∧ A ≠ specialOptions(2), A], A, numberOptions]) → possibleNumbers
  13. Element(possibleNumbers, 1 + floor((currentRandomSeeds(7) * Length[possibleNumbers]))) → numA
  14. Element(Remove[possibleNumbers, {numA}], 1 + floor((currentRandomSeeds(8) * (Length[possibleNumbers] - 1)))) → numB
  15. Element(Remove[possibleNumbers, {numA, numB}], 1 + floor((currentRandomSeeds(9) * (Length[possibleNumbers] - 2)))) → numC
  16. Join({{numA, numB, numC}, specialCurrent}) → allNumbers
  17. Element(Remove[{1, 2, 3, 4, 5}, {index1}], 1 + floor((currentRandomSeeds(2) * 4))) → index2
  18. Element(Remove[{1, 2, 3, 4, 5}, {index1, index2}], 1 + floor((currentRandomSeeds(2) * 3))) → index3
  19. Element(Remove[{1, 2, 3, 4, 5}, {index1, index2, index3}], 1 + floor((currentRandomSeeds(2) * 2))) → index4
  20. Element(Remove[{1, 2, 3, 4, 5}, {index1, index2, index3, index4}], 1) → index5
  21. Sort({num1, num2, num3, num4, num5}) → sortedOrder
  22. Zip(IndexOf[A, sortedOrder], A, {num1, num2, num3, num4, num5}) → expectedIncreasingOrder
  23. Zip(IndexOf[A, Reverse[sortedOrder]], A, {num1, num2, num3, num4, num5}) → expectedDecreasingOrder
  24. If(isIncreasing, expectedIncreasingOrder, expectedDecreasingOrder) → expectedOrder
  25. Sequence(IndexOf[A, currentLocations] ≟ IndexOf[A, expectedOrder], A, 1, 5) → correctPosition
  26. Sort({num1, num2, num3, num4, num5}) → sortedNumbers
  27. Polygon(Zip[PixelsToPoint[Corner[1], Corner[3], Corner[5], A], A, {(pixelsLeft, pixelsTop), (pixelsLeft, y(Corner[5]) - pixelsBottom), Corner[5] - (pixelsRight, pixelsBottom), (x(Corner[5]) - pixelsRight, pixelsTop)}]) → borderBox
  28. Corner(5) → layoutAppSize
  29. Sequence(HomeAnchor + (((A * 1.2) * boxWidth), 0), A, 0, 4) → homePoints
  30. centerBox(boxWidth, boxHeight, P1) → box1
  31. centerBox(boxWidth, boxHeight, P2) → box2
  32. centerBox(boxWidth, boxHeight, P3) → box3
  33. centerBox(boxWidth, boxHeight, P4) → box4
  34. centerBox(boxWidth, boxHeight, PMove) → highlightBox
  35. Zip(HOME, A, movingPoints) → allHome
  36. IndexOf(true, Zip[IsInRegion[PMove, A] ∧ (¬B), A, {frame1, frame2, frame3, frame4, frame5}, B, savedPositions]) → locationPMove
  37. onboardingTextOffset(Corner[onboardingText, 1], Corner[onboardingText, 3], onboardingCase, Corner[1], Corner[3], Corner[5]) → OnboardingTextOffset
  38. centerBox(boxWidth, boxHeight, boxAnchors(locationPMove)) → highlightFrame
  39. Zip(Text[("\vphantom{\dfrac{1}{2}}" * A), B, true, true, 0, 0], A, displayText, B, movingPoints) → boxText
  40. If(Defined[movingIndex], Text[(("\text{" * displayText(movingIndex)) * "}"), PMove, true, true, 0, 0], "") → textHighlight
  41. centerBox(boxWidth, boxHeight, P5) → box5
  42. Sequence((((("SetValue(P" * A) * ",homeLocations(") * A) * "))"), A, 1, numBoxes) → cmdSendHome
  43. Sequence((("SetFixed(box" * A) * ",false,enableInput)"), A, 1, numBoxes) → cmdFixBoxes
  44. expandQuad(Vertex[box5, 1], Vertex[box5, 2], Vertex[box5, 3], Vertex[box5, 4], (7 * pulsing), Corner[1], Corner[3], Corner[5]) → pulsingBox
  45. Zip((((((("SetFixed(box" * C) * ",") * If[A ≟ B, "true", "false"]) * ",") * If[A ≟ B, "false", "true"]) * ")"), A, currentLocations, B, expectedOrder, C, {1, 2, 3, 4, 5}) → cmdFixCorrect
  46. Zip(Text[If[A, (("\textcolor{" * colorTealSuccess) * "}{✓}"), If[validate, (("\textcolor{" * colorRedError) * "}{✕} "), ""]], B + (0, 2.5), true, true, 0, 0], A, savedPositions, B, boxAnchors) → individualFeedback

AI 绘图提示语参考

在画布中创建一个用于比较与排序的布局:用一排五个等尺寸卡槽放置候选数字框(可随交互高亮其中一个框),并在底部形成外框边界以呈现“排序区域”。从若干随机自然数中生成五个小于一万的候选数,把它们按大小关系自动计算出从小到大的期望顺序与相反方向顺序;再为每个卡槽显示对应的数字文本。引导用户将当前高亮的数字拖入对应位置:当数字放置在与期望顺序一致的位置时,在每个位置上方给出正确/错误的反馈标记(如勾或叉)。同时预留一个随选中项变化的高亮框与提示文字区域。
以上提示语为根据原始绘图命令整理而来,仅供参考。