Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Mathematik-Grundbegriffe für Programmierer

Mathematische Operationen und unpassende Datentypen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Die Operatoren, mit denen man grundlegende mathematischen Aktionen wie Addieren, Subtrahieren, Multiplizieren oder Dividieren durchführt, sind in der Regel aus der Grundschule bekannt. Aber was soll passieren, wenn die Operanden nicht mathematischer Natur sind? Auch hier muss die Informatik bzw. eine Programmiersprache eine logische und zuverlässige Umgangsweise bereitstellen. Meist wird dies über die Datentypen gewährleistet.
07:41

Transkript

Die Operatoren, mit denen man grundlegende mathematische Aktionen wie Addieren, Subtrahieren, Multiplizieren oder Dividieren macht, sind in der Regel aus der Schulmathematik bekannt. Die meisten komplexeren Berechnungsregeln eigentlich auch. Aber was passiert in der Programmierung, wenn die Operanden nicht mathematischer Natur sind; das heißt, wenn man versucht, Dinge zu addieren, die eben keine Zahlen darstellen? Wenn man sie multipliziert, dividiert und ähnliches? Wir wollen uns in diesem Video anschauen, wie Programmiersprachen dann reagieren. Ich fange mit einem einfachen Beispiel an. Was ist 1 mal 1? Darüber brauchen wir uns nicht lange zu unterhalten. Natürlich ist das 1. Und was ist 2 plus 2? Ganz klar 4; zumindest in den meisten mathematischen Konzepten. Jetzt wird es schwieriger. Was ist 6 geteilt durch 2? 3 als Ergebnis dürfte auch den meisten klar sein. Wir sind bei "Wer wird Millionär" jetzt bei der 100€-Frage. Was ist aber 5 geteilt durch 2? Jetzt sollten Sie sich wirklich Gedanken machen oder jemanden anrufen, der sich auskennt. Denn das Ergebnis ist nicht offensichtlich klar. Was ist denn das Ergebnis? 2? Oder vielleicht 2,5? Oder 2.5? Oder 3? Oder gar nicht definiert? Wieso können hier unterschiedliche Ergebnisse herauskommen? Um es provokant zu sagen: In einer ernsthaften Programmiersprache kann nur 2 herauskommen. Ich denke, diese Aussage wird einige Leute überraschen. Denn aus der Schulmathematik würde man natürlich 2,5 sagen. Das Komma ist jetzt ein Problem, da wir in der Programmierung oft eine Punktdarstellung haben. Aber das ist eine kleine Formalie. Wenn man 2,5 und 2.5 als identisch betrachtet: Okay. Aber wieso 2 und nicht 2,5? Und was macht die 3 hier? Nun, die 3 kann ich erklären: das ist kaufmännisches Runden. Angenommen, die Operation ist so definiert, dass wir eine kaufmännische Rundung haben, wird ab 0,5 aufgerundet. Und warum soll abgerundet werden? Oder ist das überhaupt ein Abrunden? Wenn ich sage: "5 geteilt durch 2 ist 2", habe ich eine sogenannte Ganzzahldivision, was in Programmiersprachen vorkommt, die stark an Datentypen gebunden sind; in Java und C# zum Beispiel. Das heißt, wir haben hier zwei ganze Zahlen, also ganzzahlige Datentypen, die miteinander verknüpft werden, und das Ergebnis muss auch ganzzahlig sein. Das ist eine Regel in dieser Sprache. Und das weicht von der Erwartung aus der Schulmathematik ab. Und "nicht definiert" kann man sich auch vorstellen, weil zwei ganze Zahlen durcheinander dividiert werden und das Ergebnis eben nicht eine ganze Zahl ist. Jetzt haben wir bei den Operanden immer noch Zahlen; durchaus eine Situation, die etwas grenzwertig ist, aber es sind immer noch Zahlen. Aber was ist, wenn wir keine Zahlen mehr haben? Müller + Maier zum Beispiel? Was ist da das Ergebnis? Aus einigen Programmiersprachen kennt man das Ergebnis: MüllerMaier. Aber das ist eine String-Verkettung. Das geht nur dann, wenn der Plus-Operator polymorph ist. Mit anderen Worten: Das ist nicht mehr die mathematische Addition, sondern eine andere Verwendung dieses Operators. Spannend wird es, wenn man beispielsweise die Division betrachtet. Was ist denn Schwein geteilt durch Metzger? Schnitzel? Oder ist das verboten? "Nicht definiert"? Oder sonst etwas? Diese Fragen sind nicht trivial zu beantworten, und es hängt tatsächlich massiv an einer Programmiersprache, wie diese sich verhält. Ich möchte Ihnen zwei einfache Beispiele zeigen, was passieren kann, wenn in einer mathematischen Operation die Operanden nicht mathematischer Natur sind. Man kann unterschiedlich damit umgehen. Ich habe hier eine kleine Webseite und hier läuft ein JavaScript. Ich kann hier eine Eingabe vornehmen und werde aufgefordert, eine Zahl einzugeben; beispielsweise 6. Dann wird 5 mal die Eingabe genommen. Nochmal neu: Beispielsweise 8 ... ... und 5 mal 8 ist 40. Sie sehen, die Multiplikation wird durchgeführt. Jetzt gebe ich aber mal "Maier" ein. Und offensichtlich: Was ist 5 mal Maier? Und offensichtlich ist 5 mal Maier keine sinnvolle Operation. JavaScript reagiert so, dass dieser Ausdruck ausgewertet wird und es entsteht "NaN". Not a Number. Das ist ein Token, der genau für diese Situation gedacht ist: dass eine Operation mit nicht mathematischen Operanden durchgeführt wird. Andere Sprachen werfen hier zum Beispiel eine Ausnahme. Java, C# -- da wird eine ArithmeticException oder FormatException geworfen. Es gibt aber Sprachen, die diese Operation tatsächlich durchführen. Etwa PHP. Schauen Sie sich dieses Skript an. Auch wenn Sie kein PHP kennen, sehen Sie vielleicht, dass ich hier eine Variable $a mit dem Wert "Maier" habe, eine Variable $b mit dem Wert "Schmidt", und dann nehme ich Maier mal Schmidt und gebe das Ergebnis aus. Schauen wir uns an, was da herauskommt. Die Multiplikation von Maier und Schmidt ergibt die Zahl 0. Das ist nicht "Not a Number", das ist real eine Zahl. Das erscheint sehr wenig sinnvoll. Aber ich möchte Ihnen eine andere Variante der gleichen Situation zeigen. Ich habe hier ein weiteres PHP-Skript. Und ich habe eine Variable $netto mit dem Wert "20 Euro" und eine Variable $Mehrwertsteuer: "19 %". Zur Berechnung des Bruttopreises benutze ich diese Variablen. Und ich nehme tatsächlich diese Variable $Mehrwertsteuer mit einem Text darin und teile ihn durch 100. Und ich multipliziere die Variable $netto, in der auch tatsächlich Text vorkommt, dann mit einer Zahl. Und das funktioniert, nämlich genau nach der gleichen Logik, die eben nicht sinnvoll war. PHP sagt: Bei mathematischen Operationen, bei denen am Anfang eine Zahl auftaucht und danach nicht mathematische Zeichen, schneide ich einfach an der Stelle ab, an der die nicht mathematischen Zeichen auftauchen. Und dann führe ich die mathematische Operation durch. Ich wollte Ihnen in diesem Video deutlich machen, dass mathematische Operationen selbstverständlich nur auf mathematischen Operanden definiert sind, aber verschiedene Programmiersprachen unterschiedlich reagieren können, wenn denn nicht mathematische Operanden auftauchen. Und es gibt für all diese Situationen sinnvolle Argumente.

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
Erscheinungsdatum:04.10.2016
Aktualisiert am:19.12.2016

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!