Dezember '18

Das Schlagwort AI - engl. Artificial Intelligence, künstliche Intelligenz – ist spätestens seit diesem Jahr in aller Munde. Einer der AI-Gründungsväter, der amerikanische Forscher Marvin Minsky, definierte den Begriff im Jahre 1966 so: Künstliche Intelligenz liegt dann vor, wenn Maschinen Dinge tun, für deren Ausführung man beim Menschen Intelligenz unterstellt. Bessere Prozessorleistungen und Speichermöglichkeiten sorgten dafür, dass sich die Fähigkeiten der AI in den letzten Jahren kontinuierlich weiterverbesserten. Beim Lesen mancher Artikel könnte man sogar fast den Eindruck gewinnen, es genügt schon einfach, AI neben den Namen eines Produkts zu schreiben und der Verkauf wird durch die Decke gehen. Nun, noch es ist es nicht ganz so weit, und meiner Meinung nach ist es auch noch ein langer Weg zum Ziel, zumindest solange, wie selbstfahrende Uber-Autos Unfälle mit Todesfolge verursachen...

Aktuelle Ausprägungen der künstlichen Intelligenz zielen bzgl. eines Anwendungsfalls in viele Richtungen ab wie etwa Face Detection, Landmark Detection oder Text Recognition, um nur einige zu nennen. Auf das Thema Natural Language Processing, also Speech Recognition möchte ich in einer dreiteiligen Artikelserie intensiver eingehen. Der heiße Sommer 2018 hat mich zur Inspiration angeregt, auf Grund der langen Anstellzeiten in der Warteschlange meiner Lieblingseisdiele doch eine App mit automatisierter Spracheingabe zu entwerfen, um so schneller in den Genuss der köstlichen Eiscreme zu gelangen. Gäbe es eine Eisdielen-App, die – mittels Spracheingabe – eine Bestellung aufnimmt und an die Eisdiele in Echtzeit weiterreicht, könnte man auf diese Weise die lange Anstellzeit umgehen und hätte dann – eine zweite Warteschlange für Online-Besteller vorausgesetzt – Vorrang beim Abholen seines in der Zwischenzeit angefertigten Eisbechers. Okay, ein bisschen Träumen darf sein, aber wieso eigentlich nicht?

Da ich im Firebase-Umfeld bereits Erfahrungen gesammelt habe, fiel die Wahl eines Spracherkennungssystems auf Dialogflow von Google. Eine ebenbürtige Alternative wäre Lex von Amazon gewesen, um nur einen Kompetitor zu nennen. Nach einer Vorstellung der Grundlagen von Dialogflow und der ersten Erstellung eines Dialogs für eine Eiscremebestellung in Teil 1 geht es mit der Ablage der Daten im Firebase-Backend in Teil 2 weiter. Eine App, die alle Online-Bestellungen auflistet und das Abholen einer Bestellung ermöglicht, schließt diese Trilogie in Teil 3 ab. Bleibt abschließend zu hoffen, dass es mir gelingt, das Team meiner Lieblingseisdiele von meinem neuartigen Geschäftsmodell zu überzeugen.

 

August '18

Die Hitzewelle dieses Sommers hat in der Tat auch den Elan zur Weiterarbeit meiner Website etwas gebremst. Wie wäre es, wenn wir aus diesem Grund die heiße Sommerszeit zum Wiederholen Ihrer C#-Sprachkenntnisse benutzen.

Eine sehr elementare Übung beschäftigt sich mit Rechtecken: Keine Angst, kein kompliziertes Grafiksystem erwartet Sie, sondern eine einfache Klasse Rectangle, deren Instanzen wir mit der berühmten ToString()-Methode "grafisch" in einer Konsole malen.

Ihre schulmathematischen Kenntnisse unterstützen Sie bei einer Wiederholung der elementaren Mengenlehre. Einfache mengentheoretische Operationen wie Schnittmenge, Vereinigungsmenge und Differenzmenge stellen wir in einer Klasse IntegerSet neben weiteren Methoden und Operationen am Beispiel von Mengen ganzer Zahlen vor.

