Erläuterungen zum Programm MaxTeilerAnzahl.html 1. Struktur des Dokuments: Der "Body" des HTML-Dokuments wird in den Zeilen 61 – 65 beschrieben. Es gibt ein Eingabefeld mit dem Vorgabewert 1000, einen Button mit der Beschriftung "Los!" und einen Absatz, der zunächst leer ist. Das Javascript-Programm befindet sich zwischen den <script></script> - Tags. Der HTML-Teil ist folgendermaßen mit dem Javascript-Code verknüpft: • Das Input-Feld und der Absatz haben eine id ("eingabe" bzw. "ausgabe"), sodass diese Elemente im Programm über document.getElementById(" …") gefunden werden können. (Zeilen 42, 46, 50, 54) • Der Button ist über das onclick-Attribut mit der Funktion los() verbunden, d.h., bei einem Klick auf den Button wird die Funktion los() aufgerufen. 2. Funktionen: Das Programm wegen der Übersicht in mehrere Funktionen aufgeteilt, die sich zum Teil gegenseitig aufrufen. • Ausgangspunkt ist die Funktion "los()". In Zeile 11 wird darin die Funktion "loescheAusgabe()" aufgerufen. Das Programm springt dann zu dieser Funktion (Zeile 45) und führt die dort stehenden Anweisungen aus. Danach springt der Computer zur nächsten Zeile nach dem Aufruf (hier Zeile 12) zurück. Eine Funktion wird aufgerufen, indem man ihren Namen (mit Klammern) schreibt. • Die Funktion "los()" hat keine Parameter (d.h. zwischen den Klammern steht nichts) und keinen Rückgabewert (kein "return" in der Funktion). Weitere solche Funktionen sind leseEingabe() und loescheAusgabe() (Zeilen 41 und 45) • Die Funktionen pruefe, teilerAnzahl, setzeAusgabe und fuegeZeilezurAusgabeHinzu haben einen Parameter, d.h., sie bekommen beim Aufruf einen Wert mitgeliefert. Ein Beispiel: Wenn irgendwo im Programm die Anweisung setzeAusgabe("Hallo!") steht, geschieht folgendes: - Der Computer springt zur Funktion "setzeAusgabe(text)" in Zeile 49 - text bekommt die Zeichenkette "Hallo!" als Wert zugewiesen - "Hallo!" wird als HTML-Code in den Absatz mit der id "ausgabe" gesetzt (als innerHTML, also zwischen <p> und </p> ). - Die Funktion setzeAusgabe ist beendet, das Programm springt zurück. • Die Funktionen teilerAnzahl und leseEingabe geben einen Wert zurück. Man erkennt dies an der return-Anweisung am Ende. Hier wird festgelegt, was die Funktion "antwortet". Beispiel: In Zeile 12 wird leseEingabe() aufgerufen. Der Computer springt zur Zeile 42. Mit document...value wird der Wert des Eingabefeldes ausgelesen und anschließend mit return an die aufrufende Funktion übergeben. In Zeile 12 wird dieser Wert dann verwendet und der Variablen "grenze" zugewiesen. 3. Variablen • Der "Lebenslauf" einer Variablen am Beispiel der Variablen "anzahl" in Zeile 31: 1. Deklaration: Mit dem Wort var wird dem Computer eine neue Variable "bekanntgemacht"2. Initialisierung: Der Variablen wird ein erster Wert zugewiesen. 3. Aktualiserung: Die Variable bekommt einen neuen Wert, der alte geht dabei verloren. Deklaration und Initialisierung werden oft in einer Zeile kombiniert. "anzahl" wird in 31 deklariert und bekommt sofort den Wert 0. In Zeile 34 wird "anzahl" bei jedem gefundenen Teiler aktualisiert. • Variablen "leben" immer nur in der Funktion, in der sie deklariert werden. Die Variablen "anzahl" und "kandidat" aus den Zeilen 30 und 31 sind nur in der Funktion "teilerAnzahl" bekannt und können von außerhalb nicht "gesehen" oder verändert werden. Wenn ich eine Variable in mehreren Funktionen verwenden möchte, muss sie außerhalb der Funktionen deklariert werden. Im Programm ist das die Variable "maximaleTeilerAnzahl", die in den Funktionen los() und pruefe(zahl) verwendet wird. 4. Schleifen: Am Beispiel der Funktion Teileranzahl: • Wesentlich für die Schleife, die die Kandidatenzahlen durchläuft, sind die Zeilen 30, 32 und 36 • In Zeile 30 wird die Zählvariable "kandidat" deklariert und initialisiert (erster Kandidat ist 1) • In Zeile 32 wird aktuelle Wert von "kandidat" mit der Zahl verglichen. Solange kandidat<=zahl ist, wird die Schleife durchlaufen. • In Zeile 36 wird der kandidat um 1 erhöht. Ohne diese Zeile würde der Wert von Kandidat bei 1 bleiben und die Schleife würde endlos durchlaufen. • Eine ganz ähnliche Schleife befindet sich in der Funktion los() 5. Funktionsweise des Programms (Überblick, einige Details sind weggelassen) a. Beim Klick auf den Button wird die Funktion los() aufgerufen b. Die Ausgabe wird gelöscht, die Grenze eingelesen c. Zu Beginn wird maximaleTeilerAnzahl auf einen Wert gesetzt, der sicher kleiner ist als der tatsächliche Wert. d. In der Schleife (Zeilen 13, 15, 17 sind wesentlich) werden alle Zahlen von 1 bis zur Grenze durchlaufen und mit der Funktion "pruefe" untersucht. e. "pruefe()" untersucht, ob die aktuelle Zahl mehr Teiler als das bisherige Maximum hat. Falls ja wird das Maximum aktualisiert und zur Anzeige hinzugefügt, falls nein geschieht nichts. Beachte: Die aktuelle Anzahl der Teiler wird dreimal benutzt. Darum wird der Wert zu Beginn in der Variablen "ta" gespeichert. So wird vermieden, dass die Funktion teilerAnzahl mehrfach mit dem selben Wert aufgerufen wird (Zeitersparnis). f. Zur Funktion "teileranzahl": Die Schleife wurde oben bereits erläutert. Wenn der Kandidat ein Teiler ist (zahl ohne Rest durch kandidat teilber ist, Z. 33) wird anzahl um 1 erhöht, sonst geschieht nichts. Mit return wird die Teileranzahl zurückgegeben. g. Die anderen Funktionen sind Hilfsfunktionen. Ein- und Ausgabe waren bereits vor der letzten Kursarbeit bekannt.
© Copyright 2024 ExpyDoc