Programmieren verstehen mit Java

Vielen Dank, dass wir Sie auf dem Weg Ihrer ersten Programmiererfahrungen mit dem Buch “Programmieren verstehen mit Java” begleiten dürfen.

Auf dieser Website stellen wir den Quellcode des Buches zum Download als zip-Datei bereit. Ferner haben wir die Links des Buches noch einmal übersichtlich dargestellt und weisen auf Druckfehler hin.

Quellcode zum Buch

Der Quellcode zum Buch kann unter folgendem Link heruntergeldaden werden:
Listings zu Programmieren verstehen mit Java (Version 1.01)

Persönliche Anmerkung des Autors

Empfinden Sie Sachverhalte als unverständlich beschrieben? Haben Sie Fragen, Verbesserungsvorschläge oder Anregungen für weitere Themen? Haben Sie ggf. einen Fehler entdeckt?

Über eine Nachricht von Ihnen würde ich mich sehr freuen. Sie können hierfür entweder das Kontaktformular nutzen oder mich auch gerne direkt unter folgender E-Mail-Adresse erreichen: stefan.frank@geldundmuenze.de

Ihr
Stefan Frank

Druckfehler lassen sich leider nicht immer ganz vermeiden. Bis eine Korrektur in den publizierten Ausgaben vorgenommen ist, möchten wir nachfolgend auf Druckfehler in den jeweiligen Versionen hinweisen und bereits hier vorab richtig darstellen. Auch Ihnen ist etwas aufgefallen? Wir würden uns sehr freuen, wenn Sie uns über unser Kontaktformular hierüber informieren, vielen Dank!

Kapitel 2.3.4.1, Seite 116:

Fehlerhafte Stelle: “Für das Einlesen von Strings können Sie next() statt nextInt()
nutzen.”

Korrekt muss es lauten: “Für das Einlesen von Strings können Sie nextLine() statt nextInt()
nutzen.”

Die zugehörige Lösung auf Seite 205 wurde in der aktuellen zip-Datei des Dateidownloads (Version 1.01) ebenfalls korrgiert. Vielen Dank für den wertvollen Hinweis eines aufmerksamen Lesers 🙂

Weiterführende Links “Java-Entwicklung”:

Und was ist mit ChatGPT?

Wir schreiben das Jahr 2023 und ChatGPT ist in aller Munde! Es wird die meisten Jobs überflüssig machen, sagen die einen. Die anderen halten ChatGPT für völlig überbewertet – die Wahrheit liegt wahrscheinlich irgendwo dazwischen. Aber kann ChatGPT uns bei der Programmierung unterstützen?

Beleuchten wir das im Kontext dieses Buches, denn hier können Sie selbst direkt einschätzen, was GPT kann!

Hierfür habe ich ein kleines Experiment durchgeführt. Sie besitzen keinen ChatGPT-Zugang? Dann empfehle ich die Seite https://chatgptx.de. Hierbei handelt es sich um eine Variante, die keiner gesonderten Anmeldung bedarf.

Folgende Bitte stellte ich an Chat GPT (siehe auch nachfolgende Abbildung):

schreibe ein java programm welches eine kaffeemaschine simuliert

Die Antwort ist, wie ich finde, wirklich überraschend (allein der Paketname package coffeemachinesimulatorpackage; wurde hier von mir nachträglich hinzugefügt):


package coffeemachinesimulatorpackage;

import java.util.Scanner;

public class Kaffeemaschine {
    private int wasserstand;
    private int kaffeebohnen;
    private int milch;

    public Kaffeemaschine(int wasserstand, int kaffeebohnen, int milch) {
        this.wasserstand = wasserstand;
        this.kaffeebohnen = kaffeebohnen;
        this.milch = milch;
    }

    public void kaffeeZubereiten() {
        if (wasserstand < 50 || kaffeebohnen < 10) {
            System.out.println("Fehler: Nicht genug Wasser oder Kaffeebohnen.");
            return;
        }

        wasserstand -= 50;
        kaffeebohnen -= 10;

        System.out.println("Kaffee wurde zubereitet.");
    }

    public void latteMacchiatoZubereiten() {
        if (wasserstand < 50 || kaffeebohnen < 10 || milch < 50) {
            System.out.println("Fehler: Nicht genug Wasser, Kaffeebohnen oder Milch.");
            return;
        }

        wasserstand -= 50;
        kaffeebohnen -= 10;
        milch -= 50;

        System.out.println("Latte Macchiato wurde zubereitet.");
    }

