Lösungen zu den Schleifen-Übungen


while, do/while (, for)


1) Ausgabe von Zahlenreihen:

2) Passwortabfrage

3) Summe der Zahlen 1-100

Der Primzahltester

     // Variablen
    var n;  // eine natürliche Zahl
    var eingabe;
    var teiler;
    var zaehler;
 
    // Eingabe
    eingabe = prompt("Geben Sie bitte eine natürliche Zahl ein");
    n = parseInt( eingabe );
 
    // Verarbeitung
    teiler  = 0;
    zaehler = 1;
    while( zaehler <= n )
    {
      if( n%zaehler == 0 )
      {
        teiler++;
      }
      else
      {
        // nothing to do
      }
      zaehler++;
    }
 
    if( teiler == 2 )
    {
      ausgabe = "Die Zahl " + n + " ist eine Primzahl";
    }
    else
    {
      ausgabe = "Die Zahl " + n + " ist keine Primzahl";
    }
 
    // Ausgabe
    document.write( ausgabe );
 

Wiederholungsanweisungen (Schleifen): For


Folgende Probleme können auftreten:

a) Was ist s+=x ???
Lösung:
  • s+=x ist die Kurzschreibweise von s = s + x;
  • Berechnungen sollten nicht in alert() stehen, weil sonst die Ausgabe nicht mehr gut lesbar ist. Besser vorher die Berechnung erledigen!
  • s+=x kann man also ersetzen durch s und die Berechnung vor dem alert() durchführen.
  • Die Variablennamen sind viel zu kurz. Summe und Zahl wären besser verständlich. Eine Umbenennung von s in Summe und von x in Zahl ist sinnvoll für das bessere Verständnis des Programms.

b) Wie schreibt man eine while-Schleife in eine for-Schleife um?
Lösung:
  • Warum sollte man das überhaupt tun?
    • Antwort: for-Schleifen werden gerne zum Zählen eingesetzt.
  • Wie funktioniert eine For-Schleife?
    • Alle zum Zählen notwendigen Variablen und Anweisungen befinden sich zwischen den runden Klammern hinter for.
    • Teil I enthält die Initialisierung, z.B. Zahl = 1.
    • Teil II enthält die Bedingung, z.B. 'Zahl < 3'
    • Teil III enthält Anweisungen, welche nach Abarbeitung des kompletten Blocks ausgeführt werden.
    • Als Teil IV bezeichnen wir die Anweisungen im zur for-Schleife gehörigen Block, d.h. for( Teil I; Teil II; Teil III) { Teil IV };
  • Wo befinden sich die Teile der for-Anweisung in einer while-Schleife?
    • Teil I befindet sich vor der Schleife.
    • Teil II befindet zwischen den runden Klammern.
    • Teil III befindet sich vor der schliessenden Klammer des zur while-Schleife gehörigen Blocks.
    • Teil IV befindet sich vor Teil III.
Wenn alle Teile entsprechend ersetzt werden, dann sollte die while-Schleife genauso funktionieren wie die for-Schleife.


Struktogramme


Hier folgt ein mit der Freeware Structed erstelltes Struktogramm:
http://www.robert-scheck.de/tools/strukted/
schleif2.jpg


<!DOCTYPE html>
<html>
 
  <head>
 
    <title>Beispiel</title>
    <meta name="author" content="Lehrer">
    <meta charset="utf-8">
 
    <script type="text/javascript">
 
      function schleifen()
      {
        // alle drei Tests nacheinander ausfuehren
        schleife1();
        schleife2();
        schleife3();
      }
 
      function schleife1()
      {
        // Variablen
        var Zahl;
        var Summe = 0;
 
        alert("Schleife 1");
 
        // for-Schleife:
        // im ersten Teil vor dem ersten Semicolon steht die sogenannte Initialisierung
        // in der Mitte steht die sogenannte Bedingung
        // im dritten Teil stehen die Anweisungen, welche nach der Abarbeitung des Blocks
        //     ausgefuehrt werden
        for ( Zahl = 1; Zahl < 3; Zahl = Zahl + 1 )
        {
          Summe = Summe + Zahl;
          alert ( Summe );
        }
      }
 
      function schleife2()
      {
        // Variablen
        var Zahl;
        var Summe = 0;
 
        alert("Schleife 2");
 
        Zahl = 1;   // Initialisierung vor der Schleife
        while (Zahl < 3)
        {
          Summe = Summe + Zahl;
          alert ( Summe );
          Zahl = Zahl + 1;
        }
      }
 
      function schleife3()
      {
        // Variablen
        var Zahl;
        var Summe = 0;
 
        alert("Schleife 3");
 
        Zahl = 1;   // Initialisierung vor der Schleife
 
        do {
          Summe = Summe + Zahl;
          alert ( Summe );
          Zahl = Zahl + 1;
        } while (Zahl < 3);
 
      }
 
    </script>
 
  </head>
 
 
  <body>
 
    <input type="button" value="Schleifentest" onclick="schleifen()">
 
  </body>
 
 
</html>