Rozpoczęcie
CS50 IDE to internetowe „zintegrowane środowisko programistyczne”, które umożliwia programowanie „w chmurze”, bez instalowania jakiegokolwiek oprogramowania lokalnie. W rzeczywistości CS50 IDE zapewnia Ci Twój własny „obszar roboczy” (tj. miejsce do przechowywania danych), w którym możesz zapisywać własne pliki i foldery (aka katalogi).
Logowanie
Wejdź na stronę ide.cs50.io i kliknij „Sign in with GitHub”, aby uzyskać dostęp do CS50 IDE. Po załadowaniu IDE powinieneś zobaczyć, że (domyślnie) jest ono podzielone na trzy części. Na górze CS50 IDE znajduje się „edytor tekstu”, w którym będziesz pisał wszystkie swoje programy. Na dole znajduje się „okno terminala” (domyślnie jasnoniebieskie), interfejs wiersza poleceń (CLI), który pozwala na eksplorację plików i katalogów w przestrzeni roboczej, kompilację kodu, uruchamianie programów, a nawet instalację nowego oprogramowania. A po lewej stronie znajduje się „przeglądarka plików”, która pokazuje wszystkie pliki i foldery aktualnie znajdujące się w IDE.
Zacznij od kliknięcia w oknie terminala. Powinieneś zobaczyć, że jego „znak zachęty” przypomina poniższy.
~/ $
Kliknij wewnątrz tego okna terminala, a następnie wpisz
mkdir ~/pset1/
po czym Enter, aby utworzyć katalog (tj. folder) o nazwie pset1
w swoim katalogu domowym. Uważaj, aby nie przeoczyć spacji między mkdir
a ~/pset1
lub jakiegokolwiek innego znaku w tej sprawie! Pamiętaj, że ~
oznacza twój katalog domowy, a ~/pset1
oznacza katalog o nazwie pset1
w ~
.
Tutaj na zewnątrz, aby wykonać (tj. uruchomić) polecenie oznacza wpisanie go w oknie terminala, a następnie naciśnij Enter. W poleceniach uwzględniana jest wielkość liter, więc nie wpisuj wielkich liter, gdy masz na myśli małe lub odwrotnie.
Teraz wykonaj
cd ~/pset1/
aby przenieść się do (tj. otworzyć) ten katalog. Twój znak zachęty powinien teraz przypominać poniższy.
~/pset1/ $
Jeśli nie, prześledź swoje kroki i sprawdź, czy możesz określić, gdzie popełniłeś błąd.
Teraz wykonaj
mkdir ~/pset1/hello
, aby utworzyć nowy katalog o nazwie hello
wewnątrz katalogu pset1
. Następnie wykonaj polecenie
cd ~/pset1/hello
, aby przenieść się do tego katalogu.
Czy mamy napisać Twój pierwszy program? W menu Plik kliknij przycisk Nowy plik i zapisz go (za pomocą opcji Zapisz w menu Plik) jako hello.c
w swoim katalogu ~/pset1/hello
. Kontynuuj pisanie swojego pierwszego programu wpisując dokładnie te linie do pliku:
#include <stdio.h>int main(void){ printf("hello, world\n");}
Zauważ jak CS50 IDE dodaje „kolorowanie składni” (tj. kolor) podczas pisania, chociaż wybór kolorów CS50 IDE może się różnić od tego zestawu problemów. Kolory te nie są w rzeczywistości zapisane w samym pliku; są one po prostu dodawane przez CS50 IDE, aby wyróżnić pewną składnię. Gdybyś od początku nie zapisał pliku jako hello.c
, CS50 IDE nie wiedziałoby (na podstawie rozszerzenia nazwy pliku), że piszesz kod C, w którym to przypadku te kolory byłyby nieobecne.
Listing Files
Następnie, w oknie terminala, zaraz na prawo od znaku zachęty (~/pset1/hello/ $
), wykonaj
ls
Widzisz tylko hello.c
? To dlatego, że właśnie wymieniłeś pliki w folderze hello
. W szczególności, wykonałeś (tzn. uruchomiłeś) polecenie o nazwie ls
, które jest skrótem od „list”. (Jest to tak często używane polecenie, że jego autorzy nazwali je po prostu ls
, aby zaoszczędzić naciśnięć klawiszy). Ma to sens?
Kompilowanie programów
Teraz, zanim będziemy mogli wykonać program hello.c
, przypomnijmy sobie, że musimy go skompilować za pomocą kompilatora (np. clang
), tłumacząc go z kodu źródłowego na kod maszynowy (czyli zera i jedynki). Wykonaj poniższe polecenie, aby to zrobić:
clang hello.c
A następnie wykonaj je ponownie:
ls
Tym razem powinieneś zobaczyć nie tylko hello.c
, ale także a.out
na liście? (To dlatego, że clang
przetłumaczył kod źródłowy w hello.c
na kod maszynowy w a.out
, co oznacza „wyjście asemblera”, ale więcej na ten temat innym razem.
Teraz uruchom program, wykonując poniższe polecenie.
./a.out
Witaj, świecie, w rzeczy samej!
Nazwy programów
Teraz, a.out
nie jest najbardziej przyjazną nazwą dla programu. Skompilujmy hello.c
ponownie, tym razem zapisując kod maszynowy w pliku o nazwie, bardziej trafnej, hello
. Wykonaj poniższy kod.
clang -o hello hello.c
Uważaj, aby nie przeoczyć żadnej z tych spacji! Następnie wykonaj to jeszcze raz:
ls
Powinieneś teraz zobaczyć nie tylko hello.c
(i a.out
z poprzedniej listy), ale także hello
? To dlatego, że -o
jest argumentem wiersza poleceń, czasami znanym jako flaga lub przełącznik, który mówi clang
, aby wyprowadził (stąd o
) plik o nazwie hello
. Wykonaj poniższe polecenie, aby wypróbować nowo nazwany program.
./hello
Witaj ponownie!
Ułatwianie spraw
Przypomnij sobie, że możemy zautomatyzować proces wykonywania clang
, pozwalając make
dowiedzieć się, jak to zrobić za nas, oszczędzając w ten sposób trochę naciśnięć klawiszy. Wykonaj poniższe polecenie, aby skompilować ten program po raz ostatni.
make hello
Powinieneś zauważyć, że make
wykonuje clang
z jeszcze większą liczbą argumentów wiersza poleceń dla ciebie? Więcej o nich także innym razem!
Teraz wykonaj sam program po raz ostatni, wykonując poniższe polecenie.
./hello
Phew!
Getting User Input
Dość powiedzieć, że bez względu na to, jak skompilujesz lub wykonasz ten program, zawsze wypisuje on tylko hello, world
. Zmodyfikujmy ten program tak, aby najpierw zapytał użytkownika o jego imię, a następnie wypisał hello, so-and-so
, gdzie so-and-so
jest jego prawdziwym imieniem.
Tak jak poprzednio, upewnij się, że skompilowałeś swój program z:
make hello
I upewnij się, że wykonałeś swój program, testując go kilka razy z różnymi danymi wejściowymi, z:
./hello
Walkthrough
Podpowiedzi
Nie pamiętasz, jak zapytać użytkownika o jego imię?
Przypomnij sobie, że możesz użyć get_string
w następujący sposób, przechowując jego wartość zwracaną w zmiennej o nazwie name
typu string
.
string name = get_string("What is your name?\n");
Nie pamiętasz, jak sformatować ciąg znaków?
Nie pamiętasz, jak złączyć (tj, konkatenować) nazwę użytkownika z powitaniem? Przypomnij sobie, że możesz użyć printf
nie tylko do drukowania, ale i do formatowania ciągu znaków (stąd f
w printf
), a la poniższy fragment, w którym name
jest string
.
printf("hello, %s\n", name);
Użycie niezadeklarowanego identyfikatora?
Patrząc na poniższy fragment, może na inne błędy?
error: use of undeclared identifier 'string'; did you mean 'stdin'?
Przypomnij sobie, że aby użyć get_string
, musisz dołączyć cs50.h
(w którym get_string
jest zadeklarowany) na szczycie pliku, jak w przypadku:
#include <cs50.h>
How to Test Your Code
Wykonaj poniższe czynności, aby ocenić poprawność swojego kodu przy użyciu check50
. Ale pamiętaj, aby go skompilować i przetestować!
check50 cs50/problems/2020/x/hello
Wykonaj poniższe polecenie, aby ocenić styl swojego kodu, używając style50
.
style50 hello.c
Jak przesłać
Wykonaj poniższe polecenie, logując się za pomocą swojej nazwy użytkownika i hasła z GitHuba, gdy zostaniesz o to poproszony. Dla bezpieczeństwa, zobaczysz gwiazdki (*
) zamiast rzeczywistych znaków w haśle.
submit50 cs50/problems/2020/x/hello
.