Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Visual Studio Grundkurs 2: Die Programmiersprachen

Erkundung des Robo-Speech-C++-Programms

Testen Sie unsere 2017 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Dieses Video dreht sich um die Entwicklung des Robo-Speech-Projekts in C++. Es geht dabei um die Styrax, die Eigenheiten und die Unterschiede gegenüber anderen Programmiersprachen, wie etwa C#.

Transkript

In diesem Video sehen wir uns an, wie man mit C++ die RoboSpeech-Anwendung schreibt. Wir werden uns dabei ausschließlich auf den Code konzentrieren und die Anwendung selbst nicht starten. Der Code, den wir uns ansehen werden, ist "RoboSpeach_CPlus"-Projekt. Das ist eine Managed-C++-Anwendung, was bedeutet, dass wir die .NET-Runtime benutzen können. Ich habe diese Datei erstellt, indem ich im Dialog "Datei" "Neu" "Projekt" den Knoten "Visual C++" öffne und im Ordner "CLR" die "CLR-Konsolenanwendung" angeklickt habe. Wir gucken uns Code in diesen drei Dateien an: die "Header Files", da ist der "LogoRenderer.h" und die beiden anderen sind [im] "Source Files"-Ordner. Diese beiden enden mit ".cpp"; die "LogoRenderer.cpp" und die "RoboSpeech_CPlus.cpp". Sehen wir uns mal die "RoboSpeech_CPlus.cpp" an. Beginnen wir in Zeile 22, hier ist der Eingangspunkt der Konsolenanwendung. In dieser Methode rufe ich ein paar andere Funktionen auf, die in der gleichen Datei sind. Die "ChooseVoice"-Funktion wird aufgerufen und in Zeile 36 die Funktion "SayText". Den Code der Funktion "ChooseVoice" finden wir hier ab Zeile 40. In Zeile 57 startet der Code der Funktion "SayText". Hier ist schon eine Eigenheit von C++. Wenn die "ChooseVoice"-Funktion und die "SayText"-Methode nicht vor dem Aufruf bekannt mache, dann bekomme ich eine Fehlermeldung. Glücklicherweise gibt es einen Weg, seine Absicht zu bekunden, dass man gerne eine Funktion nutzen möchte, ohne dass man sie bereits vollständig implementieren muss. Man schreibt einfach nur ihre Signatur über den Aufruf. So wie wir es hier in den Zeilen 19 und 20 gemacht haben. Alternativ kann ich sie aber auch in separaten Dateien deklarieren, welche Header-Files genannt werden. Sehen wir uns mal die "LogoRender.cpp"-Datei an. Hierbei handelt es sich um eine Klasse. Hier in Zeile 10 sehen Sie, dass ich eine Methode namens "DrawHeader" definiere. In Zeile 19 eine Methode namens "DrawTitle". Die Signaturen oder Definitionen der Methoden habe ich dann in die Datei "LogoRender.h" im "Header Files"-Ordner gepackt. Hier sind sie, aber es sind nur leere Signaturen. Wenn ich die Klassen benutzen möchte, dann kann ich die Funktionsdefinition aus der Header-Datei über eine Include-Anweisung anbinden. Wir sehen hier in Zeile 11, dass ich über "#include" plus den Dateinamen die "LogoRender.h"-Header-Datei einbinde. Als Nächstes zeige ich Ihnen die Unterschiede zwischen der C#- und der C++-Syntax. Außerdem zeige ich Ihnen auch, wie Sie .NET-Code aus C++ aufrufen können. In den Zeilen 30 und 31 möchte ich .NET-Typen instanziieren. Dazu benutze ich den "gcnew"-Operator; "gc" bedeutet "Garbage Collector" und das bedeutet, dass der Garbage Collector der .NET-Laufzeitumgebung sich darum kümmern wird, den Speicher für beide Objekte wieder freizugeben. Ein Unterschied in dieser Zeile ist das Dach-Zeichen [^] hinter dem Typnamen vor dem Variablennamen "logo". Das bedeutet, dass dies ein Referenztyp ist. Wenn ich eine Mitgliedsfunktion bzw. Member-Funktion aufrufe, so wie hier in Ziele 33 beim Aufruf von "DrawHeader", dann würde ich bei C# den Punktoperator benutzen. Unter C++ sieht die Syntax jedoch ein wenig anders aus. Hier nutzen wir stattdessen das Pfeilsymbol, also ein Bindestrich gefolgt von einem Größer-Zeichen. In Zeile 35 rufen wir eine Methode aus der .NET-Klasse auf, aber die Syntax ist hier schon wieder anders. Hier benutze ich den doppelten Doppelpunkt [::]. Das liegt daran, dass es sich um eine statische Methode handelt. Diesen Operator gibt es in den verschiedensten Stellen in C++. Ich zeige Ihnen ein paar davon. Er wird verwendet, um Namespaces von Typen zu trennen. Hier in Zeile 22 sage ich "System::String"; "System" ist der Namespace und "String" ist der Typ. Sie sehen das auch gut etwas weiter oben. In Zeile 15, wo ich sage "namespace" und dann "System::Speech::Synthesis". Wenn wir uns einmal den Code für die "if"-Anweisung oder die "while"-Schleife angucken, dann sieht dieser genauso wie unter C# aus. Das Gleiche gilt auch für "for"-Schleifen. Ich zeige Ihnen das in der Datei "LogoRenderer.cpp". Hier entspricht die C++-Syntax der C#-Syntax. Zusammenfassend können wir also sagen, dass C++ und C# zwar recht ähnlich sind, C++ jedoch einige Eigenheiten hat, die es etwas weniger einsteigerfreundlich macht.

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!