Wiki: Mathe und Info

Unterrichtsmaterialien für Mathematik und Informatik

Benutzer-Werkzeuge

Webseiten-Werkzeuge


info:sek-ii:e2:processing:p4-verzweigungen

Verzweigungen

Ein neues Programmelement

Wir haben bisher bereits Programme geschreiben, in welchen sich Objekte bewegt haben. Hier ist nun wieder ein solches Programm dargestellt, allerdings mit einer kleinen Neuerung. Das Programm benötigt ihr für Aufgabe 1.

int xPos = 0;
int v = 3;
 
void setup() {
  size(600, 400);
}
 
void draw() {
  background(0);
  stroke(255, 0, 0);
  strokeWeight(10);
 
  xPos = xPos + v;
 
  // ???
  if (xPos > width) {
    xPos = 0;
  }
 
  point(xPos, height / 2);
}
Aufgabe 1 - Das Beispiel verstehen

Vollzieht das Beispiel nach und beschreibt mit eigenen Worten was das Programm tut. Achtet dabei besonders auf die Stelle mit den Fragezeichen.

Aufgabe 2 - Fachkonzept Verzweigung
Lest euch das Fachkonzept: Verzweigung durch und beantwortet folgende Fragen:
  1. Wie ist eine Verzweigung aufgebaut?
  2. Wofür werden Verzweigungen benötigt?
Aufgabe 3 - Übung zur Verzweigung
a) Ändere das obige Programm so ab, dass der Punkt alle 150px seine Farbe ändert.

b) Ändere das Programm so ab, dass der Punkt sich von links oben nach rechts unten bewegt und zunehmend größer wird.

Wie schreibt man Algorithmen eigentlich übersichtlich auf?

Wir haben uns bisher meistens mit relativ übersichtlichen Programmen beschäftigt und selbst da wurde es teilweise schwierig nachzuvollziehen, was der Code eigentlich genau tut. Da wir nicht die einzigen sind, die dieses Problem haben, gibt es viele Möglichkeiten Algorithmen übersichtlich aufzuschreiben. Eine sehr weit verbreitete Variante sind die sogenannten Programmablaufpläne, kurz PAPs genannt. Um diese werden wir uns nun kümmern. Dazu hier ein Beispiel für einen solchen PAP:

info:sek-ii:e2:processing:einstiegsbeispiel.png

Aufgabe 4 - Programm zu PAP schreiben

Schaut euch den PAP genau an und versucht nachzuvollziehen, was dieser bewirkt. Schreibt dann ein Processing-Programm dazu.

Aufgabe 5 - Fachkonzept PAP
Lest euch das Fachkonzept: Programmablaufpläne (PAPs) durch und beantwortet folgende Frage:
  1. Aus welchen Komponenten kann ein PAP bestehen?
Aufgabe 6 - PAP und Code erstellen
Erstellt zu den Aufgaben jeweils sowohl einen PAP (per Hand oder mit draw.io) als auch den Sketch in Processing.
a) Ein Ball soll sich auf der Zeichenfläche von links nach rechts bewegen und dann jeweils von der Seite abprallen und sich wieder zurückbewegen. Bei jedem Abprall ändert er zudem seine Farbe.


b) Der Ball soll sich nun beliebig auf der Zeichenfläche bewegen und jeweils vom Rand abprallen. (Auf die Farbänderung kann nun verzichtet werden.)


Entweder oder…

Bisher sind die Programme meistens mit bedingten Anweisungen ausgekommen. Technisch gesehen reichen diese auch aus um alles umzusetzen was wir brauchen. Häufig ist es jedoch hilfreich auch mal einen Alternativen Fall angeben zu können, also ein Entweder-Oder. Im Fachkonzept zu den Verzweigungen habt ih davon auch schon gelesen. Es handelt sich hier um das else. Dieses werden wir im Folgenden Beispiel nutzen. Außerdem kommen noch verknüpfte Bedingungen hinzu. Somit lassen sich anspruchsvollere Bedingungen stellen als bisher.

void setup() {
  size(300, 300);
}
 
void draw() {
  background(0); 
 
  if (mouseY < height / 2 && mouseX < width / 2) {
    fill(#16F5AC);
  } else if (mouseY < height / 2 && mouseX > width / 2) {
    fill(#AF49E8);
  } else if (mouseY > height / 2 && mouseX < width / 2) {
    fill(#FFF417);
  } else if (mouseY > height / 2 && mouseX > width / 2) {
    fill(#F5071B);
  }
 
  circle(mouseX, mouseY, 30);
}
Aufgabe 7 - Das Beispiel verstehen

Vollzieht das Code-Beispiel nach und versucht zu verstehen, was es tut.

Aufgabe 8 - Fachkonzept Bedingungen
Lest das Fachkonzept: Bedingung und beantwortet folgende Frage:
  1. Welche Möglichkeiten gibt es, Bedingungen miteinander zu verknüpfen?
Aufgabe 9 - Farbwechsel

In folgendem Feld bewegt sich ein Kreis fortlaufend von links nach rechts. Solange er im schwarzen Feld ist, ist er weiß, läuft er durch das weiße Feld, ist er schwarz. Löse das Problem mit einer if-else-Anweisung sowie verknüpften Bedingungen.

Vorbereitung für Programmierprojekt

Was für ein Projekt???
Vermutlich haben die meisten von euch Spaß an Computerspielen. Daher ist es das Ziel dieser Einheit, dass ihr am Ende ein kleines Computerspiel programmiert1). Die Entwicklung von Computerspielen macht auf der einen Seite sehr viel Spaß, auf der anderen Seite werden dort viele Programmierkenntnisse und auch etwas Physik gebraucht. Keine Panik, wir werden jetzt nicht tief in die Physik einsteigen. Wir müssen uns hier aber ein paar Dinge anschauen, damit ihr sie später nutzen könnt.

Ihr braucht für die Umsetzung der Beispiele nicht viel mehr als das, was ihr bisher gelernt habt. Folgende Funktionen kommen nun noch hinzu:

  • radians(): In Processing müssen Winkel im sogenannten Bogenmaß angegeben werden. Dieses können wir mit Hilfe der radians()-Funktion aus den bekannten Winkelgrößen berechnen.
  • sin(), cos(), tan(): Die Winkelfunktionen brauchen wir häufiger, um z.B. Seitenlängen in Dreiecken zu berechnen.
  • pow(): Mit der pow()-Funktion können Zahlen potenziert werden.

Recherchiert für die Aufgaben jeweils zunächst die passenden Formeln. Es werden Formeln benötigt, die jeweils einem x ein y bzw. f(x) zuordnen.

Aufgabe 10 - Freier Fall

Eine schwere Kugel rollt mit einer Anfangsgeschwindigkeit v zur Kante und fällt dann zu Boden. Wenn sie dort aufschlägt, rollt sie weiter bis zum rechten Rand und bleibt dann liegen. Um eine realistische Darstellung zu erhalten, muss man mit der Zeitvariable und der Framerate etwas experimentieren.

Aufgabe 11 - Schiefe Ebene
Eine Kugel rollt eine Schiefe Ebene hinab. Als Erweiterung kann man die Kugel zum rechten Rand weiterrollen lassen. Zu diesem Zweck benötigt man die Geschwindigkeit der Kugel am Ende der schiefen Ebene.

Aufgabe 12 - Freier Fall
Das Programm zeigt die Flugbahn eines Projektils bei verschiedenen Abschusswinkeln und Abwurfhöhen an.

1)
Details dazu folgen noch
info/sek-ii/e2/processing/p4-verzweigungen.txt · Zuletzt geändert: 2022-03-25 14:19 von christian.weber