斜率排序 - 水平 2

斜率排序 - 水平 2
几何画板及绘图内容加载中,请稍等……
2026-05-13 20:23
本范例演示如何根据斜率对线性函数进行排序。核心数学概念包括线性函数的性质。使用了 GeoGebra 的 Shuffle, If, Sequence, Textfield, Element, Join, Segment, Point, RemoveUndefined, Reverse, Text 等命令。适合 7-8 年级学生练习描述线性函数的性质。

GeoGebra 命令及参数

  1. Shuffle(1…numberOfBoxes) → Order1, {6, 3, 4, 1, 2, 5}
  2. Shuffle(1…numberOfBoxes) → Order2, {3, 5, 1, 6, 2, 4}
  3. Shuffle(1…numberOfBoxes) → Order3, {3, 5, 4, 1, 6, 2}
  4. If(Order1 ≠ (1…numberOfBoxes), Order1, Order2 ≠ (1…numberOfBoxes), Order2, Order3) → OrderStart
  5. Sequence(BoxOrderNext(k) ≟ OrderStart(k), k, 1, numberOfBoxes) → CorrectList
  6. Shuffle(1…numberOfQuestions) → randomQuestions, {1}
  7. Textfield(input) → inputBox
  8. Element(randomQuestions, Mod[questionCount - 1, Length[randomQuestions]] + 1) → randomQuestion
  9. 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
  10. 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
  11. Sequence(Sequence[Corner[4] + (RasterPixMat * ((k * RasterStepXY), (m * RasterStepXY))), k, 0, RasterMaxX / RasterStepXY], m, 0, RasterMaxY / RasterStepXY) → RasterPunkte
  12. Sequence(PosStart + (k * (0, (-disYBox) - heightBox)), k, 0, numberOfBoxes - 1) → PosList
  13. Segment(PosList(1), PosList(numberOfBoxes)) → segPBox
  14. Point(segPBox) → PB1
  15. Point(segPBox) → PB2
  16. Point(segPBox) → PB3
  17. Point(segPBox) → PB4
  18. Point(segPBox) → PB5
  19. Point(segPBox) → PB6
  20. Point(segPBox) → PB7
  21. Point(segPBox) → PB8
  22. Point(segPBox) → PB9
  23. Point(segPBox) → PB10
  24. RemoveUndefined({PB1, PB2, If[numberOfBoxes > 2, PB3], If[numberOfBoxes > 3, PB4], If[numberOfBoxes > 4, PB5], If[numberOfBoxes > 5, PB6], If[numberOfBoxes > 6, PB7], If[numberOfBoxes > 7, PB8], If[numberOfBoxes > 8, PB9], If[numberOfBoxes > 9, PB10]}) → PBoxList
  25. Reverse(Sort[PBoxList, Zip[y(A), A, PBoxList]]) → PBoxOrder
  26. Join({Sequence[IndexOf[PBoxList(k), PBoxOrder], k, 1, numberOfBoxes], (numberOfBoxes + 1)…10}) → BoxOrder
  27. Sequence(BoxOrder(k) ≟ OrderStart(k), k, 1, numberOfBoxes) → correctList
  28. RemoveUndefined({txtO1, txtO2, If[numberOfBoxes > 2, txtO3], If[numberOfBoxes > 3, txtO4], If[numberOfBoxes > 4, txtO5], If[numberOfBoxes > 5, txtO6], If[numberOfBoxes > 6, txtO7], If[numberOfBoxes > 7, txtO8], If[numberOfBoxes > 8, txtO9], If[numberOfBoxes > 9, txtO10]}) → TxtOList
  29. Text(TxtOList(OrderStart(1)), PBoxList(1) + (0, 0.05), false, true, 0, 0) → txtBox1
  30. Text(TxtOList(OrderStart(2)), PBoxList(2) + (0, 0.05), false, true, 0, 0) → txtBox2
  31. Text(TxtOList(OrderStart(3)), PBoxList(3) + (0, 0.05), false, true, 0, 0) → txtBox3
  32. Text(TxtOList(OrderStart(4)), PBoxList(4) + (0, 0.05), false, true, 0, 0) → txtBox4
  33. Text(TxtOList(OrderStart(5)), PBoxList(5) + (0, 0.05), false, true, 0, 0) → txtBox5
  34. Text(TxtOList(OrderStart(6)), PBoxList(6) + (0, 0.05), false, true, 0, 0) → txtBox6
  35. Text(TxtOList(OrderStart(7)), PBoxList(7) + (0, 0.05), false, true, 0, 0) → txtBox7
  36. Text(TxtOList(OrderStart(8)), PBoxList(8) + (0, 0.05), false, true, 0, 0) → txtBox8
  37. Text(TxtOList(OrderStart(9)), PBoxList(9) + (0, 0.05), false, true, 0, 0) → txtBox9
  38. Text(TxtOList(OrderStart(10)), PBoxList(10) + (0, 0.05), false, true, 0, 0) → txtBox10
  39. Sequence(Midpoint[PosList(k), PosList(k + 1)], k, 1, numberOfBoxes - 1) → MPList
  40. Sequence(IndexOf[k, BoxOrder], k, 1, numberOfBoxes) → OrderBoxes
  41. RemoveUndefined(Join[{{Segment[PosList(1), MPList(1)]}, Sequence[Segment[MPList(k), MPList(k + 1)], k, 1, numberOfBoxes - 1], {Segment[MPList(numberOfBoxes - 1), PosList(numberOfBoxes)]}}]) → RegionList
  42. Sequence(Sequence[PBoxList(k) ∈ RegionList(m), m, 1, numberOfBoxes], k, 1, numberOfBoxes) → RegionPosition
  43. Join({Sequence[true, k, 1, numberOfBoxes], Sequence[false, k, numberOfBoxes + 1, 10]}) → showBoxes
  44. Join({Sequence[IndexOf[1, RegionPosition(k)], k, 1, numberOfBoxes], (numberOfBoxes + 1)…10}) → ActualPosition
  45. RemoveUndefined(PBoxList + (((-widthBox)) / 2 - disXBox - radiusNumber, 0)) → PosNumberList
  46. Sequence(Circle[PosNumberList(k), radiusNumber], k, 1, Length[PosNumberList]) → CircleList
  47. RemoveUndefined(PBoxList + (widthBox / 2 + disXBox + radiusNumber, 0)) → PosSolutionList
  48. Sequence(Text[(("\textsf{" * savedPosition(k)) * "\vphantom{Äg}}"), PosNumberList(k) + (0, 0.05), false, true, 0, 0], k, 1, Length[PosNumberList]) → CapCircle
  49. Sequence(Text[If[¬(CorrectList(IndexOf[k, ActualPosition])), TxtOList(k), ""], PosList(k) + (0, 0.05), false, true, 0, 0], k, 1, numberOfBoxes, 1) → SolutionTextList
  50. Sequence(Circle[PosList(k) + (((-widthBox)) / 2 - disXBox - radiusNumber, 0), radiusNumber], k, 1, Length[PosList]) → CircleListFixed
  51. Sequence(Text[(("\textsf{" * k) * "\vphantom{Äg}}"), PosList(k) + (((-widthBox)) / 2 - disXBox - radiusNumber, 0) + (0, 0.075), false, true, 0, 0], k, 1, Length[PosNumberList]) → CapCircleFixed