Practical C Programming, 3rd Edition by Steve Oualline

How C Works

C è progettato come un ponte tra il programmatore e il computer grezzo. L’idea è di permettere al programmatore di organizzare un programma in un modo che possa facilmente comprendere. Il compilatore poi traduce il linguaggio in qualcosa che la macchina può usare.

I programmi del computer consistono di due parti principali: dati e istruzioni. Il computer impone poca o nessuna organizzazione a queste due parti. Dopo tutto, i computer sono progettati per essere il più generale possibile. Il programmatore dovrebbe imporre la sua organizzazione al computer, non il contrario.

I dati in un computer sono memorizzati come una serie di byte. Il C organizza quei byte in dati utili. Le dichiarazioni di dati sono usate dal programmatore per descrivere le informazioni con cui sta lavorando. Per esempio:

int total; /* Total number accounts */

dice al C che vogliamo usare una sezione della memoria del computer per memorizzare un numero intero chiamato total. Lasciamo che sia il compilatore a decidere quali particolari byte di memoria usare; questa decisione è un dettaglio contabile minore di cui non vogliamo preoccuparci.

La nostra variabile total è una variabile semplice. Può contenere solo un intero e descrivere solo un totale. Una serie di interi può essere organizzata in un array come segue:

int balance; /* Balance (in cents) for all 100 accounts */

Ancora una volta, il C si occuperà dei dettagli per imporre questa organizzazione alla memoria del computer. Infine, ci sono tipi di dati più complessi. Per esempio, un rettangolo potrebbe avere una larghezza, un’altezza, un colore e un motivo di riempimento. C ci permette di organizzare questi quattro elementi in un gruppo chiamato struttura.

struct rectangle { int width; /* Width of rectangle in pixels */ int height; /* Height of rectangle in pixels */ color_type color; /* Color of the rectangle */ fill_type fill; /* Fill pattern */};

Il punto è che le strutture permettono al programmatore di organizzare i dati per soddisfare le sue esigenze, non importa quanto semplici o complessi siano quei dati. La traduzione di questa descrizione di dati in qualcosa che il computer può usare è il lavoro del compilatore, non del programmatore.

Ma i dati sono solo una parte di un programma. Abbiamo anche bisogno di istruzioni. Per quanto riguarda il computer, non sa nulla della disposizione delle istruzioni. Sa cosa sta facendo per l’istruzione corrente e dove prendere quella successiva, ma niente di più.

C è un linguaggio di alto livello. Ci permette di scrivere una dichiarazione di alto livello come:

area = (base * height) / 2.0; /* Compute area of triangle */

Il compilatore tradurrà questa dichiarazione in una serie di criptiche istruzioni macchina di basso livello. Questo tipo di istruzione è chiamato istruzione di assegnazione. Viene usata per calcolare e memorizzare il valore di un’espressione aritmetica.

Possiamo anche usare istruzioni di controllo per controllare l’ordine di elaborazione. Dichiarazioni come le dichiarazioni if e switch permettono al computer di prendere semplici decisioni. Gli enunciati possono essere ripetuti più e più volte usando enunciati di looping come while e for.

Gruppi di enunciati possono essere avvolti per formare funzioni. Così, dobbiamo solo scrivere una funzione generica per disegnare un rettangolo una volta, e poi possiamo riutilizzarla ogni volta che vogliamo disegnare un nuovo rettangolo.

C fornisce al programma un ricco insieme di funzioni standard che eseguono funzioni comuni come la ricerca, l’ordinamento, l’input e l’output.

Un insieme di funzioni correlate può essere raggruppato in un singolo file sorgente. Molti file sorgente possono essere compilati e collegati insieme per formare un programma.

Uno dei principali obiettivi del linguaggio C è quello di organizzare le istruzioni in componenti riutilizzabili. Dopo tutto, puoi scrivere programmi molto più velocemente se puoi “prendere in prestito” la maggior parte del tuo codice da qualche altra parte. Gruppi di funzioni riutilizzabili possono essere combinati in una libreria. In questo modo, quando avete bisogno, per esempio, di una routine di ordinamento, potete prendere la funzione standard qsort dalla libreria e collegarla nel vostro programma.

Le dichiarazioni di dati, le strutture e le istruzioni di controllo, e altri elementi del linguaggio C, non sono a beneficio del computer. Il computer non può capire la differenza tra un milione di byte a caso e un vero programma. Tutti gli elementi del linguaggio C sono progettati per permettere al programmatore di esprimere e organizzare chiaramente le sue idee in un modo adatto a lui, non al computer.

L’organizzazione è la chiave per scrivere buoni programmi. Per esempio, in questo libro sapete che l’indice è all’inizio e l’indice è in fondo. Usiamo questa struttura perché i libri sono organizzati così. L’organizzazione rende questo libro più facile da usare.

Il linguaggio C ti permette di organizzare i tuoi programmi usando una sintassi semplice ma potente. Questo libro va oltre la sintassi C e vi insegna le regole di stile che vi permettono di fare programmi altamente leggibili e affidabili. Combinando una sintassi potente con un buon stile di programmazione, è possibile creare programmi potenti che eseguono operazioni complesse e meravigliose, ma sono anche organizzati in un modo che li rende facili da capire quando arriva il momento di cambiare.

Leave a Reply