Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Mathematik-Grundbegriffe für Programmierer

Einheitenkontrolle bei mathematischen Operationen und in der Programmierung

Testen Sie unsere 2015 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
In der Praxis liegen oft Zahlen in Verbindung mit Einheiten vor – etwa Maßeinheiten für die Größe oder Währungen. Bei mathematischen Operationen muss man diese Einheiten eliminieren und gegebenenfalls dem Ergebnis wieder anfügen. Einige Programmiersprachen agieren hier trickreich bzw. automatisiert.
08:14

Transkript

In diesem Video wollen wir uns mit einer Fragestellung beschäftigen, die nicht wirklich mathematischer Natur ist. Sie hat trotzdem etwas mit unserem Thema zu tun. Ich würde hier mal von pseudo-mathematischen Fragestellungen oder pseudo-mathematischen Problemen reden. Um zu verdeutlichen, um was es geht, schauen wir uns mal was an an. Ich habe hier eine kleine Animation vorbereitet. Sie sehen eine Webseite, da ist eine Grafik drin, ein animiertes GIF, aber das spielt keine Rolle. Der entscheidende Punkt ist, wenn ich hier draufklicke, dann wird die Grafik vergrößert und irgendwann ausgetauscht. Schauen wir uns mal den Quelltext an, der dahinter liegt. Die Basis ist eine ganz einfache Website. Auch wenn Sie kein HTML kennen, dann ist es sehr einfach zu erklären, was hier passiert. Ich habe hier eine Überschrift und hier wird ein Bild eingebunden. Dieses Bild bekommt eine ID, um es zu identifizieren und mit einem HTML-Attribut wird die Höhe festgelegt. Hier gibt es eine Verbindung zu einer externen Stylesheet-Datei, die ist in diesem Beispiel irrelevant. Wir können Sie kurz ansehen, da wird nichts weiter gemacht als die Überschrift zentriert. Und wir haben hier die Verbindung zu einer JavaScript-Datei und die ist nun relevant. In dieser JavaScript-Datei sehen Sie den rekursiven Aufruf einer Funktion. Die Funktion ist von hier bis hier definiert. Und es kommt noch nicht mal so im Detail auf diesen JavaScript-Code an. Die Funktion wird aufgerufen beim einem Klick auf das Bild, das haben Sie gesehen. Aber eigentlich möchte ich mich nur um diese Zeile hier kümmern. Selbst wenn Sie kein Javascript kennen, Hier wird die Original-Höhe des Bildes genommen und bei jedem Aufruf der Funktion um den Wert 5 erhöht. Das ist ja ein mathematischer Prozess und damit haben wir die Verbindung zu unserem Hauptthema. Dabei läuft noch ein Counter mit und nach einer gewissen Anzahl von Aufrufen wird diese rekursive Funktion beendet und dann wird das Bild ausgetauscht. Das ist der Kern von dieser Animation. Nun habe ich eine zweite Variante von dieser Animation, von diesem Beispiel geschrieben, und das leitet zu dem Problem hin, womit wir uns beschäftigen wollen. Ich klicke man hier auch wieder auf dieses Bild, und Sie sehen, das Bild wird nicht vergrößert. Die Animation startet überhaupt nicht - scheinbar, stattdessen ist das Bild sogar erheblich verkleinert worden. Was ist der Hintergrund? Man kann dieses Element hier analysieren. Dazu gibt es im Browser Firefox ein Tool, das nennt sich "Firebug" und Sie sehen hier eine Höhenangabe von 5 Pixel. 5 Pixel ist definitiv weniger als unsere Originalgröße 10 Pixel. Wir hatten einen Wert von 10 gesetzt. Offensichtlich ist hier was verkleinert worden, und dann passiert nichts mehr. Wir haben also definitiv ein Problem. Wir schauen uns mal die Webseite an, da ist nicht viel an Unterschied zu sehen zu der bisherigen Webseite. Das Einzige: Die Höhe von dem Bild wird jetzt hier nicht im HTML-Tag gesetzt, sondern in der CSS-Datei. Das machen wir hier. Beachten Sie, dass hier eine Einheit auftaucht. Und das leitet zu dem Problem über. Denn, wenn ich jetzt im Javascript-Code die Höhe von dem Bild verändere möchte dann habe ich ein Problem mit den Einheiten. Das wäre das Beispiel vollkommen analog zu der vorherigen Variante. Sie sehen auch hier, dass wir die Höhe von dem Bild ansprechen und um den Wert 5 erhöhen. Beachten Sie, dass ich hier aber... - das ist jetzt spezielle Syntax - im Web, im Rahmen des DOM-Konzeptes, ein Attribut "style" benutze, um die Stylesheet-Eigenschaft anzusprechen. Im vorherigen Beispiel haben wir eine HTML Eigenschaft verwendet und diese erhöht. Hier nehmen wir die Stylesheet-Eigenschaft, die im Grunde das Gleiche, allerdings von der Wirkung, her darstellt. Und die erhöhen wir hier um 5. Nur was rechnen wir wirklich? In diesem Fall steht hier als Wert von height 10px und das ist ein String, und was soll 10px +5 geben? Das ist keine mathematische Operation mehr, das ist jetzt eine Stringverkettung. D. h., die Einheiten sind im Weg und die Programmiersprache entscheidet aufgrund eines polymorphen Verhaltens nun: Das ist dann keine arithmetische Operation mehr, das ist eine Stringverkettung. Und dann wird der Eigenschaft "height" etwas zugewiesen, was eben nicht mehr ein mathematischer Wert ist und auch nicht ein Wert, wie hier erwartet wird. Wir haben die Notwendigkeit, eine mathematischen Wert plus eine Einheit hier zu setzen. Beachten Sie, dass diese Ausführungen zwar hier für CSS und Javascript, Webtechnologien, gemacht werden, aber sich im Grunde auf jede Programmiersprache so übertragen lassen. Hier kann man das eben hervorragend sehen. Wenn wir dieses Problem lösen wollen, dann müssen wir bei solchen Operationen, wo auch Einheiten im Weg sind, diese Einheiten erst einmal eliminieren, dafür sorgen, dass wir eine arithmetische Operation haben und dann gegebenenfalls die Einheiten wieder draufhauen. Das sehen Sie hier, mit ein bisschen schmutziger Programmierung. Ich nehme mir den Originalwert, der in diesem Attribut "style.height" vorhanden ist, beispielsweise 10px. ersetze das "px" durch einen Leerstring. Danach habe ich immer noch einen String - und String + Zahl gibt wieder String. Wenn ich das verhindern möchte, "caste" ich die ganze Geschichte auf einen numerischen Datentyp, was wir hier in diesem Fall, bei Javascript, ganz einfach dadurch erreichen, dass ich eine Multiplikation mit den Literal 1 erreiche, dann gilt natürlich noch Punkt vor Strichrechnung und danach habe ich einen numerischen Wert. Das heißt, im ersten Durchlauf der Funktion habe ich dann die Zahl 10. Und dann kann ich hier die 5 drauf addieren, dann habe ich die Zahl 15 - wir werten ja von links nach rechts aus, und dann hau ich die Einheiten wieder drauf. Damit habe ich 15 px und das ist das, was ich brauche. Was Sie also jetzt in diesem Video gesehen haben, ist, dass man in vielen Situationen aufpassen muss, ob man wirklich eine mathematische, eine arithmetische Operation durchführt oder ob man noch Einheiten hintendran liegen hat, die möglicherweise ein Problem darstellen. Gewisse Programmiersprachen reagieren übrigens hier sehr "schlau" und eliminieren Einheiten im Fall einer arithmetischen Operation. Wir schauen uns ganz kurz noch zum Abschluss PHP an. Ich habe hier eine Berechnung vorgenommen, mit Strings. Beachten Sie, dass ich hier in der Variablen "netto" "20 Euro" als String habe, in der Variable für Mehrwertsteuer "19 Prozent" und dann hier aber tatsächlich mit plus, mal und geteilt arbeite, was bei Strings normalerweise ein Problem sein sollte, insbesondere geteilt oder ähnliche Sachen. Wir schauen uns kurz an, was das Ergebnis sein wird. Sie sehen, er hat das wohl offensichtlich doch richtig berechnet, ohne dass ich da irgendein "casting" oder ein "string replace" oder sonst etwas vorgenommen habe, das hat PHP automatisch gemacht. Hier ist die Situation, dass eine Sprache wie PHP, das als besonderes Feature bereitstellt, aber im Grunde machen die dort automatisch das Gleiche, was Sie eben im anderen Beispiel mit Javascript von Hand machen mussten. Es ist also abhängig von der Programmiertechnologie, ob solche Einheiten wirklich automatisch eliminiert werden oder ob Sie sich selbst darum kümmern müssen.

Mathematik-Grundbegriffe für Programmierer

Lernen Sie die Themenbereiche und Verfahren aus der Mathematik kennen, die bei der täglichen Programmierarbeit zum Einsatz kommen.

2 Std. 54 min (40 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Exklusiv für Abo-Kunden
Ihr(e) Trainer:
Erscheinungsdatum:04.10.2016
Aktualisiert am:19.12.2016
Laufzeit:2 Std. 54 min (40 Videos)

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!