Wiki: Mathe und Info

Unterrichtsmaterialien für Mathematik und Informatik

Benutzer-Werkzeuge

Webseiten-Werkzeuge


info:sek-ii:e2:java-grundlagen:l10-strings-eingabe-ausgabe

Lektion 10 - JavaEditor, Eingabe / Ausgabe

Aufgabe 1: Das EVA-Prinzip, Strings

Lest die Fachkonzepte Datentypen, Strings und EVA-Prinzip. Beantwortet im Anschluss die folgenden Fragen und bearbeitet die Aufgaben:

  • Welche Datentypen gibt es in JAVA?
  • Was sind Strings und wie sind sie aufgebaut?
    • Welcher String steckt hinter dem ASCII-Code 74 65 86 65 32 105 115 116 32 99 111 111 108 33?
    • Wie lautet der ASCII-Code für den String Informatik ist toll! <3?
    • Wie lautet der ASCII-Code für den String 1337?
    • Welcher String steckt hinter dem ASCII-Code 52 50?
  • Was ist das EVA-Prinzip? Erläutere am Beispiel einer Smartphone-App deiner Wahl.

Aufgabe 2: Das erste Java-Programm

In Java läuft die Eingabe und Ausgabe über die sogenannte Konsole. Die Konsole stellt eine Möglichkeit dar, textbasierte Programme auszuführen und dem Benutzer zur Verfügung zu stellen. Um diese in Java benutzen zu können, benötigt ihr die kleine Helfer-Datei Konsole.java (siehe unten).

  1. Erstellt im JavaEditor eine neue Datei mit dem Namen Konsole.java und kopiert den Code unten hinein. Speichern nicht vergessen!
    • Diese Datei ist eine Helfer-Datei, also bitte nicht verändern! Es ist wichtig, dass sie im gleichen Ordner liegt, wie eure Programme!
  2. Erstellt eine neue Datei Bremsweg1.java und kopiert den Code unten hinein. Führt die Datei im Anschluss daran aus (mit dem -Button).
    1. Was könnt ihr beobachten?
  3. Modifiziert das Programm so, dass es euch den Bremsweg für verschiedene Geschwindigkeiten berechnet!
    1. Was ist das Problem bei diesem Vorgehen? Erinnert euch an das EVA-Prinzip!

Screenshot Konsole

Konsole.java

Konsole.java
import java.io.*;
 
public class Konsole {
    private static BufferedReader EingabeStream;
    private static PrintStream AusgabeStream;
    private static String[] jaWerte = {
        "1", "y", "t", "j", "w", "yes", "true", "ja", "wahr", "ok"
    };
 
    static {
        try {
            EingabeStream = new BufferedReader(new InputStreamReader(System.in));
            AusgabeStream = System.out;
        } catch (Exception e) {
            System.out.println("Konsoleneingabe nicht möglich");
        }
    }
 
    private static String leseZeile() {
        try {
            return EingabeStream.readLine();
        } catch (Exception e) {
            return "";
        }
    }
 
    public static void schreibe(String text) {
        AusgabeStream.print(text);
    }
 
    public static void schreibeZeile(String text) {
        AusgabeStream.println(text);
    }
 
    public static boolean leseWahrheitswert(String frage) {
        schreibe(frage);
 
        String eingabe = leseZeile().toLowerCase();
 
        for (int i = 0; i < jaWerte.length; ++i)
            if (jaWerte[i].equals(eingabe))
                return true;
 
        return false;
    }
 
    public static char leseZeichen(String frage) {
        schreibe(frage);
 
        String eingabe = leseZeile();
 
        return eingabe.charAt(0);
    }
 
    public static double leseKommazahl(String frage) {
        schreibe(frage);
 
        String eingabe = leseZeile();
 
        return Double.parseDouble(eingabe);
    }
 
    public static int leseZahl(String frage) {
        schreibe(frage);
 
        String eingabe = leseZeile();
 
        return Integer.parseInt(eingabe);
    }
 
    public static String leseText(String frage) {
        schreibe(frage);
 
        String eingabe = leseZeile();
 
        return eingabe;
    }
}

Bremsweg.java

Bremsweg1.java
public class Bremsweg1 {
    public static void main(String[] args) {
        double geschwindigkeit = 50;
        double reaktionsweg = (geschwindigkeit / 10) * 3;
        double bremsweg = (geschwindigkeit / 10) * (geschwindigkeit / 10);
        double anhalteweg = reaktionsweg + bremsweg;
 
        Konsole.schreibeZeile("Reaktionsweg (in m) : " + reaktionsweg);
        Konsole.schreibeZeile("Bremsweg (in m)     : " + bremsweg);
        Konsole.schreibeZeile("Anhalteweg (in m)   : " + anhalteweg);
    }
}

Aufgabe 3: Das erste vollständige Java-Programm

Aufgabe

Das Problem bei dem Programm Bremsweg1.java aus Aufgabe 1 war, dass es keine Möglichkeit zur Benutzereingabe gab. Wenn man also den Bremsweg für z.B. 100 km/h wissen wollte, musste man das Programm umschreiben und neu starten. Ziemlich umständlich.

  1. Kopiere den Code aus Bremsweg1.java in eine neue Java-Datei mit dem Namen Bremsweg2.java. Dazu musst du auch den Namen der Klasse in public class Bremsweg2 ändern (erste Zeile).
  2. Ersetzt die Zeile double geschwindigkeit = 50; mit:
