Wiki: Mathe und Info

Unterrichtsmaterialien für Mathematik und Informatik

Benutzer-Werkzeuge

Webseiten-Werkzeuge


info:sek-ii:e2:processing:p1-grundlagen-1

Grundlagen von Processing

Wie arbeitet ein Computer?

Einführungsvideo
Informationen mit dem Computer darstellen1)

Die hier folgende Darstellung soll einen groben Überblick dazu geben, wie Computer mit den hier relevanten Informationen umgehen. Die hier verwendete Programmierumgebung nennt sich Processing und stellt vor Allem Inhalte graphisch dar. Es wird in keiner Weise eine allgemeine Einführung in die Arbeitsweise eines Computers gegeben. Nun aber genug der langen Rede, wir legen direkt los.

Ein Computer kann sehr schnell mit Zahlen rechnen, nicht mehr und nicht weniger. Als Rechenmaschine stellt der Computer heutzutage ein sehr viel genutztes Hilfsmittel dar. Er tätigt Berechnungen und nimmt uns alltägliche Aufgaben ab. Damit ein Computer dazu in der Lage ist uns Aufgaben abzunehmen, muss er jedoch ersteinmal selbst erklärt bekommen, was er zu tun hat. Dieses "Beibringen" nennt man Programmieren. Hierbei gibt es unter anderem einen wichtigen Punkt zu beachten. Computer brauchen eindeutige Informationen, das heißt, sie benötigen ihre Informationen in einer sehr strikt beschriebenen Art und Weise. Hieraus resultieren die strengen Syntax-Vorgaben beim Programmieren.

Beispiel für lesbare Anweisungen
Ein einfaches Beispiel für eine vom Computer lesbare Anweisung wäre die abgebildete Linie. Hier würde der passende Befehle in der hier beschriebenen Programmiersprache wie folgt lauten:

line(30, 50, 90, 20);

Hier bekommt der Computer die genaue Information, wo die Linie anfängt und wo sie aufhört. Außerdem ist hier die genaue Syntax eingehalten, also die Art, wie der Befehl aufgeschrieben wird. Solche Befehle nennen wir Methoden. Wir werden im Verlauf der Unterrichtsreihe noch genauer lernen, was Mehtoden sind, außerdem gibt es neben den Methoden noch weitere Statements, die ein Computer ausführen kann, wie z.B. Verzweigungen oder Wiederholungen, auch diese wwerden wir mit der Zeit noch kennen lernen.

Algorithmen: Schritt für Schritt zum Ziel | Impulse | ARTE
Aufgabe 1 - Fachkonzept Methodenaufruf

Lies dir das Fachkonzept: Befehl / Methodenaufruf durch und bearbeite die folgende Aufgabe.

Ist das schon alles?
Nachdem wir nun gelernt haben, wie wir dem Computer einzelne Befehle geben können, stellt sich nun natürlich die Frage, wie wir ein ganzes Programm umsetzen können. Die erste wichtige Antwort hier ist, dass wir einfach mehrere Befehle aneinander reihen können. Die Aneinanderreihung von Befehlen nennen wir Programm.
Aufgabe 2 - Fachkonzept Programm
Lies dir das Fachkonzept: Programm durch.

Die Programmierumgebung Processing

Womit arbeiten wir hier eigentlich?

Nachdem wir nun ein paar Grundlagen zum Programmieren allgemein geklärt haben ist es nun Zeit endlich auch mal richtig zu programmieren. Zunächst schauen wir uns hierzu die Programmierumgebung von Processing an. Was aber ist Processing eigentlich?

Processing ist eine sogenannte objektorientierte Programmiersprache mit zugehöriger integrierter Entwicklungsumgebung. Die Programmiersprache ist für die Einsatzbereiche Grafik, Simulation und Animation spezialisiert. Processing wird in einem open source Projekt entwickelt, das am Massachusetts Institute of Technology (MIT) in Boston initiiert wurde. Processing hat den Charakter einer stark vereinfachten Version der Programmiersprache Java, ermöglicht Interaktionen und visuelle Elemente zu programmieren und eignet sich besonders gut für einen einfachen Einstieg in das Programmieren und einen fließenden Übergang in das Programmieren mit Java.2)
Der Editor von Processing

