Ciao e benvenuto.
In questo video voglio spiegarvi cosa sono gli errori del compilatore.
Fino a questo punto.
Giusto.
Abbiamo scritto un po' di codice e abbiamo notato che nella finestra di output della compilazione, se emettiamo un comando
di compilazione, sappiamo quando ci sono degli errori.
Giusto.
Di solito c'è una bella descrizione che dice che c'è un errore nel codice, ma cosa significa
esattamente?
Quindi, quando si scrive codice per un linguaggio di programmazione, i linguaggi di programmazione sono molto, molto rigidi.
Hanno delle regole.
È necessario seguire queste regole per rendere un programma eseguibile.
Un compilatore controlla effettivamente la sintassi del codice.
Se è corretto e se non ci sono errori semantici, genererà dal codice sorgente un codice di tipo linguaggio macchina
e sarà possibile eseguire un programma.
Quindi bisogna seguire queste regole, che sono molto dettagliate.
E quindi bisogna essere molto attenti ai dettagli.
Gli errori del compilatore possono quindi presentarsi in due forme.
Possono presentarsi sotto forma di errore di sintassi o di errore semantico.
Un errore di sintassi è quando c'è qualcosa di sbagliato nella struttura del codice, non
si seguono le regole del linguaggio in termini di sintassi, giusto?
Non si mettono le parentesi nello spazio corretto.
Non si aggiungono tutte le affermazioni con un punto e virgola.
Non stai sbagliando le parole chiave.
Questi sono tutti esempi comuni.
Il punto e virgola è un elemento molto comune quando si inizia.
Quindi, se dichiarate una variabile e la assegnate a cinque, ma non avete il punto e virgola alla fine,
questo è un errore di sintassi.
C'è qualcosa che non va in questa struttura.
È come se si usasse un'istruzione printf e si dicesse un'istruzione printf all'interno di doppi apici,
ma si dimenticasse la fine, i doppi apici.
È un errore di sintassi.
Quando il compilatore analizza il codice sorgente e trova questo errore, di solito
fornisce un significato descrittivo dell'errore che può indicare la direzione giusta e fornisce anche
il numero di riga.
E lo abbiamo visto nei video precedenti.
L'altro tipo di errore che il compilatore può cogliere è un errore semantico.
Non sempre coglie gli errori di semantica se si tratta di errori di logica, ma la semantica di solito significa che c'è qualcosa di
sbagliato nel significato.
L'intento del programma.
Quindi, ad esempio, se si aggiungono due variabili A e B, ma queste variabili sono di tipo diverso
e non hanno senso, giusto?
Non ha senso aggiungere A e B.
Il compilatore può talvolta cogliere questi errori semantici.
Altri errori semantici hanno a che fare con la logica e li discuteremo.
E il compilatore non li trova sempre.
La struttura era corretta e tutto era a posto con la struttura, ma dal punto di vista logico c'era qualcosa di sbagliato.
C'è un errore nella logica del codice.
Quindi, quando si pensa agli errori semantici, a ciò che il compilatore può catturare,
si ha più a che fare con la cattura dei tipi e con cose che non si dovrebbero fare con le regole del linguaggio,
come i tipi di variabili.
Diamo ora uno sguardo alla luce del codice per vedere alcuni esempi comuni di errori di sintassi e semantici nel linguaggio
di programmazione C.
Eccoci quindi al codice leggero con una semplice applicazione del tipo Hello world.
Si tratta di codice generato dalle impostazioni del progetto.
Se è stato salvato come modello.
Un codice molto semplice, giusto?
Quando si compila questo file, viene indicato se ci sono o meno errori di sintassi.
È possibile fare di nuovo clic con il pulsante destro del mouse e dire compila.
E al momento non abbiamo errori, giusto?
Ma sintatticamente stiamo seguendo tutte le regole.
Ma la sintassi comprende, ancora una volta, tutta la struttura del codice.
Quindi, se non c'è il punto e virgola o se non c'è il simbolo di cancelletto prima di un include e si cerca
di compilarlo.
Si vedrà che c'è un errore e di solito l'errore del compilatore ha un qualche tipo di significato.
Ora, quando si scrive sempre più codice e si fa sempre più pratica, questi compilatori non saranno più così
ottusi.
Non saranno così poco descrittivi da risultare familiari, ad esempio,
questo errore dice che c'è un errore sulla linea uno, giusto?
E quindi è bello.
È possibile fare doppio clic su questo.
Si arriva a quell'errore, ma dice che ci si aspetta che il punto e virgola sia conosciuto.
Non dice davvero cosa c'è che non va.
Con la pratica della programmazione ci si accorge che ho dimenticato il simbolo del cancelletto.
Quindi alcuni errori del compilatore non sono così descrittivi come si vorrebbe se si è alle prime armi con la programmazione.
Quindi si aggiunge il simbolo di cancelletto, si ricompila e il gioco è fatto.
Se si sbaglia a scrivere la i o standard, a volte non è in grado di trovarla.
Quindi si salva, si ricompila e si vede un errore un po' più descrittivo.
Giusto?
Nessun file o directory di questo tipo Stdio. che ti dice: "Oh, forse hai sbagliato a scrivere".
Quindi gli errori di ortografia sono comuni.
Non mettere le cose nella giusta prospettiva in termini di parentesi sbagliate.
Se si dimentica una parentesi, si ricompila.
Vediamo come si presenta l'errore.
Anche in questo caso, non è molto descrittivo.
Sta dicendo che, in pratica, c'è una parentesi prima della parentesi graffa finale, perché non sa che
forse questa parentesi destra finirà da qualche parte qui sotto.
Non sempre è in grado di dire esattamente cosa sta succedendo.
Quindi le parentesi e le parentesi graffe mancanti a volte non sono altrettanto descrittive.
Ma se c'è qualcosa come un punto e virgola mancante, è abbastanza semplice.
L'errore di compilazione indica esattamente cosa sta succedendo.
Il punto e virgola previsto prima del ritorno indica dove si deve mettere il punto e virgola.
Quindi si può fare doppio clic su questo, mettere un punto e virgola se manca una doppia citazione e ricompilare.
Giusto?
Ora si vede qualcosa che dice praticamente che mancano le doppie virgolette finali.
E ancora, vi indica il punto in cui avviene la prima citazione e vi dà più errori,
anche se in realtà ne avete solo uno.
Quindi, dopo aver messo le doppie virgolette, si è pronti a partire.
Ora, questo main dice che è necessario restituire un int.
E se si cercasse di restituire qualcosa come inside all'interno di doppi apici?
Ancora una volta, non state seguendo la struttura del linguaggio e vi dice che state restituendo un puntatore
a carattere da un tipo di funzione.
Ancora una volta, questi errori di compilazione potrebbero non avere senso per voi in questo momento, ma man mano
che scriverete sempre più codice, avranno sempre più senso.
Ma si tratta di seguire la struttura.
Ora, se si cerca di fare cose che abbiano senso dal punto di vista sintattico, ma il significato non è corretto.
Quindi, per esempio, diciamo che facciamo una stampa F e poi cerchiamo di fare un'operazione aritmetica come
dividere per otto o dividere per sette.
Lo salviamo e lo compiliamo e ora vediamo più che altro un errore semantico in cui abbiamo un simbolo di divisione dopo
i doppi apici.
Si sa dove si aspettava il punto e virgola C Principalmente troveremo errori di sintassi, errori semantici.
Il significato del codice ha solitamente a che fare con la logica.
Non si trovano molti errori semantici in un linguaggio come il C plus plus quando si usa.
Oggetti.
Quindi, fate attenzione agli errori di sintassi del compilatore.
Cose comuni: errori di ortografia e uso improprio di.
Parole chiave: non terminare le parentesi quando si iniziano i blocchi di codice senza il blocco
finale e quello iniziale E si possono avere errori multipli, giusto?
Quindi diciamo che abbiamo Hello world.
Manca il punto e virgola.
Restituiamo una stringa.
Ci manca una staffa e la costruiamo.
E questo è un programma piuttosto piccolo.
Ma quando proviamo a compilarlo ora, vediamo diversi errori, giusto?
Due errori.
Ed è un po' complicato, tipo: da dove inizio?
Di solito si risolve il primo errore, perché a volte un errore può causare altri errori.
Quindi è sempre meglio guardare all'errore del compilatore in cima alla lista e risolverlo per primo.
Quindi si vuole correggere quello alla riga 5, giusto?
E poi si potrebbe voler correggere e ricompilare e poi magari correggere quello alla riga sei dopo di esso.
E ora c'è scritto Jason.
Quindi ora si può dire di restituire zero, ma si deve sempre risolvere il primo errore prima di risolvere gli errori successivi,
perché uno può essere la causa dell'altro.
E comunque, ci saranno sempre degli errori nel nostro codice.
Anche i programmatori più esperti possono incorrere in errori di sintassi.
E quindi è comune avere degli errori.
L'importante è capire i messaggi che arrivano dal compilatore per capire come
correggerli.
E anche in questo caso, si tratta di un risultato che si otterrà con la pratica.
Parleremo ancora di compilatori, di compilatori comuni nei prossimi video, ma cercate di assicurarvi
di seguire la struttura del linguaggio mentre lo imparate, i linguaggi sintattici e così via.
Nelle prossime lezioni parleremo di come si possono avere diversi tipi di errori.
Ho parlato di errori di logica.
Possiamo anche parlare un po' di avvertimenti.
Parleremo anche degli errori del linker e degli errori di runtime.
Grazie.