分数表示能力练习:把分数画出来与补全
几何画板及绘图内容加载中,请稍等……
本范例用于展示学生如何“用图形/模型表示分数”,并通过随机题目训练分数的读写与补全。核心数学概念包括:把分数理解为“一个整体的若干份”或“多个整体的若干份”;分数的分子/分母含义;以及在给定整体划分时补全等价表达或缺失分数。作图与交互要点是:系统使用随机生成的分子/分母与题型列表来形成多个题目关卡,并在验证后统计正确率;可视化对象用“darstellungShowElement1~4”等元素承载分数的图形呈现(如若干份被选中/涂色的表示)。构造摘要中体现的 GeoGebra 关键命令与对象包括:Flatten、Sequence、Element、RandomElement、If、Textfield、Join、Zip、Unique、Mirror、Dilate、Vector;以及 numberOfQuestions、attemptCount、questionCount、correctCount、
GeoGebra 命令及参数
Flatten(Sequence[Shuffle[1…3], i, 1, 10]) → level1RandomTypsSequence(If[level1RandomTyps(i) ≟ 1, RandomElement[{2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}], If[level1RandomTyps(i) ≟ 2, RandomElement[{3, 4, 5, 6}], If[level1RandomTyps(i) ≟ 3, RandomElement[{3, 4, 5, 6, 7, 8}], 2]]], i, 1, Length[level1RandomTyps]) → level1RandomElementsElement(level1RandomElements, Mod[Max[0, questionCount - 1], Length[level1RandomElements]] + 1) → level1ActualRandomElementsSequence(Join[{{1}, (1…i) \ DivisorsList[i]}], i, 1, 12) → level1NichtTeilerlisteRandomElement(level1NichtTeilerliste(level1ActualRandomElements)) → level1ActualZaehlerFlatten(Sequence[Shuffle[1…12], i, 1, 10]) → level2RandomTypsElement(level2RandomTyps, Mod[Max[0, questionCountLevel2 - 1], Length[level2RandomTyps]] + 1) → level2ActualRandomTypElement(allLevel2Tasks, level2ActualRandomTyp) → actualLevel2TaskElement(actualLevel2Task, 1) → level2ActualZaehlerFlatten(Sequence[Shuffle[1…12], i, 1, 10]) → level3RandomTypsElement(level3RandomTyps, Mod[Max[0, questionCountLevel3 - 1], Length[level3RandomTyps]] + 1) → level3ActualRandomTypElement(allLevel3Tasks, level3ActualRandomTyp) → actualLevel3TaskElement(actualLevel3Task, 1) → level3ActualZaehlerIf(level ≟ 1, level1ActualZaehler, If[level ≟ 2, level2ActualZaehler, level3ActualZaehler]) → valueZaehlerElement(actualLevel2Task, 2) → level2ActualElementsElement(actualLevel3Task, 3) → level3ActualElementsElement(actualLevel3Task, 2) → level3ActualNennerIf(level ≟ 1, level1ActualRandomElements, If[level ≟ 2, level2ActualElements, level3ActualNenner]) → valueNennerTextfield(input) → inputBoxElement(randomQuestions, Mod[Max[0, questionCount - 1], Length[randomQuestions]] + 1) → randomQuestionElement(level1RandomTyps, Mod[Max[0, questionCount - 1], Length[level1RandomTyps]] + 1) → level1ActualRandomTypSequence(Rotate[elementsCenter + (0, factorSize), (i * (360°) / level1ActualRandomElements), elementsCenter], i, 0, 12) → level1Typ1PointsSequence(Rotate[elementsCenter + (0, factorSize), (i * (360°) / level1ActualRandomElements), elementsCenter], i, 0, 12) → level1Typ2PointsSequence(elementsCenter + ((i * factorSize / 2.3), factorSize / 2.3 / 2), i, (-ceil(level1ActualRandomElements / 2)), floor(level1ActualRandomElements / 2), 1) → level1Typ3PointsJoin({Sequence[elementsCenter + ((-factorSize), factorSize) + ((i * 2 / 3), 0), i, 0, 6], Sequence[elementsCenter + ((-factorSize), (-factorSize)) + ((i * 2 / 3), 0), i, 0, 6]}) → level2Typ3PointsJoin({Sequence[elementsCenter + ((-factorSize), factorSize / 1.5) + ((i * 2 / 3), 0), i, 0, 6], Sequence[elementsCenter + ((-factorSize), 0) + ((i * 2 / 3), 0), i, 0, 6], Sequence[elementsCenter + ((-factorSize), ((-factorSize)) / 1.5) + ((i * 2 / 3), 0), i, 0, 6]}) → level2Typ5PointsJoin({Sequence[elementsCenter + ((-factorSize), factorSize / 1.5) + ((i * 2 / 3), 0), i, 0, 6], Sequence[elementsCenter + ((-factorSize), 0) + ((i * 2 / 3), 0), i, 0, 6], Sequence[elementsCenter + ((-factorSize), ((-factorSize)) / 1.5) + ((i * 2 / 3), 0), i, 0, 6]}) → level2Typ6PointsJoin({Sequence[elementsCenter + ((-factorSize), factorSize / 1.5) + ((i * 2 / 3), 0), i, 0, 6], Sequence[elementsCenter + ((-factorSize), factorSize / 3) + ((i * 2 / 3), 0), i, 0, 6], Sequence[elementsCenter + ((-factorSize), 0) + ((i * 2 / 3), 0), i, 0, 6], Sequence[elementsCenter + ((-factorSize), ((-factorSize)) / 3) + ((i * 2 / 3), 0), i, 0, 6], Sequence[elementsCenter + ((-factorSize), ((-factorSize)) / 1.5) + ((i * 2 / 3), 0), i, 0, 6]}) → level2Typ7PointsZip(a - (0, factorSize / 4), a, Join[{{elementsCenter}, Sequence[Rotate[elementsCenter + (0, factorSize / 2), (i * (360°) / 6), elementsCenter], i, 0, 5], {elementsCenter + (((-3 * sqrt(1 / 3)) * factorSize / 2), 0)}, {elementsCenter + (((3 * sqrt(1 / 3)) * factorSize / 2), 0)}}]) → level2Typ8PointsFlatten(Zip[{a - ((sqrt(1 / 3) * Distance[level2Typ8Points(1), level2Typ8Points(2)] / 2), 0), a + ((sqrt(1 / 3) * Distance[level2Typ8Points(1), level2Typ8Points(2)] / 2), 0)}, a, level2Typ8Points]) → level2Typ8PointsEaltJoin({Sequence[elementsCenter + (((-factorSize) * 11 / 10), factorSize / 2.5) + ((i * 0.55), 0), i, 0, 9], Sequence[elementsCenter + (((-factorSize) * 13 / 10), 0) + ((i * 0.55), 0), i, 0, 9], Sequence[elementsCenter + (((-factorSize) * 15 / 10), ((-factorSize)) / 2.5) + ((i * 0.55), 0), i, 0, 9]}) → level2Typ9PointsSequence(Rotate[elementsCenter + (0, factorSize / 1.5), (i * (360°) / 6), elementsCenter], i, 0, 7) → level2Typ11PointsFlatten(Sequence[{Rotate[elementsCenter + (0, factorSize), (i * (360°) / 8), elementsCenter], Rotate[elementsCenter + (0, factorSize / 2), (i * (360°) / 8), elementsCenter]}, i, 0, 8]) → level2Typ12PointsSequence(Join[{{level1Typ1Points(j + 1), elementsCenter, level1Typ1Points(j)}, Sequence[elementsCenter + (factorSize * (cos(90° + i°), sin(90° + i°))), i, ((j - 1) * 360 / level1ActualRandomElements), (j * 360 / level1ActualRandomElements), 5]}], j, 1, level1ActualRandomElements) → level1Typ1ElementsSequence({elementsCenter, level1Typ2Points(i), level1Typ2Points(i + 1)}, i, 1, level1ActualRandomElements) → level1Typ2ElementsSequence(elementsCenter + ((i * factorSize / 2.3), ((-factorSize)) / 2.3 / 2), i, (-ceil(level1ActualRandomElements / 2)), floor(level1ActualRandomElements / 2), 1) → level1Typ3PointsESequence({level1Typ3Points(i), level1Typ3Points(i + 1), level1Typ3PointsE(i + 1), level1Typ3PointsE(i)}, i, 1, level1ActualRandomElements) → level1Typ3ElementsZip(Polygon[a], a, actualElementsPoints) → darstellungRandUnique(Flatten[Zip[{Vertex[a]}, a, darstellungRand]]) → feedbackCornerAllFlatten(Sequence[{(13.7 + (i * 0.5), 9.2), (13.7 + (i * 0.5) + 0.7, 9.2)}, i, 0, 2]) → chiliPositionsMirror(imgGoal, OrthogonalLine[imgGoalA, Segment[imgGoalA, imgGoalB]]) → imgGoal'Join({Sequence[{elementsCenter, level2Typ11Points(i), level2Typ11Points(i + 1)}, i, 1, 6], {{level2Typ11Points(1), level2Typ11Points(2), level2Typ11PointsE(1)}, {level2Typ11Points(1), level2Typ11Points(6), level2Typ11PointsE(2)}, {level2Typ11Points(3), level2Typ11Points(4), level2Typ11PointsE(3)}, {level2Typ11Points(4), level2Typ11Points(5), level2Typ11PointsE(4)}}}) → level2Typ11ElementsSequence(Join[{Sequence[elementsCenter + (factorSize * (cos(90° + i°), sin(90° + i°))), i, ((j - 1) * 360 / 8), (j * 360 / 8), 5], {level2Typ12Points((2 * j) - 1 + 2), level2Typ12Points((2 * j) - 1 + 3)}, Sequence[elementsCenter + (factorSize / 2 * (cos(90° + i°), sin(90° + i°))), i, (j * 360 / 8), ((j - 1) * 360 / 8), -5], {level2Typ12Points((2 * j) - 1 + 1), level2Typ12Points((2 * j) - 1)}}], j, 1, 8, 1) → level2Typ12ElementsJoin({Sequence[{level2Typ3Points(i), level2Typ3Points(i + 1), level2Typ3Points(i + 8)}, i, 1, 6], Sequence[{level2Typ3Points(i), level2Typ3Points(i + 1), level2Typ3Points(i - 7)}, i, 8, 13]}) → level2Typ3ElementsZip(Sequence[a + (Distance[level2Typ4Points(1), level2Typ4Points(2)] / 8 * (cos(i°), sin(i°))), i, (0 * 360), (1 * 360), 14], a, Join[{level2Typ4Points, level2Typ4PointsE, level2Typ4PointsE2}]) → level2Typ4ElementsJoin({Sequence[{level2Typ6Points(i), level2Typ6Points(i + 1), level2Typ6Points(i + 8), level2Typ6Points(i + 7)}, i, 1, 6], Sequence[{level2Typ6Points(i), level2Typ6Points(i + 1), level2Typ6Points(i - 6), level2Typ6Points(i - 7)}, i, 15, 20]}) → level2Typ6ElementsJoin({Sequence[{level2Typ9Points(i), level2Typ9Points(i + 1), level2Typ9Points(i + 11), level2Typ9Points(i + 10)}, i, 1, 9], Sequence[{level2Typ9Points(i), level2Typ9Points(i + 1), level2Typ9Points(i - 9), level2Typ9Points(i - 10)}, i, 21, 29]}) → level2Typ9ElementsJoin({Sequence[{level2Typ7Points(i), level2Typ7Points(i + 1), level2Typ7Points(i + 8), level2Typ7Points(i + 7)}, i, 1, 6, 4], Sequence[{level2Typ7Points(i + 1), level2Typ7Points(i + 2), level2Typ7Points(i + 9), level2Typ7Points(i + 8)}, i, 1, 6, 4], Sequence[{level2Typ7Points(i), level2Typ7Points(i + 1), level2Typ7Points(i + 8), level2Typ7Points(i + 7)}, i, 9, 12, 1], Sequence[{level2Typ7Points(i), level2Typ7Points(i + 1), level2Typ7Points(i + 8), level2Typ7Points(i + 7)}, i, 16, 19, 1], Sequence[{level2Typ7Points(i), level2Typ7Points(i + 1), level2Typ7Points(i + 8), level2Typ7Points(i + 7)}, i, 22, 26, 4], Sequence[{level2Typ7Points(i + 1), level2Typ7Points(i + 2), level2Typ7Points(i + 9), level2Typ7Points(i + 8)}, i, 22, 26, 4]}) → level2Typ7ElementsFlatten(Sequence[Sequence[Rotate[level2Typ8Points(j) + (0, 0.61), (i * (360°) / 6) + 30°, level2Typ8Points(j)], i, 0, 5], j, 1, 9]) → level2Typ8PointsESequence({level2Typ8PointsE(i), level2Typ8PointsE(i + 1), level2Typ8PointsE(i + 2), level2Typ8PointsE(i + 3), level2Typ8PointsE(i + 4), level2Typ8PointsE(i + 5)}, i, 1, Length[level2Typ8PointsE], 6) → level2Typ8ElementsIf(level ≟ 1, level1ActualRandomElements, If[level ≟ 2, level2ActualElements, If[level ≟ 3, level3ActualElements, 1]]) → valueElementsDilate(darstellungRand, factorSolution, solutionPosition) → darstellungRandSolutionDilate(darstellungElement1, factorSolution, solutionPosition) → darstellungElement1SolutionDilate(darstellungElement2, factorSolution, solutionPosition) → darstellungElement2SolutionDilate(darstellungElement3, factorSolution, solutionPosition) → darstellungElement3SolutionDilate(darstellungElement4, factorSolution, solutionPosition) → darstellungElement4SolutionDilate(darstellungElement5, factorSolution, solutionPosition) → darstellungElement5SolutionDilate(darstellungElement6, factorSolution, solutionPosition) → darstellungElement6SolutionDilate(darstellungElement7, factorSolution, solutionPosition) → darstellungElement7SolutionDilate(darstellungElement8, factorSolution, solutionPosition) → darstellungElement8SolutionDilate(darstellungElement9, factorSolution, solutionPosition) → darstellungElement9SolutionDilate(darstellungElement10, factorSolution, solutionPosition) → darstellungElement10SolutionDilate(darstellungElement11, factorSolution, solutionPosition) → darstellungElement11SolutionDilate(darstellungElement12, factorSolution, solutionPosition) → darstellungElement12SolutionDilate(darstellungElement13, factorSolution, solutionPosition) → darstellungElement13SolutionDilate(darstellungElement14, factorSolution, solutionPosition) → darstellungElement14SolutionDilate(darstellungElement15, factorSolution, solutionPosition) → darstellungElement15SolutionDilate(darstellungElement16, factorSolution, solutionPosition) → darstellungElement16SolutionDilate(darstellungElement17, factorSolution, solutionPosition) → darstellungElement17SolutionDilate(darstellungElement18, factorSolution, solutionPosition) → darstellungElement18SolutionIf(level ≟ 2, actualLevel2Task(3), If[level ≟ 3, actualLevel3Task(4), {1, 2}]) → numberSolutionElementsIndividualIf(level ≟ 1, numberSolutionElementsFix, numberSolutionElementsIndividual) → numberSolutionElementsJoin({Sequence[{level2Typ5Points(i), level2Typ5Points(i + 1), level2Typ5Points(i + 9), level2Typ5Points(i + 8)}, i, 1, 5], Sequence[{level2Typ5Points(i), level2Typ5Points(i + 1), level2Typ5Points(i - 5), level2Typ5Points(i - 6)}, i, 15, 19]}) → level2Typ5ElementsVector(Corner[txtKlickMich, 1] + (0.5, -0.0), Corner[txtKlickMich, 1] + (0.8, -0.4)) → arrowKlickMich