Eine Spiegelzahl (auch Kehrzahl genannt) zu einer mehrstelligen natürlichen Zahl erhält man, indem man die Ziffern in umgekehrter Reihenfolge aufschreibt, z. B. ist 4321 die Spiegelzahl zu 1234. Von einem Zahlenpalindrom wiederum spricht man, wenn Ausgangszahl und Spiegelzahl identisch sind. Palindrome lassen sich nicht deterministisch berechnen. Dafür gibt es aber einen sehr einfachen Algorithmus, der häufig (aber wie gesagt: leider nicht immer) ein Palindrom ermittelt. Neugierig geworden? Dann finden Sie weitere Details dazu hier.

 

März '18

Dem Thema Backend-as-a-Service (BaaS) am Beispiel von Googles Firebase wende ich mich dieses Mal in einer vertiefenden Betrachtung zu. Neben zentralen Daten, die wir in der Firebase Realtime Database ablegen, ergänzen wir diese um dazugehörende Business-Logik Funktionen (Cloud Functions). Als spielerisches Beispiel ist mir dazu der Spieleklassiker Tic-Tac-Toe in den Sinn gekommen.

In einer Android-Multiplayer-App legen wir den Datenbestand des Spiels im Back-End-Datenspeicher von Firebase ab. Die gesamte Spielelogik wiederum arbeiten wir dabei ausschließlich auf dem Server mit Hilfe von Google Cloud Functions ab. Habe ich Ihr Interesse geweckt? Weitere Details finden Sie hier beschrieben vor. Der komplette Quellcode ist unter Github abgelegt (Android App und Cloud Functions).

 

Januar '18

Wir starten in das neue Jahr unter dem Motto Back to the Roots: Schön zu wissen, dass es in C# Klassen, Objekte, Aufzählungstypen, Eigenschaften und generische Container-Klassen gibt – aber wie lassen sich diese Konzepte sinnvoll in der Praxis einsetzen? Am Beispiel des Kartenspiele-Klassikers Mau-Mau beschreiten wir einen längeren Weg durch die Niederungen der objekt-orientierten Programmierung. Die einzelnen Phasen eines Kartenspiels wie etwa

  • Karten und Kartenstapel erstellen,
  • Kartenstapel mischen,
  • Spieler erzeugen und Karten austeilen,
  • der Reihe nach Karten ablegen und, falls nötig, auch ziehen
  • und zum guten Ende einen Gewinner ermitteln

sind in der anschaulichen Betrachtung einfach zu verstehen – eine Umsetzung in ein C#-Programm finden Sie hier. Viel Spaß beim Kartenspielen!

Nachtrag: Für Liebhaber der Programmiersprache C++ habe ich eine Portierung des C#-Quellcodestapels nach C++ vorgenommen. Eine Anpassung der Aufgabenbeschreibung an die Syntax von C++ können Sie hier entnehmen.

 

Dezember '17

Die mobilen Apps bleiben weiterhin im Fokus meiner Aktivitäten. Für die Anbindung eines zentralen Datenspeichers tummeln sich diverse Anbieter auf dem Cloud-Markt, unter anderem auch ein BaaS-Produkt mit dem hitzigen Namen Firebase. Mit Investitionen in die 2014 erworbene Plattform strebt Google das Ziel an, Firebase zur universellen App-Plattform auf dem Markt der Backend-as-a-Service (kurz: BaaS) Dienstleister zu etablieren. Grund genug für mich, an Hand eines klassischen Einstiegsbeispiels diese Plattform für Android-, iOS- und Mobile-Web-Anwendungen näher zu betrachten. Wenn Sie Ihre Alltagsnotizen in einem selbstgeschrieben, cloud-basierten Notizblock ablegen wollen, sind Sie hier genau richtig. Es reicht im Übrigen schon ein Fünkchen an Energie aus, um mit dem Firebase-Tarif Spark diese Plattform intensiv und kostenfrei zu testen.

 

