Aufgabe 1

Mithilfe der verschiedenen Schleifenarten sollen folgende Zahlenreihen ausgegeben werden (innerhalb der Schleife darf nur eine Ausgabeanweisung stehen!):

  • 0, 1, 2, 3, …, 10
  • -10, -8, -6, …, +10
  • 0, 1, 4, 9, …
  • 1, 2, 4, 8, …
  • 0, 1, 3, 6, 10, 15, … (<100)
  • von a nach b mit s (schrittweite) – Werte sollen vom User eingegeben werden

Aufgabe 2

In einem Programm soll (zwingend) eine Zahl eingegeben werden, die …

  • … zwischen 0 und 10 liegt,
  • … größer als 20 ist und
  • … durch 5 teilbar ist.

Implementieren Sie jeweils ein Java-Programm, welches den Nutzer zwingt eine entsprechende Zahl einzugeben und bei Erfolg die Anzahl der Versuche ausgibt.


Aufgabe 3

In einem Programm soll ein User so lange Zahlen eingeben, bis er eine negative Zahl eingibt. Nach jeder Eingabe soll das Programm jeweils die derzeitige Summe und Anzahl aller Zahlen ausgeben.


Aufgabe 4

Ermitteln Sie mit Papier und Bleistift (TRACE-Tabelle) was das folgende Programm ausgibt:

  public static void main(String[] args) {
    int y;
    int x = 1;
    int total = 0;

    do {
      y = x * x;
      System.out.println(y);
      total = total + y;
      x = x + 1;
    } while (x <= 5);

    System.out.println("Total ist: " + total);
  }

Implementieren Sie das Programm neu, sodass eine anfangsgeprüfte Schleife bzw. eine Zählschleife verwendet werden.


Aufgabe 5 (Zahlenraten)

Ein Spieler soll eine (zufällig gewählte) Zahl zwischen 1 und 100 erraten. Das Programm soll jeweils die Meldungen „Die Zahl ist zu groß“, „Die Zahl ist zu klein“ bzw. „Treffer“ ausgeben.

In diesem Programm muss eine zufällige Zahl (zwischen 1 und 100) bestimmt werden. Dafür steht in Java folgende Funktion zur Verfügung:

int zufallszahl;
zufallszahl = (int) ((Math.random() * 100)) + 1;
System.out.println(zufallszahl);

Math.random() ermittelt eine Zufallszahl vom Datentyp double zwischen 0 und <1. Mit 100 multipliziert entstehen somit Zufallszahlen zwischen 0 und <100. Addiert man 1 und wandelt die Zahl mit (int) in eine Integer-Zahl um, erhält man nunmehr Zufallszahlen von 1..100.

Erweitern Sie das Programm so, dass auch die Anzahl der Versuche ausgegeben wird.


Aufgabe 6 (Würfeln)

Ein Würfel soll 10x gewürfelt werden. Implementieren Sie ein Programm, welches die Summe der Augenzahlen angibt.


Aufgabe 7 (Würfeln II)

Ein Java-Programm soll das mehrfache Würfeln mit einem Würfel simulieren.

  1. Für eine einzugebende Anzahl von Würfen soll jeweils gezählt werden, wie oft die jeweilige Zahl gewürfelt wurde.
  2. Der Würfel ist manipuliert! Wie kann dieser Fakt in dem Programm realisiert werden? Teste aus.
  3. Der User soll eingeben können, wie der Würfel manipuliert werden soll. Teste aus.

Aufgabe 8 (Zufallszahlen)

Ein Programm soll dem Anwender die Möglichkeit geben, eine beliebige vom Anwender einzugebende Anzahl vierstelliger Zufallszahlen…

  • … auszugeben,
  • … deren Mittelwert anzugeben,
  • … deren Minimum und Maximum anzugeben.

Implementieren Sie ein Java-Programm, welches diese Aufgabe bearbeitet.


Aufgabe 9 (HERON-Verfahren)

Heron von Alexandria (genannt Mechanicus) war ein Mathematiker und Ingenieur, der vermutlich im 1. Jahrhundert lebte. Bekannt sind vor allem seine Ausführungen zu automatischen, teilweise sogar schon programmierbaren Geräten und der Ausnutzung von Wasser, Luft und Hitze als treibende Kraft. Hier sind insbesondere die Erfindung der Aeolipile, auch Heronsball genannt, und der Heronsbrunnen zu nennen (wikipedia).