Wenn wir den im obigen Fenster sichtbaren Code println("Hallo Welt!"); eingeben und anschließend auf den Startknopf klicken, erhalten wir auf der Konsole am unteren Rand des Fensters die entsprechende Textausgabe.

Gleichzeitig erscheint das sogenannte Graphikfenster, in dem in Zukunft die meisten unserer Programme ablaufen.

Einführung Processing IDE und erste Programme
Erste Programme
Tippe nun folgenden Programmcode in den Editor:
void setup(){
  size(400, 400);
  background(243, 247, 129);
}

Es ist sicher keine Überraschung, dass die Anweisungen unserer eindeutigen Sprache entsprechen. In der Methode setup() legen wir die Eigenschaften des Graphikfensters fest. Die Bedeutung des Schlüsselwortes void werden wir an späterer Stelle kennenlernen. Die Methode size() legt Breite und Höhe des Graphikfensters fest, die Methode background() die Hintergrundfarbe im RGB-Modus (Der gewünschte Farbcode kann mit dem Farbauswahl-Tool in Processing ermittelt werden). Natürlich wollen wir im Graphikfenster auch zeichnen. Zu diesem Zweck ergänzen wir unseren Code durch folgende Zeilen:

void draw(){
  stroke(255,0,0);
  line(0,0,400,400);
  line(0,400,400,0);
}

In der Methode draw() erzeugen wir unsere Graphikelemente. In diesem Fall sind dies zwei diagonale Linien. In der Methode line() geben wir die Koordinaten (x,y) des Startpunktes und des Endpunktes der Linie an. Die Methode stroke() legt die Linienfarbe für alle nachfolgenden Linien fest. Die Farbe wird erst durch einen erneuten Aufruf der Methode stroke() geändert bzw. durch noStroke() deaktiviert.

Hinweis zum Umgang mit den Lösungen
An sehr vielen Stellen werden im Laufe des Kurses Lösungen zur Verfügung gestellt. Diese können unterschiedlich genutzt werden. In der Regel kann ein funktionierendes Programm ein ausreichender Hinweis auf eine korrekte Lösung sein. Die Lösungen können also als Inspiration genutzt werden, wenn man selbst nicht weiter kommt. Sie sollten jedoch nicht zu früh zurate gezogen werden, da eine eigenständige Lösung der Probleme immer einen besseren Lernerfolg gerantiert. Weiterhin sind alle Lösungen hier als Lösungsvorschläge zu interpretieren. Es gibt in jedem Fall andere Möglichkeiten das Ziel zu erreichen.
Aufgabe 3 - Code modifizieren
Ändere obigen Code so ab, dass die zweite Linie grün erscheint.
Aufgabe 4 - Code erweitern

Erweitere den obigen Code so, dass folgendes Ergebnis erzielt wird:

Aufgabe 5 - Eigenen Code schreiben

Erstelle ein Programm, das ein Zeichenfenster der Größe 600x400 nutzt und mit Hilfe der Methoden stroke() und line() eine Rechteck, ein Dreieck und eine Raute darstellt.


Tipp: Zeichne dir eine Skizze, mit der du die Koordinaten der Eckpunkte berechnen kannst.

Fehlermeldungen

Sicherlich ist es euch während dem Experimentieren mit Processing schon passiert, dass ihr Fehlermeldungen erhalten habt. Dies ist normal und sollte euch nicht entmutigen. Fehlermeldungen resultieren daraus, dass der Computer nicht sonderlich intelligent ist, sondern die Anweisungen in einer sehr präzisen Form benötigt. Wenn der Computer die Anweisungen nun nicht deuten kann, gibt er eine Fehlermeldung aus. Diese zu verstehen ist nicht immer einfach. Wenn man eine Fehlermeldung jedoch richtig deuten kann, gibt einem diese sehr gute Hinweise darauf, wo der Fehler liegt.

Fachkonzept Fehlermeldung

Grafikfunktionen in Processing

