Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
schule:klassen:2019:10abc:kap2 [2019/10/10 11:08]
martin [Aufgabe:]
schule:klassen:2019:10abc:kap2 [2019/10/10 11:10] (aktuell)
martin
Zeile 1: Zeile 1:
 +=== Übung: Passwortmanager ===
 +Schreibe eine Klasse ''​Passwortmanager''​ mit den Methoden ''​setzeNameUndPasswort''​ und ''​überprüfePasswort''​! \\ 
 +
 +** Überlege: ** \\ 
 +  * Welche Funktionalität wird erwartet?
 +  * Welche Attribute benötigt die Klasse?
 +  * Welche Parameter sollten die Methoden haben?
 +
 +<code java>
 +public class PasswortManager {
 +
 +    private String benutzername;​
 +    private String passwort;
 +
 +    public void setzeBenutzernameUndPasswort(String bn, String pw){
 +        benutzername = bn;
 +        passwort = pw;
 +    }
 +
 +    public boolean überprüfePasswort(String bn, String pw){
 +        if(bn.equals((benutzername))){
 +            if(pw.equals(passwort)){
 +                return true;
 +            }
 +        }
 +
 +        return false;
 +    }
 +        ​
 +}
 +</​code>​
 +
 +====== 6. Die einseitige/​zweiseitige Bedingung ======
 +=== Aufgabe 1 ===
 +Der Eintrittspreis eines Kinos wird nach folgender Tabelle bestimmt:
 +^Personenkreis ^Alter ^Eintrittspreis ^
 +|Kinder |Jünger als 13 Jahre |7,00 € | 
 +|Jugendliche |13 - 17 Jahre |9,00 € | 
 +|Erwachsene |18 - 59 Jahre |12,00 € | 
 +|Senioren |älter als 59 Jahre |10,00 € | 
 +
 +Schreibe eine Funktion ''​kinopreis(int alter)'',​ die abhängig vom Alter den dazugehörigen Eintrittspreis ermittelt und zurückliefert!
 +
 +<code java>
 +    public double kinopreis(int alter){
 +        if(alter < 13){
 +            return 7;
 +        } else {
 +            if(alter <= 17){
 +                return 9;
 +            } else {
 +                if(alter <= 59){
 +                    return 12;
 +                } else {
 +                    return 10;
 +                }
 +            }
 +        }
 +        ​
 +    }
 +</​code>​
 +
 +
 +
 +{{ :​schule:​klassen:​2017:​10b:​einseitige_bedingung_hefteintrag.png?​600 |}}
 +
 +{{ :​schule:​klassen:​2017:​10b:​zweiseitige_bedingung_hefteintrag.png?​600 |}}
 +
 +<WRAP center round important 60%>
 +**Wichtig:​** Unterscheide den Zuweisungsoperator = vom Vergleichsoperator == \\ 
 +  * ''​monat = 2''​ ist eine **Anweisung,​** die der der Variable ''​monat''​ den Wert 2 zuweist.
 +  * ''​monat == 2''​ ist eine Aussage. Der Wert der Variable ''​monat''​ wird mit 2 verglichen. Entsprechend hat die Aussage den Wert ''​true''​ oder ''​false''​.
 +</​WRAP>​
 +
 +==== Der Modulo-Operator % ====
 +''​%''​ ist der Modulo-Operator. ''​a % b''​ ist der Rest der Division von ''​a''​ durch ''​b'',​ z.B.
 +<code java>
 +
 +10 % 3 == 1
 +17 % 5 == 2
 +21 % 3 == 0
 +
 +usw.
 +</​code> ​
 +
 +
 +====Aufgabe 2:====
 +Erstelle eine Methode tageImMonat(int monat, int jahr) , die nach Eingabe der Monatszahl (1 == Jan, 2 == Feb, …)  und der Jahreszahl die Anzahl der Tage des Monats berechnet.
 +
 +=== Lösung ohne Beachtung von Schaltjahren ===
 +<code java>
 +public class DatumsRechner
 +{
 +
 +    public int tageImMonat(int monat, int jahr){
 +        ​
 +        if(monat == 2){
 +            ​
 +             ​return 28; // Das stimmt natürlich nicht für Schaltjahre!
 +            ​
 +        }   
 +        ​
 +        if(monat <= 7){
 +        ​
 +            // Ist der Wert von Monat ungerade?
 +            if(monat % 2 == 1){
 +                return 31;
 +            } else {
 +                return 30;
 +            }
 +            ​
 +        } else {
 +        ​
 +            if(monat % 2 == 1){
 +                return 30;
 +            } else {
 +                return 31;
 +            }
 +            ​
 +        }
 +    }
 +}
 +</​code>​
 +
 +
 +==== Berechnung der Tage eines Monats unter Berücksichtigung von Schaltjahren ====
 +Im {{https://​de.wikipedia.org/​wiki/​Schaltjahr|Wikipedia-Artikel zu Schaltjahren}} erfährt man:
 +  - „Die durch 4 ganzzahlig teilbaren Jahre sind Schaltjahre. […]
 +  - Säkularjahre,​ also die Jahre, die ein Jahrhundert abschließen (z.B. 1800, 1900, 2100 und 2200) sind keine Schaltjahre. […]
 +  - Schließlich sind die durch 400 ganzzahlig teilbaren Säkularjahre doch Schaltjahre. Damit sind z.B. 1600, 2000 und 2400 jeweils wieder Schaltjahre. […]“
 +<code java>
 +public class DatumsRechner
 +{
 +
 +    public int tageImMonat(int monat, int jahr){
 +        ​
 +        if(monat == 2){
 +            ​
 +            if(istSchaltjahr(jahr)){
 +                return 29;
 +            } else {
 +                return 28;
 +            }
 +            ​
 +        }   
 +        ​
 +        if(monat <= 7){
 +        ​
 +            if(monat % 2 == 1){
 +                return 31;
 +            } else {
 +                return 30;
 +            }
 +            ​
 +        } else {
 +        ​
 +            if(monat % 2 == 1){
 +                return 30;
 +            } else {
 +                return 31;
 +            }
 +            ​
 +        }
 +    }
 +
 +
 +    private boolean istSchaltjahr(int jahr){
 +    ​
 +        // Jahreszahl ist kein Vielfaches von 4
 +        if(jahr % 4 != 0){
 +            return false;
 +        }
 +        ​
 +        // Jahreszahl ist ein Vielfaches von 400
 +        if(jahr % 400 == 0){
 +            return true;
 +        }
 +        ​
 +        // Jahreszahl ist ein Vielfaches von 100
 +        if(jahr % 100 == 0){
 +            return false;
 +        }
 +        ​
 +        return true;
 +    ​
 +    }
 +    ​
 +}
 +</​code>​
 +
 +Zur Deklaration der Methode ''​private boolean istSchaltjahr(int jahr)'':​ \\ 
 +<WRAP center round important 60%>
 +  * Das Schlüsselwort ''​private''​ bedeutet, dass diese Methode nur innerhalb der Klasse sichtbar ist.
 +  * Variablen des Datentyps ''​boolean''​ können nur die Werte ''​true''​ oder ''​false''​ annehmen. Man spricht auch von **booleschen Variablen** oder **Wahrheitswerten**.
 +</​WRAP>​
 +
 +
 +
  
Drucken/exportieren
QR-Code
QR-Code schule:klassen:2019:10abc:kap2 (erstellt für aktuelle Seite)