    public void wasserNachfuellen(int menge) {
        wasserstand += menge;
        System.out.println("Wasser wurde nachgefuellt.");
    }

    public void kaffeebohnenNachfuellen(int menge) {
        kaffeebohnen += menge;
        System.out.println("Kaffeebohnen wurden nachgefuellt.");
    }

    public void milchNachfuellen(int menge) {
        milch += menge;
        System.out.println("Milch wurde nachgefuellt.");
    }

    public static void main(String[] args) {
        Kaffeemaschine kaffeemaschine = new Kaffeemaschine(500, 200, 500);
        Scanner scanner = new Scanner(System.in);

        while (true) {
            System.out.println("Was moechten Sie tun?");
            System.out.println("1 - Kaffee zubereiten");
            System.out.println("2 - Latte Macchiato zubereiten");
            System.out.println("3 - Wasser nachfuellen");
            System.out.println("4 - Kaffeebohnen nachfuellen");
            System.out.println("5 - Milch nachfuellen");
            System.out.println("6 - Beenden");

            int auswahl = scanner.nextInt();

            switch (auswahl) {
                case 1:
                    kaffeemaschine.kaffeeZubereiten();
                    break;
                case 2:
                    kaffeemaschine.latteMacchiatoZubereiten();
                    break;
                case 3:
                    System.out.println("Wie viel Wasser moechten Sie nachfuellen?");
                    int wassermenge = scanner.nextInt();
                    kaffeemaschine.wasserNachfuellen(wassermenge);
                    break;
                case 4:
                    System.out.println("Wie viel Kaffeebohnen moechten Sie nachfuellen?");
                    int kaffeebohnenmenge = scanner.nextInt();
                    kaffeemaschine.kaffeebohnenNachfuellen(kaffeebohnenmenge);
                    break;
                case 5:
                    System.out.println("Wie viel Milch moechten Sie nachfuellen?");
                    int milchmenge = scanner.nextInt();
                    kaffeemaschine.milchNachfuellen(milchmenge);
                    break;
                case 6:
                    System.out.println("Auf Wiedersehen!");
                    System.exit(0);
                default:
                    System.out.println("Ungueltige Eingabe.");
            }
        }
    }
}

Der Quellcode ist tatsächlich direkt ausführbar, ohne Fehler! ChatGPT stellt einen Wassertank und Milchbehälter zur Verfügung und überwacht sogar die Füllstände! Das haben wir bisher nicht programmiert! Somit stellt sich die Frage, ob ChatGPT eine Hilfe sein kann. Und die Antwort ist: Ja, definitiv! Vor allem für Routineaufgaben können Sie ChatGPT sehr gut nutzen.

Aber Achtung! Stellen Sie sich vor, Sie hätten den Quellcode bekommen, ohne Programmieren zu können. In diesem Falle hätte er ihn nicht viel geholfen! Was macht der Code eigentlich? GPT beschreibt zwar kurz die Funktionsweise:

Dieses Programm erstellt eine Kaffeemaschine-Objekt mit einem bestimmten Wasserstand, Kaffeebohnen und Milch. Es bietet dann eine Benutzeroberfläche, um Kaffee, Latte Macchiato und Wasser, Kaffeebohnen und Milch nachzufüllen. Der Benutzer kann das Programm auch beenden.

Sie sehen: So ganz stimmt die Beschreibung nicht, denn zumindest fehlt das Wort zuzubereiten. So klingt es, als wären Kaffee, Latte Macchiato, Wasser, Kaffeebohnen und Milch nachfüllbar – das sind aber nur die letzten drei.

Aber unabhängig davon stellt sich die Frage: Sind vielleicht doch Fehler im Quellcode enthalten? Was ist mit Fehlerrobustheit? Geben Sie z. B. statt einer Zahl einen Buchstaben ein, bricht das Programm ab.

Das Fazit ist somit: ChatGPT ist eine Unterstützung, ersetzen kann es den Blick des Menschen nicht. Nur der Mensch weiß, was er will und wie sein Programm ausgestaltet werden soll. Um den Quellcode nachvollziehen zu können, muss der Anwender über entsprechende Fähigkeiten verfügen. Soll heißen: Trotz ChatGPT ist es richtig und wichtig, dass Sie sich selbst mit dem Thema Programmieren beschäftigen! Nur so können Sie die automatisch generierten Ergebnisse beurteilen, bewerten und – wahrscheinlich nicht selten – korrigieren!