Rekursive Funktionen in C#, Python und Racket
Wenn ich an mein Informatik-Studium zurück denke, dann kommen mir auch rekursive Funktionen in den Sinn. Bereits in den ersten Vorlesungen und Übungen mussten wir verschiedene Funktionen als rekursive Funktionen in der Sprache Racket umsetzen. In diesem Beitrag möchte ich euch nun einige „Standard“-Funktionen zeigen, welche man sicherlich in jedem Informatik-Studium schreiben muss. Dabei werde ich neben C# diese auch in Python schreibe. Zunächst wollen wir aber die Frage beantworten, was eigentlich eine rekursive Funktion ist. Kurz gesagt, ist eine Funktion rekursiv, wenn sie sich selbst aufruft. Wir finden also im Rumpf der Funktion einen Aufruf derselben Funktion.
Man benutzt eine rekursive Funktion zum Beispiele gerne, um mathematische Funktionen abzubilden. So hat sicherlich jeder schon einmal von der Fakultät gehört. Diese Funktion multipliziert alle natürlichen Zahlen (ohne Null), welche kleiner oder gleich der übergebenen Zahl ist. So ist 5! = 5 * 4 * 3 * 2 * 1 oder aber 5! = 5 * 4! und so sehen wir hier bereits eine Rekursion.
Higher/Lower Game in C#
Ich habe in einem der letzten Beiträge bereits gezeigt, wie man das klassische Higher/Lower Game in Python umsetzen kann. Dabei denkt sich der Computer eine Zahl zwischen 1 und 100 und der Nutzer muss diese Zahl erraten. Der Computer gibt nur Hinweise durch die Angabe, ob die Zahl größer oder kleiner ist. In diesem Beitrag möchte ich euch nun zeigen, wie ihr das Spiel als C# Konsolen-Applikationen umsetzen könnt, so dass ihr eine Möglichkeit habt, die beiden Sprachen Python und C# zu vergleichen.
Rock, Paper, Scissors in Python
Ich habe in einem der letzten Beiträge bereits gezeigt, wie man in wenigen Schritten Python auf einem Windows PC installieren und den Code-Editor Visual Studio Code so einstellen kann, dass einem dieser während der Python-Entwicklung unterstützt. Wir haben neben dem ersten kleine Hello World Skript auch schon das Higher/Lower Game in Python geschrieben. In diesem Beitrag möchte ich euch nun zeigen, wir ihr das klassische Rock, Paper, Scissors Game in Python umsetzen könnt. Dabei hat der Nutzer die Möglichkeit seine Spielfigur (Schere, Stein oder Papier) zu wählen und auch der Computer wählt eine zufällige Figur und im Anschluss wird ermittelt, wer die Runde gewonnen hat.
Extension Methods: Object
Mit der Hilfe von Extension Methods können wir einem vorhandenen Typen zusätzliche Methoden hinzufügen, ohne einen neuen abgeleiteten Typ zu erstellen und ohne den ursprünglichen Typ bearbeiten zu müssen. Bei Extension Methods handelt es sich um statische Methoden. Im Laufe der Zeit ist eine beachtliche Sammlung an Extension Methods entstanden, welche in den verschiedensten Projekten zum Einsatz kamen und auch immer noch kommen. Ich möchte nun in einer kleinen Serie ein paar Methoden vorstellen, welche vielleicht für den einen oder anderen auch von Interesse sein könnten. Den Anfang machen Extension Methods zum Typ Object.
Higher/Lower Game in Python
Ich habe in einem der letzten Beiträge bereits gezeigt, wie man in wenigen Schritten Python auf einem Windows PC installieren und den Code-Editor Visual Studio Code so einstellen kann, dass einem dieser während der Python-Entwicklung unterstützt. Wir haben auch schon ein ersten kleines Hello World Skript geschrieben. In diesem Beitrag möchte ich euch nun zeigen, wir ihr das klassische Higher/Lower Game in Python umsetzen könnt. Dabei denkt sich der Computer eine Zahl zwischen 1 und 100 und der Nutzer muss diese Zahl erraten. Dabei gibt der Computer nur Hinweise durch die Angabe, ob die Zahl größer oder kleiner ist.
Cognitive Services: Alter einer Person ermitteln
Unter dem Begriff Cognitive Services stellt Microsoft verschiedene Dienste zur Verfügung, welche es einem ermöglichen ohne großen Aufwand Algorithmen der künstlichen Intelligenz in seinen eigenen Apps zu verwenden. Microsoft hat bereits vor einiger Zeit die Webseite how-old.net veröffentlicht, wo man Fotos hochladen kann und auf diesen Fotos zunächst Gesichter erkannt werden und dann auch noch das Alter der jeweiligen Person ermittelt wird. Ich möchte nun in diesem Beitrag zeigen, wie wir mit der Hilfe der Cognitive Services eine Xamarin.Forms Apps erstellen können, welche ebenfalls das Alter einer Person auf einem Foto ermitteln kann.
Extension Methods: Collections
Mit der Hilfe von Extension Methods können wir einem vorhandenen Typen zusätzliche Methoden hinzufügen, ohne einen neuen abgeleiteten Typ zu erstellen und ohne den ursprünglichen Typ bearbeiten zu müssen. Bei Extension Methods handelt es sich um statische Methoden. Im Laufe der Zeit ist eine beachtliche Sammlung an Extension Methods entstanden, welche in den verschiedensten Projekten zum Einsatz kamen und auch immer noch kommen. Ich möchte nun in einer kleinen Serie ein paar Methoden vorstellen, welche vielleicht für den einen oder anderen auch von Interesse sein könnten. Weiter geht es mit Extension Methods zum Typ Collection.
Extension Methods: Dictionary
Mit der Hilfe von Extension Methods können wir einem vorhandenen Typen zusätzliche Methoden hinzufügen, ohne einen neuen abgeleiteten Typ zu erstellen und ohne den ursprünglichen Typ bearbeiten zu müssen. Bei Extension Methods handelt es sich um statische Methoden. Im Laufe der Zeit ist eine beachtliche Sammlung an Extension Methods entstanden, welche in den verschiedensten Projekten zum Einsatz kamen und auch immer noch kommen. Ich möchte nun in einer kleinen Serie ein paar Methoden vorstellen, welche vielleicht für den einen oder anderen auch von Interesse sein könnten. Den Anfang machen Extension Methods zum Typ Dictionary.
Nützliche Code-Snippets für Visual Studio
Im Rahmen des #XamarinMonths hat Luis Matos dazu aufgerufen sich ein wenig mit Code Snippets auseinander zu setzen und die nützlichsten Snippets mit der Community zu teilen. Ich habe dies gemacht und einen Medium-Beitrag geschrieben, welcher ein paar meiner eigenen Snippets vorstellt und zum Download bereitstellt. Nun möchte ich die Gelegenheit nutzen und diese auch hier noch einmal in meinem Blog vorstellen.
Transparenz in HEX-Farbwerten
Gerade wenn man mit Designerinnen oder Designern zusammenarbeiten, sind Transparenzen in HEX-Farbwerten öfters mal ein Thema. Denn es wird meist eine Akzentfarbe definiert und diese dann z.B. über verschiedene Transparenzen verstärkt oder abgeschwächt. Es kommt nun jedoch vor, dass man nur die Information wie 40% Deckkraft bekommt und keinen eigenen HEX-Farbwert. Hier muss nun vom Entwickler umständlich gerechnet werden, wie man 40% Deckkraft abbildet. In diesem Beitrag stelle ich nun eine Tabelle zur Verfügung, wo man direkt die Werte ablesen kann und gleichzeitig gibt es noch einen kleinen Code-Schnipsel, welcher den entsprechenden Wert „berechnet“.
AppCenter.Crashes: Abstürze der App tracken
Ich habe ja bereits in einigen Beiträgen gezeigt, wie man ganz bequem per AppCenter Statistiken erfassen oder auch seine eigenen Event tracken kann. In diesem Beitrag wollen wir uns nun einmal anschauen, wie wir App-Abstürze tracken können. Leider kommt es immer mal wieder vor, dass man als Entwickler zum Beispiel einen Null-Check vergisst und damit die App abstürzt. Für diesen Fall bietet das AppCenter ebenfalls eine Lösung an, denn diese Abstürze können automatisch übertragen und übersichtlich dargestellt werden. Dadurch bekommt man die Gelegenheit einer besseren Analyse und kann die Fehler dann auch einfacher beheben.
Ordner bin/obj per PowerShell löschen
Wenn man an mehreren Projekten gleichzeitig arbeitet, so nehmen die Projekte durch die bin
und obj
Ordner einiges an Speicherplatz auf der Festplatte ein. Daher bietet es sich an in regelmäßigen Abständen diese Ordner zu löschen, um wieder Speicherplatz zur Verfügung zu haben. Hier gibt es nur ein Problem, dass der Vorgang von Hand einiges an Zeit in Anspruch nimmt. Daher habe ich mich ein wenig mit der PowerShell befasst und habe einen Befehl gefunden, welcher mit nur einer Zeile alle bin
und obj
Ordner entfernen kann.