Fraction Subtraction with Bar Models (Set 1)

Fraction Subtraction with Bar Models (Set 1)
Loading the math board and drawing, please wait…
2019-11-21 20:58
① This interactive GeoGebra example uses virtual fraction bar pieces to model fraction subtraction step by step, allowing users to manipulate the bars and receive immediate feedback. ② The core mathematical concepts include fraction subtraction, common denominators, simplification, and equivalent fractions, along with natural number operations and sequence reasoning. ③ The construction employs GeoGebra commands such as If, Polygon, Segment, Sequence, and FractionText to create dynamic fraction bar models, with Textfield inputs for answers and multiple objects (e.g., step4numA, step3pieceMaster) to guide users through a four-step solution process with automatic checking. ④ It is suitable for upper elementary to middle school students learning fraction subtraction, and can be used for self-study or classroom demonstration to enhance conceptual understanding through visual and interactive manipulation.

GeoGebra Commands & Parameters

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