Automatisches Feedback bei richtiger Kontruktion

suzhouking shared this question 9 years ago
Answered

Wie kann ich innerhalb eines dynamischen Arbeitsblatts ein Feedback definieren, das der Schüler erhält, sobald er eine Konstruktion richtig getätigt hat? Vielleicht mal an einem einfachen Beispiel: Die Spiegelachse zu zwei vorgegebenen Punkten soll konstruiert werden. Der Schüler zeichnet also zwei Kreise, schneidet sie und legt schließlich eine Gerade durch die Schnittpunkte. Zack - an der Stelle sollte dann eine Bestätigung, z.B. "richtig!" aufleuchten. Geht das - und wenn ja wie?

Comments (10)

photo
1

Wie kann ich innerhalb eines dynamischen Arbeitsblatts ein Feedback definieren, das der Schüler erhält, sobald er eine Konstruktion richtig getätigt hat? Vielleicht mal an einem einfachen Beispiel: Die Spiegelachse zu zwei vorgegebenen Punkten soll konstruiert werden. Der Schüler zeichnet also zwei Kreise, schneidet sie und legt schließlich eine Gerade durch die Schnittpunkte. Zack - an der Stelle sollte dann eine Bestätigung, z.B. "richtig!" aufleuchten. Geht das - und wenn ja wie?

Hallo,

du benötigst vorher schon die Lösungsgerade, die du verstecken kannst. Nehmen wir an, sie heißt "a".

Der Text "richtig" sollte auch schon vorliegen. Die von den Schülern zu konstruierende Lösungsgerade

sei eine Gerade b.

Für den Text gibst du unter "Eigenschaften - Erweitert - Bedingung um Objekt anzuzeigen" einfach ein:

a==b


Das Problem ist aber Folgendes: wenn die Schüler einen umständlicheren Weg wählen, in dessen Verlauf weitere Geraden konstruiert werden, erhalten diese die Bezeichnungen b, c, d usw., und die endgültige Gerade hat gar nicht mehr der erwarteten Namen "b".

Deine Gerade b müsste also schon vorher durch zwei Punkte (z.B. A und B) vordefiniert irgendwo auf dem Zeichenblatt liegen. Nach Abschluss ihrer Konstruktion müssten die Schüler durch Ziehen der Punkte A und B diese Gerade AB genau auf ihre Lösungsgerade drauflegen.

Das wird vermutlich nie so ganz genau klappen, weshalb eine gewisse Fehlertoleranz eingebaut werden müsste.

Als Sichtbarkeitsbedingung für den Text könnte man nehmen:

Abstand[A,a]<0.01 ∧ Abstand[B,a]<0.01


Gruß Abakus

photo
1

Du konntest den Schüler auch bitten, die Gerade zu konstruieren und ihr dann einen vorderfienierten Namen zu geben. Dann, so wie abakus es vorschlägt, mit der versteckten Lösung per knopfdruck vergleichen.


Bei komplexeren Aufgabenstellungen einfach die richtige Lösung versteckt hinterlegen und bei Bedarf einblenden. Der schüler kann dann selbst abschätzen ob es richtig war oder nicht.


Grüße

Ralf

photo
1

Hallo suzhouking,


Nach einigen Irrwegen habe ich eine Lösung zu diesem interessanten Problem gefunden.


Zur Lösung müssen unter anderem folgende Schwierigkeiten umgangen werden:


1)

Wie bereits von abakus angemerkt, kann der Name der Spiegelachse

ein beliebiger Name sein.

Lösung: Mittels einer Liste {"a","b" usw "z"} und dem Befehl Objekt["name"]

die tatsächlich verwendeten Objektnamen extrahieren.


2)

In 1) dürfen nur die Namen der Objekte vorhanden sein, die einer

Geraden entsprechen. Ansonsten führen die folgenden Vergleichsbefehle

zu Fehlern.

Lösung: Als erstes Objekt wird die (versteckte) Gerade mit dem Namen

"Lösung" aufgeführt. Damit sind alle folgenden Objekte der Liste

entweder leer oder eine Gerade. Siehe Hilfsobjekt Li1.


3)

Der Vergleich zweier Geraden führt nicht immer zur Gleichheit, selbst

dann, wenn die Geraden identisch sind. Je nach dem Weg der Konstuktion

kann eine abweichende Gleichung bei identischen Geraden entstehen.

Lösung: Anstelle der Geradengleichung wird die Steigung AND die Nullstelle

verglichen. Um Rundungsfehlern entgegen zu wirken wird die Differenz verglichen

