aufgeschlossen Programmieren mit JavaScript

Funktionen mit Wertübergabe

 While - Schleifen           Inhalt            einfache Verschlüsselung


Um einen Bruch vollständig zu kürzen, muss man Zähler und Nenner durch den größten gemeinsamen Teiler teilen.
Dazu definiert man eine Funktion ggT, die die Berechnung aus dem ggT - Programm oben enthält.
Javascript-
Funktion
function ggT(e, f) {
e und f sind Parameter : die Zahlen,
von denen der ggT berechnet werden soll
    while (Math.abs(e - f) > 0) {
      if ( e < f )
         f = f - e
      else
         e = e - f
    }
    return e
An Stelle der Ausgabe im Formular geben wir
das Ergebnis mit return ... an den Aufruf zurück.
 }// Ende der Funktion ggT
Beispiel
Zähler = Nenner =

Zähler = Nenner =

Sie können die Funktionsweise hier testen, indem Sie die Zahlen ändern und dann auf "Kürze" klicken.

oder

"kuerzen.html"als neue Seite öffnen
Quelltext
<html> <head> <title>Kürzen </title>
<script language="JavaScript">
  function ggT(e, f) {
    while (Math.abs(e - f) > 0) {
      if ( e < f )
         f = f - e
      else
         e = e - f
    }
    return e
  }// Ende der Funktion ggT
  function Kuerzen() {
    var Z = parseInt(document.KuerzenForm.Zaehler.value);
    var N = parseInt(document.KuerzenForm.Nenner.value);

    document.KuerzenForm.ZaehlerNeu.value = Z / ggT(Z, N);
    document.KuerzenForm.NennerNeu.value = N / ggT(Z, N);
Wir rufen (in beiden Zeilen)
ggT wie eine math. Funktion auf;
Z bzw. N wird durch den zurückgegebenen Wert geteilt.
    }
</script>
</head><body>
<form name="KuerzenForm">
Zähler = <input type="Text" name="Zaehler" size="5">
Nenner = <input type="Text" name="Nenner" size="5"> <P>
<input type="button" value="Kürze" onclick="Kuerzen ()"><P>
Zähler = <input type="Text" name="ZaehlerNeu" size="5">
Nenner = <input type="Text" name="NennerNeu" size="5">
</form></body> </html>


Rekursion

Eine andere Formulierung der Funktion ggT aus dem obigen Beispiel:
Javascript-
Funktion
function ggT(e, f) {
    if (e == f) return e;
    if (f == 0) return e;
    if ( e < f )
         return ggT (e, f % e)
      else
         return ggT (f, e % f)
  }// Ende der Funktion ggT
Erläuterung Statt eine Schleife zu verwenden, rufen wir die Funktion ggT mit anderen (kleineren) Parametern wieder auf.
Vorher muss für den Abbruch der Rekursion gesorgt werden.

Außerdem wird nicht subtrahiert, sondern mit dem Rest weiter gerechnet. Dieser kann auch 0 sein, deshalb die zweite Abbruchbedingung (if (f == 0) .. )

Schreibe bei den folgenden Aufgaben die jeweilige Funktion und ein kleines Testprogramm
Aufgabe 1 Schreibe eine Funktion "hoch ( Basis, Exponent )", die bei natürlichen Exponenten die Potenz durch mehrfache Multiplikation berechnet (Erweiterung auf negative Exponenten und dann auch auf beliebige Exponenten (mit Math.log und Math.exp ))
Aufgabe 2 Eine Funktion "max (a, b) soll die größere der beiden Zahlen zurückgeben.
Aufgabe 3 Eine Funktion Schaltjahr (Jahr) soll "true" zurückgeben, wenn es sich bei dem Parameter Jahr um die Jahreszahl eines Schaltjahres handelt, sonst "false".
Aufgabe 4 Bekanntlich ist n! = n * (n - 1)! und 1! = 1 Schreibe eine Funktion, die die Fakultät rekursiv berechnet.
Aufgabe 5 Schreibe eine Funktion "Primzahl (n)" entsprechend dem Programm "Primzahl - Test" (s. o.), die "true" oder "false zurückgibt. Benutze diese Funktion in einem Programm, das die Zahlen von 1 bis 100 untersucht und die Primzahlen ausgibt.
  While - Schleifen           Seitenanfang            einfache Verschlüsselung