Fraction Subtraction with Bar Models (Set 1)
Loading the math board and drawing, please wait…
① 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
If(prob ≟ 1, step4denomA, If[prob ≟ 2, step4denomB, If[prob ≟ 3, step4denomC, step4denomD]]) → step4denomMasterIf(prob ≟ 1, step4numA, If[prob ≟ 2, step4numB, If[prob ≟ 3, step4numC, step4numD]]) → step4numMasterIf((prob ≟ 1 ∨ prob ≟ 3) ∧ step4numMaster ≟ 1 ∧ step4denomMaster ≟ 3 ∨ prob ≟ 2 ∧ step4numMaster ≟ 3 ∧ step4denomMaster ≟ 8 ∨ prob ≟ 4 ∧ step4numMaster ≟ 1 ∧ step4denomMaster ≟ 2, true, false) → solutionSimplifiedIf(prob ≟ 1, step3pieceA, If[prob ≟ 2, step3pieceB, If[prob ≟ 3, step3pieceC, step3pieceD]]) → step3pieceMasterSelectIf(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]]]]]]]]) → step3pieceMasterIf(step4numMaster ≟ Element[solutionNum, prob] ∧ step4denomMaster ≟ step3pieceMaster, true, false) → solutionShownIf(prob ≟ 1, ckStep3CkModelA, If[prob ≟ 2, ckStep3CkModelB, If[prob ≟ 3, ckStep3CkModelC, ckStep3CkModelD]]) → ckStep3CkModelMasterIf(prob ≟ 1, ckStep1a, If[prob ≟ 2, ckStep1b, If[prob ≟ 3, ckStep1c, ckStep1d]]) → ckStep1MasterIf(prob ≟ 1, ckStep3a, If[prob ≟ 2, ckStep3b, If[prob ≟ 3, ckStep3c, ckStep3d]]) → ckStep3MasterIf(prob ≟ 1, step3num2A, If[prob ≟ 2, step3num2B, If[prob ≟ 3, step3num2C, step3num2D]]) → step3num2MasterIf(prob ≟ 1, step1numLa, If[prob ≟ 2, step1numLb, If[prob ≟ 3, step1numLc, step1numLd]]) → step1numLMasterIf(prob ≟ 1, step1pieceLa, If[prob ≟ 2, step1pieceLb, If[prob ≟ 3, step1pieceLc, step1pieceLd]]) → step1pieceLMasterSelectIf(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]]]]]]]]) → step1pieceLMasterIf(prob ≟ 1, step1numRa, If[prob ≟ 2, step1numRb, If[prob ≟ 3, step1numRc, step1numRd]]) → step1numRMasterIf(prob ≟ 1, step1pieceRa, If[prob ≟ 2, step1pieceRb, If[prob ≟ 3, step1pieceRc, step1pieceRd]]) → step1pieceRMasterSelectIf(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]]]]]]]]) → step1pieceRMasterIf(prob ≟ 1, step3num1A, If[prob ≟ 2, step3num1B, If[prob ≟ 3, step3num1C, step3num1D]]) → step3num1MasterIf(step1ProbDif ≟ step3dif, true, false) → step3CheckIf(pieces, Frame3PtMove, If[ckStep1Master ∧ step1Check ∧ ckStep3CkModelMaster ∧ step3Check, (0.6, 1.1), (0, 1.1)]) → Frame3PtIf(pieces, Frame2PtMove, (1.2, 3)) → Frame2PtIf(pieces, Frame1PtMove, (0, 3)) → Frame1PtPolygon(Frame2Pt, Frame2Pt + (1, 0), Frame2Pt + (1, 1), Frame2Pt + (0, 1)) → frame2, frame2Bottom, frame2R, frame2Top, frame2LPolygon(Frame1Pt, Frame1Pt + (1, 0), Frame1Pt + (1, 1), Frame1Pt + (0, 1)) → frame1, frame1Bottom, frame1R, frame1Top, frame1LPolygon(Frame3Pt, Frame3Pt + (1, 0), Frame3Pt + (1, 1), Frame3Pt + (0, 1)) → frame5, frame5Bottom, frame5R, frame5Top, frame5LIf(prob ≟ 1, ckStep3AlignA, If[prob ≟ 2, ckStep3AlignB, If[prob ≟ 3, ckStep3AlignC, ckStep3AlignD]]) → ckStep3AlignMasterIf(prob ≟ 1, ckStep4a, If[prob ≟ 2, ckStep4b, If[prob ≟ 3, ckStep4c, ckStep4d]]) → ckStep4MasterIf(prob ≟ 1, ckStep4CheckFracA, If[prob ≟ 2, ckStep4CheckFracB, If[prob ≟ 3, ckStep4CheckFracC, ckStep4CheckFracD]]) → ckStep4CheckFracMasterIf(prob ≟ 1, ckStep4HintA, If[prob ≟ 2, ckStep4HintB, If[prob ≟ 3, ckStep4HintC, ckStep4HintD]]) → ckStep4HintMasterPolygon(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, Astar2If(ckStep1Master ≟ false, 0) → step1resetTextfield(step4numA) → numAInputTextfield(step4denomA) → denomAInputSegment((1.02, -1.4), (1.22, -1.4)) → step4fracBarIf(Defined[step4numMaster] ≟ false ∨ Defined[step4denomMaster] ≟ false ∨ Defined[step4numMaster] ∧ round(step4numMaster) ≟ step4numMaster ∧ round(step4denomMaster) ≟ step4denomMaster, true, false) → step4numVerifyWholeTextfield(step4denomB) → denomBInputTextfield(step4numB) → numBInputTextfield(step4numC) → numCInputTextfield(step4denomC) → denomCInputTextfield(step4numD) → numDInputTextfield(step4denomD) → denomDInputPolygon(Frame1Pt, Frame1Pt + (step1ValL, 0), Frame1Pt + (step1ValL, 1), Frame1Pt + (0, 1)) → step1barL, step1barLBottom, step1barLR, step1barLTop, step1barLLPolygon(Frame2Pt, Frame2Pt + (step1ValR, 0), Frame2Pt + (step1ValR, 1), Frame2Pt + (0, 1)) → step1barR, step1barRBottom, step1barRR, step1barRTop, step1barRLSequence(Segment[Frame1Pt + (k, 0), Frame1Pt + (k, 1)], k, 0, step1ValL, 1 / step1pieceLMaster) → step1barLdivSequence(Segment[Frame2Pt + (k, 0), Frame2Pt + (k, 1)], k, 0, step1ValR, 1 / step1pieceRMaster) → step1barRdivPolygon(Frame3Pt, Frame3Pt + (step3val1, 0), Frame3Pt + (step3val1, 1), Frame3Pt + (0, 1)) → step3bar1, step3bar1Bottom, step3bar1R, step3bar1Top, step3bar1LIf(solutionSimplified ∨ solutionShown, true, false) → step4CheckIf(timer ≤ 0.06, true, false) → fbtimeIf(pieces, Frame3PtMove, If[ckStep1Master ∧ step1Check ∧ ckStep3CkModelMaster ∧ step3Check, (0.6, 0), (1.2, 1.1)]) → Frame4PtPolygon(Frame4Pt, Frame4Pt + (1, 0), Frame4Pt + (1, 1), Frame4Pt + (0, 1)) → frame6, frame6Bottom, frame6R, frame6Top, frame6LPolygon(Frame4Pt, Frame4Pt + (step3val2, 0), Frame4Pt + (step3val2, 1), Frame4Pt + (0, 1)) → step3bar2, step3bar2Bottom, step3bar2R, step3bar2Top, step3bar2LSequence(Segment[Frame3Pt + (k, 0), Frame3Pt + (k, 1)], k, 0, step3val1, 1 / step3pieceMaster) → step3bar1DivSequence(Segment[Frame4Pt + (k, 0), Frame4Pt + (k, 1)], k, 0, step3val2, 1 / step3pieceMaster) → step3bar2DivSegment(Frame3Pt + (step1ProbLVal, If[ckStep3CkModelMaster ∧ step3Check, 1.1, 3.1]), Frame3Pt + (step1ProbLVal, If[ckStep3CkModelMaster ∧ step3Check, -1.2, -0.1])) → Astep3AlignSegBlueBar1Segment(Frame3Pt + (step1ProbLVal, If[ckStep3CkModelMaster ∧ step3Check, 1.1, 3.1]), Frame3Pt + (step1ProbLVal, If[ckStep3CkModelMaster ∧ step3Check, -1.2, -0.1])) → Astep3AlignSegUnderBar1Segment(Frame4Pt + (step1ProbRVal, If[ckStep3CkModelMaster ∧ step3Check, 2.2, 3.1]), Frame4Pt + (step1ProbRVal, If[ckStep3CkModelMaster ∧ step3Check, -0.1, -0.1])) → Astep3AlignSegBlueBar2Segment(Frame4Pt + (step1ProbRVal, If[ckStep3CkModelMaster ∧ step3Check, 2.2, 3.1]), Frame4Pt + (step1ProbRVal, If[ckStep3CkModelMaster ∧ step3Check, -0.1, -0.1])) → Astep3AlignSegUnderBar2FractionText(1 / step1pieceLMaster) → step1barLLabelMasterSequence(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) → step1barLpieceLabelsFractionText(1 / step1pieceRMaster) → step1barRLabelMasterSequence(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) → step1barRpieceLabelsFractionText(1 / step3pieceMaster) → step3barLabelMasterSequence(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) → step3barLpieceLabelsSequence(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) → step3barRpieceLabelsIf(step4denomMaster ≟ Element[solutionDenom, prob], true, false) → solutionDenomIsShownIf(step4numMaster ≟ Element[solutionNum, prob], true, false) → solutionNumIsShown