Lernpfad:Einführung in Processing/8: Unterschied zwischen den Versionen

Aus Informatik-Box
Zur Navigation springen Zur Suche springen
Markierung: Manuelle Zurücksetzung
Zeile 108: Zeile 108:
Wenn wir wieder an einen Schrank denken, dann könnte man sagen, der Schrank ist nur in dem Raum zugänglich, in dem er steht. Wenn ich in einem anderen Raum (Block) bin, habe ich keinen Zugriff mehr auf die Schubladen.   
Wenn wir wieder an einen Schrank denken, dann könnte man sagen, der Schrank ist nur in dem Raum zugänglich, in dem er steht. Wenn ich in einem anderen Raum (Block) bin, habe ich keinen Zugriff mehr auf die Schubladen.   


Zur Erinnerung: Ein Block wird durch <code>{</code> und <code>}</code> markiert.
{{Hinweis|Zur Erinnerung: Ein Block wird durch <code>{</code> und <code>}</code> markiert.}}


Was aber, wenn sich eine Variable in gar keinem Block befindet?
Was aber, wenn sich eine Variable in gar keinem Block befindet?

Version vom 7. November 2021, 22:59 Uhr

Interaktionen mit der Maus basieren auf besonderen Schlüsselwörtern wie mouseX. Diese Schlüsselwörter nennt man Variablen.

Variablen kannst du dir wir Schubladen in einem Schrank vorstellen: Das Programm kann in jede Schublade etwas hineinlegen (einen Wert speichern) und dieses Etwas jederzeit wieder herausholen.

Processing legt vor jedem Aufruf von draw() die aktuelle x-Koordinate der Maus als Zahl in die "Schublade" mit der Aufschrift mouseX und dein Programm kann dann darauf zugreifen und diese Zahl benutzen. Dazu musst du nur den Namen der Schublade angeben. Praktisch, oder?

Variablen benutzen

Das schöne ist, das du auch selber Variablen anlegen und in ihnen etwas speichern kannst. Das hast du auch schon mehrfach getan. Kannst du dich erinnern, wann das war? Denk nochmal an die bisherigen Schritte...

Direkt in Schritt 3 hast du Variablen benutzt, um die Eingabe des ersten Algorithmus zu definieren:

int a = 3;
int b = 5;

println(a + b);

a und b sind auch Variablen. In Zeile 1 und 2 werden die Variablen deklariert (erstellt) und mit Werten initialisiert (befüllt). In Zeile 4 wird auf die Inhalte der Variablen zugegriffen, indem ihr Name angeben wird.

Variablen erstellen

Das sind immer die Schritte, die zur Benutzung einer neuen Variablen ausgeführt werden müssen:

Deklaration
Zuerst muss der Computer wissen, wieviel Speicherplatz benötigt wird und wie er diesen benennen soll. Der Computer sucht quasi im Schrank eine leere Schublade die groß genug ist und schreibt einen Namen drauf.
int a;
Initialisierung
Wir müssen in die neue Schublade nun zum ersten Mal etwas hineinlegen. Dazu weisen wir der Variablen einen Wert zu.
a = 3;

Verschiedene Arten von Daten benötigen mehr oder weniger Speicherplatz. Deshalb musst du bei der Deklaration angeben, von welchem Typ die Daten sind. Zum Beispiel steht int für ganze Zahlen.

Wir konzentrieren uns auf folgende Datentypen:

Datentyp Art der Daten Beispiel
int ganze Zahlen int zahl = 5;
float Dezimalzahlen (Kommazahlen) float zahl = 5.3;
boolean Wahrheitswerte (true und false) boolean wahr = true;
char Ein einzelnes Zeichen (Buchstabe, Ziffer, Sonderzeichen, ...)

Achtung: Ein char muss mit einfachen Anführungszeichen angegeben werden.

char einKomma = ',';
String Texte

Achtung: String wird im Gegensatz zu den anderen groß geschrieben! Im Gegensatz zu chars werden sie mit doppelten Anführungszeichen angegeben.

String einText = "Hallo Welt!";
Icon Heft.png
Arbeitsauftrag
  1. Probier dieses Programm aus.
    void setup() {
        size(400, 400);
    }
    
    void draw() {
      int x1 = mouseX - 50;
      int y1 = mouseY - 30;
      int x2 = mouseX + 50;
      int y2 = mouseY + 30;
      
      background(200);
      line(x1, y1, x2, y2);
    }
    


Globale und lokale Variablen

Nicht alle Variablen lassen sich überall benutzen.

Icon Heft.png
Arbeitsauftrag

Probier das Programm aus und lies die Fehlermeldung. Wo liegt der Fehler? Korrigiere das Programm.

void setup() {
    size(400, 400);

    int a = 50;
}

void draw() {
    int x = 30;
    int y = 80;

    rect(x, y, a, a);
}


Wie du siehst, kann eine Variable aus setup() nicht in draw() benutzt werden. Das liegt daran, das Variablen nur in dem Block gültig sind, in dem sie deklariert werden.

Wenn wir wieder an einen Schrank denken, dann könnte man sagen, der Schrank ist nur in dem Raum zugänglich, in dem er steht. Wenn ich in einem anderen Raum (Block) bin, habe ich keinen Zugriff mehr auf die Schubladen.

Icon Info.png
Zur Erinnerung: Ein Block wird durch { und } markiert.

Was aber, wenn sich eine Variable in gar keinem Block befindet?

Icon Heft.png
Arbeitsauftrag
  1. Probier das Programm aus.
    int frame = 0;
    
    void setup() {
        size(400, 400);
        frame = frame + 1;
    }
    
    void draw() {
        println(frame);
    }
    
  2. Das Programm funktioniert. frame befindet sich außerhalb aller Blöcke und ist überall gültig. Sozusagen global.
    Modifiziere es so, dass es die Anzahl an Frames zählt, die das Programm bisher läuft. (Jeder Aufruf von draw() ist ein Frame.)


Übungsaufgaben

Icon Heft.png
Arbeitsauftrag
  1. Schreibe ein Programm, dass die Anzahl der Mausklicks mitzählt und auf die Zeichenfläche schriebt.
    Klicken, um das Programm zu starten.
  2. Schreibe ein Programm, dass sich bei einem Mausklick die Mausposition merkt und eine Linie von der gespeicherten Position zur Maus zeichnet.
    Klicken, um das Programm zu starten.