erstellt 29.07.99; übersetzt 01.03.03; überarbeitet 20.04.04, 29.09.06, 11.10.10, 20.02.2018, 14.09.2020, 26.04.21, 23.09.21, 21.02.22, 19.09.22; © Deutsche Übersetzung Heinrich Gailer


Kapitel 8 Programmieraufgaben


Wenn ich ein Student wäre und diese Aufgaben sähe, würde ich argwöhnen, dass sich jemand damit nicht allzu viel Mühe gegeben hat. Die Art von langweiligen Aufgaben, die nicht viel mehr tun als den Lernenden zu beschäftigen. Obwohl diese Aufgaben einfach und etwas langweilig sind, beabsichtigen sie in Wirklichkeit das Konzept der primitiven Datentypen zu verfestigen, das von entscheidender Bedeutung ist (und aus diesem Grund genau an dieser Stelle ein bisschen der Übung wert ist). Bitte macht die Aufgaben.


Aufgabe 1

Das folgende Programm verwendet den primitiven Datentyp int:

class IntBsp
{
  public static void main ( String[] args )
  {
    int zahl = 32;
    System.out.println("Eine int-Variable: " +  zahl);
  }
}

Das Wort "zahl" ist in diesem Programm eine Variable — ein Name für einen Teil des Speichers, der Daten eines bestimmten Datentyps enthält.

In diesem Fall ist "zahl" der Name von 16 Bits des Hauptspeichers, der den Datentyp short verwendet, um einen Integer (eine ganze Zahl) darzustellen. (Im weiteren Verlauf dieser Aufzeichnungen wird noch ausführlicher auf Variablen eingegangen.) Das Programm stellt den Wert 32 in die Variable zahl. Dann gibt es aus:

Eine int-Variable: 32

Mit anderen Worten: Das Programm kontrolliert in der nächsten Zeile die Variable und gibt den Inhalt der Variablen auf den Bildschirm aus.

Eure Aufgabe: Erstellt eine Datei mit dem Namen IntBsp.java. Kompiliert die Datei und führt sie aus. Überprüft dann die Bildschirmausgabe. Verändert das Programm, so dass anstatt 32 ein andere kleine Zahl, z.B. 356, ausgegeben wird. Kompiliert die Datei und führt sie aus. Es sollte alles okay sein.

Als nächstes versuchen wir folgendes:

class IntBsp
{
  public static void main ( String[] args )
  {
    int zahl = Integer.MAX_VALUE;
    zahl = zahl + 1;
    System.out.println("Eine int-Variable: " +  zahl);
  }
}
Diese Zahl ist zu groß für den Datentyp int. Mit anderen Worten, sie kann nicht mit dem 32-Bit Datentyp int dargestellt werden. Was passiert? Es findet ein Overflow statt. Weitere Informationen zum Thema Overflow findet Ihr auf Wikipedia.

Zurück zum Inhaltsverzeichnis.


Aufgabe 2

Das folgende Programm verwendet den primitiven Datentyp double:

class DoubleBsp
{
  public static void main ( String[] args )
  {
    double zahl = 32;
    System.out.println("Ein double: " +  zahl);
  }
}

Kompiliert und führt die Datei aus. Unterscheidet sich die Ausgabe (das, was auf den Bildschirm ausgegeben wird) von der Ausgabe des ersten Programms aus der vorherigen Aufgabe? In diesem Programm ist "zahl" der Name von 64 Bits, die den Datentyp double verwenden, um Gleitpunktzahlen darzustellen.

Es ist absolut OK, den Variablennamen zahl in beiden Programmen zu verwenden. Die Verwendung von Namen auf diese Weise ist für uns eine Möglichkeit zu beschreiben, was der Computer tun soll.

Die Reservierung eines Teils des Computerspeichers für eine bestimmte Verwendung ist nicht von Dauer und wird mit dem Ende Programms wieder aufgehoben.

Versuchen wir jetzt das Programm zum Absturz zu bringen. Dazu werfen wir einen Blick auf die Tabelle der primitiven Datentypen mit ihren Wertebereichen und ändern die Zahl 32 in einem Wert, der für den Datentyp double zu groß ist. Ihr möchtet dafür vielleicht die wissenschaftliche Darstellung verwenden.

Zurück zum Inhaltsverzeichnis.


Aufgabe 3

Das folgende Programm verwendet ebenfalls den primitiven Datentyp double. Das Programm berechnet und gibt den Wert von exp( 32 ) aus. Das ist die 32. Potenz der Eulerschen Zahl e, also e 32. (Macht Euch keine weiteren Gedanken darüber. Worauf es hier ankommt ist nicht die Mathematik, sondern die Gleitpunktzahl.)

class DoubleCrash
{
  public static void main ( String[] args )
  {
    double zahl = 32;
    System.out.println("e hoch " + zahl + " ergibt: " +  Math.exp(zahl) );
  }
}
Kompiliert und führt das Programm aus. Lässt es sich kompilieren und korrekt ausführen? Ersetzt jetzt die Zahl 32 durch immer größere Zahlen, bis etwas schief geht.

Zurück zum Inhaltsverzeichnis.


Aufgabe 4

Das folgende Programm verwendet den primitiven Datentyp char:

class CharBsp
{
  public static void main ( String[] args )
  {
    char ch = 'A' ;
    System.out.println("Ein char: " +  ch );
  }
}

Die Variable "ch" repräsentiert 16-Bit des Hauptspeichers und verwendet ein Schema, um Zeichen (Character) darzustellen. Ihr wurde das Zeichen 'A' übergeben. Die Ausgabe des Programm ist:

Ein char: A

Probiert folgendes:

Zurück zum Inhaltsverzeichnis.


Ende der Aufgaben