Taschenrechner-Beispiel

Spendenaufruf des DRK Ortsvereins Spielberg e.V.

16. April 2023

 

Hallo liebe Besucherin, hallo lieber Besucher!

In einem ganz anderen Kontext möchte ich hier nun bewerben:
Der Verein, für den ich auch einstehe, benötigt Spenden.
Ich habe vergangenes Jahr über fünf Monate versucht für delphi-lernen.de Spenden zu sammeln - es blieb leider bei 20 Euro von zwei Spendewilligen.
Nun hoffe ich, da es nicht um mich geht, dass sich mehr entschließen und für eine gute Sache zu spenden:

Alle Informationen - auch für die Überweisung den Verwendungszweck beachten!

Der neuste Stand, mindestens einmal im Monat hier zu sehen!

Jeder kann etwas bewirken, wenn er nur den Mut hat, es zu versuchen. (Martin Luther King Jr.)

 

 

Einleitung

Eines der naheliegendsten Progrämmchen was ein jeder Entwickler einmal entwickelt hat (oder haben sollte) ist ohne Zweifel wohl ein Taschenrechner. Und das ist auch der Grund, wieso wir noch bevor wir die Feature-Matrix von Java durchgehen und vergleichen, noch einen kleinen Abstecher bei einem solch einfachen Source-Code machen. Um das ganze aber nicht allzu weit zu treiben, sollen die Grundrechenarten und zusätzlich das Quadrieren und Wurzel-ziehen implementiert werden. Um die Stärken und Schwächen zwischen Java und Delphi ein kleines bisschen herauszukitzeln, werden wir zwei verschiedene Taschenrechner entwickeln. Der erste soll lediglich über die Kommandozeile nutzbar werden. Heutzutage eigentlich nicht mehr als richtige große Anwendung denkbar (zumindest als "Otto-Normal-Verbraucher"). Die zweite Version des Taschenrechners soll über eine grafische Oberfläche bedient werden können. Um hier allerdings nicht zu tief in die Java-Framework-Thematik eintauchen zu müssen, werden wir Swing zur GUI-Generierung nutzen. In Delphi ist das alles etwas anders. Auch hier nutzen wir eine Konsolen-Anwendung als erstes Projekt und dann eben das normale Delphi (auch ohne Dritt-Hersteller-Komponenten) um auch hier bei den "Basics" zu bleiben.
Und nun viel Spaß beim weiteren nachvollziehen und/oder bearbeiten der einzelnen Schritte.
 

Ein Taschenrechner als Konsolen-Anwendung

Da wir in Java grundsätzlich erst mal mit Konsolenanwendungen arbeiten, ist es auch für den Taschenrechner die einfachste Möglichkeit ein Beispielprogramm zu schreiben. Wir halten uns an die Grundrechenarten: Addition, Subtraktion, Multiplikation und die Division. Dabei reduzieren wir den Zahlenraum zusätzlich auf einfache Integer-Werte, was bei der Division bedeutet, dass wir eine Ganzzahldivision ohne Rest durchführen. Und hier erstmal der Java-Quellcode von mir. Wer möchte, kann das natürlich selbst versuchen oder aber auch ein ganz anderen Ansatz (Vielleicht Klassenbasiert?) nutzen; ich hatte mich für den rein Funktionalen Ansatz reduziert, damit die beiden Beispiele etwas einfacher verglichen werden können. Die GUI-Version nachher wird noch kompliziert genug.
 
public class Main {

    private static int eingabeInt1;
    private static int eingabeInt2;

    public static void main(String[] args) {

        System.out.println("Eingabe: Welche Berechnung soll durchgeführt werden?");
        System.out.println("+ - * /");
        System.out.print("Eingabe:");
        Scanner scanner = new Scanner(System.in);
        char eingabeChr = ((String) scanner.next()).charAt(1);

        System.out.println("Erste Zahl:");
        System.out.print("Eingabe:");
        eingabeInt1 = scanner.nextInt();

        System.out.println("Zweite Zahl:");
        System.out.print("Eingabe:");
        eingabeInt2 = scanner.nextInt();

        System.out.println("Ergebnis:");
        // seit Java 14 (bzw. Preview-Feature von Java 13) gibt es die sog.
        //          enhanced Switch Expression:
        switch (eingabeChr) {
            case '+' -> calcSumme();
            case '-' -> calcDifferenz();
            case '*' -> calcProdukt();
            case '/' -> calcQuotient();
            default -> System.out.println("Ungültiges Rechenzeichen...");
        }
        /* Vor Java 14
        switch (eingabeChr) {
            case '+':
                calcSumme();
            break;
            case '-':
                calcDifferenz();
                break;
            case '*':
                calcProdukt();
                break;
            case '/':
                calcQuotient();
                break;
            default:
                System.out.println("Ungültiges Rechenzeichen...");
        }*/


        System.out.println("Programm wird beendet.");
        scanner.next(); // warten
        scanner.close();
    }

    private static void calcSumme() {
        System.out.println(eingabeInt1+eingabeInt2);
    }

    private static void calcDifferenz() {
        System.out.println(eingabeInt1-eingabeInt2);
    }

    private static void calcProdukt() {
        System.out.println(eingabeInt1*eingabeInt2);
    }

    private static void calcQuotient() {
        System.out.println(eingabeInt1/eingabeInt2);
    }
}

 
todo
 
program Taschenrechner_Konsole;

\{$APPTYPE CONSOLE}

\{$R *.res}

uses
  System.SysUtils;

var
  eingabeStr : String;
  eingabeInt1, eingabeInt2 : Integer;


  procedure calcSumme;
  begin
    Writeln(eingabeInt1 + eingabeInt2);
  end;


  procedure calcDifferenz;
  begin
    Writeln(eingabeInt1 - eingabeInt2);
  end;


  procedure calcProduct;
  begin
    Writeln(eingabeInt1 * eingabeInt2);
  end;


  procedure calcQuotient;
  begin
    Writeln(eingabeInt1 div eingabeInt2);
  end;



begin
  try
    Writeln('Eingabe: Welche Berechnung soll durchgeführt werden?');
    Writeln('+ - * /');
    Write('Eingabe:');
    Readln(eingabeStr);

    Writeln('Erste Zahl:');
    Write('Eingabe:');
    Readln(eingabeInt1);

    Writeln('Zweite Zahl:');
    Write('Eingabe:');
    Readln(eingabeInt2);

    Write('Ergebnis:');
    case eingabeStr[1] of
      '+' : calcSumme;
      '-' : calcDifferenz;
      '*' : calcProduct;
      '/' : calcQuotient;
      else Writeln('Ungültiges Rechenzeichen... ');
    end;

    Writeln('Programm wird beendet.');
    Readln;

  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.
 
todo
 

todo

todo
 
GitHub blubb
 
 
todo
 

todo
 

 
Todo: Screenshot einfügen.
 
todo
 

todo

todo
 
GitHub blubb