Der Grundstein der Programmierung: If-Else in Java. Mit If und Else können wir Abfragen in unser Programm einbauen. Wir gehen also weg vom linearen Programmieren. Hier werden Noten berechnet, um die Funktionsweise von If und Else zu zeigen.
16-11_IfElse_Operatoren
Übungsaufgabe für das Programmierpraktikum im Wise 20/21 für den 16.11.2020
Willkommen bei der zweiten Übungsaufgabe.
Diese Woche habe ich eine Vorlage hochgeladen. Ladet euch also bitte den Code herunter und bearbeitet die Aufgabe damit. Ihr habt in der letzten Seminarstunde das Casting und Operatoren kennengelernt. Die folgende Aufgabe soll euch sowohl den Umgang damit beibringen, als euch auch die sogenannten If-Else Blöcke näherbringen.
📝 Aufgabe:
Ihr sollt diese Woche einen Notenrechner erstellen. In der Vorlage sind zwei Variablen gegeben (erreichtePunktzahl und maximalePunktzahl). Ihr sollt eine dritte Variable (erreichteProzente) aus den zwei ersten Variablen errechnen.
Anhand der nun errechneten Prozent sollte ihr jetzt eine Ausgabe generieren, die sagt ob die Punktzahl reicht um zu bestehen und welche Note man bekommt. Dazu folgender Notenspiegel:
Note | Prozent |
---|---|
1 (sehr gut) | 100-90 |
2 (gut) | 89-75 |
3 (befriedigend) | 74-60 |
4 (ausreichend) | 59-50 |
5 (mangelhaft) | 49-35 |
6 (ungenügend) | 34-0 |
Um diese Ausgabe zu generieren müssen wir überprüfen, in welchem Bereich des Notenspiegels der Wert der Variable erreichteProzente fällt. Dazu brauchen wir:
If-Else
Aus dem Wegweiser:
Ein if/else
-Statement führt Code in Abhängigkeit vom Wahrheitsgehalt (true
/false
) einer Aussage bzw. eines boolschen Ausdrucks aus. Es besteht mindestens aus einem if
-Block (wenn, dann...), einer beliebigen Anzahl von else if
-Blöcken (sonst wenn, dann...) und maximal einem else
-Block (sonst...).
:point_right: Syntax-Beispiel:
int i = 4;
if (i > 5){
// größer!
} else if (i < 5) {
// kleiner!
} else {
// gleich!
}
Es wird hier generell immer nur einer der Blöcke ausgeführt! Wenn im if
-Block die Bedingung erfüllt ist, dann werden die folgenden Blöcke ignoriert. Wenn nicht, dann werden nacheinander die (optionalen) else if
-Blöcke überprüft und ggf. einer davon ausgeführt. Falls keine der angegebenen Bedingungen zutraf, wird der (ebenfalls optionale) else
-Block ausgeführt.
Tipps
- Falls die If-Else Geschichte noch nicht klar ist, guckt bitte in die Ressourcen. Da gibt es noch weitere Erklärungen der Thematik
- Denkt beim Berechnen der erreichten Prozente an die Datentypen
- Benutzt die Operatoren in den Bedingungen und vergesst nicht, dass es && oder || gibt
- Kontrolliert euer Programm indem ihr auch mal die Ausgangsvariablen ändert und schaut ob alles so funktioniert wie es sollte
ℹ️ Resourcen:
Hier noch ein paar nützliche 📃Artikel, 🖊️Threads und 🎥Videos
P.S. Wieso double statt float?
an diejenigen aus dem letzten Zoom-Meeting und an die, die es interessiert
Java geht bei der Eingabe von Kommazahlen wie 0.5 standardmäßig davon aus, dass es sich um den Datentypen Double handelt. Das ist im ersten Moment nicht ganz intuitiv, da der Datentyp Double 8 Bytes belegt, wohingegen der Datentyp float (auch für Kommazahlen genutz) nur 4 Bytes belegt. Nach aller bisher bekannten Logik sollte man also meinen, dass ein Datentyp der weniger Arbeitsspeicher belegt sinnvoller als Standard ist.
Jetzt die Krux: Float und Double werden als binäre Gleitkommazahlen gespeichert. Ich will jetzt nicht zu viel ausschweifen aber erinnert euch an BIT und an die Geschichte mit den Mantissen und co. Nun in diesem System kommt das Problem auf, dass die Repräsentation einer Kommazahl aus dem Dezimalsystem in binärer Form sehr ungenau ist.
Beispiel:
0.5 wäre in binär 0.1
0.6 wäre in binäre 0.10011001100110011001100110011001100110011001100110011001100110... und so weiter. Also es wiederholt sich periodisch.
Als float würde 0.6 also wie folgt aussehen: 0.100110
Als double würde 0.6 wie folgt aussehen: 0.10011001100110
Also ist double viel präziser und das ist oft sehr wichtig, wichtiger als Arbeitsspeicher. Zusätzlich braucht man scheinbar nicht mehr Rechenleistung wenn man mit double statt float arbeitet. Heißt konkret, man setzt float nur ein, wenn man mit streng limitierten Arbeitsspeicher arbeiten muss und die Präzision vernachlässigt werden kann. Und deswegen haben die Java-Designer sich dazu entschieden double als Standard für Kommazahlen zu nutzen.