整数加减法可视化:用几何点与多边形演示正负数运算
几何画板及绘图内容加载中,请稍等……
① 本范例通过二维平面上的点、圆和多边形,直观演示整数加法和减法的运算过程,帮助学习者理解正负数的合并与抵消。② 核心数学概念包括整数运算、相反数、绝对值以及数轴上的位移,同时涉及随机变量和序列的生成。③ 作图要点:使用GeoGebra的Sequence和If命令生成正负点集,通过Flatten和SelectedElement管理列表,利用Textfield和InputBox创建交互输入,并用positiveCircles、negativeCircles等对象表示正负数,配合addStep1mover、subStep1mover等移动器展示逐步运算。④ 适合小学高年级至初中学生,作为整数运算的互动教具,也可用于教师课堂演示或学生自主探索。
GeoGebra 命令及参数
Flatten(Sequence[Sequence[Point[{i, (-j)}], i, 1 / 2, 1 / 2 + floor(sqrt(If[n1 < 0, (-n1) + n1AddedNegative, n1AddedNegative])), 1], j, 1 / 2, 1 / 2 + floor(sqrt(If[n1 < 0, (-n1) + n1AddedNegative, n1AddedNegative])), 1]) → negativePointsSequence(Max[abs(x(Element[negativePoints, i])), abs(y(Element[negativePoints, i]))], i, 1, Length[negativePoints]) → negativeSorterIf(Length[negativePoints] > 0, First[Sort[negativePoints, negativeSorter], Max[(-n1) + n1AddedNegative, n1AddedNegative]], {}) → sortedNegativePointsTextfield(n1text) → InputBox1Textfield(n2text) → InputBox2Flatten(Sequence[Sequence[Point[{i, j}], i, 1 / 2, 1 / 2 + floor(sqrt(If[n1 > 0, n1 + n1AddedPositive, n1AddedPositive])), 1], j, 1 / 2, 1 / 2 + floor(sqrt(If[n1 > 0, n1 + n1AddedPositive, n1AddedPositive])), 1]) → positivePointsSequence(Max[abs(x(Element[positivePoints, i])), abs(y(Element[positivePoints, i]))], i, 1, Length[positivePoints]) → positiveSorterIf(Length[positivePoints] > 0, First[Sort[positivePoints, positiveSorter], Max[n1 + n1AddedPositive, n1AddedPositive]], {}) → sortedPositivePointsIf(Length[sortedNegativePoints] > 0, Sequence[Circle[Element[sortedNegativePoints, i], 0.4], i, 1, Length[sortedNegativePoints]], {}) → negativeCirclesIf(Length[sortedPositivePoints] > 0, Sequence[Circle[Element[sortedPositivePoints, i], 0.4], i, 1, Length[sortedPositivePoints]], {}) → positiveCirclesIf((n1 * n2) < 0, Min[abs(n1), abs(n2)], 0) → extraZerosSelectedElement(addOrSub) → operationTextfield(n1Text) → InputBox3If(operation ≟ "+", n1 + n2, n1 - n2) → answerIf(Max[{n1, n2, answer}] > 0, Max[{n1, n2, answer}], 0) → highestPositiveIf(Min[{n1, n2, answer}] > 0, 0, Min[{n1, n2, answer}]) → lowestNegativeIf(highestPositive ≟ lowestNegative, 10, ceil(sqrt(highestPositive))) → topSequence(Text["+", Element[sortedPositivePoints, i] - (right / 50, (top + bottom) / 40)], i, 1, Length[sortedPositivePoints]) → plusSignsSequence(Text["-", Element[sortedNegativePoints, i] - (right / 65, (top + bottom) / 40)], i, 1, Length[sortedNegativePoints]) → minusSigns