Introduzione


 * Introduzione:**

Il linguaggio C è uno dei linguaggi di programmazione che si caratterizza per la semplicità di apprendimento per i neofiti di informatica, in quanto non appartiene ai linguaggi di alto livello, ma neache ai linguaggi di livello macchina. Questa sua versatilità permette di creare programmi incisi e semplici, tutt'altro che banali, e prepara i programmatori a linguaggi piú interessanti. ** INTRODUZIONE ALLA PROGRAMMAZIONE **

Il C è, però, un linguaggio di programmazione compilato. Ciò vuol dire che è necessario utilizzare un "compilatore" per trasformare il codice sorgente in un programma eseguibile dal sistema operativo. Il livello di programmazione offerto dal C è relativamente basso, pertanto è possibile creare programmi molto performanti e per questo motivo viene utilizzato in molte applicazioni che necessitano di prestazioni elevate (sistemi operativi, giochi per PC, applicazioni embedded, ecc.). La sintassi è molto semplice, ma per diventare esperti programmatori è necessaria moltissima pratica. Uno dei punti forti del C è sicuramente la gestione della memoria: è il programmatore stesso che alloca determinati blocchi di memoria e si occupa della loro de allocazione. Inoltre è un linguaggio molto flessibile, con tipi di dati che permettono di costruire strutture-dati anche molto complesse. Il C è un linguaggio procedurale: ciò vuol dire che non esistono classi, oggetti, eventi, ecc. come per esempio nel C++, Java, Visual Basic, e molti altri linguaggi di più alto livello. L'elemento "portante" dei programmi C è costituito, infatti, dalle funzioni (spiegheremo in seguito cosa sono) o procedure. Vediamo ora le basi di un semplice programma come il successivo:
 * Il linguaggio di programmazione che userete è il **** C ** e può essere considerato il linguaggio di programmazione per eccellenza del **Framework.NET**; diversamente dagli altri linguaggi, come Visual Basic o C++, esso è nato espressamente per la nuova piattaforma. In questo senso, è significativo il fatto che Microsoft stessa si sia servita di C per scrivere gran parte delle librerie di **.**NET.


 * 1) include 
 * 2) include 

**int** main { printf ( "Hello world! \n " ) ; getchar; }

I file sorgenti dei programmi scritti in C hanno estensione .c. Per creare un programma, è necessario definire una funzione particolare chiamata **//main//**. Questa funzione rappresenta l'entry point del programma, ovvero il punto di partenza; essa restituisce un valore intero che indica al sistema operativo o all'eventuale programma chiamante un codice di uscita, che servirà a capire se il programma è stato chiuso per un errore oppure se tutto è andato a buon fine. Le funzioni verranno comunque spiegate in dettaglio nel capitolo dedicato all'argomento. 1- Iniziamo creando un file //hello.c//. A questo punto è necessario includere un file di intestazione, in cui sono definite le funzioni standard di input/output del C, e un file che ferma il programma permettendo la visualizzazione dell’input, di cui parleremo più avanti.


 * 1) include 


 * 1) include 

2- A questo punto dobbiamo dichiarare la funzione //main// che, come spiegato prima, ci permetterà di eseguire il programma. Ciò va fatto aggiungendo il seguente codice:

{
 * int** main

}

In questo modo abbiamo dichiarato la funzione //main// che per la semplicità estrema di questo programma di esempio, conterrà tutto il codice necessario. Se tentassimo di compilare il file //prova.c// così ottenuto:


 * 1) include 

{
 * int** main

}

otterremmo un programma perfettamente funzionante ma che non esegue nessuna operazione (provare per credere). 3- Per creare un primo programma che stampi la frase "Hello world!" sul video, utilizzeremo la funzione di libreria **//printf//**, di cui parleremo in seguito, in questo modo:

printf("Hello world!\n");

Questo codice va inserito tra le due parentesi graffe della funzione main in questo modo:

**int** main { printf ( "Hello world! \n " ) ; getchar; }
 * 1) include 
 * 2) include 

La sequenza di caratteri **\n**, è una sequenza di escape che consente di inserire un carattere new line in una stringa (permette di andare a capo, rendendo l’output meglio leggibile). ** SCRITTURA CORRETTA **

Saper risolvere un problema attraverso l’informatica non basta: bisogna scrivere in modo leggibile, per comprendere l’evoluzione del programma e per gli altri che lo utilizzeranno e/o lo modificheranno. Un principio fondamentale è l’indentazione, ovvero la disposizione dei comandi in posizioni di “possesso”. Es.: { a=5; b=6;
 * int ** main
 * int ** a, b, risultato;

risultato = a + b; risultato = a –b; printf(“Il risultato è %d \n”, risultato);
 * if ** (a == b)
 * else **

}
 * return ** 0;

