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.

Visual Studio Grundkurs 2: Die Programmiersprachen

Erkundung des Robo-Speech-F#-Programms

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
In diesem Video verfolgen Sie, wie Sie die Robo-Speech-Anwendung mit F# schreiben können. Sie erhalten Tipps, um F#-Code einfacher – und dabei korrekt – zu schreiben sowie anzuwenden.

Transkript

In diesem Video zeige ich Ihnen, wie Sie die Robospeech-Anwendung mit F# schreiben können. Ich werde mich dabei lediglich auf den Code konzentrieren und die Anwendung selbst nicht zeigen. Bevor ich Ihnen den Code jedoch zeige, möchte ich Sie auf zwei nützliche Erweiterungen hinweisen. F# setzt auf Code-Einrückungen um Codeblöcke zu beschreiben. Es gibt zwei kostenfreie Erweiterungen, die uns den Umgang mit diesen Einrückungen ein wenig erleichtern. Zur Installation dieser Erweiterung klicke ich auf "Extras", und auf "Extension und Updates". Ich habe die Extensions schon installiert, deswegen zeige ich Sie Ihnen hier, unter "Installiert". Und was Sie machen müssen, ist unter der Kategorie "Online" nach F# Outlining suchen und die Erweiterung installieren. Diese Erweiterung fügt auf- und zuklappbare Regionen für eingerückte Codeblöcke hinzu, Außerdem installiere ich auch die F# PowerTools. Diese fügen hilfreiche Erweiterungen hinzu, wie zum Beispiel das farbliche Markieren von Einrückungen. So, schauen wir uns die Erweiterung mal in Aktion an. Dieser Code hier besteht aus mehreren Codeblöcken. Die Outliner-Erweiterung fügt nun diese auf- und zuklappbaren Regionen hinzu. Ich kann diese also öffnen und schließen. Hier in Zeile 13 geht das genauso. "voiceGender" ist aktuell geschlossen und wenn ich auf das "+" klicke, öffnet sich der Code. Drücke ich noch einmal, schließt er sich wieder. Die farbliche Markierung der Einrückungen ist auf diesem Bildschirm etwas schwieriger zu erkennen. Man sieht jedoch hier links eine hellgraue Linie zwischen dem Schlüsselwort "let" und dem Ende des Blocks hier unten. Dadurch kann ich etwas besser erkennen, welcher Code zu einer bestimmten "let"-Anweisung gehört. Wenden wir uns nun dem eigentlichen Code des Programms zu. Dieser befindet sich in den Dateien logoRenderer.fs und Program.fs In F# wird der Code entweder in Modulen oder in Typen definiert. Ein Modul ist ein Container für Typen. In der Beispiel-Applikation nutzen wir übrigens nur Module. Wir haben ein Modul in der Datei logoRenderer.fs, das andere Module haben wir hier in der Program.fs. Zur Definition eines Moduls benutzen wir das Modul-Schlüsselwort, gefolgt von dem Namen des Moduls und einem Leerzeichen. Wie vorher schon gesagt, sind Einrückungen wichtig. Der ganze eingerückte Code hier ist also Teil des Voice-Moduls. Und der ganze eingerückte Code hier gehört zum Modul "Program". Konsolenanwendungen benötigen eine Methode als Haupteingangspunkt. In F# gibt es allerdings keine Methoden, deswegen erzeugen wir hier in Zeile 39 die Expressionvariable "Main" mit der "let"-Schlüsselwort. Dieser Ausdruck kann ausgeführt werden, und wenn er ausgeführt wird, dann läuft dieser Code hier. Dass es sich bei der Methode "Main" um den Haupteingangspunkt handelt, markiere ich übrigens hier in Zeile 38. Gucken wir uns aber nun hier oben das Modul "Voice" an. Wir haben hier einen weiteren Ausdruck. "ChooseVoice" Innerhalb des Ausdrucks nutze ich hier "printfn" statt "Console.Writeline" zur Ausgabe von Text. In der nächsten Zeile lege ich einen weiteren Ausdruck an. Dieser ist vom Typ "string". Ich rufe anschließend "Console.ReadLine" auf. Da es sich hierbei um einen .NET-Typen handelt, rufe ich die Methode genauso auf, wie es unter C# oder Visual Basic machen würde. Anschließend extrahiere ich das Zeichen über die gleiche Syntax. Hier sehen wir das F#-Äquivalent zu einem "if"-Statement. Ich nutze hier den "match"-Ausdruck, um diese Variable hier zu vergleichen. Ich vergleiche sie mit diesen beiden Fällen. Wenn wir also ein "w" haben, dann wird "VoiceGender.Female" zurückgegeben. Der Unterstrich hier in Zeile 16 ist ein "Wildcard". Das bedeutet also, in allen anderen Fällen wird "VoiceGender.Male" zurückgegeben. Das Ergebnis wird auf jeden Fall hier in der Variable "VoiceGender" gespeichert. In Zeile 20 erzeuge ich nun ein Objekt vom Typ "SpeechSynthesizer". Dieser Code sieht C#-Code schon recht ähnlich. In Zeile 21 konfiguriere ich nun die Stimme, indem ich "VoiceGender" und "SelectVoiceByHints" übergebe. Als nächstes benötige ich eine Schleife. Innerhalb der Schleife gibt der Benutzer entweder seinen Text ein, der gesprochen werden soll, oder "Ende", um das Programm zu beenden. Nun sieht es allerdings so aus, dass Zustände und Daten in F# unveränderbar sind. Man spricht in diesem Zusammenhang auch von "immutable data". Das bedeutet, dass ein Ausdruck, beziehungsweise eine Expression, nachdem er angelegt wurde, unveränderlich ist. Wenn man jedoch nun veränderbare Daten benötigt, dann können wir das über das "mutable"-Schlüsselwort ausdrücken, so wie hier in Zeile 22. Ich lege also hier den Ausdruck "continue.Running" an und markiere ihn als "mutable". Den Ausdruck benutze ich dann hier in dieser "while"-Schleife. Diese setzt sich aus dem Schlüsselwort "while" zusammen, gefolgt von dem Ausdruck, der überprüft werden soll, also "continueRunning", und dann kommt ein "do". Der Code, der in der Schleife ausgeführt wird, den sehen wir, sobald wir auf das "+" hier klicken. Man erkennt hier wieder sehr schön, wie wichtig Einrückungen unter F# sind. Denn der eingerückte Code gehört komplett zur Schleife. Gucken wird uns innerhalb der Schleife einmal die Zeile 26 an. Ich weise hier der statischen Eigenschaft "ForegroundColor" der Klasse "Console" den Wert "ConsoleColor.Yellow" zu. Allerdings nutze ich dazu nicht das Gleichheitszeichen wie unter C# oder anderen imperativen Sprachen, sondern einen nach links zeigenden Pfeil, der aus einem Kleiner-Zeichen und einem Bindestrich besteht. Wir sehen das auch noch mal in Zeile 32, wo ich "continueRunning" auf "false" setze. Diese Zeile wird dann ausgeführt, wenn der Vergleich auf "Input" mit dem "match"-Schlüsselwort in Zeile 30 gleich "exit" ist. Ich gebe dann zunächst "Exiting" in der Zeile 31 aus und setze dann, wie gesagt, "continueRunning" auf "false". In der nächsten Zeile, in Zeile 33, gebe ich einen leeren String aus. Und das liegt daran, dass ein Match immer zwei Vergleiche haben muss. Also gebe ich ihm den Wildcard-Fall, der eintrifft, wenn ich nicht "Ende" eingeben würde. Am Ende gebe ich dann einfach so wie unter C# oder Visual Basic die Eingaben des Benutzers über "Synth.Speak(input)" aus. Bevor wir das Video jetzt beenden würde ich Ihnen gerne noch zeigen, wie eine "for"-Schleife unter F# aussieht. Hier in der Zeile 14 sehen wir, dass eine "for"-Schleife mit dem Schlüsselwort "for" startet. Anschließend definieren wir den Namen der Laufvariablen. Hier ist dass das "i". Danach kommt das Schlüsselwort "in", gefolgt von eckigen Klammern. In den eckigen Klammern ist nun der Zahlenbereich für unsere Schleife. Diese definieren wir, indem wir zuerst die ersten Fall schreiben, also eine 1, dann zwei Punkte, und dann die obere Zahl des Bereiches, also eine 4. Anschließend kommt dann noch ein "do" und dann, eingerückt, der eigentliche Code der Schleife. So, das soll für einen ersten Überblick auch erstmal reichen. Lassen Sie uns noch einmal kurz zusammenfassen, was wir in diesem Video gelernt haben. Ich habe Ihnen ein wenig grundlegende F#-Syntax in Aktion gezeigt und erklärt, wie Sie Code in Module aufteilen können. Weiter haben wir über Blöcke gesprochen, die über Einrückungen definiert werden. Wir haben außerdem ein wenig über Ausdrücke gesprochen und gesehen, dass diese recht komplex erscheint können, vor allem, wenn man bisher nur imperativ programmiert hat.

Visual Studio Grundkurs 2: Die Programmiersprachen

Entdecken Sie die Programmierpsrachen C#, Visual Basic .NET, C++ und F# und wie Sie in Visual Studio damit lauffähige Programme erzeugen.

1 Std. 13 min (14 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Exklusiv für Abo-Kunden
Erscheinungsdatum:16.11.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!