Fraction Subtraction with Bar Models

Fraction Subtraction with Bar Models
Loading the math board and drawing, please wait…
2019-11-22 23:37
This example uses virtual bar pieces to model fraction subtraction, helping students understand the subtraction process. Key math concepts include fractions and subtraction. GeoGebra commands used include Polygon, Textfield, Segment, Sequence, and FractionText. Suitable for upper elementary or middle school students for subtraction practice.

GeoGebra Commands & Parameters

  1. If(prob ≟ 1, ckStep3CkModelA, If[prob ≟ 2, ckStep3CkModelB, If[prob ≟ 3, ckStep3CkModelC, ckStep3CkModelD]]) → ckStep3CkModelMaster
  2. If(prob ≟ 1, ckStep1a, If[prob ≟ 2, ckStep1b, If[prob ≟ 3, ckStep1c, ckStep1d]]) → ckStep1Master
  3. If(prob ≟ 1, ckStep3a, If[prob ≟ 2, ckStep3b, If[prob ≟ 3, ckStep3c, ckStep3d]]) → ckStep3Master
  4. If(prob ≟ 1, step3num2A, If[prob ≟ 2, step3num2B, If[prob ≟ 3, step3num2C, step3num2D]]) → step3num2Master
  5. If(prob ≟ 1, step1numLa, If[prob ≟ 2, step1numLb, If[prob ≟ 3, step1numLc, step1numLd]]) → step1numLMaster
  6. If(prob ≟ 1, step1pieceLa, If[prob ≟ 2, step1pieceLb, If[prob ≟ 3, step1pieceLc, step1pieceLd]]) → step1pieceLMasterSelect
  7. If(step1pieceLMasterSelect ≟ 1, 0, If[step1pieceLMasterSelect ≟ 2, 2, If[step1pieceLMasterSelect ≟ 3, 3, If[step1pieceLMasterSelect ≟ 4, 4, If[step1pieceLMasterSelect ≟ 5, 5, If[step1pieceLMasterSelect ≟ 6, 6, If[step1pieceLMasterSelect ≟ 7, 8, If[step1pieceLMasterSelect ≟ 8, 10, If[step1pieceLMasterSelect ≟ 9, 12]]]]]]]]) → step1pieceLMaster
  8. If(prob ≟ 1, step1numRa, If[prob ≟ 2, step1numRb, If[prob ≟ 3, step1numRc, step1numRd]]) → step1numRMaster
  9. If(prob ≟ 1, step1pieceRa, If[prob ≟ 2, step1pieceRb, If[prob ≟ 3, step1pieceRc, step1pieceRd]]) → step1pieceRMasterSelect
  10. If(step1pieceRMasterSelect ≟ 1, 0, If[step1pieceRMasterSelect ≟ 2, 2, If[step1pieceRMasterSelect ≟ 3, 3, If[step1pieceRMasterSelect ≟ 4, 4, If[step1pieceRMasterSelect ≟ 5, 5, If[step1pieceRMasterSelect ≟ 6, 6, If[step1pieceRMasterSelect ≟ 7, 8, If[step1pieceRMasterSelect ≟ 8, 10, If[step1pieceRMasterSelect ≟ 9, 12]]]]]]]]) → step1pieceRMaster
  11. If(prob ≟ 1, step3pieceA, If[prob ≟ 2, step3pieceB, If[prob ≟ 3, step3pieceC, step3pieceD]]) → step3pieceMasterSelect
  12. If(step3pieceMasterSelect ≟ 1, 0, If[step3pieceMasterSelect ≟ 2, 2, If[step3pieceMasterSelect ≟ 3, 3, If[step3pieceMasterSelect ≟ 4, 4, If[step3pieceMasterSelect ≟ 5, 5, If[step3pieceMasterSelect ≟ 6, 6, If[step3pieceMasterSelect ≟ 7, 8, If[step3pieceMasterSelect ≟ 8, 10, If[step3pieceMasterSelect ≟ 9, 12]]]]]]]]) → step3pieceMaster
  13. If(prob ≟ 1, step3num1A, If[prob ≟ 2, step3num1B, If[prob ≟ 3, step3num1C, step3num1D]]) → step3num1Master
  14. If(step1ProbDif ≟ step3dif, true, false) → step3Check
  15. If(pieces, Frame3PtMove, If[ckStep1Master ∧ step1Check ∧ ckStep3CkModelMaster ∧ step3Check, (0.6, 1.1), (0, 1.1)]) → Frame3Pt
  16. If(pieces, Frame2PtMove, (1.2, 3)) → Frame2Pt
  17. If(pieces, Frame1PtMove, (0, 3)) → Frame1Pt
  18. Polygon(Frame2Pt, Frame2Pt + (1, 0), Frame2Pt + (1, 1), Frame2Pt + (0, 1)) → frame2, frame2Bottom, frame2R, frame2Top, frame2L
  19. Polygon(Frame1Pt, Frame1Pt + (1, 0), Frame1Pt + (1, 1), Frame1Pt + (0, 1)) → frame1, frame1Bottom, frame1R, frame1Top, frame1L
  20. Polygon(Frame3Pt, Frame3Pt + (1, 0), Frame3Pt + (1, 1), Frame3Pt + (0, 1)) → frame5, frame5Bottom, frame5R, frame5Top, frame5L
  21. If(prob ≟ 1, ckStep3AlignA, If[prob ≟ 2, ckStep3AlignB, If[prob ≟ 3, ckStep3AlignC, ckStep3AlignD]]) → ckStep3AlignMaster
  22. If(prob ≟ 1, ckStep4a, If[prob ≟ 2, ckStep4b, If[prob ≟ 3, ckStep4c, ckStep4d]]) → ckStep4Master
  23. If(prob ≟ 1, step4numA, If[prob ≟ 2, step4numB, If[prob ≟ 3, step4numC, step4numD]]) → step4numMaster
  24. If(prob ≟ 1, step4denomA, If[prob ≟ 2, step4denomB, If[prob ≟ 3, step4denomC, step4denomD]]) → step4denomMaster
  25. If(prob ≟ 1, ckStep4CheckFracA, If[prob ≟ 2, ckStep4CheckFracB, If[prob ≟ 3, ckStep4CheckFracC, ckStep4CheckFracD]]) → ckStep4CheckFracMaster
  26. If(prob ≟ 1, ckStep4HintA, If[prob ≟ 2, ckStep4HintB, If[prob ≟ 3, ckStep4HintC, ckStep4HintD]]) → ckStep4HintMaster
  27. Polygon(Step4StarPt + (-0.062, 0.352), Step4StarPt + (0, 1.25), Step4StarPt + (-0.12, 0), Step4StarPt + (-0.245, 0.5), Step4StarPt + (0.047, 0.313), Step4StarPt + (0.19, 0.02), Step4StarPt + (0.06, -0.25), Step4StarPt + (0.115, -0.75), Step4StarPt + (0, -0.5), Step4StarPt + (-0.084, -1.076), Step4StarPt + (-0.084, -0.333), Step4StarPt + (-0.205, -0.5)) → step4Starburst, Astar6, Astar3, Astar4, Astar5, Astar7, Astar8, Astar9, Astar10, Astar11, Astar12, Astar1, Astar2
  28. If(ckStep1Master ≟ false, 0) → step1reset
  29. Textfield(step4numA) → numAInput
  30. Textfield(step4denomA) → denomAInput
  31. Segment((1.02, -1.4), (1.22, -1.4)) → step4fracBar
  32. If(Defined[step4numMaster] ≟ false ∨ Defined[step4denomMaster] ≟ false ∨ Defined[step4numMaster] ∧ round(step4numMaster) ≟ step4numMaster ∧ round(step4denomMaster) ≟ step4denomMaster, true, false) → step4numVerifyWhole
  33. Textfield(step4denomB) → denomBInput
  34. Textfield(step4numB) → numBInput
  35. Textfield(step4numC) → numCInput
  36. Textfield(step4denomC) → denomCInput
  37. Textfield(step4numD) → numDInput
  38. Textfield(step4denomD) → denomDInput
  39. Polygon(Frame1Pt, Frame1Pt + (step1ValL, 0), Frame1Pt + (step1ValL, 1), Frame1Pt + (0, 1)) → step1barL, step1barLBottom, step1barLR, step1barLTop, step1barLL
  40. Polygon(Frame2Pt, Frame2Pt + (step1ValR, 0), Frame2Pt + (step1ValR, 1), Frame2Pt + (0, 1)) → step1barR, step1barRBottom, step1barRR, step1barRTop, step1barRL
  41. Sequence(Segment[Frame1Pt + (k, 0), Frame1Pt + (k, 1)], k, 0, step1ValL, 1 / step1pieceLMaster) → step1barLdiv
  42. Sequence(Segment[Frame2Pt + (k, 0), Frame2Pt + (k, 1)], k, 0, step1ValR, 1 / step1pieceRMaster) → step1barRdiv
  43. Polygon(Frame3Pt, Frame3Pt + (step3val1, 0), Frame3Pt + (step3val1, 1), Frame3Pt + (0, 1)) → step3bar1, step3bar1Bottom, step3bar1R, step3bar1Top, step3bar1L
  44. If(Element[solutionNum, prob] ≟ step4numMaster ∧ Element[solutionDenom, prob] ≟ step4denomMaster, true, false) → step4Check
  45. If(timer ≤ 0.06, true, false) → fbtime
  46. If(pieces, Frame3PtMove, If[ckStep1Master ∧ step1Check ∧ ckStep3CkModelMaster ∧ step3Check, (0.6, 0), (1.2, 1.1)]) → Frame4Pt
  47. Polygon(Frame4Pt, Frame4Pt + (1, 0), Frame4Pt + (1, 1), Frame4Pt + (0, 1)) → frame6, frame6Bottom, frame6R, frame6Top, frame6L
  48. Polygon(Frame4Pt, Frame4Pt + (step3val2, 0), Frame4Pt + (step3val2, 1), Frame4Pt + (0, 1)) → step3bar2, step3bar2Bottom, step3bar2R, step3bar2Top, step3bar2L
  49. Sequence(Segment[Frame3Pt + (k, 0), Frame3Pt + (k, 1)], k, 0, step3val1, 1 / step3pieceMaster) → step3bar1Div
  50. Sequence(Segment[Frame4Pt + (k, 0), Frame4Pt + (k, 1)], k, 0, step3val2, 1 / step3pieceMaster) → step3bar2Div
  51. Segment(Frame3Pt + (step1ProbLVal, If[ckStep3CkModelMaster ∧ step3Check, 1.1, 3.1]), Frame3Pt + (step1ProbLVal, If[ckStep3CkModelMaster ∧ step3Check, -1.2, -0.1])) → Astep3AlignSegBlueBar1
  52. Segment(Frame3Pt + (step1ProbLVal, If[ckStep3CkModelMaster ∧ step3Check, 1.1, 3.1]), Frame3Pt + (step1ProbLVal, If[ckStep3CkModelMaster ∧ step3Check, -1.2, -0.1])) → Astep3AlignSegUnderBar1
  53. Segment(Frame4Pt + (step1ProbRVal, If[ckStep3CkModelMaster ∧ step3Check, 2.2, 3.1]), Frame4Pt + (step1ProbRVal, If[ckStep3CkModelMaster ∧ step3Check, -0.1, -0.1])) → Astep3AlignSegBlueBar2
  54. Segment(Frame4Pt + (step1ProbRVal, If[ckStep3CkModelMaster ∧ step3Check, 2.2, 3.1]), Frame4Pt + (step1ProbRVal, If[ckStep3CkModelMaster ∧ step3Check, -0.1, -0.1])) → Astep3AlignSegUnderBar2
  55. FractionText(1 / step1pieceLMaster) → step1barLLabelMaster
  56. FractionText(1 / step1pieceRMaster) → step1barRLabelMaster
  57. FractionText(1 / step3pieceMaster) → step3barLabelMaster
  58. Sequence(Text[step1barLLabelMaster, (0 + i, 3.9), true, true], i, 0 + (If[step1pieceLMaster ≤ 4, 0.4, step1pieceLMaster ≟ 5, 0.35, step1pieceLMaster ≟ 6, 0.3, step1pieceLMaster ≟ 8, 0.2, step1pieceLMaster ≟ 10, 0.01, -0.15] * 1 / step1pieceLMaster), step1numLMaster / step1pieceLMaster + If[step1pieceLMaster ≟ 12, -0.05, 0], 1 / step1pieceLMaster) → step1barLpieceLabels
  59. Sequence(Text[step1barRLabelMaster, (1.2 + i, 3.9), true, true], i, 0 + (If[step1pieceRMaster ≤ 4, 0.4, step1pieceRMaster ≟ 5, 0.35, step1pieceRMaster ≟ 6, 0.3, step1pieceRMaster ≟ 8, 0.2, step1pieceRMaster ≟ 10, 0.01, -0.15] * 1 / step1pieceRMaster), step1numRMaster / step1pieceRMaster + If[step1pieceRMaster ≟ 12, -0.05, 0], 1 / step1pieceRMaster) → step1barRpieceLabels
  60. Sequence(Text[step3barLabelMaster, Frame3Pt + (i, 0.9), true, true], i, 0 + (If[step3pieceMaster ≤ 4, 0.4, step3pieceMaster ≟ 5, 0.35, step3pieceMaster ≟ 6, 0.3, step3pieceMaster ≟ 8, 0.2, step3pieceMaster ≟ 10, 0.01, -0.15] * 1 / step3pieceMaster), step3num1Master / step3pieceMaster + If[step3pieceMaster ≟ 12, -0.05, 0], 1 / step3pieceMaster) → step3barLpieceLabels
  61. Sequence(Text[step3barLabelMaster, Frame4Pt + (i, 0.9), true, true], i, 0 + (If[step3pieceMaster ≤ 4, 0.4, step3pieceMaster ≟ 5, 0.35, step3pieceMaster ≟ 6, 0.3, step3pieceMaster ≟ 8, 0.2, step3pieceMaster ≟ 10, 0.01, -0.15] * 1 / step3pieceMaster), step3num2Master / step3pieceMaster + If[step3pieceMaster ≟ 12, -0.05, 0], 1 / step3pieceMaster) → step3barRpieceLabels

AI Drawing Prompt Reference

Draw bar models to represent fraction subtraction. Create two colored bars, one for the minuend and one for the subtrahend, each divided into segments representing fraction units. Highlight the segments in the minuend that correspond to the subtrahend, showing the difference. Animate the subtrahend bar moving over the minuend bar, with the overlapping segments removed to visually demonstrate the concept of fraction subtraction.
The prompt above was compiled from the original drawing commands and is for reference only.