In moltissime occasioni ci si ritrova a fare uso del C se si ha come hobby l’elettronica. Dunque vale la pena riordinare le idee a riguardo e fare un po’ di pratica. Come prima risorsa utilizzerò il videocorso di Lynda.com: C – Essential Training. Dunque i miei appunti seguiranno quel programma.

Sia chiaro che non è mia intenzione insegnare nulla a nessuno, questi sono i miei appunti e io sono un nabbo come pochi!

Per il C userò, come il docente nei video, Eclipse. È un IDE che non ho usato molto in passato e colgo l’occasione per farmici un giro.

Due parole sul C

Il C nasce per mano di Dennis Ritchie nel 1972, nei laboratori Bell. Dennis Ritchie basò il suo linguaggio C su quello dell’amico e collega Ken Thomson, il linguaggio B. Se questa numerazione alfabetica fosse proseguita, ora potremmo in un attimo dire quale linguaggio è nato prima dell’altro!

Dennis e Ken sono stati anche coinvolti nelle prime fasi dello sviluppo di UNIX. Proprio per UNIX nasce infatti il linguaggio C.

Bisogna anche dire che il C non è un linguaggio di alto livello, così come non è un linguaggio di basso livello. È più corretto considerarlo un ibrido, perché include funzionalità sia in un ambito che nell’altro. Motivo per cui è comodo con i microcontrollori ad esempio.

Il livello di un linguaggio indica quanto è distante dal “linguaggio macchina”. Dunque, un PC è un calcolatore fatto alla fine di circuiti. Se noi programmiamo quei circuiti direttamente, usiamo un linguaggio di basso livello. Ciò ci obbliga a spiegare passo passo tutti i movimenti, i controlli, gli indirizzi di memoria…

Un linguaggio di alto livello “nasconde” tutta questa parte e ci permette di scrivere in modo più comprensibile al cervello umano, offrendoci dunque strumenti pre-assemblati da usare per il nostro codice. Ad esempio, in un linguaggio di questo tipo posso indicare che mi serve una variabile senza preoccuparmi di quali posizioni andrà ad occupare in memoria. Qualcosa a riguardo la si trova anche nei miei appunti relativi al corso 6.00 del MIT.

Nel C abbiamo dunque la possibilità, quando serve, di intervenire molto approfonditamente sulla macchina. Allo stesso tempo non siamo obbligati a farlo se il problema non lo richiede.

Prima di cominciare

Vale la pena ricordare che programmare non è e non dovrebbe assolutamente essere una improvvisazione. Mettersi alla tastiera senza aver fatto le dovute riflessioni è davvero un’amara perdita di tempo.

Si potrebbe dire che l’80% del tempo andrebbe speso a pianificare e solo il 20% davanti la tastiera. Infatti tradurre in codice delle idee ben sistemate (magari in UML) è alla fine un lavoro di pura manualità.

Il primo programma in C

Utilizzando Windows è necessario configurare un Compilatore per C. Tale compilatore si occuperà di creare un “object code” che verrà poi interpretato. In soldoni, dobbiamo installare questo Compilatore.

Il docente consiglia MinGW e io quello ho installato (segui la semplice guida nelle FAQ). Poi occorre impostarlo come compilatore per C su Eclipse.

#include <stdio.h> //richiamiamo una libreria che ci permette di gestire input e output 
int main(void) //questa funzione "main" è obbligatoria nei programi in C, "int"invece significa che la funzione restituisce un intero 
{ 
  int aNumber; //una variabile integer 
  printf( "Digita un numero: " ); //stampa la stringa a schermo 
  fflush(stdout); //leggi la nota dopo a riguardo 
  scanf( "%d", &aNumber ); //ricevi il dato e conservalo nella variabile "aNumber" 
  printf( "hai digitato %d", aNumber ); //stampa il numero contenuto nella variabile 
  getchar(); //beh questo è un trucchetto per lasciare la finestra aperta fino al prossimo tasto 
  return 0; //restituisci 0, che significa dire al sistema operativo "è tutto a posto, ho finito" 
} 

Ebbene, questa riga 6 è un poco strana ma la spiegazione la trovi subito qui.

G I G O

Sarà incredibile (per voi) notare che se provate a digitare delle lettere invece che dei numeri al programmino, lui li digerisce e vi da un risultato strano.

G I G O sta per Garbage In, Garbage Out. È un poco come diceva mia zia sulle lasagne: quello che ci metti, poi ce lo trovi.

Dunque il computer elaborerà i dati con quello che ha, sta a me passargli elementi coerenti o controllare che l’input dell’utente sia regolare.

Alla prossima!