Background und draw()
Jetzt wirds bunt - Füllfarbe beim Hintergrund
Die Frage der Füllfarben betrifft zum einen den Hintergrund des Zeichenfensters, zum anderen die Füllfarbe von Formen.

Mit background() lässt sich der Hintergrund des Zeichenfensters festlegen. Diese Eigenschaft wird üblicherweise in der setup()-Methode festgelegt:

void setup() {
  size(400, 400);
  background(200);
}
Die Methoden setup() und draw()

Die setup()-Methode ist für die statischen Eigenschaften unserer Graphiken zuständig, die bereits bekannte draw()-Methode dagegen für die dynamischen Aspekte. Diese Methode sorgt dafür, dass die Graphiken ständig neu gezeichnet werden. Ein Beispiel für die Dynamik ist folgendes kleines Programm:

int x=0;
 
void setup() {
  size(400,400);
}
 
void draw() {
  background(x);
  x=x+1;
}

Erläuterung: Der Hintergrund des Zeichenfensters ist zu Beginn schwarz (background(0)). Bei jedem Aufruf der Methode draw() wird der Wert für x um 1 erhöht und im nächsten Durchlauf die Hintergrundfarbe an den neuen Wert angepasst. Die Methode draw() aktualisiert das Zeichenfenster 60 mal pro Sekunde. Mit der Methode frameRate() können wir die Geschwindigkeit anpassen:

void setup() {
  size(400,400);
  frameRate(30);
}

Auf diese Weise halbieren wir die Aktualisierungsrate auf 30 mal pro Sekunde.

Formen und Farben
Zeichnen mit Processing

Zeichnen folgt in Processing allgemein dem gleichem Ablauf wie jedes andere Zeichenprogramm, wobei die ersten beiden Schritte auch in der Reihenfolge getauscht werden können.

  1. Auswahl der Füllfarbe
  2. Auswahl der Linienfarbe
  3. zeichnen des gewünschten Objektes
Aufgabe - Ein Haus

Unten findest du den Beispielcode für das Haus aus dem Video. Lade dir zusätzlich die Datei cloud01.svg herunter und füge sie dem Sketch hinzu.

  1. Experimentiere mit dem Code und passe die Zeichnung nach deinen Vorstellungen an.
    • Füge weitere Details hinzu.
    • Ändere Farben
  2. Erstelle eigene Zeichnungen.
Code Haus
void setup() {
  size(640, 480);
}
 
void draw() {
  background(#AACCEE);
 
  fill(#FFFF00);
  strokeWeight(2);
  stroke(#AAAA00);
  circle(0, 0, 250);
 
  fill(#00AA00);
  stroke(#00FF00);
  strokeWeight(2);
  rect(0, 400, 640, 80);
 
  fill(#FFFFFF);
  stroke(#AAAAAA);
  strokeWeight(2);
  rect(260, 300, 160, 160);
 
  fill(#675400);
  stroke(#483B00);
  strokeWeight(2);
  rect(340, 400, 30, 60);
 
  fill(#FF0000);
  stroke(#770000);
  strokeWeight(2);
  triangle(260, 300, 420, 300, 340, 250);
 
  noFill();
  strokeWeight(5);
  stroke(#AAAA00);
  int anzahlStrahlen = 5;
  for (int i = 0; i < anzahlStrahlen; i++) {
    if (i % 2 == 0) {
      line(150, 0, 250, 0);
    } else {
      line(150, 0, 200, 0);
    }
    rotate((PI / 2) / (anzahlStrahlen - 1));    
  }
  resetMatrix();
 
  PShape wolke = loadShape("cloud01.svg");
  shape(wolke, 400, 10, 200, 100);
  shape(wolke, 350, 70, 150, 100);
  shape(wolke, 450, 90, 150, 100);
}
Bild Haus
Shape und draw()
1) , 2)
Quelle: Comenius-Wiki unter CC BY-SA
3)
Aufgabe von: CommeniusWiki unter CC BY-SA
info/sek-ii/e2/processing/p1-grundlagen-1.txt · Zuletzt geändert: 2023-03-10 12:07 von marcel.siegel