Einrichten der Entwicklungsumgebung
Programmieren lernt man nur durch Üben – daher werden wir in den Übungen zu GdP viel programmieren. Um Programme am Computer eingeben und ausführen zu können, benötigen Sie ein paar Werkzeuge. Diese Woche sollen Sie sich damit vertraut machen. Wir erwarten von Ihnen, dass Sie die folgenden Abschnitte durcharbeiten und sich bei Bedarf in der Übungsstunde oder einer der Sprechstunden Hilfe suchen.
Option 1: Installation der Software auf Ihrem eigenen Computer
Um die GdP Übungsaufgaben auf Ihrem Computer lösen zu können, müssen Sie diese Software installieren:
- Installieren Sie das .NET SDK Version 8.0 (andere Versionen werden von uns nicht unterstützt):
- Windows und macOS: Klicken Sie in der Tabelle in der Zeile Windows bzw. macOS, Spalte Installers, auf die zu Ihrem Betriebssystem passende Architektur (höchstwahrscheinlich x64) und führen Sie das Installationsprogramm wie gewohnt aus.
- Linux: Folgen Sie entweder den verlinkten Instruktionen zur Installation via Paketmanager Ihrer Distribution oder laden Sie sich die verlinkten binaries herunter und fügen Sie dann nach dem Entpacken
dotnet
zu Ihrem$PATH
hinzu (zum Beispiel mitsudo ln -s dotnet-sdk-8.0.*-linux-x64/dotnet /usr/local/bin
)
- Visual Studio Code: Laden Sie sich hier das Programm herunter und installieren Sie es wie gewohnt.
Option 2: SCI-Terminals
Das Service-Center Informatik (SCI) stellt Terminals zur Verfügung. Auf den Servern ist die für GdP benötigte Software bereits installiert.
Text-Editor: Visual Studio Code / Workflow für Programmieraufgaben
Für die Eingabe von Texten im Allgemeinen und Programmcode im Speziellen wird ein sogenannter Text-Editor verwendet. Es gibt eine Vielzahl verschiedener Editoren, welche zum Bearbeiten von Programmcode benutzt werden können. Programme wie Word sind hingegen nicht geeignet, da Sie den eingegeben Text zusammen mit Informationen zum Aussehen und Layout des Textes in einem anderen Format speichern. Einfache Editoren wie Notepad können zwar theoretisch verwendet werden, sind aber nicht für das Programmieren ausgelegt. Für die GdP-Übungen empfehlen wir den Editor Visual Studio Code (kurz VS Code), welcher bereits auf den SCI-Rechnern installiert ist.
VS Code kann durch Erweiterungen angepasst werden. So kann der Editor eine Vielzahl unterschiedlicher Programmiersprachen unterstützen und auf die Bedürfnisse der Benutzer*innen eingehen. Um eine Erweiterung zu installieren, klicken Sie links in der sogenannten Activity Bar auf das Extensions-Symbol. Wenn Sie in das Textfeld den Namen einer Erweiterung eintippen, erscheint eine Liste von Suchergebnissen. Nach einem Klick auf den Eintrag in der Ergebnisliste öffnet sich rechts daneben die Beschreibung der Erweiterung. Unter dem Titel befindet sich ein grüner Button Install, mit dem die Erweiterung installiert werden kann.
Installieren Sie sich die Erweiterung Ionide for F#. Mit dieser Erweiterung bietet der Editor zusätzliche Unterstützung beim Schreiben von F#-Programmen.
Falls Sie eine deutsche Benutzeroberfläche bevorzugen, dann sollten Sie sich noch die Erweiterung German Language Pack for Visual Studio Code installieren. Wie Sie die Sprache anschließend auf Deutsch umstellen wird in der Beschreibung dieser Erweiterung erklärt.
Nun durchlaufen wir einmal den Prozess, den Sie für jede Programmieraufgabe befolgen müssen:
Vorlage herunterladen Zu den Programmieraufgaben stellen wir immer eine Vorlage zur Verfügung. Sie enthält schon Teile des Programmcodes, damit Sie diesen nicht abtippen müssen.
Laden Sie sich die Programmvorlage von der Übungsseite herunter. Entpacken Sie die Datei an geeigneter Stelle.
Ordner in VS Code öffnen Öffnen Sie in VS Code immer einen ganzen Ordner statt einer einzelnen Datei, ansonsten funktioniert die Ionide Erweiterung nicht richtig. Klicken Sie dazu auf Datei - Ordner öffnen (engl. File - Open Folder) und wählen Sie den soeben entpackten Ordner aus. Achten Sie darauf, dass Sie den Ordner wählen, der die Datei
<Programmname>.fsproj
enthält, keinen übergeordneten Ordner. Dies gilt insbesondere auch dann, wenn später mehrere Programmieraufgaben auf einem Übungsblatt sind. Jede Aufgabe hat ihre eigene Vorlage und muss in einen separaten Ordner entpackt werden. Es sollte immer nur der Ordner mit einer einzelnen Vorlage in VS Code geöffnet sein. Bei Bedarf können Sie über Datei - Neues Fenster (engl. File - New Window) ein weiteres Fenster öffnen, in dem Sie unabhängig vom ersten Fenster einen weiteren Ordner öffnen können.Mit einem Klick auf das Dateien-Symbol in der Activity Bar können Sie die Spalte Explorer ein- und ausblenden. So können Sie einfach zwischen den Dateien im geöffneten Ordner hin und her wechseln. Außerdem verwaltet VS Code alle offenen Dateien in Tabs.
Programm bearbeiten Sie können nun
<Programmname>.fs
im Editor bearbeiten.Mit dem Programm interagieren Nun wollen wir das Programm, dessen Programmcode Sie in der Vorlage heruntergeladen und eventuell bearbeitet haben, einmal ausprobieren. Dabei ist der sogenannte Interpreter hilfreich. Er kann Programmcode ausführen und Ausdrücke auswerten, auch ohne dass sie in einer Datei niedergeschrieben sein müssen.
Öffnen Sie ein Terminal und wählen Sie als Working Directory den Ordner aus, der unsere entpackte Programmvorlage enthält. Sie können einfach das in VS Code integrierte Terminal verwenden. Führen Sie den Befehl
dotnet fsi Mini.fs <Programmname>.fs
aus. Es öffnet sich der F# Interpreter und es wird die angegebene Programmdatei geladen.Die Funktionsweise des Interpreters ähnelt sehr stark der einer Shell: Man gibt einen Befehl oder einen Ausdruck ein und bestätigt mit Return, woraufhin der Befehl ausgeführt wird bzw. das Ergebnis des Ausdrucks angezeigt wird. Da Ausdrücke in F# mehrere Zeilen enthalten können, muss die Eingabe mit zwei Semikolons (
;;
) abgeschlossen werden. So weiß der Interpreter, dass er nach der Betätigung von Enter mit der Bearbeitung beginnen soll und nicht noch weitere Eingabezeilen abwarten muss.Sie können direkt einfache Rechenaufgaben wie
10 + 15;;
oder42 * 4711 + 1337;;
eingeben und auswerten lassen. Um jedoch auf den Inhalt der Datei<Programmname>.fs
zugreifen zu können, müssen Sie zuerst den Befehlopen <Programmname>;;
ausführen. Dies liegt daran, dass in der Datei ein Modul namens<Programmname>
definiert ist und Module erst im Interpreter geöffnet werden müssen. Danach können Sie die Funktionen aus<Programmname>.fs
verwenden.Mit
#quit;;
wird der Interpreter beendet.Tipp: Wenn der Fokus im Terminal ist, können Sie mit den Pfeiltasten (nach oben und unten) auf der Tastatur durch die zuletzt verwendeten Befehle blättern.
Programm testen Laden Sie Ihr Programm (nur die bearbeitete(n) Datei(en)) im Exclaim hoch. Dort wird das Programm automatisch getestet. Das gibt Ihnen Rückmeldung, wo es Fehler in Ihrem Code gibt.
Wichtiger Hinweis zu den Testfällen: Testen ist ein stichprobenartiges Überprüfen des Programms. In der Regel kann durch Testen nicht gezeigt werden, dass sich das Programm immer korrekt verhält, da nur eine kleine Anzahl an Stichproben überprüft werden. Daher sind die Ergebnisse so zu werten: Wenn Tests fehlschlagen, dann ist Ihr Programm auf jeden Fall fehlerhaft und Sie sollten nochmal nachbessern. Wenn alle Tests erfolgreich sind, dann funktioniert Ihr Programm zumindest für die von uns vorgegebenen Stichproben. Das trifft aber keine Aussage darüber, ob das Programm auch sonst richtig ist. Das kann im Allgemeinen nur ein Mensch feststellen. In unserem Fall sind das die Tutor*innen, die sich Ihre Abgaben ansehen werden.
Weitere Hinweise zur Verwendung von VS Code finden Sie in der englischsprachigen Dokumentation.
Terminal
Im vorherigen Abschnitt haben wir bereits das in VS Code integrierte Terminal verwendet. In einem Terminal (auch Konsole genannt) wird eine sogenannte Shell ausgeführt. Bei dem in VS Code integrierten Terminal handelt es sich dabei unter Windows um die Windows PowerShell, unter Mac OS und Linux meist um die Bourne Again Shell (bash).
Das Prinzip dieser Shells ist wiefolgt: Es ist immer ein spezifischer Ordner ausgewählt, genannt Working Directory. Die Shell zeigt einen sogenannten Prompt, der in der Regel Aufschluss über das Working Directory liefert. In der PowerShell sieht das beispielsweise so aus: PS C:\Users\HarryHacker\Desktop\Aufgabe-00-1>
Wenn die Shell einen Prompt zeigt, dann wartet sie auf eine Benutzereingabe. Man gibt einen Befehl gefolgt von der Return- oder Enter-Taste ein. Der Befehl besteht aus dem Namen eines auf dem Computer installierten Programms, gegebenenfalls gefolgt von Parametern. Oben haben wir das Programm dotnet
mit den Parametern fsi
und dem Programmnamen ausgeführt. Der ausgeführte Befehl kann eine Ausgabe anzeigen, muss es aber nicht. Keine Ausgabe heißt, dass der Befehl erfolgreich ausgeführt wurde. Nach Beendigung der Ausführung zeigt die Shell wieder einen Prompt.
Das Working Directory ist für viele Befehle wichtig. Beispielsweise sucht dotnet
darin nach einer Projektdatei (*.fsproj
). Das in VS Code integrierte Terminal startet die Shell mit dem geöffneten Ordner als Working Directory. Um das Working Directory zu wechseln, kommt der Befehl cd
(aus dem Englischen: change directory) zum Einsatz. Enthält der aktuelle Ordner einen Unterordner xyz
, dann kann man mit cd xyz
dahin hinein wechseln. In den übergeordneten Ordner gelangt man mit cd ..
(der aktuelle Ordner wird durch einen einzelnen Punkt, der übergeordnete Ordner durch zwei Punkte referenziert). Statt einem relativen Pfad (immer relativ zum Working Directory) kann auch ein absoluter Pfad angegeben werden.
Ein paar nützliche Befehle, die man kennen sollte:
pwd
gibt das Working Directory aus (aus dem Englischen: print working directory) Nützlich vor allem dann, wenn der Prompt nicht den vollständigen Pfad angezeigtls
zeigt den Inhalt des Working Directory an (aus dem Englischen: list)mkdir Ordnername
legt einen neuen Ordner namensOrdnername
im Working Directory an (aus dem Englischen: make directory)
In manchen Shells kann bei der Eingabe von Befehlen die Tab-Taste auf der Tastatur dazu genutzt werden, Befehle und deren Parameter automatisch zu vervollständigen. Wenn als Parameter Dateinamen erwartet werden, funktioniert dies ganz gut, alles andere ist abhängig vom Betriebssystem und der Konfiguration der verwendeten Shell.