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