Wiki: Mathe und Info

Unterrichtsmaterialien für Mathematik und Informatik

Benutzer-Werkzeuge

Webseiten-Werkzeuge


info:sek-ii:e2:java-grundlagen:l8-funktionen

Lektion 8 - Der Hamster lernt zählen

Ihr kennt nun schon lange die Möglichkeit, neue Testbefehle für den Hamster zu programmieren. Diese nennt man Boolsche Funktionen. In der letzten Lektion habt ihr (abgesehen von boolean) noch weitere Datentypen kennen gelernt, unter anderem den int-Datentyp, der ganze Zahlen speichern kann. In dieser Lektion lernt ihr, dem Hamster Testbefehle beizubringen, die nicht nur Wahrheitswerte zurückgeben können, sondern beliebige Datentypen. Somit lernt der Hamster quasi als Nebeneffekt das Zählen.

Aufgabe 1: Funktionen

Die oben schon angesprochenen boolschen Funktionen sind ein Spezialfall eines allgemeineren Konzepts, nämlich dem der Funktion. Lest euch die Fachkonzepte Funktion, Return, Void & Parameter durch und beantwortet die folgenden Fragen:

  • Was ist eine Funktion?
  • Dürfen Funktionen Seiteneffekte erzeugen? Wenn ja, wie macht man das am besten kenntlich?
  • Was bedeutet das Schlüsselwort void?
  • Was ist ein Funktionsparameter?

Aufgabe 2: Zählen mit While-Schleifen

Aufgaben

Aufgabe 2.1: Der Hamster soll im folgenden Territorium genau so viele Schritte vor gehen, wie Körner auf dem Feld vor ihm liegen. Die Anzahl der Körner ist variabel.

Aufgabe 2.2: Der Hamster soll durch das Labyrinth laufen. An einer Kreuzung kann er die folgenden Situationen finden:

  1. 1 Korn: Rechts abbiegen und weiter!
  2. 2 Körner: Links abbiegen und weiter!
  3. 3 Körner: Stehen bleiben!

Aufgabe 2.3: Der Hamster soll durch das Labyrinth laufen. Benutze nur Methoden mit Parametern!

Lösung 2.1

void main() {
  vor();
 
  int koerner = nimmUndZaehle();
 
  while (koerner > 0 && vornFrei()) {
    vor();
    koerner = koerner - 1;
  }    
}
 
int nimmUndZaehle() {
  int koerner = 0;
 
  while (kornDa()) {
    nimm();
    koerner = koerner + 1;
  }
 
  return koerner;
}

Lösung 2.2

void main() {
  int anzahl = dreiVorUndNimm();
 
  while (anzahl != 3) {
    if (anzahl == 2) {
      linksUm();
    } else if (anzahl == 1) {
      rechtsUm();
    }
 
    anzahl = dreiVorUndNimm();
  }    
}
 
void rechtsUm() {
  linksUm();
  linksUm();
  linksUm();
}
 
int dreiVorUndNimm() {
  vor();
  vor();
  vor();
 
  int anzahl = 0;
 
  while (kornDa()) {
    nimm();
    anzahl = anzahl + 1;
  }
 
  return anzahl;
}

Lösung 2.3

void main() {
  vor(11);
  linksUm(3);
  vor(7);
  linksUm(3);
  vor(2);
  linksUm(3);
  vor(3);
  linksUm(1);
  vor(2);
  linksUm(1);
  vor(3);
  linksUm(3);
  vor(7);
  linksUm(3);
  vor(3);
  nimm();
}
 
void vor(int anzahl) {
  while (anzahl > 0) {
    vor();
    anzahl = anzahl - 1;
  }
}
 
void linksUm(int anzahl) {
  while (anzahl > 0) {
    linksUm();
    anzahl = anzahl - 1;
  }
}

Aufgabe 3: Übungsaufgaben

Diese Konzepte findet ihr auch im Hamster-eBook in Kapitel 15 auf S. 276 und Kapitel 16 auf S. 297

  1. Bearbeitet das Beispielprogramm 3 ab S. 288
  2. Bearbeitet das Beispielprogramm 3 auf S. 315
  3. Bearbeitet mindestens eine der Übungsaufgaben ab S. 318
  4. Bearbeitet mindestens eine der Übungsaufgaben ab S. 291

Speichert die Programme und die Territorien sowie eure Notizen auf eurem Stick nach dem Schema Lektion8_Beispiel2 bzw. Lektion8_Uebung5 ab!

info/sek-ii/e2/java-grundlagen/l8-funktionen.txt · Zuletzt geändert: 2021-05-06 13:43 von christian.weber