Das ist CS50x

Einstieg

CS50 IDE ist eine webbasierte „integrierte Entwicklungsumgebung“, die es Ihnen ermöglicht, „in der Cloud“ zu programmieren, ohne Software lokal zu installieren. Die CS50 IDE bietet Ihnen einen eigenen „Arbeitsbereich“ (d.h. Speicherplatz), in dem Sie Ihre eigenen Dateien und Ordner (auch Verzeichnisse genannt) speichern können.

Einloggen

Gehen Sie zu ide.cs50.io und klicken Sie auf „Sign in with GitHub“, um auf Ihre CS50 IDE zuzugreifen. Sobald Ihre IDE geladen ist, sollten Sie sehen, dass sie (standardmäßig) in drei Bereiche unterteilt ist. Oben in der CS50 IDE befindet sich Ihr „Texteditor“, in dem Sie alle Ihre Programme schreiben werden. Unten befindet sich ein „Terminalfenster“ (standardmäßig hellblau), eine Befehlszeilenschnittstelle (CLI), mit der Sie die Dateien und Verzeichnisse Ihres Arbeitsbereichs durchsuchen, Code kompilieren, Programme ausführen und sogar neue Software installieren können. Und auf der linken Seite befindet sich Ihr „Dateibrowser“, der Ihnen alle Dateien und Verzeichnisse anzeigt, die sich derzeit in Ihrer IDE befinden.

Starten Sie, indem Sie in Ihr Terminalfenster klicken. Sie sollten feststellen, dass die „Eingabeaufforderung“ der folgenden ähnelt.

~/ $

Klicken Sie in das Terminalfenster und geben Sie

mkdir ~/pset1/

gefolgt von der Eingabetaste ein, um ein Verzeichnis (d.h. einen Ordner) mit dem Namen pset1 in Ihrem Heimatverzeichnis zu erstellen. Achten Sie darauf, dass Sie das Leerzeichen zwischen mkdir und ~/pset1 oder irgendein anderes Zeichen nicht übersehen! Denken Sie daran, dass ~ Ihr Home-Verzeichnis und ~/pset1 ein Verzeichnis namens pset1 innerhalb von ~ bezeichnet.

Im Folgenden bedeutet die Ausführung eines Befehls, dass Sie ihn in ein Terminal-Fenster eingeben und dann die Eingabetaste drücken. Befehle unterscheiden zwischen Groß- und Kleinschreibung, also achten Sie darauf, nicht in Großbuchstaben zu tippen, wenn Sie Kleinbuchstaben meinen, oder umgekehrt.

Nun führen Sie

cd ~/pset1/

aus, um sich in das Verzeichnis zu bewegen (d.h. zu öffnen). Ihre Eingabeaufforderung sollte nun folgendermaßen aussehen.

~/pset1/ $

Wenn nicht, verfolgen Sie Ihre Schritte zurück und sehen Sie, ob Sie herausfinden können, wo Sie einen Fehler gemacht haben.

Nun führen Sie

mkdir ~/pset1/hello

aus, um ein neues Verzeichnis namens hello innerhalb Ihres pset1-Verzeichnisses zu erstellen. Führen Sie dann

cd ~/pset1/hello

aus, um sich in dieses Verzeichnis zu bewegen.

Sollen wir Sie Ihr erstes Programm schreiben lassen? Klicken Sie im Menü „Datei“ auf „Neue Datei“ und speichern Sie es (über die Option „Speichern“ im Menü „Datei“) als hello.c in Ihrem Verzeichnis ~/pset1/hello. Fahren Sie fort, Ihr erstes Programm zu schreiben, indem Sie genau diese Zeilen in die Datei eingeben:

#include <stdio.h>int main(void){ printf("hello, world\n");}

Beachten Sie, wie CS50 IDE bei der Eingabe eine „Syntaxhervorhebung“ (d.h. Farbe) hinzufügt, obwohl die Farbauswahl von CS50 IDE von der dieses Problemsets abweichen kann. Diese Farben sind nicht in der Datei selbst gespeichert, sondern werden von CS50 IDE hinzugefügt, um bestimmte Syntax hervorzuheben. Hätten Sie die Datei nicht von Anfang an als hello.c gespeichert, wüsste CS50 IDE (aufgrund der Dateinamenserweiterung) nicht, dass Sie C-Code schreiben; in diesem Fall würden diese Farben fehlen.

Dateien auflisten

Als Nächstes führen Sie in Ihrem Terminal-Fenster direkt rechts neben der Eingabeaufforderung (~/pset1/hello/ $) aus

ls

Sie sollten nur hello.c sehen? Das liegt daran, dass Sie gerade die Dateien in Ihrem Ordner hello aufgelistet haben. Insbesondere haben Sie einen Befehl namens ls ausgeführt, was eine Abkürzung für „Liste“ ist. (Es ist ein so häufig verwendeter Befehl, dass seine Autoren ihn nur ls nannten, um Tastenanschläge zu sparen.) Macht das Sinn?

Programme kompilieren