August '17

Nach einer – leider recht langen – Pause kehren wir mit frischem Schwung zurück. Das Thema Mobile Apps steht dieses Mal im Vordergrund. Zwei schon leicht in die Jahre gekommenen Übungen aus dem Themenkreis WPF wurden von mir frisch angestrichen – dieses Mal in den Farben „Android” und „Xamarin”. Dies wäre zum einen eine Portierung der Fallstudie Kollision von Kugeln auf das Android-Betriebssystem (Android Portierung). Um aus paritätischen Gründen das Thema Xamarin nicht zu kurz kommen zu lassen, habe ich zum Zweiten das Vier Gewinnt-Spiel auf die Xamarin-Plattform portiert (Xamarin Portierung). Dabei können Sie nebenbei erste Einblicke in SkiaSharp gewinnen. Es handelt sich hierbei um eine plattformunabhängige 2D-Graphikbibliothek, die neben Xamarin und Android auch von Google Chrome und Chrome OS als Graphics Engine verwendet wird. Viel Spaß beim Spielen!

 

Dezember '16

Weihnachten steht vor der Türe - und vielleicht möchte der ein oder andere sich die geruhsame Zeit mit einem Computerspiel vertreiben. Zugegeben, keine sehr wertvolle Empfehlung - aber wenn dies noch mit dem Thema Xamarin Forms in Verbindung gebracht werden kann, dann hätten wir es ja fast schon mit einer beruflichen Weiterbildung zu tun. Eine bunte Mischung aus C#, Xamarin Forms unter konzeptioneller Zuhilfenahme von MVVM und zu guter letzt Inversion of Control mittels eines Dependency Injection-Containers sind die Zutaten dieses Tetris-Projekts für mobile Devices.

 

November '16

Im November bleiben wir unserem Motto Grundlagen der Programmiersprache C# treu: Die verschiedenen Zahlensysteme aus der Informatik (binär, hexadezimal sowie dual BCD) kombinieren wir mit dem Schnittstellenkonzept der Programmiersprache C# in einer Komplexübung zum Themenschwerpunkt Konvertierung ganzer Zahlen in unterschiedliche Formate.

 

In den Zeiten ohne Computer musste man sich bei vielen Zahlenrätseln richtig schwer konzentrieren, um bei der Suche nach der Lösung erfolgreich zu sein. Am Beispiel des Zahlenpuzzles Vier und Neun, das sich den Quadraten zweier geeigneter – und deshalb zu suchender – natürlicher Zahlen widmet, lässt sich zeigen, wie scheinbar abstrakte Konzepte einer höheren Programmiersprache, zum Beispiel Schnittstellen (interface) mit Leben erweckt werden können.

 

Jede natürliche Zahl lässt sich als Summe natürlicher Zahlen schreiben. Dabei gibt es für alle Zahlen größer 1 mehrere Möglichkeiten. Wir stellen ein Programm zur Berechnung aller Partitionen einer gegebenen natürlichen Zahl vor. Rekursive Methoden und ein möglichst kreativer Einsatz des Schnittstellenkonzepts von C# stehen im Mittelpunkt der Lösung.

 

August '16

Die Legenden des Historikers Flavius Josephus, in Ausschnitten auch unter dem Namen Josephus-Problem bekannt, wurden auf diesem Blog bereits unter der Rubrik C++ erzählt. Eine Portierung des C++-Quellcodes nach C# wird nun hiermit nachgereicht.

 

Den Urvater aller Videogames, das Retro-Game Pong, haben wir bereits auf diesem Blog vorgestellt. In einer Überarbeitung des Quellcodes ist daraus nun eine Android-App geworden. Möchten Sie zum Relaxen auf Ihrem Android-Smartphone mit einer selbstgeschriebenen Pong-App entspannen, dann finden Sie hier alles Notwendige dazu.

 

Das Beispiel eines einfachen WPF-Taschenrechners, konzipiert als Einführung in die Windows Presentation Foundation, war möglicherweise doch etwas zu simpel ausgelegt. In einer Überarbeitung des Quellcodes kann dieser Taschenrechner neben ganzen Zahlen nun auch Fließkommazahlen verarbeiten, weitere Tasten mit spezieller Bedeutung (Backspace, Komma, Negation) wurden ebenfalls ergänzt. Das MVVM-Entwurfsmuster, das mittlerweilen zum Standardrepertoire einer jeden WPF-Anwendung zählen sollte, ist nun ebenfalls mit an Bord. Als Dreingabe gibt es den Quellcode auch noch in einer Android-Version.

 

Juni '16

Eine Assoziation im Sinne der UML (Unified Modeling Language) sagt aus, dass zwei Klassen in einer Beziehung stehen (mit Ausnahme der Vererbung). Die Art der Beziehung und zu wie vielen Objekten sie aufgebaut wird, kann variieren. Ein typisches Beispiel einer 1:n Beziehung ist ein Auto, das n Passagiere befördern kann. Wie sich 1:n Beziehungen in C++ realisieren lassen, können Sie in dem einfachen Beispiel hier nachvollziehen.

 

Mai '16

Endlich wächst zusammen, was zusammen gehört! - Mit dieser Aussage reagierten viele Entwickler auf die Pressemitteilung Anfang des Jahres, dass Microsoft Xamarin – Anbieter einer Entwicklungsplattform für die hybride Entwicklung von Apps auf Basis von C# – gekauft hat. Zumindest können .NET/C#-Entwickler nun darauf hoffen, dass die Weiterentwicklungen der beiden Plattformen enger zusammenwachsen. Da ich mich als Entwickler des Charmes nicht entziehen kann, die Entwicklung einer App mit einem Entwicklungssystem auf unterschiedlichen Smartphone-Devices zum Laufen zu bringen, erscheinen nun in loser Folge Fallstudien zu Xamarin-Apps. Den Anfang machen die Vorbereitungen für eine Spiele-App. Wer Highscores nicht nur lokal, sondern im Netz mit allen Spielern gemeinsam teilen möchte, findet hier alle notwendigen Informationen für eine Highscore-App. Sie realisiert mit Azure Mobile Services als Backend eine Cloud-basierte Highscore-Verwaltung.

 

Back to the roots: Zur Abwechslung stehen einmal wieder Grundlagen auf dem Programm. Ein recht einfaches Beispiel für Einsteiger in die Programmiersprache C++ können wir der zweidimensionalen Geometrie in Form von Rechtecken entnehmen. Zum Auffrischen oder Erlernen grundlegender programmiersprachlicher Konstrukte finden Sie hier ein Beispiel vor, wie Rechtecke aus dem Blickwinkel eines C++-Programmierers betrachtet wahrgenommen werden.

 

März '16

Leider hat es etwas länger gedauert, bis ich wieder zum Schreiben gekommen bin. Dieses Mal steht die Physik, oder noch genauer: die Mechanik, im Vordergrund. Wir betrachten eine WPF-Anwendung, um einen schrägen Wurf zu simulieren. Nicht erschrecken, die Herleitung der Wurfparabel ist gar nicht so kompliziert, wie Sie jetzt möglicherweise befürchten. Grundlagen der WPF wie das DispatcherTimer-Objekt oder auch Dependency-Eigenschaften werden im Lösungsvorschlag verwendet. Weitere Details finden Sie hier vor.

 

November '15

In der Aufgabe zu den Türmen von Hanoi (siehe Die Türme von Hanoi) hatte sich etwas Staub angesammelt. Einige kleine Fehler in der Aufgabenstellung wurden beseitigt. Zusammen mit einer Überarbeitung der Lösung finden Sie den Quellcode nun auch auf Github vor (github.com/peterloos/Wpf_TowersOfHanoi).

Retro-Spiele erfreuen sich in jüngster Zeit wieder großer Beliebtheit. Die Spielekonsolen früherer Zeiten sind modernen PCs oder gar Smartphones gewichen, die Gestensteuerung eines Smartphones ersetzt den Drehknopf einer Spielekonsole früherer Tage “spielerisch”. Den Urvater aller Videogames, das Pong-Spiel, stellen wir unter der Rubrik Windows Presentation Foundation in einer einfachen Realisierung vor (Das Retro-Spiel Pong).

 

Oktober '15

Das Model-View-ViewModel-Entwurfsmuster (MVVM) ist eine Variante des Model-View-Controller-Entwurfsmusters (MVC) und speziell für WPF-Anwendungen konzipiert. Durch das Pattern werden die drei Bestandteile Model, View und ViewModel festgelegt. In einer dreiteiligen Fallstudie betrachten wir einfache Charakteristika des MVVM-Patterns wie Datenänderungen (Databinding, uni- als auch bidirektional) und Kommandos im Detail. Sehen Sie dazu unter Windows Presentation Foundation => Standardsteuerelemente die drei Beispiele MVVM zum Ersten: Datum und Uhrzeit, MVVM zum Zweiten: Farbräume RGB und HSV und MVVM zum Dritten: Eine Liedersammlung einer kleinen Trilogie zum MVVM-Entwurfsmuster.

 

Oktober '15

Nach einer - zugegebenermaßen recht langen - Sommerpause geht es wieder weiter. Mit dem heutigen Tag werde ich dem Umstand Rechnung tragen, dass der Quellcode der vorgestellten SW-Projekte auch in elektronischer Form verfügbar sein sollte: peterloos.de goes GitHub. Unter github.com/peterloos finden Sie von allen neuen SW-Projekten (und nach und nach auch von den alten) entsprechende Repositories vor. Viel Spaß beim Downloaden ...

 

März '15

Der Flood-Fill-Algorithmus ist ein einfacher Algorithmus aus dem Themenbereich der Computergrafik, um Flächen zusammenhängender Pixel einer Farbe mit einer neuen Farbe zu füllen. Der Name des Algorithmus rührt von seiner Arbeitsweise her, die man anschaulich als Flutfüllung bezeichnen könnte. Weitere Hinweise zur Realisierung des Algorithmus in einer WPF-Anwendung finden Sie unter Der Flood-Fill-Algorithmus vor.

 

Februar '15

Viele Android-Apps benötigen Daten, die sie von einem entfernt gelegenen Server laden müssen. JSON ist das etablierte Datenformat eines Restful-Service, in dem Nachrichten über einer HTTP-Verbindung transportiert werden. Mit dem neuen ASP.NET Web Api von Microsoft ist es in der Windows-Welt sehr einfach, in C# einen JSON-basierten Restful-Service zu implementieren. Abgerundet wird diese Fallstudie mit zwei Clients, die auf die Daten dieses Restful-Service via C# (WPF-Applikation) und via Java (Android-App) zugreifen. Sollten Sie Interesse haben, für Ihre Kontakte eine eigene server-basierte Datenablage zu erstellen, dann finden Sie alles Notwendige dazu unter ASP.NET Web Api, Restful Services und Android vor.

 

Dezember '14

Zum Abschluss des Jahres stelle ich Ihnen eine kleine Spielerei mit der transzendenten Zahl Pi vor. Sie besitzt unendlich viele Nachkommastellen, die nicht periodisch sind und deshalb auch nie ganz genau bestimmt werden können. Zumindest lassen sich einem Computer heutzutage sehr viele davon berechnen, bis heute sind mehr als ca. 1,2 Billionen Nachkommastellen bekannt. Unter Windows Presentation Foundation => Standardsteuerelemente => Unendlich viele Nachkommastellen der Zahl Pi finden Sie eine WPF-Anwendung vor, die sich mit Hilfe von Standardsteuerelementen und Multithreading auf die Suche nach möglichst vielen Pi-Nachkommastellen begibt.

 

