Visual Fraction Addition Practice
Loading the math board and drawing, please wait…
In collections
Erstes Rechnen mit Brüchen - Addieren
This interactive GeoGebra material helps students master fraction addition through diagrams. The core mathematical concept is adding fractions with different denominators, requiring finding common denominators first. Construction uses Circle for unit circles and sectors to represent fractions, Polygon for bar charts, Segment and Translate for animated bar and line movements, Sequence and Shuffle to generate random fraction problems, InputBox for student answers, and If/Element for answer checking. Designed for grades 5-6, suitable for classroom practice or homework reinforcement, helping students intuitively understand the reasoning behind fraction addition.
GeoGebra Commands & Parameters
Shuffle(Sequence[Random[2, 12], i, 1, 100]) → randomNosForNenner, {10, 9, 9, 3, 10, 4, 12, 5, 7, 7, 9, 3, 8, 9, 3, 5, 7, 7, 9, 9, 4, 9, 3, 6, 12, 4, 6, 9, 12, 12, 4, 7, 7, 10, 10, 7, 3, 6, 11, 9, 5, 9, 6, 2, 6, 6, 12, 4, 5, 11, 8, 11, 11, 4, 6, 9, 11, 11, 8, 6, 3, 11, 12, 10, 7, 12, 7, 2, 3, 6, 7, 4, 11, 12, 4, 2, 5, 5, 11, 9, 8, 8, 7, 4, 8, 12, 6, 3, 11, 4, 3, 3, 2, 7, 10, 4, 4, 9, 4, 9}If(questionCount ≟ 0, 6, Element[randomNosForNenner, Mod[questionCount, 100] + 1]) → nenner2Shuffle(Sequence[Random[1, nenner2 - 1], i, 1, 100]) → randomNosForZaehler2, {2, 3, 8, 1, 4, 8, 1, 6, 7, 8, 6, 7, 6, 6, 5, 7, 7, 3, 8, 4, 4, 8, 8, 3, 2, 7, 1, 4, 2, 3, 6, 4, 6, 8, 4, 6, 4, 8, 4, 6, 7, 4, 2, 5, 4, 8, 6, 6, 5, 6, 8, 8, 1, 8, 1, 1, 6, 1, 5, 1, 2, 3, 2, 2, 1, 2, 5, 2, 7, 8, 8, 2, 6, 7, 3, 1, 3, 2, 8, 5, 3, 6, 1, 2, 5, 3, 7, 3, 2, 2, 2, 3, 2, 3, 6, 7, 7, 3, 8, 8}If(questionCount ≟ 0, 3, Element[randomNosForZaehler2, Mod[questionCount, 100] + 1]) → zaehler2Shuffle(Sequence[Random[1, nenner2 - zaehler2], i, 1, 100]) → randomNosForZaehler3, {3, 3, 1, 3, 1, 3, 3, 4, 2, 3, 3, 4, 5, 3, 6, 6, 3, 6, 1, 4, 1, 1, 1, 1, 4, 6, 1, 4, 5, 3, 2, 6, 5, 3, 2, 2, 6, 5, 2, 6, 3, 3, 4, 5, 6, 5, 5, 3, 2, 4, 1, 2, 5, 2, 6, 1, 1, 6, 5, 2, 1, 3, 2, 3, 2, 6, 2, 6, 2, 4, 4, 3, 2, 5, 2, 3, 1, 6, 6, 6, 4, 1, 5, 4, 4, 4, 1, 5, 4, 2, 2, 1, 4, 6, 5, 1, 5, 3, 5, 1}If(questionCount ≟ 0, 2, If[nenner2 ≟ zaehler2, 0, Element[randomNosForZaehler3, Mod[questionCount, 100] + 1]]) → zaehler3Element(randomNosForZaehler3, Mod[questionCount, 100] + 1) → numYElement(randomNosForZaehler2, Mod[questionCount, 100] + 1) → numXIf(isOne ≠ 1, aInput / bInput ≟ (zaehler2 + zaehler3) / nenner2, aInput ≟ za ∧ bInput ≟ nenner2) → corrErwGekIf(SelectedElement[types] ≟ types(1), schiebeSectors1 ≠ 0 ∧ schiebeSectors2 ≠ 0, If[SelectedElement[types] ≟ types(2), schiebeStrecke1 ≠ 0 ∧ schiebeStrecke2 ≠ 0, If[SelectedElement[types] ≟ types(3), schiebeBalken1 ≠ 0 ∧ schiebeBalken2 ≠ 0]]) → fixedAltCircle(A_1, C) → dSequence(CircleSector[A_1, Rotate[K, (((-(i + 1)) * 2) * pi / nenner2), A_1], Rotate[K, (((-i) * 2) * pi / nenner2) - 0.0001, A_1]], i, 0, zaehler3 - 1) → sectors2Textfield(aInput) → InputBox1Textfield(bInput) → InputBox2Sequence(I + ((i * widthNennerBar / 12) * (1, 0)), i, 1, 12) → allowedPositionsNennerBarPoint(allowedPositionsNennerBar) → PNennerSequence(H_1 + ((i * widthZaehlerBar / 12) * (1, 0)), i, 0, nenner2) → allowedPositionsZaehlerBar1Point(allowedPositionsZaehlerBar1) → PZaehler1Sequence(H + ((i * widthZaehlerBar / 12) * (1, 0)), i, 0, nenner2) → allowedPositionsZaehlerBarPoint(allowedPositionsZaehlerBar) → PZaehlerSequence(E + ((i * widthZaehlerBar / 12) * (1, 0)), i, -4, zaehler2, 0.5) → listeEx1If(isOne ≟ 1, (correct1 ∧ correct2 ∨ corrErwGek) ∧ ganzesInput ≟ 1, correct1 ∧ correct2 ∨ corrErwGek) → correctPolygon(PtopLeftCornerFeedback, PtopRightCornerFeedback, PbottomRightCornerFeedback, PbottomLeftCornerFeedback) → rectangleCorrect, ptopleftcornerfeedback, ptoprightcornerfeedback, pbottomrightcornerfeedback, pbottomleftcornerfeedbackAppend(true, Sequence[If[randomNosForZaehler2(i) ≟ randomNosForZaehler2(i - 1), false, true], i, 2, 100]) → stayXAppend(true, Sequence[If[randomNosForZaehler3(i) ≟ randomNosForZaehler3(i - 1), false, true], i, 2, 100]) → stayYRemove(Sequence[If[stayX(i), randomNosForZaehler2(i), 0], i, 1, 100], Sequence[0, i, 1, 100]) → randomNosForXwithoutRepeatRemove(Sequence[If[stayY(i), randomNosForZaehler3(i), 0], i, 1, 100], Sequence[0, i, 1, 100]) → randomNosForYwithoutRepeatElement(randomNosForXwithoutRepeat, Mod[questionCount, Length[randomNosForXwithoutRepeat]] + 1) → numXwithoutRepeatElement(randomNosForYwithoutRepeat, Mod[questionCount, Length[randomNosForYwithoutRepeat]] + 1) → numYwithoutRepeatCircle(A, B) → cSegment(A, A + (Radius[c] * (0, 1))) → gSegment(I, I + (widthNennerBar * (1, 0))) → hSegment(H, H + (widthZaehlerBar * (1, 0))) → iSegment(H_1, H_1 + (widthZaehlerBar * (1, 0))) → jSequence(Rotate[g, ((i * 2) * pi / nenner2), A], i, 0, nenner2 - 1) → StrechenLeftKreisCircle(A_2, D) → eSegment(A_1, A_1 + (Radius[d] * (0, 1))) → kSegment(A_2, A_2 + (Radius[e] * (0, 1))) → lSequence(Rotate[k, ((i * 2) * pi / nenner2), A_1], i, 0, nenner2 - 1) → StreckenKreisMitteSequence(Rotate[l, ((i * 2) * pi / nenner2), A_2], i, 0, nenner2 - 1) → StreckenKreisRechtsSequence(CircleSector[A, Rotate[KreisOben, (((-(i + 1)) * 2) * pi / nenner2), A], Rotate[KreisOben, (((-i) * 2) * pi / nenner2) - 0.0001, A]], i, 0, zaehler2 - 1) → sectors1Sequence(CircleSector[A_2, Rotate[J, (((-(i + 1)) * 2) * pi / nenner2), A_2], Rotate[J, (((-i) * 2) * pi / nenner2) - 0.0001, A_2]], i, 0, zaehler3 - 1) → sectors3_2Sequence(E + ((i * widthZaehlerBar / 12) * (1, 0)), i, 0, nenner2) → streckenStrecken1Sequence(F + ((i * widthZaehlerBar / 12) * (1, 0)), i, 0, nenner2) → streckenStrecken2Element(types, 4) → Text3Element(types, 4) → Text4Sequence(E + ((i * widthZaehlerBar / 12) * (1, 0)), i, 0, zaehler2) → streckenPunktLeftIf(zaehler2 ≟ 1, E + ((1 / 12 * widthZaehlerBar) * (1, 0)), If[zaehler2 ≟ 2, E + ((2 / 12 * widthZaehlerBar) * (1, 0)), If[zaehler2 ≟ 3, E + ((3 / 12 * widthZaehlerBar) * (1, 0)), If[zaehler2 ≟ 4, E + ((4 / 12 * widthZaehlerBar) * (1, 0)), If[zaehler2 ≟ 5, E + ((5 / 12 * widthZaehlerBar) * (1, 0)), If[zaehler2 ≟ 6, E + ((6 / 12 * widthZaehlerBar) * (1, 0)), If[zaehler2 ≟ 7, E + ((7 / 12 * widthZaehlerBar) * (1, 0)), If[zaehler2 ≟ 8, E + ((8 / 12 * widthZaehlerBar) * (1, 0)), If[zaehler2 ≟ 9, E + ((9 / 12 * widthZaehlerBar) * (1, 0)), If[zaehler2 ≟ 10, E + ((10 / 12 * widthZaehlerBar) * (1, 0)), If[zaehler2 ≟ 11, E + ((11 / 12 * widthZaehlerBar) * (1, 0)), If[zaehler2 ≟ 12, E + ((12 / 12 * widthZaehlerBar) * (1, 0))]]]]]]]]]]]) → PExampleSequence(F + ((i * widthZaehlerBar / 12) * (1, 0)), i, 0, nenner2) → streckenPunktRightSequence(F + ((i * widthZaehlerBar / 12) * (1, 0)), i, 1, zaehler3, 0.5) → listeEx2If(zaehler3 ≟ 1, F + ((1 / 12 * widthZaehlerBar) * (1, 0)), If[zaehler3 ≟ 2, F + ((2 / 12 * widthZaehlerBar) * (1, 0)), If[zaehler3 ≟ 3, F + ((3 / 12 * widthZaehlerBar) * (1, 0)), If[zaehler3 ≟ 4, F + ((4 / 12 * widthZaehlerBar) * (1, 0)), If[zaehler3 ≟ 5, F + ((5 / 12 * widthZaehlerBar) * (1, 0)), If[zaehler3 ≟ 6, F + ((6 / 12 * widthZaehlerBar) * (1, 0)), If[zaehler3 ≟ 7, F + ((7 / 12 * widthZaehlerBar) * (1, 0)), If[zaehler3 ≟ 8, F + ((8 / 12 * widthZaehlerBar) * (1, 0)), If[zaehler3 ≟ 9, F + ((9 / 12 * widthZaehlerBar) * (1, 0)), If[zaehler3 ≟ 10, F + ((10 / 12 * widthZaehlerBar) * (1, 0)), If[zaehler3 ≟ 11, F + ((11 / 12 * widthZaehlerBar) * (1, 0)), If[zaehler3 ≟ 12, F + ((12 / 12 * widthZaehlerBar) * (1, 0))]]]]]]]]]]]) → PExample1Last(streckenStrecken1) → referencePoint1Last(streckenStrecken2) → referencePoint2Segment(E, P1) → pSegment(F, P2) → qSegment(G, L) → rSegment(M, N) → sSequence(Segment[(x(M) + t, y(M)), (x(M) + t, y(M) + 2)], t, 0, nenner2 / 2, 0.5) → balken2Sequence(Segment[(x(G) + t, y(G)), (x(G) + t, y(G) + 2)], t, 0, nenner2 / 2, 0.5) → balken1Sequence(L + ((i * widthZaehlerBar / 8) * (1, 0)), i, 0, nenner2) → balkenPunkte1Sequence(G + ((i * widthZaehlerBar / 8) * (1, 0)), i, 0, nenner2) → balkenPunkte2Sequence(N + ((i * widthZaehlerBar / 8) * (1, 0)), i, 0, nenner2) → balkenPunkte3Sequence(M + ((i * widthZaehlerBar / 8) * (1, 0)), i, 0, nenner2) → balkenPunkte4Last(balkenPunkte1) → LastBalkenPunkte1Last(balkenPunkte2) → LastBalkenPunkte2Last(balkenPunkte3) → LastBalkenPunkte3Last(balkenPunkte4) → LastBalkenPunkte4Point(LastBalkenPunkte1) → OSegment(L, O) → tPoint(LastBalkenPunkte2) → PSegment(G, P) → aPoint(LastBalkenPunkte4) → QSegment(M, Q) → bPoint(LastBalkenPunkte3) → RSegment(N, R) → f_1Sequence(Polygon[(i, 5), (i + 0.5, 5), (i + 0.5, 7), (i, 7)], i, -5, zaehler2 / 2 - 5.5, 0.5) → l1Sequence(Polygon[(i, 5), (i + 0.5, 5), (i + 0.5, 7), (i, 7)], i, 2, zaehler3 / 2 + 1.5, 0.5) → l2Translate(sectors1, (schiebeSectors1, 0)) → sectors1'Sequence(S + ((i * widthZaehlerBar / 12) * (1, 0)), i, 0, nenner2) → streckenStrecken3Last(streckenStrecken3) → referencePoint3Segment(S, P3) → g_1Segment(T, U) → i_1Sequence(Segment[(x(U) + t, y(U)), (x(U) + t, y(U) + 2)], t, 0, nenner2 / 2, 0.5) → balken3Sequence(T + ((i * widthZaehlerBar / 8) * (1, 0)), i, 0, nenner2) → balkenPunkte5Sequence(U + ((i * widthZaehlerBar / 8) * (1, 0)), i, 0, nenner2) → balkenPunkte6Last(balkenPunkte5) → LastBalkenPunkte5Last(balkenPunkte6) → LastBalkenPunkte6Point(LastBalkenPunkte5) → VPoint(LastBalkenPunkte6) → WSegment(T, V) → j_1Segment(U, W) → k_1Sequence(Polygon[(i, 5), (i + 0.5, 5), (i + 0.5, 7), (i, 7)], i, 8, zaehler2 / 2 + 5.5, 0.5) → l3Translate(l1, (schiebeBalken1, 0)) → l1'Translate(l2, (schiebeBalken2, 0)) → l2'Translate(E, (schiebeStrecke1, 0)) → E'Translate(PExample, (schiebeStrecke1, 0)) → PExample'Translate(F, (schiebeStrecke2, 0)) → F'Translate(PExample1, (schiebeStrecke2, 0)) → PExample1'Last(balken1) → l4First(balken2) → l5Midpoint(strecke1) → ZMidpoint(strecke2) → B_1Last(balken2) → l6First(balken3) → l7Midpoint(strecke3) → C_1Midpoint(strecke4) → D_1Segment(Z, B_1) → h_1Segment(C_1, D_1) → l_1Midpoint(h_1) → E_1Midpoint(l_1) → F_1Last(streckenStrecken1) → l8First(streckenStrecken2) → l9Last(streckenStrecken2) → l10First(streckenStrecken3) → l11Point(l8) → G_1Point(l9) → I_1Segment(G_1, I_1) → m_1Point(l10) → J_1Point(l11) → K_1Segment(J_1, K_1) → n_1Midpoint(m_1) → L_1Midpoint(n_1) → M_1Translate(sectors2, ((-schiebeSectors2), 0)) → sectors2'Textfield(ganzesInput) → InputBox3Polygon(PtopLeftCornerFeedback_{1}, PtopRightCornerFeedback_{1}, PbottomRightCornerFeedback_{1}, PbottomLeftCornerFeedback_{1}) → rectangleCorrect_{1}, ptopleftcornerfeedback_{1}, ptoprightcornerfeedback_{1}, pbottomrightcornerfeedback_{1}, pbottomleftcornerfeedback_{1}Mirror(sectors2', x = 1.99) → sectors2''Last(streckenStrecken1) → l12Last(streckenStrecken2) → l13First(streckenStrecken2) → l14First(streckenStrecken3) → l15Last(streckenStrecken3) → l16First(streckenStrecken1) → l17Point(l29) → N_1Point(l22) → O_1Segment(N_1, O_1) → p_1Point(l24) → P_1Point(l18) → Q_1Segment(P_1, Q_1) → q_1Point(l26) → R_1Point(l20) → S_1Segment(R_1, S_1) → r_1Point(l25) → T_1Point(l19) → U_1Segment(T_1, U_1) → s_1Point(l27) → V_1Point(l23) → W_1Segment(V_1, W_1) → t_1Point(l28) → Z_1Point(l21) → B_2Segment(Z_1, B_2) → a_1Remove(streckenStrecken1, Last[streckenStrecken1]) → l30Remove(l30, First[l30]) → l31Remove(streckenStrecken2, Last[streckenStrecken2]) → l32Remove(l32, First[l32]) → l33Remove(streckenStrecken3, Last[streckenStrecken3]) → l34Remove(l34, First[l34]) → l35Segment((x(E) + 0.05, y(E)), (x(PExample) - 0.05, y(PExample))) → mSegment((x(E') + 0.05, y(E')), (x(PExample') - 0.05, y(PExample'))) → m'Segment((x(F) + 0.05, y(F)), (x(PExample1) - 0.05, y(PExample1))) → nSegment((x(F') + 0.05, y(F')), (x(PExample1') - 0.05, y(PExample1'))) → n'Length(g_1) → oLength(n) → uLength(j_1) → vMirror(sectors2, x = 1.99) → sectors2'_{1}
AI Drawing Prompt Reference
Create a visual geometry practice for adding fractions. Draw a unit circle on the left and divide it into equal parts according to a chosen denominator, using wedge-shaped sectors. Highlight a number of sectors matching the numerator so that two fractional parts can be shown by rotating or positioning these highlighted sectors. On the right, draw horizontal bar segments representing the denominators and numerators with equal-sized sub-intervals, and show how the two parts are combined by shifting/aligning the bars. Include a rectangular feedback area for the final check and leave two input fields for the numerator and denominator of the answer.
The prompt above was compiled from the original drawing commands and is for reference only.