Außerdem entwickelte er einen Algorithmus, mit dem man für eine beliebige Zahl die Quadratwurzel auf eine beliebige Genauigkeit berechnen kann … das Heron-Verfahren:

  1. Wähle eine Startwert x zur Bestimmung der Wurzel aus w.
  2. Wähle x = \left(x + \frac{w}{x}\right) : 2 als nächsten Näherungswert.
  3. Wiederhole (2.) mit den jeweils neuen Näherungswerten bis die gewünschte Genauigkeit erreicht ist.

Die Grundidee für dieses Verfahren basiert auf der Frage, wie ein Rechteck in ein flächengleiches Quadrat umgewandelt werden kann … dafür wird die Seitenlänge des Quadrats benötigt.


Aufgabe 10 (Nim-Spiel)

Das Nim-Spiel ist ein Spiel für zwei Personen.

Gegeben ist ein Haufen von 13 Streichhölzern. Abwechselnd nehmen zwei Personen 1, 2 oder 3 Streichhölzer. Derjenige, der den Haufen leerräumt, hat gewonnen.

Erstellen Sie einen Algorithmus für das oben beschriebene Einstiegsproblem (Struktogramm). Es kann helfen, wenn man das Spiel selbst einmal durchspielt.

Implementieren Sie diesen Algorithmus in einem Java-Programm so, das zwei Spieler gegeneinander spielen können,

Mögliche Erweiterungen:

  • Erweitern Sie die Aufgabe so, dass die Anzahl der Starthölzer und die Anzahl der jeweils wegzunehmenden Hölzer eingegeben werden kann. Das Programm soll fehlerhafte (Zahl-)Eingabe melden.
  • Eine (für den derzeitigen Lernstand schwierige) Aufgabe könnte es sein, einen Spieler gegen das Programm spielen zu lassen. Dabei könnte das Programm in einer ersten Version zufällig, in einer weiteren wohl überlegt mitspielen.

Aufgabe 11 (Polynom)

Ein Polynom 3. Grades hat die allgemeine Form f(x) = y = ax³ + bx² + cx + d.

Implementieren Sie ein Java-Programm, welches für die eingegebenen Parameter a, b, c und d eine Wertetabelle für dieses Polynom ausgibt. Dafür müsste der User natürlich noch den Startwert, den Endwert und die Schrittweite eingeben.

Das Ergebnis soll dann tabellarisch ausgegeben werden. Hier könnten formatierte Strings helfen: HIER gibt es Hilfe.


Aufgabe 12 (Sternchen)

Ein Java-Programm zeichnet nach Eingabe zweier Parameter a und b verschiedene Figuren aus Sternchen. Im unten gegebenen Quellcode ist (bisher) nur die erste Figur implementiert. In den Grafiken sind alle vier zu realisierenden Figuren (für zwei verschiedene Programmdurchläufe) zu sehen.

Ergänzen Sie den gegebenen Quellcode, so dass alle vier Figuren ausgegeben werden.

public class Sternchen {

  public static void main(String[] args) {
    System.out.print("1. Zahl: ");
    int a = Input.readInt();
    
    System.out.print("2. Zahl: ");
    int b = Input.readInt();
    
    System.out.println();
    
    for (int i = 1; i <= a; i++) {
      for (int j = 1; j <= b; j++) {
        System.out.print("*");
      }
      System.out.println();
    }
    ...
  }
}

Aufgabe 13 (Primfaktoren)

Entwickeln Sie ein Programm, welches die Primfaktoren einer Zahl berechnet. Die Primfaktoren sollen dabei aufsteigend und mit ihrer Häufigkeit ausgegeben werden. Die Ausgabe soll in dem in den Beispielen angegebenen Format erfolgen (d.h. mit „*“ und „^“).

Beispiele:

20 = 2^2 * 5
256 = 2^8
6534 = 2 * 3^3 * 11^2
13332 = 2^2 * 3 * 11 * 101

Hinweis: Primfaktoren kann man ermitteln, indem nacheinander versucht wird, durch mögliche Primfaktoren zu dividieren (ohne dass ein Rest bleibt). Um die Primfaktoren nicht ermitteln zu müssen (kompliziert!), werden alle Zahlen durchprobiert (aufsteigend bei 2 beginnend). Hat man nämlich alle kleineren Zahlen schon durchprobiert, so bleiben nur die Primfaktoren für eine Division übrig.

… noch ein Hinweis:  Manchmal ist es sinnvoll, Schleifen zu schachteln …

Schlagwörter: