3: Ein Algorithmus in Processing

Aus Informatik-Box
Zur Navigation springen Zur Suche springen
Icon Chalk board.png
Was du in diesem Schritt lernst
  • Grundstruktur eines Processing-Programms.
  • Verwendung von Befehlen in Java.


Wir definieren einen Algorithmus durch seine Eingabe und die erwartete Ausgabe. Zum Beispiel

Eingabe: zwei ganze Zahlen (a und b)
Ausgabe: die Summe der Zahlen

Dieser Algorithmus lässt sich in einer ersten Version in Processing so programmieren:

// Eingabe: zwei ganze Zahlen (a und b)
int a = 5;
int b = 3;

// Ausgabe: die Summe der Zahlen
print(a + b);
Processing 2021 logo.svg
Arbeitsauftrag
  1. Probier den Algorithmus in Processing aus.


Du siehst die Ausgabe der Summe im Textfenster unten. Verändere die Zahlen für a und b und starte das Programm erneut.

Icon Info.png

Zeilen, die mit // beginnen, werden von Processing ignoriert. Sie dienen als Kommentare, um das Programm besser zu verstehen.

Dir ist sicher aufgefallen, dass sich beim Start ein kleines Fenster geöffnet hat. Processing ist auf Grafikprogrammierung ausgelegt. In dieses Fenster kannst du mit den Befehlen von Processing zeichnen und so "grafische Algorithmen" programmieren. Hier ist ein Beispiel:

Eingabe: keine
Ausgabe: Zeichne ein Quadrat der Kantenlänge vierzig
// Zeichne ein Quadrat der Kantenlänge vierzig
line(0,0, 40,0);
line(40,0, 40,40);
line(40,40, 0,40);
line(0,40, 0,0);
Processing 2021 logo.svg
Arbeitsauftrag
  1. Probier den Algorithmus in Processing aus.
  2. Mach dir klar, was die Zahlen in den line-Befehlen bedeuten. Wofür stehen die Zahlenpaare?
  3. Erstelle einen Algorithmus zu dieser Definition:
    Eingabe: zwei Zahlen
    Ausgabe: ein Rechteck mit den angegebenen Kantenlängen
    
Lösung

Die Zahlenpaare stehen für die Anfangs- und Endkoordinaten der zu zeichnenden Linie. Das Zeichenfenster besitzt also ein Koordinatensystem, in dem die Koordinaten Punkte im Fenster darstellen.

Mit diesem Wissen lässt sich das Programm umschreiben, indem die passenden Koordinaten gegen die Eingaben a bzw. b getauscht werden.

// Breite / Höhe des Rechtecks
int a = 40;
int b = 80;

// Zeichne ein Rechteck der Kantenlängen a und b
line(0,0, a,0);
line(a,0, a,b);
line(a,b, 0,b);
line(0,b, 0,0);


Processing 2021 logo.svg
Zusatzaufgabe

Modifiziere das Programm so, dass das Rechteck nicht oben links gezeichnet wird, sondern an der Position (x, y), die auch eine Eingabe des Algorithmus ist.

Lösung Zusatzaufgabe
// Breite / Höhe des Rechtecks
int a = 40;
int b = 80;
// Position des Rechtecks
int x = 10;
int y = 20;

// Zeichne ein Rechteck der Kantenlängen a und b
// an der Position (y|y)
line(x,y, x+a,y);
line(x+a,y, x+a,y+b);
line(x+a,y+b, x,y+b);
line(x,y+b, x,y);
Processing 2021 logo.svg
Zusatzaufgabe

Modifiziere das Programm nun so, dass sich nicht die obere linke Ecke des Rechtecks am Punkt (x, y) befindet, sondern das Zentrum.

Lösung Zusatzaufgabe
// Breite / Höhe des Rechtecks
int a = 40;
int b = 80;
// Position des Rechtecks
int x = 10;
int y = 20;

// Zeichne ein Rechteck der Kantenlängen a und b
// an der Position (y|y)
line(x-(a/2),y-(b/2), x+(a/2),y-(b/2));
line(x+(a/2),y-(b/2), x+(a/2),y+(b/2));
line(x+(a/2),y+(b/2), x-(a/2),y+(b/2));
line(x-(a/2),y+(b/2), x-(a/2),y-(b/2));