Programmieraufgaben zur Anwendung von Feldern und Zeigern, die im Sinne der strukturierten Programmierung zu lösen sind. Die Quelltexte sollen in reinem C geschrieben werden, also keine Konzepte verwenden, die nur in C++ verfügbar sind.
Was zeichnet das Buch aus? Die Entdeckungsreise von Matoušek und Nešetřil will so gar nicht in die üblichen Kategorien von Mathematik-Büchern passen: Es gibt Lehrbücher, die streng nach dem Prinzip Definition – Satz – Beweis aufgebaut sind und die den Leser meist mit der Frage zurücklassen: "Wie soll ich jemals derartige Mathematik selber machen?" Und es gibt populärwissenschaftliche Bücher, die viel zu oberflächlich sind, um mit ihnen eigene mathematische Fähigkeiten entwickeln zu können. Warum ordnet sich die Entdeckungsreise hier nicht ein? Einerseits enthält es Definitionen, Sätze und Beweise und ein Blick in das Inhaltsverzeichnis erweckt den Eindruck eines üblichen Lehrbuches, andererseits findet man beim zufälligen Aufschlagen immer wieder Passagen im Plauderton . Dennoch ist es alles andere als eine Mischung der beiden genannten Kategorien. Um dies festzustellen, reicht es ein Kapitel zu lesen, von dem man glaubt, es schon gut zu kennen – selbst dort wird man...
Felder werden durch Zeiger organisiert und es ist gerade ein Charakteristikum der Sprache C, dass dies nicht nur intern verwendet wird, sondern dass man diesen Mechanismus selbst nutzen kann. Für den Einsteiger ist dies meist mit Schwierigkeiten verbunden, da man oft nicht entscheiden kann, mit welchem Objekt man gerade arbeitet (Zeiger oder Variable eines fundamentalen Datentyps). Die meisten der mit Feldern verbundenen Schwierigkeiten wie etwa die Zeigerarithmetik, die Ausgabe und der Vergleich von Feldern werden erklärt. Wie man Felder an Funktionen übergibt oder als Rückgabewert zurückerhält, wird im nächsten Kapitel erläutert.
In einem Feld werden mehrer Komponenten von gleichem Datentyp zu einem Objekt zusammengefasst. Die Anzahl der Komponenten muss bei der Deklaration angegeben werden und darf sich während der Laufzeit des Programmes nicht ändern. Der häufigste Fehler beim Umgang mit Feldern besteht im Zugriff auf Komponenten jenseits des deklarierten Bereichs, was zu unbestimmtem Verhalten des Programmes führen kann. Die unterschiedlichen Möglichkeiten zur Initialisierung eines Feldes werden vorgestellt. Felder können in beliebig vielen Dimensionen angelegt werden; besprochen werden hier nur eindimensionale Felder (Vektoren) und zweidimensionale Felder (Matrizen).
Zeiger sind Variable, deren Wert eine Adresse ist. Man kann sie mit der Adresse einer anderen Variable initialisieren. Da unterschiedliche Datentypen unterschiedlich großen Speicherplatz belegen, muss bei der Deklaration eines Zeigers angegeben werden, welchen Datentyp die Variable besitzt, auf deren Speicherplatz er verweist. Diese Eigenschaften von Zeigern und mit welchen Operatoren (Adressoperator, Indirektionsoperator) dies realisiert wird, wird hier ausführlich diskutiert. Als Anwendung wird gezeigt, wie man mit Zeigern Funktionen realisieren kann, die mehrere Rückgabewerte besitzen.
Das Damenproblem, also die Aufgabe möglichst wenige Damen auf einem Schachbrett so aufzustellen, dass das gesamte Schachbrett beherrscht wird, wird in ein Problem der Graphentheorie übersetzt. Zu dessen Lösung wird ein brute-force-Algorithmus entwickelt, der darauf beruht, dass man das Schachbrett mit einer Adjazenz-Matrix beschreibt und diese geeignet auswertet.
Der neue WildFly 18 Anwendungsserver ist sowohl Jakarta EE 8 als auch Java EE 8 zertifiziert.
Die Entwickler legten auch viel Arbeit in eine bessere Abstimmung der APIs mit der Jakarta Community.
Die Funktion lapply() ersetzt eine Iteration über die Komponenten einer Liste, wobei auf jede Komponente eine Funktion FUN angewendet wird; die Rückgabewerte werden wieder zu einer Liste zusammengefasst. Entsprechend wird mit mapply() über mehrere Listen iteriert, wobei in jedem Schritt entsprechende Komponenten ausgewählt werden und darauf wird die Funktion FUN angewendet. Die Funktion Map() ist ein Wrapper für mapply(), der die wichtigsten Anwendungsfälle abdeckt. Die meisten Funktionen in R sind vektorisiert, können also nicht nur auf einen Eingabewert, sondern auf einen Vektor angewendet werden. Die Vektorisierung von Funktionen ist ein in R zentrales Konzept, das ein besseres Verständnis der Funktion mapply() liefert. Zuletzt wird die Funktion outer() mit einigen Anwendungen besprochen. Die Funktion outer() besitzt zwei Vektoren (oder Felder) als Eingabewert und baut daraus ein komplexeres Feld auf.
In der Familie der apply-Funktionen gibt es mehrere Vertreter, mit den über die Elemente einer Liste iteriert werden kann, wobei auf jede Komponente eine Funktion f() angewendet wird. Besprochen werden lapply(), sapply(), vapply() und rapply(). Die Funktion lapply() ist dabei der grundlegende Vertreter, der die bei der Iteration entstehenden Rückgabewerte wieder zu einer Liste zusammensetzt. Dagegen versucht sapply() einen möglichst einfachen Rückgabewert zu erzeugen (Vektor oder Feld). Der Funktion vapply() kann eine Vorlage für den Rückgabewert übergeben werden, so dass man bessere Kontrolle für weitere Berechnungen hat. Mit rapply() können bestimmte Datentypen aus einer Liste selektiert werden und nur auf diese wird die Funktion f() angewendet; zudem wird die Anwendung von f() rekursiv an die Komponenten der Liste weitergereicht.
Das Programmieren in TypeScript ist mittlerweile ein Muss für jeden Frontend-Entwickler, man denke nur an das Angular Framework was komplett auf TypeScript setzt. Das Buch " Programming TypeScript: Making Your JavaScript Applications Scale " ist eine hervorragende Einführung in TypeScript, die man ...
Die Funktion apply() erlaubt es, über die Zeilen beziehungsweise Spalten einer Matrix zu iterieren und dabei eine Funktion FUN auf die Zeilen oder Spalten anzuwenden. Dabei entstehen leichter verständliche Quelltexte als bei den gleichwertigen Schleifen. Die Arbeitsweise der Funktion apply() kann man in drei Phasen unterteilen: split, apply, combine (Aufspalten der Matrix, Anwenden der Funktion FUN auf die Teile, Zusammensetzen der einzelnen Rückgabewerte zum Rückgabewert von apply()). Diese drei Phasen werden ausführlich erklärt und damit die Diskussion weiterer mit apply() verwandter Funktionen vorbereitet.
Microsoft hat jClarity, einen der Haupt-Kontributoren von AdoptOpenJDK, übernommen um damit vor allem die Java-Performance der Cloud-Plattform Azure zu optimieren.
Bisher wurden für alle Datentypen Diagnose-Funktionen vorgestellt, die über Form und Inhalt von Objekten Aufschluss geben. Für Funktionen gibt es ebenso eine Reihe von Diagnose-Funktionen, die zu weiteren Konzepten der objekt-orientierte und funktionale Programmierung führen oder spezielle Konzepte von R betreffen. Vorgestellt werden die wichtigsten Diagnose-Funktionen für Funktionen, wobei nicht alle weiterführenden Konzepte im Detail besprochen werden können.
Erläutert wird die Syntax, mit der man spezielle Funktionen in R selbst definieren kann: Funktionen mit dem Argument dot-dot-dot ("..."), binäre Operatoren, Funktionen höherer Ordnung und Funktionale, anonyme Funktionen, Listen von Funktionen, replacement-Funktionen, Funktionen mit unsichtbarem Rückgabewert. Um erste Funktionen in R zu implementieren reichen die Kenntnisse aus den Kapiteln Eigenschaften von Funktionen in R und Selbstdefinierte Funktionen in R (UDF = User Defined Functions); möchte man R tatsächlich als funktionale Programmiersprache nutzen, sind die hier vermittelten Kenntnisse unerlässlich.
Die Programmiersprache R bietet eine unüberschaubare Vielzahl von Funktionen, die bereits in den Standard-Paketen enthalten sind. Dennoch ist es unerlässlich, selber Funktionen zu implementieren, um selbstgestellte Aufgaben übersichtlich abzuarbeiten. Vorgestellt werden zwar nicht alle, aber die wichtigsten Hilfsmittel und Techniken für selbstdefinierte Funktionen: Die Syntax der Definition einer Funktion, Besonderheiten des Rückgabewertes einer Funktion, die Prüfung der Eingabewerte einer Funktion, das Setzen von default-Werten für die Argumente einer Funktion und einiges über den Mechanismus, wie Funktions-Argumente übergeben werden (call by value).
Auf dem JVM Language Summit 2019 stellte Maurizio Cimadomore Neuigkeiten zum Projekt Panama vor. Panama ist eine Alternative zu JNI (Java Native Interface) für die Einbindung von "fremden" (nicht-Java) APIs.
Eine Funktion ruft einen Quelltext-Abschnitt auf, der durch Eingabewerte konfiguriert werden kann und der einen Rückgabewert berechnet. Allgemeine Eigenschaften und Besonderheiten über die Eingabewerte und den Rückgabewert einer Funktion werden besprochen. Dies soll auf das nächste Kapitel vorbereiten, in dem gezeigt wird, wie man Funktionen selbst definiert.
Für alle die von Eclipse oder IntelliJ wechseln möchten: Programmieren geht auch mit MS Paint!
Die Nutzung von strukturellen Direktiven wie *ngIf, *ngFor oder *ngSwitchCase in Angular ist ein zentrales Konzept für die Manipulation der DOM-Struktur. Diese Direktiven sind gekennzeichnet durch das Sternchen/Asterisk-Symbol als Präfix, was sie von regulären Attribut-Direktiven unterscheidet. Doch was genau macht diese Syntax so besonders und warum hat Angular sich für diese spezifische Form entschieden?
"Cheat sheet" zu Template driven forms in angular
Die while-Schleife und die repeat-Schleife sind etwas allgemeiner als die for-Schleife. Wenn man weiß, wie oft eine Schleife durchlaufen werden soll, ist die for-Schleife weniger fehleranfällig einzusetzen. Ist dagegen nur die Bedingung bekannt, unter die Schleife verlassen werden soll, muss man die while- oder repeat-Schleife einsetzen. Die while-Schleife realisiert die kopfgesteuerte Schleife, die repeat-Schleife besitzt keine Bedingungsprüfung. Wie bei der for-Schleife können die Schlüsselwörter break (vorzeitiges Verlassen der Schleife) und next (sofortiger Übergang zum nächsten Schleifen-Durchlauf) eingesetzt werden.
Dieses kompakte Buch richtet sich an Java-Programmierer, die sich rasch die Grundlagen für die Entwicklung von nativen Android-Apps aneignen möchten. Es besteht aus drei Teilen: Grundlagen : Übersicht über das Betriebsystem Android sowie Entwicklung in Android-Studio und Grundlagen von Kotlin. Apps ...
Schleifen mit einer Zählvariable werden eingesetzt, wenn bekannt ist, wie oft ein gewisser Vorgang wiederholt werden muss (wobei die Anweisungen nicht exakt identisch sind, sondern meist vom Wert der Zählvariable abhängen). Die Syntax der for-Schleife sowie einige mit ihr verbundene Spitzfindigkeiten werden erklärt. Zusätzliche Kontrolle über den Ablauf einer Schleife erhält man durch break (vorzeitiges Verlassen der Schleife) und next (sofortiger Übergang zum nächsten Wert der Zählvariable).
Die Mehrfachalternative lässt sich durch verschachtelte Alternativen realisieren, was aber oft zu umständlichen und fehleranfälligen Quelltexten führt. Übersichtlicher ist die Realisierung mit der Funktion switch(). Für sie gibt es in R zwei Versionen, die sich in der Bedingungsprüfung unterscheiden: entweder wird eine Zeichenkette ausgewertet (character-Version) oder das Ergebnis der Bedingungsprüfung wird in eine ganze Zahl verwandelt (integer-Version).
Die Bedingungsprüfung mit if und die Alternative mit if else sind die wohl am häufigsten eingesetzten Kontrollstrukturen, durch die sich der Ablauf eines Programmes steuern lässt – sie sorgen dafür, dass gewisse Programm-Teile nur ausgeführt werden, wenn eine bestimmte Bedingung erfüllt ist. In R gibt es zusätzlich eine vektorisierte Variante der Alternative mit ifelse().
Nach den grundlegenden Eigenschaften im Kapitel "Dataframes in R: der Datentyp data frame" werden jetzt Anwendungen von Dataframes gezeigt: der Zugriff auf ein Dataframe (auf Spalten, Zeilen, einzelne Elemente oder Teilmengen), Sortierung eines Dataframes, Daten-Aggregation, Umwandlung in eine Matrix sowie das Schreiben eines Dataframes in eine Datei und umgekehrt das Lesen von tabellarischen Daten aus einer Datei.
In diesem Tutorial wird ein einfaches Grundgerüst für eine Electron-Applikation mit React und TypeScript erläutert. Grundkenntnisse in TypeScript/React sowie npm werden vorausgesetzt.
Excelsior LLC hat bekannt gegeben, dass die Entwicklung von Excelsior JET mit der Version 15.3 eingestellt wird.
Der Datentyp Dataframe vereinigt viele Eigenschaften der Datentypen Matrix und Liste und ist in zahlreichen Anwendungen der geeignete Rahmen, um statistische Daten zu speichern und ihre Auswertung vorzubereiten. Der erste Teil über Dataframes zeigt, wie man sie erzeugen und ihre Eigenschaften abfragen kann (Diagnose-Funktionen). Im nächsten Kapitel werden Anwendungen von Dataframes gezeigt.
In der Statistik muss man oft Daten gruppieren und die gruppierten Daten auswerten. In R wird eine derartige Gruppierung mit einem Faktor (oder mehreren Faktoren) vorgenommen. Das Kapitel beschreibt R-Funktionen, die diese Aufgaben erleichtern, und zeigt ihre praktische Anwendung.
Ausgehend von der Frage, welcher Zusammenhang zwischen Multiplikationstabellen und Linearkombinationen in den ganzen Zahlen bestehen, werden der Euklidische Algorithmus und seine Erweiterung besprochen. Der Euklidische Algorithmus berechnet den größten gemeinsamen Teiler zweier Zahlen, der erweiterte Euklidische Algorithmus erlaubt es zusätzlich, den größten gemeinsamen Teiler von a und b als Linearkombination von a und b darzustellen. Die Analyse dieser Algorithmen liefert zahlreiche Einsichten in die Zusammenhänge zwischen Kongruenzen, Linearkombination in Z und den Eigenschaften des größten gemeinsamen Teilers zweier Zahlen. In den R-Skripten werden Implementierungen vorgestellt sowie Verbesserungen (Blankinship, Stein) des Euklidischen Algorithmus diskutiert.
Übersicht der wichtigsten und am häufigsten verwendeten CSS-Selektoren
Das HTML5-Ping-Attribut, das die Hyperlink-Verfolgung mithilfe eines asynchronen Aufrufs ermöglicht, kann ab Safari 12.1 nicht mehr deaktiviert werden. Auch andere Browser planen diese Tracking-Funktion standardmäßig ohne eine Abschaltmöglichkeit einzusetzen.
Die Eigenschaften der Teilbarkeitsrelation werden untersucht. Besonders ausführlich wird gezeigt, dass sie eine Ordnungsrelation ist, welche Eigenschaften Ordnungsrelationen haben und wie sich diese in einem Hasse-Diagramm darstellen lassen. In den R-Skripten wird gezeigt, wie man das Hasse-Diagramm für eine beliebige Ordnungsrelation erzeugt. Die Anwendungsbeispiele zeigen dann Zusammenhänge zwischen der Teilbarkeitsrelation, der Teilmengenrelation und der Primfaktorzerlegung.
Die Addition und die Multiplikation sind invariant gegenüber der Restklassenbildung. Aus dieser Tatsache lassen sich leicht die Teilbarkeitsregeln herleiten, mit denen man schnell entschieden kann, ob eine Zahl z durch eine andere Zahl k geteilt werden kann oder welcher Rest bei der Division bleibt.
Die Ganzzahl-Division (oder Division mit Rest) führt zu wichtigen Begriffsbildungen: Kongruenz, Restklassen und ihre Verallgemeinerungen Äquivalenzrelation und Äquivalenzklassen. Insbesondere kann mit einer Äquivalenzrelation eine Zerlegung der zugrundeliegenden Menge definiert werden.
In der Statistik steht man oft vor der Aufgabe, eine Reihe von Messdaten zu klassifizieren (oder: gruppieren) und die gruppierten Daten weiter auszuwerten (etwa Häufigkeiten der Klassen feststellen, Mittelwertbildung innerhalb der Klassen). Man kann diese Operationen natürlich auf der Ebene von Vektoren durchführen, indem man geeignete Funktionen für Vektoren anwendet. In R gibt es den Datentyp factor, der die Klassifizierung vornimmt und zahlreiche Auswertungen deutlich vereinfacht. Vorgestellt werden hier zuerst die Begriffe aus der Statistik, die mit der Klassifizierung von Daten zusammenhängen; weiter wie Faktoren und geordnete Faktoren erzeugt werden sowie deren Eigenschaften. Im folgenden Kapitel werden dann Anwendungen mit Faktoren gezeigt.
Die fundamentalen Begriffe der Wahrscheinlichkeitsrechnung, nämlich Ereignisalgebra, Wahrscheinlichkeit, Wahrscheinlichkeitsraum und die Axiome von Kolmogorov, werden formuliert. Es werden einige einfache Anwendungen und Skripte für Simulationen von Zufallsexperimenten gezeigt.
Die grundlegenden Begriffe der Wahrscheinlichkeitsrechnung werden eingeführt: Zufallsexperiment, Ergebnismenge, Ereignis, Ereignisalgebra, Wahrscheinlichkeit und Wahrscheinlichkeitsraum. Ferner werden Computer-Experimente zum Vergleich der Wahrscheinlichkeit und der relativen Häufigkeit vorgestellt.
Nachdem im letzten Kapitel Beispiele für einfache Abzählprobleme vorgestellt wurden, werden jetzt die Grundbegriffe der Kombinatorik, nämlich Variation, Permutation und Kombination eingeführt, systematisch untersucht und an weiteren einfachen Beispielen erläutert.
An einfachen Abzählproblemen beim Würfeln wird gezeigt, wie man in der Kombinatorik systematisch vorgeht, um Abzählprobleme zu klassifizieren und allgemeine Formeln zur Berechnung der Anzahl der Realisierungen gewisser Ereignisse herzuleiten. In den R-Skripten werden Beispiele gezeigt, wie man solche Probleme auch ohne Kenntnisse aus der Kombinatorik mit roher Gewalt (brute force-Algorithmen) lösen kann.
Die Inhalte Ungewohnt für ein Lehrbuch ist die – fast schon essaystische – Anordnung der Kapitel. Inhaltlich kann man sie völlig getrennt voneinander lesen; zusammengehalten werden sie durch die Einheitlichkeit des Gesamtthemas Mathematik und Technologie und die dabei verwendete Methodik. Für ...
Übersicht über die in drei weiteren Artikeln ausführlich besprochenen interaktiven Elemente für HTML-Seiten.
Das Buch "Java ist auch eine Insel" gilt als eines der Kultbücher für Java-Entwickler und ist auch frei online verfügbar (in der 12. Auflage) unter http://openbook.rheinwerk-verlag.de/javainsel/ Neben der Einführung in die Programmiersprache selbst, bietet es auch eine gute Übersicht über ...
Für das Schach-Programm Fritz von ChessBase wird gezeigt, wie es in eine HTML-Seiten integriert werden kann.
Der pgn-Viewer von ChessBase kann verwendet werden, um Live-Übertragungen von Schach-Turnieren in einer HTML-Seite anzuzeigen.
Für die pgn-Viewer von Chess Tempo und ChessBase wird gezeigt, wie sie in HTML-Seiten integriert werden und welche weiteren Konfigurationsmöglichkeiten bestehen.
Übersicht über interaktive Elemente, um auf HTML-Seiten Schach-Aufgaben darzustellen.
Für die besprochenen Elemente werden Einbau-Anleitungen und Probeseiten gezeigt.
Was sind die besonderen Vorzüge des Buches? Die Vorteile als Mathematik -Buch seien kurz genannt: Die komplette Mathematik für ein Informatik-Studium ist enthalten: natürliche Zahlen, algebraische Strukturen, Zahlentheorie reelle und komplexe Zahlen Lineare Algebra Graphentheorie ...
In Stellenwertsystemen bildet man Zahlen, indem man Ziffern je nach ihrer Position mit einer Potenz der Basis gewichtet. Vorgestellt wird die allgemeine Definition eines Stellenwertsystems und die wichtigsten Vertreter: Dezimalsystem, Hexadezimalsystem, Dualsystem und Oktalsystem. Mir R-Skripten wird die Umrechnung zwischen Zahlensystemen durch eine Rekursion realisiert.
Funktionen aus den Basis-Paketen von R werden besprochen, mit denen Listen verarbeitet werden können. Insbesondere wird dabei auf die rekursive Struktur von Listen eingegangen.
Listen sind in R die grundlegende rekursive Struktur: anders als bei einem Vektor, bei dem alle Komponenten einen identischen Datentyp besitzen müssen, ist für die Komponenten einer Liste ein beliebiger Datentyp zulässig - sie können sogar selber wieder Listen sein.
Vorgestellt werden Funktionen zum Erzeugen von Listen, der Zugriff auf die Komponenten einer Liste, Diagnose-Funktionen für Listen und das Attribut names.
Es werden die Eigenschaften von primitiven pythagoreischen Zahlentripeln gezeigt und die Sätze bewiesen, die angeben, wie man alle primitiven pythagoreischen Zahlentripel explizit berechnen kann.
Zusammenstellung verschiedener Kapitel der Mathematik, die insbesondere für Programmierer, Informatiker, Ingenieure und Naturwissenschaftler relevant sind. Kurs zum Selbststudium.
Der Satz des Pythagoras ist zunächst eine geometrische Aussage über die Seitenlängen eines rechtwinkligen Dreiecks. Da es aber einige Dreiecke mit ganzzahligen Seitenlängen gibt (pythagoreische Zahlentripel) führt er schnell zu Fragen der Zahlentheorie. Einige Beweise des Satzes werden vorgestellt und es werden die Bezeichnungen für die zahlentheoretischen Fragestellungen eingeführt (näher untersucht werden sie in den anschließenden Kapiteln).