Bevor wir das hello.c-Programm ausführen können, müssen wir es mit einem Compiler (z. B. clang) kompilieren, der es vom Quellcode in Maschinencode (d. h. Nullen und Einsen) übersetzt. Führen Sie den folgenden Befehl aus, um genau das zu tun:

clang hello.c

Und dann führen Sie diesen Befehl noch einmal aus:

ls

Diesmal sollte nicht nur hello.c, sondern auch a.out aufgelistet sein? (Sie können dasselbe grafisch sehen, wenn Sie erneut auf das Ordnersymbol klicken.) Das liegt daran, dass clang den Quellcode in hello.c in Maschinencode in a.out übersetzt hat, was zufällig für „Assemblerausgabe“ steht, aber dazu ein anderes Mal mehr.

Nun führen Sie das Programm aus, indem Sie den folgenden Befehl ausführen.

./a.out

Hallo, Welt, in der Tat!

Benennung von Programmen

Nun, a.out ist nicht der benutzerfreundlichste Name für ein Programm. Kompilieren wir hello.c noch einmal, und speichern wir diesmal den Maschinencode in einer Datei mit dem treffenderen Namen hello. Führen Sie das folgende aus:

clang -o hello hello.c

Achten Sie darauf, dass Sie keines der Leerzeichen darin übersehen! Dann führe diese noch einmal aus:

ls

Du solltest jetzt nicht nur hello.c (und a.out von vorher) sondern auch hello aufgelistet sehen? Das liegt daran, dass -o ein Befehlszeilenargument ist, manchmal auch als Flag oder Schalter bekannt, das clang anweist, eine Datei namens hello auszugeben (daher das o). Führen Sie die folgende Datei aus, um das neu benannte Programm auszuprobieren.

./hello

Hallo noch mal!

Dinge einfacher machen

Erinnern Sie sich daran, dass wir den Prozess der Ausführung von clang automatisieren können, indem wir make herausfinden lassen, wie wir das für uns tun können, und uns dadurch einige Tastenanschläge sparen. Führen Sie den folgenden Befehl aus, um das Programm ein letztes Mal zu kompilieren.

make hello

Sie sollten sehen, dass make clang mit noch mehr Befehlszeilenargumenten für Sie ausführt? Mehr dazu ein andermal!

Nun führen Sie das Programm selbst ein letztes Mal aus, indem Sie folgendes ausführen.

./hello

Puh!

Benutzereingaben erhalten

Es genügt zu sagen, dass, egal wie Sie dieses Programm kompilieren oder ausführen, es immer nur hello, world ausgibt. Lassen Sie uns das Programm ein wenig anpassen, so wie wir es in der Klasse getan haben.

Ändern Sie dieses Programm so, dass es den Benutzer zuerst nach seinem Namen fragt und dann hello, so-and-so ausgibt, wobei so-and-so sein tatsächlicher Name ist.

Wie zuvor kompilieren Sie Ihr Programm mit:

make hello

Und führen Sie Ihr Programm aus, indem Sie es einige Male mit verschiedenen Eingaben testen, mit:

./hello

Durchlauf

Hinweise

Wissen Sie nicht mehr, wie Sie den Benutzer nach seinem Namen fragen sollen?

Erinnern Sie sich daran, dass Sie get_string wie folgt verwenden können, indem Sie seinen Rückgabewert in einer Variablen namens name vom Typ string speichern.

string name = get_string("What is your name?\n");

Erinnern Sie sich nicht daran, wie man eine Zeichenkette formatiert?

Erinnern Sie sich nicht daran, wie man die Daten des Benutzers verbindet (d.h., (d.h. Verkettung) des Benutzernamens mit einer Begrüßung? Erinnern Sie sich daran, dass Sie printf nicht nur zum Drucken, sondern auch zum Formatieren einer Zeichenkette verwenden können (daher das f in printf), wie in der folgenden Abbildung, in der name ein string ist.

printf("hello, %s\n", name);

Verwendung eines nicht deklarierten Bezeichners?

Sehen Sie die folgende Abbildung, vielleicht auch andere Fehler?

error: use of undeclared identifier 'string'; did you mean 'stdin'?

Erinnern Sie sich daran, dass Sie cs50.h (in dem get_string deklariert ist) über einer Datei einschließen müssen, um get_string zu verwenden, wie bei:

#include <cs50.h>

Wie Sie Ihren Code testen

Führen Sie das Folgende aus, um die Korrektheit Ihres Codes unter Verwendung von check50 zu überprüfen. Aber stellen Sie sicher, dass Sie ihn auch selbst kompilieren und testen!

check50 cs50/problems/2020/x/hello

Führen Sie das Folgende aus, um den Stil Ihres Codes mit style50 zu bewerten.

style50 hello.c

Wie man einreicht

Führen Sie das Folgende aus und melden Sie sich mit Ihrem GitHub-Benutzernamen und Passwort an, wenn Sie dazu aufgefordert werden. Aus Sicherheitsgründen werden Sternchen (*) anstelle der tatsächlichen Zeichen in Ihrem Passwort angezeigt.

submit50 cs50/problems/2020/x/hello

Schreibe einen Kommentar