studyklar
GdI 2 · Probeklausur Teil 1 · Aufgabe 2

Zahlen bis zur Schranke ohne Vielfache von 3: while statt for

1, 2, 4, 5, 7, 8, 10: Jede dritte Zahl fehlt. Eine Methode soll so zählen, bis zu einer Grenze, die man ihr übergibt, und zwar ohne for-Schleife. Rechts steht das fertige Programm, darunter jede Runde der Schleife. Mit Weiter geht es Schritt für Schritt voran.

Die Aufgabe

Aufgabe 2

Schreiben Sie eine Methode, die die positiven ganzen Zahlen von 1 bis zu einer vorgegebenen Schranke auf der Konsole ausgibt – aber nur diejenigen Zahlen, die nicht durch 3 teilbar sind! Der Wert der Schranke soll als Parameter übergeben werden.

Es soll keine for-Schleife verwendet werden! Verwenden Sie eine andere Schleifenart.

Gesucht ist eine Methode mit einem Parameter, der Schranke: der größten Zahl, die noch vorkommen darf. Sie gibt jede Zahl von 1 bis zur Schranke aus, außer den Zahlen, die durch 3 teilbar sind (3, 6, 9, …).

Das Verbot von for heißt: Nehmen Sie while. Dann muss man das Zählen selbst erledigen, das sonst im Kopf der for-Schleife steht.

Merke: Eine while-Schleife braucht drei Dinge an drei Stellen: den Startwert vor der Schleife, die Bedingung im Kopf und das Weiterzählen am Ende des Rumpfs.
  1. Den Kopf der Methode mit dem Parameter schreiben.
  2. Zählvariable anlegen und die while-Bedingung formulieren.
  3. Mit dem Rest-Operator % die Vielfachen von 3 überspringen.
  4. In jeder Runde weiterzählen.
  5. Die Schleife für die Schranke 10 Runde für Runde verfolgen.
  6. Testen.

Der Kopf der Methode

    public static void gibZahlenAus(int schranke) {

Die Schranke kommt als Parameter herein: int schranke. Die Methode gibt nur aus und liefert nichts zurück, darum void. Den Namen legt die Aufgabe nicht fest; gibZahlenAus sagt, was sie tut.

Aus Vorlesung 4, Folie 3 („Methoden mit Parametern“): Der Wert in den Klammern beim Aufruf, etwa 10, landet in der Variablen schranke.

Startwert und Bedingung

        int zahl = 1;        while (zahl <= schranke) {

Eine for-Schleife hat Startwert, Bedingung und Weiterzählen in einer Zeile. Bei while steht nur die Bedingung im Kopf. Den Startwert legen wir davor an: zahl beginnt bei 1, der ersten Zahl, die ausgegeben werden soll.

Die Schleife läuft, solange zahl <= schranke wahr ist. Mit <= („kleiner oder gleich“) gehört die Schranke selbst noch dazu: Bei 10 wird auch die 10 geprüft. Mit < fehlte sie.

Aus Vorlesung 2, Folie 22 („While-Schleife“): Solange die Bedingung im Kopf true ist, wird der Rumpf wiederholt. Ist sie gleich zu Beginn false, läuft er kein einziges Mal.
Noch 5 Schritte bis zum Ergebnis
Den ganzen Lösungsweg sehen Studierende und Lehrende der HS KL. Registriere dich mit deiner Adresse @stud.hs-kl.de oder @hs-kl.de, dann geht es hier direkt weiter.

Das Programm ZahlenOhneDrei

while-Schleife und Test

Abbildung 1Das Programm ZahlenOhneDrei

while-Schleife und Test

public class ZahlenOhneDrei {     public static void main(String[] args) {        gibZahlenAus(10);        System.out.println("---");        gibZahlenAus(0);        System.out.println("---");    }     public static void gibZahlenAus(int schranke) {        int zahl = 1;        while (zahl <= schranke) {            if (zahl % 3 != 0) {                System.out.println(zahl);            }            zahl++;        }    }}
zahlzahl <= 10zahl % 3Ausgabe
1true11
2true22
3true0–
4true14
5true25
6true0–
7true17
8true28
9true0–
10true110
11falseSchleife endet
LegendeDas ganze Programm und jede Runde für schranke = 10.