Navigation überspringen

Übungen zu Funktionen

Funktionen

Fragen

  1. Was sind die Vorteile von Funktionen? Erkläre die 3 Vorteile in deinen eigenen Worten.
  2. Was bedeuten die Begriffe Befehl und Funktion und wie hängen sie zusammen?
  3. Welche Konventioen gelten für Funktionen?
  4. Welche Syntaxregeln gelten für Funktionen?

Aufgaben

1. Hello, world!
Schreibe die Funktion hello(), die einfach "hello, world" auf die Konsole schreibt.

Hinweis: Denk dran, dass du ein setup() oder draw() benötigst, um Funktionen definieren zu dürfen.

Teste deinen Code mit:

void setup() {
  hello();
  hello();
  hello();
}

Du solltest sehen:

hello, world
hello, world
hello, world

2. Mauszeiger
Schreibe eine Funktion mauszeiger(), welche an Position der Maus einen Kreis mit Durchmesser 20 zeichnet.

Teste deinen Code mit

void draw() {
  background(255);
  mauszeiger();
}

3. Code durch Funktion ersetzen
Du sollst folgenden Code "aufräumen". Im Code werden ein Haus und eine Sonne gezeichnet. Definiere eine neue Funktion zeichneHaus(), in dem das Haus gezeichnet wird und rufe diese Funktion in draw() auf. Mach das gleiche für die Sonne mit einer Funktion zeichneSonne().

void setup() {
  size(300, 300);
}
 
void draw() {
  background(#31F0FF);
  noStroke();
  fill(#FF3134);
  rect(80, 200, 80, 80);
  triangle(80, 200, 160, 200, 120, 150);
  fill(#FFF931);
  ellipse(200, 100, 80, 80);
}

4. Dreierlei
Schreibe drei Funktionen one(), two(), three(). Die Funktionen geben jeweils die Zahl 1, 2 und 3 auf der Konsole aus. Rufe in setup() die Funktion one() auf. In der Funktion one() rufst du two() auf. In der Funktion two() rufst du three() auf.

Teste deine Code unbedingt genau mit:

void setup() {
  one();
}

Du solltest sehen:

1
2
3

Wenn du deinen Code wie folgt testest, hast du was falsch gemacht. (Lies nochmal die Aufgabenbeschreibung...)

void setup() {
  one();
  two();
  three();
}



Parameter

Fragen

  1. Was sind die Parameter einer Funktion?
  2. Wie kann ich eine Funktion mit Parametern definieren? Wo und wie werden die Parameter definiert?
  3. Wie groß ist der Scope eines Parameters einer Funktion? (Tip: Wenn du nicht mehr weißt, was ein Scope ist, dann schau nochmal bei den lokalen Variablen nach.)
  4. Kann ich, wenn ich einer Funktion als Parameter Varaiblen übergebe, diese beiden Variablen mithilfe der Funktion verändern? Oder bleibt jedwede Veränderung in der Funktion? Warum?
  5. Darf bzw. sollte ich einen Parameter innerhalb der Funktion verändern? Warum (nicht)?
  6. Was passiert, wenn eine Funktion überladen ist? Handelt es sich bei Überladung um einen Fehler oder ist Überladung etwas gewolltes?

Aufgaben

1. Plus eins
Schreibe die Funktion plusEins, die als Parameter eine Zahl x als int bekommt und x+1 auf die Konsole schreibt. Der Aufruf plusEins(5); würde also folgendes produzieren:

6

2. Summe ausgeben
Schreibe eine Funktion printSum, die drei Parameter vom Typ float bekommt und die Summe dieser drei übergebenen Zahlen auf die Konsole schreibt. Der Aufruf printSum(3, 2, 5); würde also folgendes produzieren:

10.0

3. Mauszeiger
Schreibe eine Funktion mauszeiger, mit fünf Parametern: x, y, r, g, b. Die Funktion zeichnet einen Kreis an der Position (x, y) mit der Farbe (r, g, b) gefüllt.

Teste deinen Code mit

void draw() {
  background(255);
  mauszeiger(mouseX, mouseY, 255, 0, 0);
}

Du solltest einen rot gefüllten Kreis sehen, der der Maus folgt.

4. Begrüßung
Schreibe die Funktion greeting(), die einen Parameter name vom Typ String bekommt und dann "Servus, <name>" ausgibt. Der Aufruf von greeting("Helmut"); ergibt zum Beispiel:

Servus, Helmut

5. Begrüßung II
Schreibe eine neue Funktion greet(), diesmal mit zwei Parametern, einen String und einen boolean. Der zweite Parameter gibt an, ob die Person weiblich ist.

Beim Aufruf greet("Schmidt", true); soll kommen:

Hallo Frau Schmidt

Bei greet("Huber", false); soll kommen:

Hallo Herr Huber

6. Variablen vertauschen
Schreibe ein Programm, welches den Wert von 2 int-Variablen wert1 und wert2 vertauscht. Lass dir zunächst die beiden Variablen ausgeben und danach ein weiteres mal, nachdem du sie vertauscht hast.

Tip: Das Beispiel oben in der Lektion zeigt dir, wie es nicht geht.

Rückgabewerte

Fragen

  1. Wieviele Rückgabewerte kann eine Funktion haben?
  2. Welche zwei Dinge muss ich tun, damit meine Funktion einen Rückgabewert hat?
  3. Muss der Rückgabewert einer Funktion immer denselben Datentyp haben oder kann dieser unterschiedlich sein, z.B. entweder int oder String.

Aufgaben

1. Einfache Funktion
Schreibe eine Funktion foo, die immer den Wert 42 zurückgibt. Die Funktion hat keine Parameter und den Rückgabtyp int. Teste deine Funktion mit:

void setup() {
    int num = foo();
    println(num);
}

Du solltest sehen:

42

2. Addition
Schreibe eine Funktion plus, die zwei Zahlen vom Typ float als Parameter hat und die Summe der Zahlen zurückgibt (ebenfalls Typ float). Teste deine Funktion mit:

void setup() {
    println(plus(10, 20));
}

Du solltest sehen:

30.0

3. Intervall-Check
Schreibe eine Funktion bereich, die drei Zahlen a, b, c vom Typ float als Parameter hat. Die Rückgabe ist eine boolescher Wert: true, wenn a zwischen b und c liegt, sonst false. Geh davon aus, dass b immer kleiner als c ist. Teste deine Funktion mit:

void setup() {
    println(bereich(10, 0, 100));
    println(bereich(-10, 0, 100));
}

Du solltest sehen:

true
false

4. Quadrat
Schreibe die Funktion quadrat mit einem Parameter des Typs float. Die Funktion gibt die Quadratzahl des Parameters zurück. Teste deine Funktion mit:

void setup() {
    println(quadrat(3));
    println(quadrat(5));
}

Du solltest sehen:

9.0
25.0

Verwende nicht die Processing-Funktion pow().

5. Maximum
Schreibe die Funktion max2, die zwei float-Werte bekommt und den größeren der beiden zurückgibt.
Schreibe die Funktion max3, die drei float-Werte bekommt und den größten zurückgibt. Teste unbedingt auch Fälle mit zwei gleichen Werten wie (5, 5, 1) oder (5, 1, 5).

Verwende nicht die Processing-Funktion max().

6. Abstand
Schreibe die Funktion difference, die zwei float-Werte bekommt und den Abstand zwischen den beiden Werten als postive Zahl zurückgibt. Teste deine Funktion mit:

void setup() {
  println(difference(5.5, 10.5));
  println(difference(1.5, 0));
}

Du solltest sehen:

5.0
1.5

Verwende nicht die Processing-Funktion abs().

7. Gerade/Ungerade
Schreibe die Funktion istGerade, die eine ganze Zahl bekommt und einen Wahrheitswert zurückgibt, nämlich true, wenn die Zahl gerade ist, false wenn ungerade.

8. Primzahl
Schreibe die Funktion istPrim, die eine ganze Zahl bekommt und einen Wahrheitswert zurückgibt, nämlich true, wenn die Zahl eine Primzahl ist, sonst false.

Hinweis: Eine Primzahl ist eine Zahl, die nur durch 1 und durch sich selbst teilbar ist. Teste deine Funktion mit:

void setup() {
  println(istPrim(7));
  println(istPrim(15));
  println(istPrim(97));
}

 Du solltest sehen:

true
false
true



Made with eXeLearning (New Window)