Siehe Hilfsobjekt Li2.


Anmerkung1:

Anstelle des Befehles Zip[] hätte auch der Befehl Folge[] verwendet werden

können. Ich persönlich finde den Befehl Zip kompakter und lesbarer.


Anmerkung2:

Sofern GG weitere Befehle zur Verfügung stellen würde, könnte die Kontrolle

einer Konstruktion um einiges effizienter und transparenter erfolgen.

- Typenprüfungs-Befehl

- Zugriff auf das Konstruktionsprotokoll als (mehrdimensionale) Liste,

die per Folge[] oder Zip[] erkundet/gefiltert werden kann.


oder spezifisch für die genannte Anforderung:

WennIdentisch[Lösungsobjekt,Toleranz]-> liefert eine Liste der zum LösungsObjekt identischen Objekte.


Im Anhang ein Beispiel in GG4.0.

Hier hätte die erste vorgegeben Lösung (Mittelsenkrechte a) auch weggelassen werden können.

Lösungswege:

- Geogebra Mittelsenkrechte

- Gleichschenkliges Dreieck mit Kreisen um A und B

- Gleichseitiges Dreieck mit Drehen der Punkte A und B um je 60°

und weitere


Gruss

Raymond

https://ggbm.at/550763

photo
1

Und noch ein Beispiel mit einer Dreieckskonstruktion in GG4.0

https://ggbm.at/550767

photo
1

Vielen herzlichen Dank, ich denke, damit komme ich weiter! Danke auch den anderen Nutzern für ihre Vorarbeit!

photo
1

Hallo Rami,


vor zwei Jahren hast du mir super geholfen, als es darum ging, Arbeitsblätter mit Feedback zu erstellen (s.u.). Ich habe mich dann ziemlich genau an deine Vorgaben gehalten und alles hat geklappt. Jetzt bin ich gerade dabei, die damals in GeoGebra 4.0 erstellten ggb-Dateien mit der aktuellen Version von GeoGebra zu bearbeiten, um sie dann in die Tube zu laden. Problem: der früher verborgene Text "richtig" ist jetzt jetzt von Anfang an sichtbar. Die Bedingung "Länge[Li2] > 1" scheint von Haus aus erfüllt. Ich blicke da nicht durch und würde mich freuen, wenn du mir noch einmal helfen könntest. Im Anhang ein entsprechendes Blatt.


Hallo suzhouking,


Nach einigen Irrwegen habe ich eine Lösung zu diesem interessanten Problem gefunden.


Zur Lösung müssen unter anderem folgende Schwierigkeiten umgangen werden:


1)

Wie bereits von abakus angemerkt, kann der Name der Spiegelachse

ein beliebiger Name sein.

Lösung: Mittels einer Liste {"a","b" usw "z"} und dem Befehl Objekt["name"]

die tatsächlich verwendeten Objektnamen extrahieren.


2)

In 1) dürfen nur die Namen der Objekte vorhanden sein, die einer

Geraden entsprechen. Ansonsten führen die folgenden Vergleichsbefehle

zu Fehlern.

Lösung: Als erstes Objekt wird die (versteckte) Gerade mit dem Namen

"Lösung" aufgeführt. Damit sind alle folgenden Objekte der Liste

entweder leer oder eine Gerade. Siehe Hilfsobjekt Li1.


3)

Der Vergleich zweier Geraden führt nicht immer zur Gleichheit, selbst

dann, wenn die Geraden identisch sind. Je nach dem Weg der Konstuktion

kann eine abweichende Gleichung bei identischen Geraden entstehen.

Lösung: Anstelle der Geradengleichung wird die Steigung AND die Nullstelle

verglichen. Um Rundungsfehlern entgegen zu wirken wird die Differenz verglichen

Siehe Hilfsobjekt Li2.


Anmerkung1:

Anstelle des Befehles Zip[] hätte auch der Befehl Folge[] verwendet werden

können. Ich persönlich finde den Befehl Zip kompakter und lesbarer.


Anmerkung2:

Sofern GG weitere Befehle zur Verfügung stellen würde, könnte die Kontrolle

einer Konstruktion um einiges effizienter und transparenter erfolgen.

- Typenprüfungs-Befehl

- Zugriff auf das Konstruktionsprotokoll als (mehrdimensionale) Liste,

die per Folge[] oder Zip[] erkundet/gefiltert werden kann.


oder spezifisch für die genannte Anforderung:

