HSZG Vorkurs Informatik WS 2014/Wahrheitswerte und Bedingungen/Teil 3

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Java</language>
In Java können if-Konstrukte auch ineinander verschachtelt werden. Dies ist hilfreich, um komplexe Fallunterscheidungen abbilden zu können. Für zwei ineinander verschachtelte Bedingungen sieht das Schema wie folgt aus:

 if(<Bedingung1>){
   if(<Bedingung2>){
     <Anweisung>;
     ...
     <Anweisung>;
   }else{
     <Anweisung>;
     ...
     <Anweisung>;
   }
 }els
   <Anweisung>;
   ...
   <Anweisung>;
 }

Das heißt: "Wenn Bedingung1 und Bedingung2 erfüllt sind, führe den ersten Block von Anweisungen aus. Wenn Bedingung1 erfüllt ist und Bedingung2 nicht, führe den zweiten Block von Anweisungen aus. Wenn keine der Bedingungen erfüllt ist, führe den letzten Block von Anweisungen aus!"

Es sind beliebige weitere Verschachtelungen möglich. Der else-Block kann wahlweise weggelassen werden.


'''Wichtiger Hinweis'''

Für die nachfolgenden Aufgaben müssen wir uns kurz mit dem Datentyp ''String'' auseinandersetzen. Einer Variable vom Typ String können Sie einen Text in Anführungszeichen als Wert zuweisen.
<code id="5419ea13e7b82">String mein_text = "Hallo";</code>

Soweit so gut. Wenn wir Bedingungen formulieren möchten, bei denen Texte miteinander verglichen werden, benötigen wir die Methode ''equals''. Wir verwenden sie wie folgt:
<run id="5419ea13e7d4e">String text1 = "Hallo";
String text2 = "Hallo";
if(text1.equals(text2)){
 System.out.println("Beide Texte sind gleich");
}</run>

Für Texte ersetzt die Methode equals also den Operator ==. Näheres dazu erfahren Sie im Studium.

'''Aufgabe 1'''

Entwickeln Sie eine Methode, die vorhersagt, ob ein Apfelbaum Früchte tragen wird. Wenn er Früchte trägt, soll die Methode ''true'' zurückgeben, ansonsten ''false''. Die Vorhersage hängt von den Parametern ''Alter'', ''Sorte'' und ''Boden'' ab und wird von diesem Entscheidungsbaum abgeleitet:

[[Datei:baum.png]]

Die Methode soll in zwei Varianten bereitgestellt werden: einmal mit und einmal ohne verschachtelte Bedingungen!
<code id="5419ea13e7c5a">boolean traegt(String alter, String sorte, String boden){

}</code>
<code id="5419ea13e7ccc">boolean traegt2(String alter, String sorte, String boden){

}</code>
<run id="5419ea13e7dca">traegt("jung", "natürlich", "mager")</run>


'''Aufgabe 2'''

Entwickeln Sie ein kleines Expertensystem zur Entscheidungshilfe bei der Wahl des richtigen Kinderwagens. Der Entscheidungsbaum ist hier dargestellt (den gestrichelten Pfeil ignorieren wir einfach): 

[[Datei:baum2.png]]

Als Starthilfe gebe ich schon einmal die Signatur der Methode vor:
<code id="5419ec1855c73">String empfehlung_wagen(int anzahl_kinder, int monate, boolean später_nutzen, String gebiet, boolean lange_strecken, boolean joggen, boolean mehrlinge, boolean kann_stehen){

}</code>
<run id="5419ed32e1ae9">String empfehlung = empfehlung_wagen(1, 10, false, "Land", true, false, false, false);</run>