Wiederholungsanweisungen (Schleifen)

Folgende Aufgabenstellungen können mit allen drei Schleifentypen gelöst werden. Zuerst sollen jeweils bevorzugt die angekreuzten Varianten von Ihnen bearbeitet werden.
Nr.
Aufgabenstellung
for
while
do/while
1.

Schreiben Sie ein Programm, welches ...




1.1.
... von 1 bis n zählt!
  • n wird vom Nutzer eingegeben.
  • Die Ausgabe wird wie folgt angezeigt: 1, 2, 3, 4, 5, 6, ... n.
x


1.2.
Geben Sie folgende Zahlenfolgen aus:
  1. 1,2,3,4,5,6,7,8,9,10
  2. 2,4,6,8,10
  3. 2,7,12,17,22
  4. 49,42,35,28,21
  5. 1,2,4,8,16,32,64,128,256,512,1024
  6. 8,13,18 ... 58
Hinweise:
  • Jede der Zahlenreihen wird in einer separaten neuen for-Schleife erzeugt.
x


2.

Schreiben Sie jeweils ein kleines Javascript-Programm, welches ...




2.1.
... die ganzen Zahlen von 0 bis 10 in Einerschritten nebeneinander auf dem Bildschirm ausgibt.
x


2.2.
... die ganzen geraden Zahlen von 10 bis 30 untereinander auf dem Bildschirm ausgibt.
x


2.3.
... die ganzen ungeraden Zahlen von 51 bis 73 untereinander auf dem Bildschirm ausgibt.
x


2.4.
... die Zahlen von 100 bis 0 in Fünferschritten rückwärts zählend untereinander auf dem Bildschirm ausgibt.
x


2.5.
... die Zahlen von +1 bis -1 in Schritten von 0,3 rückwärts zählend untereinander auf dem Bildschirm ausgibt.
x


2.6.
... den Anwender auffordert, zwei ganze Zahlen einzugeben (Zweite Zahl größer als die Erste):
Das Programm soll folgende Ausgabe liefern (Beispielhaft mit 5 und 10 als eingegebene Zahlen):
  • Die erste eingegebene Zahl war 5.
  • Die zweite eingegebene Zahl war 10.
  • Die ganzen Zahlen zwischen 5 und 10 betragen: 6, 7, 8, 9
x


2.7.
... die Summe der ganzen Zahlen zwischen 1 und 10 berechnet und folgendermaßen ausgibt.
  • Ausgabe: Die Summe der Zahlen zwischen 1 und 10 beträgt 55
x


2.8.
Wie die zuvorige Aufgabe, jedoch soll die Anfangs- und Endzahl vom Anwender frei wählbar sein.
x


2.9.
... die Fakultäten der ganzen Zahlen zwischen 1 und 10 berechnet und folgendermaßen ausgibt
  • Fakultät von 4 ist z.B. 1 * 2 * 3 * 4 also 24
  • Ausgabe: ..... 2! = 2 3! = 6 4! = 24 5! = 120 .... usw.
x


2.10
Wie letzte Aufgabe, jedoch soll die Endzahl vom Anwender frei wählbar sein.
x


3.

Programmieren Sie eine Passwortabfrage!

Nacheinander sind die folgenden Teilaufgaben zu erledigen:

A) Verlassen der Schleife erst nach richtiger Eingabe des Passworts!

Der Quelltext müsste etwa wie folgt aussehen ...
var pw="schnabbeldibubbel"; // Gleichheit wird mit == abgeprüft!
 
do
{
   eingabe = prompt( ... );
 
} while(  /*  Wurde das Passwort falsch eingegeben?
              Dann soll die Schleife wiederholt werden!    */   );
 
document.write(  ...  );

B) Verlassen der Schleife nach drei falschen Eingaben!

C) Nach Verlassen der Schleife wird eine Meldung ausgegeben, ob das Einloggen erfolgreich war oder nicht!



x
4.

