Questo è CS50x

Inizio

CS50 IDE è un “ambiente di sviluppo integrato” basato sul web che ti permette di programmare “nella nuvola”, senza installare alcun software localmente. Infatti, CS50 IDE vi fornisce il vostro proprio “spazio di lavoro” (cioè, lo spazio di archiviazione) in cui è possibile salvare i propri file e cartelle (aka directory).

Logging In

Andate su ide.cs50.io e cliccate “Sign in with GitHub” per accedere al vostro CS50 IDE. Una volta caricato il vostro IDE, dovreste vedere che (per default) è diviso in tre parti. Verso la parte superiore dell’IDE CS50 è il vostro “editor di testo”, dove scriverete tutti i vostri programmi. Verso il basso c’è una “finestra terminale” (azzurra, di default), un’interfaccia a riga di comando (CLI) che vi permette di esplorare i file e le directory del vostro spazio di lavoro, compilare codice, eseguire programmi e anche installare nuovo software. E sulla sinistra c’è il tuo “file browser”, che ti mostra tutti i file e le cartelle attualmente nel tuo IDE.

Inizia cliccando all’interno della tua finestra di terminale. Dovresti trovare che il suo “prompt” assomiglia a quello qui sotto.

~/ $

Clicca all’interno della finestra del terminale e poi digita

mkdir ~/pset1/

seguito da Invio per creare una directory (cioè una cartella) chiamata pset1 nella tua home directory. Fate attenzione a non trascurare lo spazio tra mkdir e ~/pset1 o qualsiasi altro carattere! Tieni presente che ~ denota la tua home directory e ~/pset1 denota una directory chiamata pset1 all’interno di ~.

Da qui in poi, eseguire (cioè, eseguire) un comando significa digitarlo in una finestra del terminale e poi premere Invio. I comandi sono “case-sensitive”, quindi assicurati di non digitare in maiuscolo quando intendi minuscolo o viceversa.

Ora esegui

cd ~/pset1/

per muoverti in (cioè, aprire) quella directory. Il tuo prompt dovrebbe ora assomigliare al seguente.

~/pset1/ $

Se no, torna sui tuoi passi e vedi se puoi determinare dove hai sbagliato.

Ora esegui

mkdir ~/pset1/hello

per creare una nuova directory chiamata hello dentro la tua directory pset1. Poi esegui

cd ~/pset1/hello

per spostarti in quella directory.

Ti facciamo scrivere il tuo primo programma? Dal menu File, clicca su New File, e salvalo (come tramite l’opzione Save nel menu File) come hello.c all’interno della tua directory ~/pset1/hello. Procedete a scrivere il vostro primo programma digitando esattamente queste righe nel file:

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

Nota come CS50 IDE aggiunge “l’evidenziazione della sintassi” (cioè il colore) mentre digitate, anche se la scelta dei colori di CS50 IDE potrebbe essere diversa da quella di questo set di problemi. Questi colori non sono effettivamente salvati all’interno del file stesso; sono solo aggiunti da CS50 IDE per far risaltare certa sintassi. Se non avessi salvato il file come hello.c fin dall’inizio, CS50 IDE non saprebbe (per l’estensione del nome del file) che stai scrivendo codice C, nel qual caso quei colori sarebbero assenti.

Listing Files

Poi, nella tua finestra del terminale, immediatamente a destra del prompt (~/pset1/hello/ $), esegui

ls

Vedi solo hello.c? Questo perché hai appena elencato i file nella tua cartella hello. In particolare, hai eseguito un comando chiamato ls, che è l’abbreviazione di “lista”. (È un comando usato così frequentemente che i suoi autori l’hanno chiamato solo ls per risparmiare le sequenze di tasti). Ha senso?

Compilare programmi

Ora, prima di poter eseguire il programma hello.c, ricordiamo che dobbiamo compilarlo con un compilatore (ad esempio, clang), traducendolo dal codice sorgente in codice macchina (cioè, zero e uno). Eseguite il comando qui sotto per fare proprio questo:

clang hello.c

E poi eseguite ancora questo:

ls

Questa volta, dovreste vedere non solo hello.c ma anche a.out elencati? (Questo perché clang ha tradotto il codice sorgente in hello.c in codice macchina in a.out, che si dà il caso stia per “output assembler”, ma di questo parleremo un’altra volta.

Esegui ora il programma eseguendo il seguente.

./a.out

Ciao, mondo, davvero!

Nominare i programmi

Ora, a.out non è il nome più facile per un programma. Compiliamo di nuovo hello.c, questa volta salvando il codice macchina in un file chiamato, più appropriatamente, hello. Eseguite il seguente.

clang -o hello hello.c

Fate attenzione a non trascurare nessuno di quegli spazi! Poi esegui di nuovo questo:

ls

Ora dovresti vedere non solo hello.c (e a.out di prima) ma anche hello elencati? Questo perché -o è un argomento della linea di comando, a volte conosciuto come una bandiera o uno switch, che dice a clang di emettere (da cui il o) un file chiamato hello. Eseguite il seguente per provare il programma appena nominato.

./hello

Ciao di nuovo!

Rendere le cose più facili

Ricordate che possiamo automatizzare il processo di esecuzione di clang, lasciando che make capisca come farlo per noi, risparmiandoci così alcune battute. Eseguite il seguente per compilare questo programma un’ultima volta.

make hello

Dovreste vedere che make esegue clang con ancora più argomenti da linea di comando per voi? Anche su quelli, un’altra volta!

Esegui ora il programma stesso un’ultima volta eseguendo il seguente.

./hello

Phew!

Ricevere l’input dell’utente

Basta dire che non importa come tu compili o esegua questo programma, esso stampa sempre e solo hello, world. Personalizziamolo un po’, proprio come abbiamo fatto in classe.

Modifichiamo questo programma in modo che prima chieda all’utente il suo nome e poi stampi hello, so-and-so, dove so-and-so è il suo vero nome.

Come prima, assicuratevi di compilare il vostro programma con:

make hello

E assicuratevi di eseguire il vostro programma, testandolo alcune volte con input diversi, con:

./hello

Walkthrough

Hints

Non ricordi come chiedere all’utente il suo nome?

Ricorda che puoi usare get_string come segue, memorizzando il suo valore di ritorno in una variabile chiamata name di tipo string.

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

Non ricordi come formattare una stringa? concatenare) il nome dell’utente con un saluto? Ricordate che potete usare printf non solo per stampare ma per formattare una stringa (da qui, il f in printf), come sotto, dove name è un string.

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

Uso di identificatore non dichiarato?

Vedendo il sotto, forse in cima ad altri errori?

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

Ricorda che, per usare get_string, devi includere cs50.h (in cui è dichiarato get_string) in cima a un file, come con:

#include <cs50.h>

Come testare il tuo codice

Esegui il seguente per valutare la correttezza del tuo codice usando check50. Ma assicurati di compilare e testare anche tu!

check50 cs50/problems/2020/x/hello

Esegui il seguente per valutare lo stile del tuo codice usando style50.

style50 hello.c

Come inviare

Esegui il seguente, accedendo con il tuo username e password di GitHub quando richiesto. Per sicurezza, vedrai degli asterischi (*) al posto dei caratteri reali della tua password.

submit50 cs50/problems/2020/x/hello

Lascia un commento