November '14

Eines der zentralen Features in der Android Anwendungsentwicklung ist das Content Provider-Konzept. Auf Grund einer App-übergreifenden Betrachtung dieser Thematik folgen dazu gleich drei Beispiele: Datenablage, Administration und Visualisierung am Beispiel der Handball-Bundesliga 2014/15.

Sie haben richtig gelesen: Der Themenkomplex einer Ligatabelle kommt noch einmal zum Zuge. Versprochen, zum letzten Mal, aber aus gutem Grunde: Gewidmet ist diese Trilogie einem meiner besten Freunde: Frank B. aus Erlangen. Frank hat es zurzeit nicht einfach, denn er hat es sich zur Lebensaufgabe gemacht, mit seiner Handballertruppe den Klassenerhalt in der ersten Handball-Bundesliga zu stemmen. Ein Abstieg aus der Königsliga könnte grausame Folgen haben. Der Klassenerhalt wiederum wäre großartig. Und beides kann ganz dicht beieinander liegen. Also irgendwo zwischen Himmel und Hölle. Jetzt verstehen Sie, welche Besonderheit auf dieser Content Provider-Trilogie lastet.

Um Frank in seiner Aufgabe mental zu bestärken, habe ich mit der Publizierung so lange gewartet, bis seine Mannschaft einen Nichtabstiegsplatz inne hatte. Das Warten wurde belohnt, am 12. November war es endlich soweit. Um diesen historischen Tag festzuhalten – und natürlich auch in der Hoffnung, dass sich dieser Zustand bis zum Saisonende festigt – habe ich den Datenbestand der Beispiele an diesem Tag festgehalten und in die Testdaten eingearbeitet. Ich wünsche Ihnen nun viel Spaß beim Erstellen und Administrieren Ihrer eigenen Handball-Bundesliga-App 2014/15 (siehe auch Android => Verschiedenes).

Die Aufgabe zur Suche nach Primzahlen (siehe Multithreading => Multithreading mit der Klasse Thread) wurde bzgl. der Gestaltung ihrer Oberfläche verbessert. Die gesamte Anwendung ist jetzt strukturierter, ihre Oberflächenanteile wurden in mehrere WPF-User-Controls untergliedert.

 

Oktober '14

Meine Aktivitäten im Umfeld Android sind zurzeit etwas ins Stocken geraten. Aus diesem Grund schiebe ich in der Zwischenzeit ein ehemaliges Projekt zu den Themen WPF, Multithreading und Animationen ein. Zum Klassiker der kollidierenden Kugeln gibt es eine Auffrischung ihrer physikalischen Grundlagen bzgl. des schiefen elastischen Stoßes und eine Betrachtung dieses Problems an Hand der üblichen C#-Bordmittel.

Eine Studie zur Betrachtung beliebig großer Zahlen (C#/.NET => Arrays => Exakte Arithmetik ganzer Zahlen) in einer populären Programmiersprache wie C# habe ich um eine Implementierung für C++ abgerundet. Sie finden diese Ergänzung unter C++ => Dynamische Speicherverwaltung => Exakte Arithmetik ganzer Zahlen vor.

 

Juli '14

Das Thema einer Bundesligatabelle hat mich noch immer nicht losgelassen. LINQ ist zwar ein sehr elegantes Hilfsmittel zur Erstellung einer sortierten Tabelle, im Falle eines zu Grunde liegenden Datenbanksystems für die Datenhaltung des Ligabetriebs aber nicht immer die erste Wahl. Hier stellt die Datenbeschreibungssprache SQL noch immer den de-facto Standard dar. Aus diesem Grund habe ich dem Erstellen einer Bundesligatabelle eine zweite Aufgabe gewidmet. Dieses Mal mit dem klassischen Ansatz, der die Berechnung der Tabelle durch ein DBMS-System vornehmen lässt. Weitere Details hierzu unter C#/.NET => Unterhaltsames und Abwechslungsgsreiches => Eine Bundesligatabelle und SQLite.

 

Mai '14

Das Thema Android steht auch in diesem Monat im Mittelpunkt. Android-Apps können größere Datenmengen mit Hilfe einer SQLite-Datenbank verwalten. Hierzu finden Sie unter Android => Verschiedenes eine Beispielanwendung vor, die eine - hoffentlich aktuelle - Liste aller gegenwärtigen Staaten in einer Datenbanktabelle bereitstellt.

Datenbanken stehen häufig im Zusammenhang mit Webservices. Ein direkter Zugriff auf entfernt gelegene Datenbanken ist in der Regel aber eher der Ausnahmefall. Dafür gibt es Webservices, deren Aufgabe es ist, die Daten verdichtet und kontrolliert an interessierte Clients weiterzuleiten. Aus diesem Grund widmen wir uns der Liste aller gegenwärtigen Staaten in einer Variation zur SQLite-Datenbank-App, dieses Mal auf der Basis eines Webservices.

Das Ende der soeben abgelaufenen Fußballsaison war nicht ausschlaggebend für eine neue Übung im Abschnitt C#, dafür aber Erinnerungen an die ersten umfangreicheren Programme zu meiner Anfängerzeit. Das Erstellen einer Tabelle für eine Fußballbundesliga zählt im Umfeld moderner Programmiersprachen zum Standardrepertoire eines Entwicklers. Um meine vorgestellte Realisierung vom klassischen prozeduralen Lösungsansatz etwas abzuheben, habe ich einen Lösungsansatz in der Programmiersprache C# mit LINQ-Abfragen gewählt.

 

Januar '14

Dem Hype um Smartphone-Apps kann sich heutzutage eigentlich kein seriöser Software-Entwickler mehr entziehen – ich auch nicht. Unter dem neuen Menü Android finden Sie in regelmäßigen Abständen Beispiele einfacher Android-Anwendungen vor. In diesem Monat starten wir mit einem Client eines Chat-Raum-Servers und einer zweiten Smartphone-App, die sich auf die Suche nach Primzahlen begibt.

Sortier-Algorithmen offenbaren eine unendliche Fülle für Übungsaufgaben aus dem Umfeld der Informatik. Unter Windows Presentation Foundation => Animationen finden Sie eine grafische Simulation des Mergesort-Sortieralgorithmus vor, die sich zum Vertiefen der Themengebiete Algorithmik, WPF-Steuerelemente und Dispatcher-Thread eignet.

 

Dezember '13

Ich wünsche allen Besuchern ein frohes Weihnachtsfest, besinnliche Feiertage und einen guten Rutsch ins neue Jahr! Bis auf bald ...

 

November '13

Das Springerproblem kann auf eine über 200-jährige Historie zurückblicken. Im Jahre 1758 war es kein Geringerer als der Schweizer Leonhard Euler, der sich zu jener Zeit in Berlin aufhielt und sich nicht dieser Stadt, sondern einem Schachbrett widmete: Gegeben sei ein leeres Schachbrett. Gibt es eine Zugfolge, mit der der Springer alle (schwarzen und weißen) Felder des Brettes genau einmal besucht?. Mit Hilfe rekursiver Funktionen, einer Oberflächenbibliothek (wie z.B. der WPF) und dem Thread-Pool eines modernen Rechners kann dieses Problem sehr anschaulich gelöst werden – zumindest in akzeptablen Laufzeiten für Schachbretter, deren Seitenlänge nicht größer als zehn ist. Weitere Details siehe Multithreading => Multithreading mit der Task Parallel Library.

Die Geschichte von den Türmen aus Hanoi wird dem französischen Mathematiker Edouard Lucas zugeschrieben. Unter Beachtung bestimmter Regeln geht es darum, einen Turm von Scheiben von einem Platz zu einem anderen zu transportieren. Dass dieses Puzzle in nahezu jedem Informatik-Buch enthalten ist, liegt daran, dass sich mit einem rekursiven Algorithmus in wenigen Zeilen ein Computerprogramm zur Lösung des Spiels schreiben lässt. Zusammen mit benutzerdefinierten WPF-Steuerelementen und etwas Multithreading kann man das Ganze zu einer ansprechenden WPF-Anwendung ergänzen, siehe Windows Presentation Foundation => Benutzerdefinierte Steuerelemente.

Ein einfacher Taschenrechner wurde dem Abschnitt Windows Presentation Foundation => Standardsteuerelemente als einführendes Beispiel hinzugefügt.

 

Oktober '13

Betont schlank gibt sich seit geraumer Zeit ein neues Datenaustauschformat namens JSON. Wenngleich XML nach wie vor der Standard in Sachen Datenaustausch auf textueller Basis sein dürfte, bietet JSON eine einfache Alternative. Am Beispiel des Wetterdatenservers openweathermap.org/ lernen Sie den Zugriff auf JSON-Daten mit .NET kennen (siehe Windows Presentation Foundation => Standardsteuerelemente).

Der Abschnitt Multithreading wurde um einige grundlegende Betrachtungen zum Thema Atomare Operationen erweitert. Eine Aufgabe zur parallelen Berechnung von Primzahlen finden Sie unter Multithreading => Multithreading mit der Klasse Thread vor.

 

September '13

In der nächsten Zeit stehen die beiden Themengebiete WPF und Multithreading im Vordergrund.

Schon seit längerem beschäftige ich mich mit einer Artikelserie von unterschiedlichen Darstellungsmöglichkeiten für Mandelbrotmengen. Dabei geht es weniger um die grafischen Finessen der vielen Pixel, sondern vielmehr um mögliche Parallelisierungsansätze. Da man ein Mandelbrotbild in mehrere Rechtecke aufteilen kann, deren Berechnungen und Darstellungen voneinander unabhängig sind, drängt sich ein paralleler Realisierungsansatz nahezu auf. Viele Themengebiete der Parallelprogrammierung in der WPF (Task Parallel Library, Dispatcher, BackgroundWorker) kommen zum Einsatz und lassen sich äußerst anschaulich darstellen. Die Heptalogie zu Mandelbrotmengen ist im Pfad Windows Presentation Foundation => Grafik anzufinden.

Letzte Ergänzungen: Eine Anwendung zum Zeichnen von Figuren gibt es in zwei Varianten: Im Unterabschnitt Windows Presentation Foundation => Standardsteuerelemente in einer einfachen Version, im Unterabschnitt Windows Presentation Foundation => Benutzerdefinierte Steuerelemente etwas strukturierter unter Verwendung von benutzerdefinierten Steuerelementen. Auch soll die C++-Sparte nicht verweist bleiben: Einen versuchsweisen Ansatz zur Berechnung von Spiegelzahlen, auch Palindrome genannt, habe ich unter C++ / Dynamische Speicherverwaltung ergänzt.

 

August '13

Sommerpause ...

 

Februar bis Juli '13

Die vier Themengebiete wurden zumindest soweit mit Aufgaben gefüllt, dass in jedem Unterabschnitt mindestens eine Übungsaufgabe vorhanden ist.

 

Januar '13

Launch der neuen Website: Endlich ist es mir gelungen, die Zeit zu finden, um mit meiner schon lange geplanten Website an den Start zu gehen. Mein Dank gebührt im besonderen Maße Michael, der mir mit seinen Joomla!-Kenntnissen zu jeder Tages- und Nachtzeit mit Rat und Tat zur Seite stand!