Berechnung der Summe aller Zahlen von 1 bis 100

  • Schreiben Sie jeweils ein Programm, welches die Summe aller Zahlen von 1 bis 100 berechnet.
x
x
x
5.

Das kleine Einmaleins

  • Programmieren Sie das kleine Einmaleins!

Ausgabe wie folgt:
1x1=1, 2x1=2, 3x1=3 ...
1x2=2, 2x2=4 ...
1x3=3 ...
...
x


6.

Bringen Sie den folgenden Quellcode in einem Javascript-Programm zum funktionieren




6.1.

Korrigieren Sie den folgenden Quelltext!
var x;
var s=0;
for(x=1; x<3; x++)
  alert((s+=x)+" ");
  • Benennen Sie die Variablen sinnvoll.
  • Ergänzen Sie sinnvoll Klammern, fügen Sie Leerzeilen ein, rücken Sie richtig ein, beseitigen Sie Fehler.
  • Lösen Sie die Kurzschreibweisen - z.B. x++ - in einfache Ausdrücke - z.B. x=x+1 - auf.
  • Testen Sie das Programm.
  • Beschreiben Sie in einem kurzen Text die Funktion des Programms und fügen Sie diesen als Kommentar oben in den Javascript-Quellcode ein.
x


6.2.

Wandeln Sie Ihren Quelltext in eine While-Schleife um. Die Funktion soll identisch erhalten bleiben.

x

6.3.

Wandeln Sie Ihren Quelltext in eine Do-While-Schleife um. Die Funktion soll identisch erhalten bleiben.


x

6.4.

Erstellen Sie von Ihrer Lösung ein Struktogramm! (auf einem Blatt Papier!)
Wer das richtig gemacht hat, darf anschliessend das Programm Structed zum Zeichnen von Struktogrammen benutzen.
-
-
-

7.

Ausgabe des Programms vorhersagen




7.1.

Welche Ausgabe erzeugt der folgende Quelltext? (Nicht zuerst ausprobieren, sondern erst einmal nachdenken!)
int x, s=1;
for(x=2; x<=5; alert((s*=x++)+" "));
x


7.2.

Wandeln Sie den Quelltext in eine While-Schleife um und lösen Sie dabei die Abkürzungen (z.B. x++) in einfache Ausdrücke (z.B. x=x+1) auf.

x

8. Sternchen ausgeben

Schreiben Sie ein Programm, welches ...
a) entsprechend einer Eingabe des Nutzers eine beliebige Anzahl von '*' ausgibt.
b) nach 40 Sternchen automatisch einen Zeilenumbruch einfügt.
c) jede weitere Zeile um ein Sternchen verkürzt ausgibt.
d) erst nach Eingabe eines Passwortes die Funktion des Programms ermöglicht.

Erstellen Sie für alle Entwicklungsstufen immer zuerst ein Struktogramm.

9. Verstehen Sie den folgenden Quelltext?

Was wird auf dem Bildschirm ausgegeben?
a)
var x,y,i;
x=0;
y=4;
i=4;
document.write( i + " " );
while( x<28 )
{
  x=y*i;
  document.write( x + " " );
  i++;
}
document.write( i + " " )
b)
for (var i=8; i>6; i-=2)
{
   document.write( i + " " );
}
document.write( i + "." );
c)
var i=10;
document.write(i + " ");
while( i>5)
{
  i--;
  document.write(i + " ");
}
document.write(i + ".");
d)
var i=2;
do
{
  i=3+i;
  document.write( i + " " );
} while( i<16 );
document.write( i + "." );

10. Quelltext ergänzen

Ergänzen Sie den Quelltext, damit bei der Ausführung des Programms folgende Ausgabe erscheint: 8 5 2 .
for(  )
{
  document.write(i + " ");
}
document.write(".");
 

11. Quiz

Nr.
Frage
Lösung A
Lösung B
Lösung C
Richtige Antwort?
1
Was ist eine Abbruchbedingung?
Eine Bedingung, die dazu führt, dass die Schleife hoffentlich irgendwann einmal beendet wird
Eine Bedingung, die zur sofortigen Beendigung der Schleife führt
Eine Bedingung, welche zum Abbruch des kompletten Programms führt