Nell’esempio i comandi subordinati a **IF** e **ELSE** sono spostati verso destra. Questo indica che i comandi vengono utilizzati nell’**IF** e nell’**ELSE**.

Un’altra buona regola è spaziare bene gli elementi per seguire meglio le variabili e le loro elaborazioni e dare nomi che facilitano la lettura del programma. Es.:

b=a+2; non consigliato prezzo = costo + 2; consigliato

Il caso consigliato è più comprensibile.

Un ultimo consiglio è suddividere in più parti le varie operazioni che vengono elaborate dal programma e commentarle con il loro compito. Es.: { **int** primo, secondo, risultato; variabili utilizzate
 * int ** main

// printf(“Inserisci il primo numero \n”); ////caricamento variabile primo// scanf(“%d”, &primo); printf(“Inserisci il secondo numero \n”); caricamento variabile secondo // scanf(“%d”, &secondo); //

// **if**(primo > secondo) // //verifica valori// risultato = primo / secondo; **else** seconda opzione // risultato = primo * secondo; // // . . . //

// ** LE VARIABILI ** // // Una variabile è un’area di memoria RAM riservata per contenere un particolare dato che può essere modificato durante l’esecuzione del programma. La variabile è caratterizzata da un nome, che identifica la cella di memoria e il dato in essa contenuta, un valore che può assumere e il tipo (intero, float, char ecc.). // // Le variabili possono essere globali, quando sono valide per ogni parte del programma, e locali, quando valgono solo in una parte di codice (all'interno di una funzione, per esempio). // // In un programma la dichiarazione di variabile avviene così: // // 1- Variabile intera: **int** nome_var1, nome_var2; // // 2- Variabile float (numeri reali): **float** nome_var1, nome_var2; // // 3- Variabile char (carattere): **char** car1, car2; //

// Il tipo di dato char contiene un valore numerico corrispondente al codice ASCII di un carattere. Ha dimensione 1 byte e viene utilizzato per salvare caratteri. Il range di valori che può contenere, va da 0 a 255 se senza segno, oppure da -128 a 127 se con segno. // // Il tipo di dato int è utilizzato per contenere numeri interi. La dimensione di questa variabile dipende dall'implementazione: nei moderni compilatori, il dato di tipo int ha dimensione 4 byte, ovvero 32 bit. Il range di valori per questo tipo va da 0 a (2^32)-1 se senza segno, altrimenti da -2^31 a +(2^31) - 1. // // Il tipo di dato float è utilizzato per contenere valori in virgola mobile, a singola precisione. La dimensione di una variabile float è di 32 bit (ovvero 4 byte). // // Il tipo di dato double è utilizzato per contenere valori in virgola mobile a doppia precisione. La dimensione di una variabile double è di 64 bit (ovvero 8 byte). // // In aggiunta esistono alcuni qualificatori, che possono essere applicati a questi tipi. Per esempio, short (intero a 16 bit), long (intero a 32 bit) e unsigned (intero senza segno) sono associabili agli interi. // // Le variabili, negli input/output, hanno una sintassi propria sotto descritte: // //** %d ** → dati di tipo int // //** %f ** → dati di tipo float // //** %lf ** → dati di tipo double // //** %c ** → dati di tipo char // //** %s ** → dati di tipo stringhe // // ** L’INPUT / OUTPUT ** // // Per poter mandare in output un dato dobbiamo includere le librerie “stdio.h” (libreria standard input/output) e “stdlib.h” (libreria standard), che sono entrambe incluse nella libreria “stdafx.h”. Queste librerie vanno sempre incluse all’inizio di un programma! // // La visualizzazione a video di una variabile o di un commento avviene tramite due comandi e le seguenti sintassi: // // 1- inserimento da parte di un utente esterno di un valore __intero__ nella variabile n1: printf(“inserisci il numero: \n”); // richiesta di inserimento scanf(“%d”,&n1); // attribuisce il valore inserito ad n1 2- stampatura a video di un valore __intero__ nella variabile n1: printf(“%d”, n1); Per migliorare la visualizzazione si usano dei tipi di opzioni come: **\n** → per andare a capo; **\t** → per la tabulazione orizzontale; **\b** → per la tabulazione verticale; **\a** → per tornare indietro di uno spazio; **\f** → per il salto pagina.