Începem
CS50 IDE este un „mediu de dezvoltare integrat” bazat pe web care vă permite să programați „în cloud”, fără a instala niciun software local. Într-adevăr, CS50 IDE vă oferă propriul dvs. „spațiu de lucru” (adică spațiu de stocare) în care vă puteți salva propriile fișiere și foldere (aka directoare).
Logging In
Direcționați-vă către ide.cs50.io și faceți clic pe „Sign in with GitHub” pentru a accesa CS50 IDE. Odată ce se încarcă IDE-ul, ar trebui să vedeți că (în mod implicit) este împărțit în trei părți. Spre partea de sus a CS50 IDE este „editorul de text”, unde veți scrie toate programele dvs. În partea de jos se află o „fereastră de terminal” (albastru deschis, în mod implicit), o interfață de linie de comandă (CLI) care vă permite să explorați fișierele și directoarele din spațiul de lucru, să compilați cod, să executați programe și chiar să instalați software nou. Iar în stânga se află „browserul de fișiere”, care vă arată toate fișierele și folderele aflate în prezent în IDE-ul dumneavoastră.
Începeți prin a face clic în interiorul ferestrei de terminal. Ar trebui să constatați că „promptul” acestuia seamănă cu cel de mai jos.
~/ $
Click în interiorul acelei ferestre de terminal și apoi tastați
mkdir ~/pset1/
urmat de Enter pentru a crea un director (adică un folder) numit pset1
în directorul dvs. personal. Aveți grijă să nu treceți cu vederea spațiul dintre mkdir
și ~/pset1
sau orice alt caracter, de altfel! Rețineți că ~
desemnează directorul dvs. personal, iar ~/pset1
desemnează un director numit pset1
în cadrul ~
.
De aici încolo, a executa (adică a rula) o comandă înseamnă a o introduce într-o fereastră de terminal și apoi a apăsa Enter. Comenzile sunt „case-sensitive”, așa că asigurați-vă că nu tastați cu majuscule atunci când vreți să spuneți minuscule sau invers.
Acum executați
cd ~/pset1/
pentru a vă muta în (adică, deschideți) acel director. Apelul dvs. ar trebui să semene acum cu cel de mai jos.
~/pset1/ $
Dacă nu, refaceți pașii și vedeți dacă puteți determina unde ați greșit.
Acum executați
mkdir ~/pset1/hello
pentru a crea un nou director numit hello
în interiorul directorului dvs. pset1
. Apoi executați
cd ~/pset1/hello
pentru a vă muta în acel director.
Să vă punem să vă scrieți primul program? Din meniul File, faceți clic pe New File și salvați-l (ca prin intermediul opțiunii Save din meniul File) ca hello.c
în interiorul directorului dumneavoastră ~/pset1/hello
. Procedați la scrierea primului dumneavoastră program, tastând exact aceste rânduri în fișier:
#include <stdio.h>int main(void){ printf("hello, world\n");}
Observați cum CS50 IDE adaugă „evidențierea sintaxei” (adică, culoare) pe măsură ce tastați, deși alegerea culorilor de către CS50 IDE ar putea fi diferită de cea a acestui set de probleme. Aceste culori nu sunt de fapt salvate în interiorul fișierului în sine; ele sunt doar adăugate de CS50 IDE pentru a scoate în evidență anumite sintaxe. Dacă nu ați fi salvat fișierul ca hello.c
de la început, CS50 IDE nu ar fi știut (după extensia numelui fișierului) că scrieți cod C, caz în care acele culori ar fi absente.
Listing Files
În continuare, în fereastra terminalului, imediat în dreapta promptului (~/pset1/hello/ $
), executați
ls
Ar trebui să vedeți doar hello.c
? Asta pentru că tocmai ați listat fișierele din folderul hello
. În special, ați executat (adică ați rulat) o comandă numită ls
, care este o prescurtare pentru „list”. (Este o comandă atât de des folosită încât autorii ei au numit-o doar ls
pentru a economisi apăsarea tastelor). Are sens?
Compilarea programelor
Acum, înainte de a putea executa programul hello.c
, amintiți-vă că trebuie să-l compilăm cu un compilator (de exemplu, clang
), traducându-l din cod sursă în cod mașină (adică zerouri și unu). Executați comanda de mai jos pentru a face exact acest lucru:
clang hello.c
Și apoi executați-o din nou pe aceasta:
ls
De data aceasta, ar trebui să vedeți nu doar hello.c
, ci și a.out
listat? (Puteți vedea același lucru din punct de vedere grafic dacă faceți din nou clic pe pictograma acelui folder.) Asta pentru că clang
a tradus codul sursă din hello.c
în cod mașină în a.out
, care se întâmplă să însemne „assembler output”, dar mai multe despre asta altă dată.
Acum rulați programul executând cele de mai jos.
./a.out
Bună ziua, lume, într-adevăr!
Numele programelor
Acum, a.out
nu este cel mai ușor de folosit nume pentru un program. Să compilăm din nou hello.c
, de data aceasta salvând codul mașină într-un fișier numit, mai potrivit, hello
. Executați fișierul de mai jos.
clang -o hello hello.c
Atenție să nu treceți cu vederea niciunul dintre acele spații din el! Apoi executați-o din nou pe aceasta:
ls
Ar trebui să vedeți acum nu numai hello.c
(și a.out
de mai înainte), ci și hello
listate? Acest lucru se datorează faptului că -o
este un argument de linie de comandă, cunoscut uneori sub numele de flag sau switch, care îi spune lui clang
să scoată (de unde și o
) un fișier numit hello
. Executați fișierul de mai jos pentru a încerca programul nou numit.
./hello
Bună ziua din nou!
Făcând lucrurile mai ușoare
Reamintim că putem automatiza procesul de execuție a lui clang
, lăsându-l pe make
să își dea seama cum să facă acest lucru pentru noi, economisind astfel câteva apăsări de taste. Executați mai jos pentru a compila pentru ultima oară acest program.
make hello
Ar trebui să vedeți că make
execută clang
cu și mai multe argumente de linie de comandă pentru dumneavoastră? Mai multe despre acestea, de asemenea, altă dată!
Acum executați programul propriu-zis o ultimă dată, executând cele de mai jos.
./hello
Uf!
Obținerea datelor de la utilizator
Suficient să spunem că, indiferent de modul în care compilați sau executați acest program, el tipărește întotdeauna doar hello, world
. Să-l personalizăm puțin, așa cum am făcut în clasă.
Modificați acest program în așa fel încât să ceară mai întâi numele utilizatorului și apoi să tipărească hello, so-and-so
, unde so-and-so
este numele real al acestuia.
Ca și înainte, asigurați-vă că vă compilați programul cu:
make hello
Și asigurați-vă că vă executați programul, testându-l de câteva ori cu diferite intrări, cu:
./hello
Walkthrough
Hints
Nu vă amintiți cum să cereți numele utilizatorului?
Reamintiți-vă că puteți utiliza get_string
după cum urmează, stocându-i valoarea de întoarcere într-o variabilă numită name
de tip string
.
string name = get_string("What is your name?\n");
Nu vă amintiți cum să formatați un șir de caractere?
Nu vă amintiți cum să alăturați (i.e., concatenați) numele utilizatorului cu un salut? Reamintiți-vă că puteți folosi printf
nu numai pentru a imprima, ci și pentru a formata un șir de caractere (de aici, f
în printf
), la fel ca în cazul de mai jos, în care name
este un string
.
printf("hello, %s\n", name);
Utilizarea unui identificator nedeclarat?
Văzând cele de mai jos, poate că sunt deasupra altor erori?
error: use of undeclared identifier 'string'; did you mean 'stdin'?
Reamintiți-vă că, pentru a utiliza get_string
, trebuie să includeți cs50.h
(în care este declarat get_string
) deasupra unui fișier, ca și cu:
#include <cs50.h>
Cum să vă testați codul
Executați cele de mai jos pentru a evalua corectitudinea codului dvs. folosind check50
. Dar asigurați-vă că îl compilați și îl testați și dumneavoastră!
check50 cs50/problems/2020/x/hello
Executați cele de mai jos pentru a evalua stilul codului dumneavoastră folosind style50
.
style50 hello.c
Cum să trimiteți
Executați cele de mai jos, conectându-vă cu numele de utilizator și parola GitHub atunci când vi se solicită. Pentru securitate, veți vedea asteriscuri (*
) în loc de caracterele reale din parolă.
submit50 cs50/problems/2020/x/hello
.