Informatik9

Aus RMG-Wiki

<9b 2022 23

Kontrollsturkturen in Java

Hier findet ihr Lösungen zu den Kontrollstrukturen in Informatik. Ihr könnt den Text kopieren und in eure Klassen in BlueJ einfügen. Denkt auch daran den Methodenkopf zu kopieren oder selbr in BlueJ hinzuzufügen.

bedingte Anweisungen (if-else)

Lösung

/**
/* Die Methode istNull überprüft, ob eine eingegebene Zahl
/* gleich 0 ist.
/**

   void istNull (int a)
   {
       if(a==0){
          System.out.println(a+" ist null!");
       }
   }


Lösung

/**
/* Die Methode groesserKleinerNull überprüft, ob eine eingegebene Zahl
/* größer, kleiner oder gleich 0 ist.
/* Es gibt auch andere Lösungen.
/**

   void groesserKleinerNull (int a)
   {
       if(a>0)
       {
           System.out.println(a+ " ist größer 0.");
       }
       else {
           if (a<0){
               System.out.println(a+ " ist kleiner 0.");
           }
           else //a ist nun weder <0 noch >0. Also muss gelten a=0.
           {
               System.out.println(a+ " ist null.");
           }
       }
   }

Wiederholung mit fester Anzahl (for)

Lösung

/**
/* Die Methode potenz2hoch berechnet die Zahl 2 hoch n
/* und gibt das Ergebnis aus. n muss dabei eine natürlich Zahl sein.
/**

   void potenz2hoch(int n)
   {
       int ergebnis = 1;
       for(int i = n; i>0;i = i - 1){ // statt i = i-1 kann man i-- schreiben.
           ergebnis = ergebnis*2;
       }
       System.out.println("2 hoch "+ n+" ist "+ergebnis);
   }


Lösung

/**
/* Gib die Zahlen von 1 bis 10 untereinander aus. /**

   void von1bis10()
   {
       for(int i = 1; i<=10;i++){ // i++ bedeutet i = i + 1,also i wird um 1 erhöht.
           System.out.println(i);
       }
   }


Üben
  1. Ändere bei der obigen Methode folgendes ab, teste sie und notiere, was sich ändert:
   *statt i<=10 setze i<10 ein
   *statt i<=10 setze i<20 ein
   *statt i = 1 setze i = 0 ein
   *statt i++ setze i = i+2 ein
   *statt i++ setze i +=2 ein
   *finde eigene Änderungen.
  1. Ändere beim Methodenkopf "void von1bisn(int n)" und die Wiederholung so ab, dass man die Zahlen von 1 bis n ausgegeben bekommt. Vorsicht, nicht wundern, wenn die ersten Zahlen auf der Konsole nicht auftauchen. Dann ist n zu groß.
  2. Programmiere die Methode "fakultaetVon10()", die die Fakultät berechnet.
  3. Wandle die Methode fakultaet(int n) so ab, dass ein Parameter n übergeben werden kann und die Fakultät nicht nur bis 10 sondern bis n berechnet wird.

Aufgabe
In der Cloud oder in OndDrive findet ihr ein neues Projekt "Blumenwiese". Hier findet ihr sehr viele Klassen. Ihr könnt sie gerne alle anschauen, bearbeiten sollt ihr in der Klasse "Wiederholen" die Methode "alleBlumenAufheben". Um das Blumenfeld zu sehen. müsst ihr die Klasse einmal öffnen (mit nr=1). Dann seht ihr, was zu tun ist.

bedingte Wiederholung

Lösung

/**
/* Solange das Gewicht der Kuh unter 1000 ist, soll die Kuh fressen. /**

   void langFressen()
   {
       while(masse < 1000) // solange die Masse unter 1000 ist,
       {
            fressen();     // wird die Methode fressen aufgerufen.
       }
   }

Infos

DEKLARATION Beispiel Pseudocode
 while(<Bedingung>)
{
  Anweisung(en);
}
int i = 0; 
int potenz = 1; 
while(i<=10)
{
   System.out.println("2^" + i + " = " + potenz);
   potenz = potenz*2;
   i++;
}

Startwerte für i
und p festlegen
Solange i <= 10 ist,
gib die zweier Potenz aus,
nächste Potenz berechnen
i, um eins erhöhen (Dient zum Zählen für den Abbruch der Wiederholung)

Aufgabe

  1. Überlege dir, wie du den Exponenten berechnen kannst einer 2er Potenz. z.B. 32 = 2^x. Wie groß ist x?
  2. Formuliere einen Satz mit "Solange".
  3. Notiere eine Methode "exponentBerechnen(int potenz)", die die Potenz erhält und den Exponenten berechnet und ausgibt. Du kannst dazu ein neues Projekt erstellen oder es bei dem Bauernhof eintragen.
  4. Lass die Figur flo in der Blumenwiese einmal am Rand entlang laufen. Methode (void amRandLaufen()). Tipp: Du kannst die Figur flo am Anfang erstmal in die obere linke Ecke gehen lassen.
  5. Lass die Figur flo einmal in ganze Blumenwiese ablaufen und die vorhandenen Blumen aufheben. Methode (void ganzeBlumenwieseLaufen()). Teste die Methode bei beiden Blumenwiesen.