Arrays: Dreieckstausch

    Wir k├Ânnen bisher Daten in einem Array speichern und diese ausgeben. Was man in der Praxis dabei h├Ąufig braucht, ist das Vertauschen von Elementen. Das hei├čt, dass zwei Elemente ihre Position im Array tauschen sollen.

    So etwas braucht man z.B. in einem Spiel, wenn eine Spielfigur einen Gegenstand aus ihrem Inventar nimmt, um diesen in die Hand zu nehmen. Meist muss man daf├╝r einen anderen Gegenstand, den man bisher in der Hand hatte, zur├╝ck ins Inventar legen. Die beiden Gegenst├Ąnde tauschen also ihre Position.

    Wie tauschen wir die Waffen?

    Wir werden uns nun anschauen, wie man einen solchen Tausch programmiert. ├ľffnen Sie daf├╝r das Projekt 7130-Arrays-dreieckstausch-2-waffen-AUFGABE

    In dem Programm geht es darum: Wir haben eine Waffe in der linken und eine in der rechten Hand. Diese beiden Waffen wollen wir mit der Leertaste vertauschen!

    L├Âsungsidee

    Am Anfang sieht unser Array so aus:

    So, dann k├Ânnen wir ja mal einfach tauschen! Das m├╝sste doch so gehen:

    Sieht doch logisch aus, oder? Ein Element im Array wird durch das andere ersetzt. Wenn Sie das Programm laufen lassen, sieht unser Array dann so aus:

    Hoffentlich sehen Sie das Problem! Wenn wir das 1. Element durch das 2. Element ersetzen, verlieren wir das 1. Element. Wir wissen dann auch nicht mehr, was vorher im Array an der ersten Position stand!

    Wenn Sie das Problem erkannt haben, kommen Sie vielleicht auch selbst auf die L├Âsung: Wir m├╝ssen das 1. Element "in Sicherheit bringen", bevor wir es ├╝berschreiben k├Ânnen! Das erreichen wir, indem wir uns den Inhalt des 1. Elements in der Variablen zwischenspeicher merken.

    Jetzt k├Ânnen wir das 1. Element durch das 2. Element ersetzen:

    Im letzten Schritt ├╝berschreiben wir das 2. Element mit dem Wert der Variable zwischenspeicher:

    Wenn Sie sich die obige Darstellung anschauen, wird Ihnen bestimmt sofort klar, warum man diese Form des Vertauschens von Elementen Dreieckstausch nennt!

    Darstellung des Dreieckstauschs im Struktogramm

    Das folgende Struktogramm stellt das Prinzip des Dreieckstauschs dar: Erstes Element in den Zwischenspeicher, zweites Element auf erste Position kopieren, Zwischenspeicherinhalt auf zweite Position kopieren:

    Struktogramm zum Dreieckstausch (MInimalversion)

    Als aufmerksame Sch├╝ler/in k├Ânnte man jetzt auf die Idee kommen, an dem oberen Struktogramm herumzum├Ąkeln, es sei nicht genau genug:

    1. Das Unterprogramm (Funktion, Methode ÔÇŽ), das wir im Struktogramm beschreiben, hei├čt nicht Dreieckstausch, sondern arrayWerteTauschen.
    2. Im oberen Struktogramm fehlt die Deklaration der Variablen zwischenspeicher
    3. Wenn zwischenspeicher zum ersten Mal einen Wert zugewiesen bekommt, ist das als Initialisierung zu bezeichnen.

    Ok. Alles klar, hier nochmal vollst├Ąndig:

    Struktogramm zum Dreieckstausch - ausgiebige Version

    Aufgaben zum Dreieckstausch

    (1) Waffen tauschen

    ├ľffnen Sie das Projekt 7130-Arrays-dreieckstausch-2-waffen-AUFGABE und programmieren Sie den Dreieckstausch wie oben im Struktogramm dargestellt. Erstellen Sie den Programmcode an dieser Stelle:

    (2) Zombie-Attack

    W├Ąhlen Sie Ihre Waffe im Spiel Zombie-Attack! ├ľffnen Sie hierzu das Projekt 7135_Array_Tausch-AUFGABE

    So soll es funktionieren:

    Die Spielfigur h├Ąlt immer die Waffe auf der Position 1 in den H├Ąnden. Wenn Sie eine andere Waffe w├Ąhlen wollen, m├╝ssen Sie auf den gr├╝nen Button neben der gew├╝nschten Waffe klicken. Diese Waffe soll dann mit dem Element 1 die Positionen tauschen.

    Erkl├Ąrvideo: Dreieckstausch

    Arbeitsblatt: Dreieckstausch

    Arbeitsblatt ┬╗Dreieckstausch - Elemente im Array vertauschen┬ź (PDF)