Sort by Slope - Level 2

Sort by Slope - Level 2
Loading the math board and drawing, please wait…
2026-05-13 20:23
This example demonstrates sorting linear functions based on their slopes. Key math concepts include the properties of linear functions. GeoGebra commands used include Shuffle, If, Sequence, Textfield, Element, Join, Segment, Point, RemoveUndefined, Reverse, and Text. Suitable for 7-8 grade students to practice describing the properties of linear functions.

GeoGebra Commands & Parameters

  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