double geschwindigkeit = Konsole.leseKommazahl("Geschwindigkeit (in km/h)? : ");
  • Beobachtet was passiert, wenn ihr das Programm mehrfach hintereinander startet und verschiedene Werte eingebt.
  • Welche Codezeilen entsprechen welchen Komponenten des EVA-Prinzips?
  • Wie war das noch einmal mit diesen Variablen?

Lösung

Die Komponenten des EVA-Prinzips:

  • Die Zeile 3 entspricht der Eingabe.
  • Die Zeilen 5-7 entsprechen der Verarbeitung.
  • Die Zeilen 9-11 entsprechen der Ausgabe.
Bremsweg2.java
  1. public class Bremsweg2 {
  2. public static void main(String[] args) {
  3. double geschwindigkeit = Konsole.leseKommazahl("Geschwindigkeit (in km/h)? : ");
  4.  
  5. double reaktionsweg = (geschwindigkeit / 10) * 3;
  6. double bremsweg = (geschwindigkeit / 10) * (geschwindigkeit / 10);
  7. double anhalteweg = reaktionsweg + bremsweg;
  8.  
  9. Konsole.schreibeZeile("Reaktionsweg (in m) : " + reaktionsweg);
  10. Konsole.schreibeZeile("Bremsweg (in m) : " + bremsweg);
  11. Konsole.schreibeZeile("Anhalteweg (in m) : " + anhalteweg);
  12. }
  13. }

Aufgabe 4: Taschenrechner

Aufgabe

Programmiere einen einfachen Taschenrechner, der zwei Zahlen abfragt und dann jeweils das Ergebnis der Addition, der Subtraktion, der Multiplikation sowie der Division berechnet und anzeigt. Die Grundlagen dazu hast du bereits gelernt! Speichere das Programm unter dem Namen Taschenrechner.java ab!

Entweder versuchst du die Aufgabe selbstständig zu lösen, oder du befolgst die Schritte unten. Wenn du alle Schritte korrekt befolgt hast (oder du die Aufgabe selbst gelöst hast), sollte die Ausgabe des Programms so aussehen:

Befolge die folgenden Schritte und teste nach jedem Schritt, ob dein Programm wie gedacht funktioniert. (Testen funktioniert häufig sehr gut über die Ausgabe, also mit dem Konsole.schreibe..(…)-Befehl.

  1. Lies zwei Werte über mit dem Konsole.lese…(…)-Befehl ein. Speichere diese als Integer in je einer Variablen (wert1 und wert2). Beachte: Du darfst im Moment davon ausgehen, dass der Benutzer keine falschen Eingaben macht!
  2. Addiere die beiden Werte und speichere das Ergebnis in einer weiteren Variablen (ergebnis_add). Gib das Ergebnis mit dem Konsole.schreibe…(…)-Befehl aus.
  3. Füge drei weitere Variablen (ergebnis_sub, ergebnis_mul und ergebnis_div) hinzu. Speichere das Ergebnis der Subtraktion, der Multiplikation der Division in der jeweiligen Variablen. Füge nun auch die passenden Ausgaben in dein Programm ein.

Lösung

Taschenrechner.java
public class Taschenrechner {
    public static void main(String[] args) {
        int wert1 = Konsole.leseZahl("Wert1 = ");
        int wert2 = Konsole.leseZahl("Wert2 = ");
 
        int ergebnis_add = wert1 + wert2;
        int ergebnis_sub = wert1 - wert2;
        int ergebnis_mul = wert1 * wert2;
        int ergebnis_div = wert1 / wert2;
 
        Konsole.schreibeZeile("Wert1 + Wert2 = " + ergebnis_add);
        Konsole.schreibeZeile("Wert1 - Wert2 = " + ergebnis_sub);
        Konsole.schreibeZeile("Wert1 * Wert2 = " + ergebnis_mul);
        Konsole.schreibeZeile("Wert1 / Wert2 = " + ergebnis_div);
    }
}

Aufgabe 5: Weitere Java-Programme

Schreibe mindestens zwei der folgenden Java-Programme:

  • Bearbeite den Taschenrechner so, dass er mit Kommazahlen rechnen kann (Tipp: double). Erweitere den Taschenrechner um weitere Rechenoperationen (z.B. Satz des Pythagoras, Flächeninhalte, Volumina, etc.) Hier helfen Math.sqrt(a) ($\sqrt{a}$) und Math.PI ($\pi$).
  • Schreibe ein Programm zur Umrechnung zwischen Euro und Dollar.
  • Schreibe ein Programm zur Umrechnung zwischen Temperaturen in °C, °K und °F.
  • Schreibe ein Programm zur Berechnung des BMI.
  • Schreibe ein Programm zur Berechnung des Blutalkoholspiegels.
info/sek-ii/e2/java-grundlagen/l10-strings-eingabe-ausgabe.txt · Zuletzt geändert: 2021-06-10 12:23 von christian.weber