WennIdentisch[Lösungsobjekt,Toleranz]-> liefert eine Liste der zum LösungsObjekt identischen Objekte.


Im Anhang ein Beispiel in GG4.0.

Hier hätte die erste vorgegeben Lösung (Mittelsenkrechte a) auch weggelassen werden können.

Lösungswege:

- Geogebra Mittelsenkrechte

- Gleichschenkliges Dreieck mit Kreisen um A und B

- Gleichseitiges Dreieck mit Drehen der Punkte A und B um je 60°

und weitere


Gruss

Raymond

https://ggbm.at/564405

photo
1

Hallo suzhouking,


Ich vermute, dass das Arbeitsblatt unter GBB-4.0 nur desshalb funktioniert hat weil bezüglich Objekt[] ein (inzwischen behobener) GGB-Bug wirksam war.


Nun habe ich Li1 so angepasst, dass anstelle der Objektnamen (als String) der Wert resp. die Funktion für alle Objekte (a..z) erstellt wird.


Da Nullstelle[] in einen schwierig zu lesenden Ausdruck umgewandelt wird, habe ich in Li2 die Ueberpüfung der Uebereinstimmung der potentiellen Lösung mit der vorgegebenen Lösung umformuliert. Neu wird nebst der Steigung die Uebereinstimmung des Mittelpunkt[A,B] mit dem Schnittpunkt der potentiellen Lösung mit der Strecke[A,B] überprüft.


Da Steigung[] für eine Senkrechte auf undefiniert führt, dürfen die beiden Punkt (A,B) keine Parallele zur xAchse bilden.


Raymond

https://ggbm.at/564417

photo
1

Danke vielmals, Raymond, für die schnelle Hilfe. Ich habe mir die Sache gestern auch noch einmal genauer angeschaut und festgestellt, dass es (für dich nicht neu) ja daran liegt, dass in die Li1 dort, wo zunächst Fragezeichen für die nicht definierten Objekte stehen sollten, das letzte definierte Objekt ("Lösung") wiederholt eingesetzt wird. Kann man das nicht irgendwie beheben? Der Aufbau deines alten Algorithmus ist ja schließlich ziemlich logisch, nicht logisch ist für mich, dass er statt "?" immer das alte Objekt der Liste wiederholt.


Ich frage auch deshalb, weil ich um die 100 Blätter ändern müsste (darunter auch Überprüfung von Punkten) und mir natürlich viel leichter täte, wenn ich pro Blatt nur bei Li1 etwas ändern müsste.


Gruß


Rainer


Hallo suzhouking,


Ich vermute, dass das Arbeitsblatt unter GBB-4.0 nur desshalb funktioniert hat weil bezüglich Objekt[] ein (inzwischen behobener) GGB-Bug wirksam war.


Nun habe ich Li1 so angepasst, dass anstelle der Objektnamen (als String) der Wert resp. die Funktion für alle Objekte (a..z) erstellt wird.


photo
1

Ein Problem besteht darin, dass Li1 nicht umdefiniert werden kann ohne Li2 zu löschen.

Man könnte stattdessen Li2 wie folgt ergänzen:

Li2 = Anfügen["Lösung", BehalteWenn[T ≠ "Lösung", T, EntferneUndefiniert[Zip[Wenn[(abs(Steigung[Lösung] - Steigung[Objekt[xx]]) < 0.00001) ∧ (abs(Nullstelle[-(x(Lösung) / y(Lösung)) x - z(Lösung) / y(Lösung)] - Nullstelle[-(x(Objekt[xx]) / y(Objekt[xx])) x - z(Objekt[xx]) / y(Objekt[xx])]) < 0.00001), xx, ?], xx, Li1]]]]


Ich bin nicht sicher ob es immer funktioniert und ich finde es hässlich.


Zur Zeit bastle ich an einer generellen Lösung als Makro. Falls es mir gelingt, so wäre der Aufwand für die Aenderung am geringsten.


Eine Alternative bestände allenfalls darin einen globalen JavaScript zu erstellen, der Li2 neu definiert und updatet sowie Li1 löscht. Dabei wäre auch wichtig zu wissen welche Objekt-Typen als Lösung in Frage kommen (zB Punkt, Strahl, Strecke, Gerade, Funktion, Gleichung, Kreis....usw)


Raymond

https://ggbm.at/564425

photo
1

Leuchtet ein - vielen Dank!


Ein Problem besteht darin, dass Li1 nicht umdefiniert werden kann ohne Li2 zu löschen.

© 2021 International GeoGebra Institute