2
Wann wird eine Schleife beendet?
Nachdem die Anweisungen in der Schleife einmal ausgeführt wurden
Wenn die Auswertung der Bedingung "false" als Ergebnis hat
Wenn die Auswertung der Bedingung "true" als Ergebnis hat

3
Was ist eine nachprüfende Schleife?
do/while-Schleife
for-Schleife
while-Schleife

4
Welcher Zähler funktioniert korrekt?
for( var zaehler=0; zaehler < 100; zaehler+1) {}
for( var zaehler=0; zaehler > 100; zaehler--) {}
for( var zaehler=0; zaehler < 100; zaehler++) {}

5
...




12.Programmanalyse

Analysieren Sie das folgende Programm, d.h.
  • Speichern Sie das Programm und führen Sie es aus. Sehen Sie sich an, was passiert!
  • Zeichnen Sie das zugehörige Struktogramm auf ein Blatt Papier!
  • Notieren Sie sich unbekannte Anweisungen, Funktionen, Operatoren usw. für die Rücksprache mit dem Lehrer!
  • Ergänzen Sie das Programm um Kommentare (z.B. an Stellen, an denen Sie verstanden haben, was dort passiert)!
  • Entwickeln Sie das Programm allein neu, indem Sie so tun, als ob Sie den Quellcode nicht kennen würden!
    Sie können dabei Ihr Struktogramm und ggf. den Quelltext zum Spicken benutzen!
    • Gehen Sie schrittweise vor entsprechend des von Ihnen verfassten Struktogramms!
    • Schreiben Sie ein Arbeitsprotokoll, welches festhält, an welchem Problem Sie gerade arbeiten und wie Sie es gelöst haben!
  • Welche Testfälle sind auszuführen, um das Programm lückenlos zu testen?
<script type="text/javascript">
       var eingabe;
       var zahl;
       var rest;
       var bitvalue;
 
       do
       {
           eingabe = prompt("Bitte geben Sie eine Zahl zwischen 0 und 255 (inkl.) ein!");
           if( eingabe!="" )
           {
             if( isNaN(eingabe) )
             {
                alert( "Ihre Eingabe ist keine Zahl! "
                     + "Nur Eingaben von Zahlen zwischen 0 und 255 sind zulässig!");
             }
             else
             {
                 zahl = parseFloat(eingabe);
                 rest = zahl;
                 if( rest%1 == 0 )
                 {
                     // Zahlenwert prüfen
                     if( zahl > -1 && zahl < 256 )
                     {
                        bitvalue=128; // Wert des hoechstwertigsten Bits
                        anzahlbits=0;
                        document.write("<br>Die Darstellung der Zahl "
                                      + zahl
                                      + " lautet im Dualsystem: <br><h2>");
                        while( rest>0 && bitvalue>=1 )
                        {
                            if(rest/bitvalue>=1)
                            {
                              document.write("1");
                              rest = rest-bitvalue;
                            }
                            else
                            {
                              document.write("0");
                            }
                            bitvalue=bitvalue/2;
                            anzahlbits++;
                        }
                        while( anzahlbits++ < 8 )
                        {
                          document.write("0");
                        }
                        document.write("</h2>");
                     }
                     else
                     {
                        alert("Nur Eingaben von Zahlen zwischen 0 und 255 sind zulässig!");
                     }
                 }
                 else
                 {
                     alert("Dieses Programm wandelt nur ganze Zahlen in das Dualsystem!");
                 }
             }
           }
           else
           {
             alert("Sie haben nichts eingegeben!");
           }
       }
       while( confirm("Möchten Sie eine Zahl ins Dualsystem wandeln?") );

13. Primzahltester

http://www.informatikzentrale.de/_files/04struktogramm/struktogramm1_bild_primzahltester-uebung.png
external image struktogramm1_bild_primzahltester-uebung.png