Using own functions

Programme werden mit zunehmenden Anforderungen unübersichtlich lang. Daher versucht man sie in kleine logische Einheiten zu zerlegen.

Eine Möglichkeit dies zu tun sind sogenannte Funktionen.

In dem folgenden Beispiel ist die Erzeugung einer einfachen Grafik in einfacher und strukturierter Form dargestellt. Wenn die Funktionen entsprechend gute Namen erhalten, erübrigt sich oft das Einbringen von Kommentaren.

Variante ohne Funktionen Varianten mit Funktionen
size(180,180);

background(220,220,250);

stroke(0);

strokeWeight(0);

//Zeichne Umriss

fill(255,0,0);

ellipse(90, 90, 160, 170);

// Zeichne Augen

fill(0,255,0);

ellipse(60, 45, 36, 22);

ellipse(120, 45, 36, 22);

// Zeichne Nase

fill(0,255,255);

ellipse(90, 90, 18, 45);

// Zeichne Mund

fill(0,0,255);

ellipse(90, 135, 60, 18);

void setup() {

size(180,180);

background(220,220,250);

stroke(0);

strokeWeight(0);

}

void zeichneUmriss(int posX, int posY){

fill(255,0,0);

ellipse(posX, posY, 160, 170);

}

void zeichneAuge(int posX, int posY) {

fill(0,255,0);

ellipse(posX, posY, 36, 22);

}

void zeichneNase(int posX, int posY) {

fill(0,255,255);

ellipse(posX, posY, 18, 45);

}

void zeichneMund(int posX, int posY) {

fill(0,255,255);

ellipse(posX, posY, 60, 18);

}

void draw() {

zeichneUmriss(90, 90);

zeichneAuge(60, 45);

zeichneAuge(120, 45);

zeichneNase(90,90);

zeichneMund(90, 135);

}

Im Beispiel sind zwei Arten von Funktionen, mit und ohne Argumente, zu erkennen:

Mit Argumenten lässt sich das Verhalten der Funktion steuern, so könnte der Umriss hier auch an einer anderen Stelle gezeichnet werden.

Die Funktionen können fast beliebige Namen erhalten. Auch die Argumente kann man frei wählen. Die Festlegung eines Arguments erfolgt wie eine Variablendeklaration.

Neben dem Vorteil, eine übersichtlichere Form zu erhalten, werden Funktionen genutzt um einfach mehrfache Dinge zu tun. So lässt sich die oben darstellte Variante noch ein wenig ergänzen und man kann mit wenig Zeilen Code die nebenstehende Grafik erzeugen:

void zeichneGesicht(int posX, int posY) {

zeichneUmriss(posX, posY);

zeichneAuge(posX-30, posY-45);

zeichneAuge(posX+30, posY-45);

zeichneNase(posX, posY);

zeichneMund(posX, posY+45);

}

void draw() {

zeichneGesicht(90, 90);

zeichneGesicht(270, 90);

zeichneGesicht(270, 270);

zeichneGesicht(90, 270);

}

Übungen zu Funktionen

Code aufräumen

Der dargestellte Code erzeugt eine Haus­dar­stellung.


// Grundeinstellungen
size(160,220);
background(220,220,250);
stroke(0);
strokeWeight(1);
// Hausumriss
int sx=10;
int sy=10;
int bx=140;
int by=200;
line(sx,sy+by, sx, by/2);
line(sx, by/2, sx+bx/2, sy);
line(sx+bx/2, sy, sx+bx, by/2);
line(sx+bx,sy+by, sx+bx, by/2);
line(sx,by/2, sx+bx, by/2);
line(sx,sy+by, sx+bx, sy+by);// Tür
int tuer_x=20;
int tuer_y=150;
fill(255,0,0);
rect(tuer_x, tuer_y, 30, 60);// Fenster 1
int fenster1_x= 70;
int fenster1_y= 130;
fill(0,255,0);
rect(fenster1_x, fenster1_y, 30, 30);// Fenster 2
int fenster2_x= 110;
int fenster2_y= 130;
fill(0,255,0);
rect(fenster2_x, fenster2_y, 30, 30);

Bringen Sie Ordnung in den Programmcode, indem Sie das Programm in folgende Funktionen aufteilen:

void setup()
void zeichneUmriss(int posX)
void zeichneTür(int posX)
void zeichneFenster(int posX, int posY)

Nach erfolgreicher Aufteilung soll die Zeichnung in einer draw-Funktion wie folgt funktionieren:

void draw() {

zeichneUmriss(10);

zeichneTuer(20);

zeichneFenster(70, 130);

zeichneFenster(110, 130);

}

Reihenhaussiedlung

Erweitern Sie den Code mit einer Funktion zum Zeichnen eines Hauses an einer bestimmten x-Position.
Lassen Sie mit Hilfe dieser Funktion eine Reihen­haussiedlung entstehen …

Leave a Reply