Funktionen

Funktionen

Mit Uhrzeiten und Datumsangaben kann man schlecht rechnen, deshalb hat man sich für Berechnungen von Zeitangaben den 1. Januar 1970 (willkürlichen) als Nullpunkt gesetzt. Mit der Funktion getTime() kann man aus dem Datumsobjekt die seit dem vergangenen Millisekunden ermitteln. 

Mit der Differenz der Werte von zwei Zeitpunkten kann man deren Abstand berechnen. Um die Anzahl der Tage zu berechnen, rechnet man Millisekunden durch Teilen in Sekunden (durch 1000), Sekunden in Minuten (durch 60), Minuten in Stunden (durch 60) und schließlich Stunden in Tage (durch 24) um, wie es hier in der Funktion Tage_Differenz geschieht. 

Funktionen werden verwendet, um den Programmcode übersichtlicher zu gestalten und um Blöcke von Anweisungen mehrfach verwenden zu können. Funktionen können auch in separaten Dateien gespeichert werden, um mehr Überblick zu verschaffen. Die Definition einer Funktion wird mit dem Schlüsselwort function eingeleitet. Nachfolgend stehen Variablen, die an die Funktion übergeben werden. Sollen keine Werte übergeben werden, muss dort dennoch eine leere Klammer stehen. Es können mehrere Variablen, die dann mit Komma getrennt werden, an die Funktion übergeben werden. Die Anweisungen der Funktion stehen zwischen geschweiften Klammern {}. Durch das Einrücken der Anweisungen sollte hier Übersichtlichkeit geschaffen werden.

Kommentare können Programme retten: Mit ein paar Anmerkungen kann man ein Programm leichter nachvollziehbar machten. Kommentare sehen formal so aus: /* hier steht der Kommentar */ - sie bestehen also aus beliebigem Text, der zwischen den Symbolen /* und */ steht. Variablen und Funktionen sollten immer Namen erhalten, die auf ihre Aufgabe hinweisen. Ein kurzer Kommentar zu einer Funktion kann aber dennoch nicht schaden …

JavaScript-04-Funktion.html
<html>
 
<head>
  <title>Funktionen</title>
</head>
 
<body>
 
  <script type="text/javascript">
 
  function Tage_Differenz(vSeconds_diff) {

    vDays_diff = vSeconds_diff / 1000 / 60 / 60 / 24;
    vDays_diff = Math.round(vDays_diff);

    return vDays_diff;
  }     var vJetzt = new Date(); var vXmas = new Date(2015, 11, 24); /* 24. 12. 2015 */   vDiff = vXmas.getTime() - vJetzt.getTime();   vDiff = Tage_Differenz(vDiff);   document.write("Noch " + vDiff + " Tage bis Weihnachten");   </script>   </body> </html>

Aufgabe 1: Schreibe eine neue Funktion Wochen_Differenz, in der du die Wochen von heute bis Weihnachten ermittelst. Die Rechnung sollte nicht so schwer fallen. Ändere oder ergänze die Ausgabe im Dokument entsprechend.

Ergänze außerdem eine Angabe darüber, wie lang das laufende Kalenderjahr (in Tagen und/oder Wochen) noch ist.

Hier musst du ganz besonders auf die Variablen und deren Namen achten. Nur wenn du den Variablennamen auch genau so schreibst wie vorher, funktioniert das. JavaScript ist recht unkompliziert im Umgang mit Variablen. In anderen Programmiersprachen müssen Variablen vor Gebrauch definiert und auch deren Typ (Text, ganze Zahl, Kommazahl, Liste etc.) festgelegt werden. In jedem Fall empfliehlt es sich, Listenvariablen (Array) mit einem vorangestellten a zu kennzeichnen (z.B. aMonat), andere Varaiblen mit einem v (z.B. vMonat). In JavaScript muss man das nicht tun, es erleichtert die Übersicht aber erheblich.

Darüber hinaus sollte die Benennung der Variablen möglichst systematisch erfolgen, z.B. vGeburtstag_diff für die Zeitdifferenz bis zum Geburtstag, vGeburtstag_noch_Wochen für die Wochen bis zum Geburtstag, auch wenn das etwas mehr zu tippen ist. Die Zeit, die man mit kürzeren Varaiblennamen spart, verliert man schnell bei der Fehlersuche.

Aufgabe 2: Ändere das Programm so, dass es die Anzahl der Tage bis zu deinem Geburtstag in diesem Jahr ermittelt und diese sinnvoll ausgibt. Außerdem ist das Programm für das Jahr 2015 geschrieben. Ändere das Programm so, dass es auch im nächsten Jahr noch funktioniert.

Du kannst das Programm auch ermitteln lassen, den wievielten Geburtstag du dann hast.

Bisher wurde der Geburtstag fest in das Programm eingegeben. Das ist zwar möglich aber natürlich wenig sinnvoll. Wir erweitern das Programm um eine Eingabefunktion. Die einfachste Methode ist ein Eingabefeld 

 vDatum = window.prompt("Gib dein Geburtsdatum ein: (tt.mm.jjjj) "); 

Wie aber kann man aus dieser Eingabe brauchbare Datumsinformationen auslesen? Glücklicherweise gibt es eine vorgefertigte Funktion in JavaScript, die eine Zeichenkette (string) in seine Bestandteile zerlegt, vorausgesetzt, es gibt einen geeigneten Trenner, hier also der Punkt: 

 aDatum = vDatum.split(".");

Hier entsteht eine Feldvariable (array), wie wir sie schon von den Monatsnamen kennen. Der erste Wert, hier der Wochentag, kann also mit aDatum[0] ausgelesen werden.

Aufgabe 3: Erstelle eine Funktion Datumseingabe, die das Datum per Prompt einliest und dann einen Zahlenwert für das Datum (Millisekunden seit dem 1.1.1970) zurückgibt. Nutze die Funktion, um die Tage bis zu diesem Zeitpunkt zu ermitteln.