Aceasta este CS50x

Î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ă makeexecută 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

.

Lasă un comentariu