11. Programmablauf

Submitted by javafrage on Sun, 09/08/2013 - 11:35

Gegeben sei das folgende Programm:

package s1.block3;

public class AufgabeSwitchCase {
    static short k;

    public static void main(String[] args) {
        short i, k;
        short imax = 10;
        for (i = 1; i < imax; i++) {
            for (k = 1; k < imax; k++) {
                if ((k == i) || (k == (imax - i))) {
                    System.out.print("*");
                }
                else { System.out.print(" "); // ein Leerzeichen
                }
            } // for k
            switch (i) {
                case 1:
                case 2:
                case 3:
                case 4:
                    System.out.print("LINKS");
                    break;
                case 6:
                case 7:
                case 8:
                case 9:
                    System.out.print("RECHTS");
                    break;
                default:
                    System.out.print("MITTE");
            } // switch
            System.out.println(); //Neue Zeile
        } // for i
    } // main
}
  • Markieren Sie alle Schlüsselwörter
  • Arbeiten Sie jetzt das Programm ab und tragen Sie die Konsolenausgaben von oben nach unten auf ein (kariertes) Blatt Papier ein.

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Niveau 1
Schwierigkeitsgrad mittel
Zeit 8+3 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

 

Antwort zu 10: Codetransformation

public class CodeTrans1 {
    public static void main(String[] args) {
        int b = 3;
        System.out.println("Erster Durchlauf");
        System.out.println("Vorgabe:");
        doWhile(b);
        System.out.println("nurWhile():");
        nurWhile(b);
        System.out.println("forSchleife():");
        forSchleife(b);
        // Zweite Testrunde
        System.out.println("Zweiter Durchlauf");
        b = 0;
        System.out.println("Vorgabe:");
        doWhile(b);
        System.out.println("nurWhile():");
        nurWhile(b);
        System.out.println("forSchleife():");
        forSchleife(b);
    }
    /**
     * Die Vorgabe der Aufgabe
     * @param b 
     */
    public static void doWhile(int b) {
        int i = 0;
        String s;
        if (b >= 0) { // b ist immer gößer Null!
            do {
                int k = i * 5;
                s = (i % 2 == 0) ? "gerade" : "ungerade";
                System.out.println("start():" + k + " ist " + s);
                i++; // Schleifeninkrement
            } while (i < b);
        }
    }
    public static void nurWhile(int b) {
        int i = 0;
        String s;
        if (b >= 0) { // b ist immer gößer Null!
            int k = i * 5;
            s = (i % 2 == 0) ? "gerade" : "ungerade";
            System.out.println("start():" + k + " ist " + s);
            i++; // Schleifeninkrement
            while (i < b) {
                k = i * 5;
                s = (i % 2 == 0) ? "gerade" : "ungerade";
                System.out.println("start():" + k + " ist " + s);
                i++; // Schleifeninkrement
            }
        }
    }
    public static void forSchleife(int b) {
        int i = 0;
        String s;
        if (b >= 0) { // b ist immer gößer Null!
            int k = i * 5;
            s = (i % 2 == 0) ? "gerade" : "ungerade";
            System.out.println("start():" + k + " ist " + s);
            for (i = 1; i < b; i++) {
                k = i * 5;
                s = (i % 2 == 0) ? "gerade" : "ungerade";
                System.out.println("start():" + k + " ist " + s);
            }
        }
    }
}

Ergibt die folgende Ausgabe:

Erster Durchlauf
Vorgabe:
start():0 ist gerade
start():5 ist ungerade
start():10 ist gerade
nurWhile():
start():0 ist gerade
start():5 ist ungerade
start():10 ist gerade
forSchleife():
start():0 ist gerade
start():5 ist ungerade
start():10 ist gerade
Zweiter Durchlauf
Vorgabe:
start():0 ist gerade
nurWhile():
start():0 ist gerade
forSchleife():
start():0 ist gerade

Anonymous (not verified)

Fri, 12/04/2015 - 17:59

Ist es gewollt, dass in der Antwort zu 1.66 bei der letzten Typkonversion weder ein Downcast, noch "//sichere Typkonversion" steht?