Il C `e un linguaggio di programmazione di uso generale, originariamente sviluppato per la scrittura del sistema operativo Unix, ed oggi disponibile su tutte le maggiori piattaforme (Unix, Linux, Windows, MacOS, etc.). Il C `e un linguaggio del paradigma imperativo e fornisce i costrutti fondamentali per il controllo del flusso del programma (while, do, for, if-else e switch) e la definizione di funzioni. A differenza dei linguaggi orientati agli oggetti, come Java, il C non supporta le nozioni di oggetto, classe, e nessun meccanismo di ereditarietà. Una caratteristica peculiare del linguaggio C risiede nell’utilizzo dei puntatori. Un puntatore `e una variabile che contiene l’indirizzo di un’altra variabile. Fondamentalmente, il C `e un linguaggio semplice da utilizzare, veloce, e che quindi si presta particolarmente bene per la programmazione di sistema. Ricordiamo che Unix, Linux e un gran numero di applicazioni per tali sistemi sono scritti in C. Un minimo programma in C e': main() { } Ogni programma C deve contenere una e una sola funzione main(). Per ogni parentesi graffa aperta deve essercene una chiusa I commenti possono essere posti ovunque utilizzando /* (inizio commento) e */ (fine commento), ma non si puo' inserire un commento in un altro. Il seguente esempio e' un programma che produce l'output sullo schermo della frase “Primo programma ": main() { } printf(“ Questo è il primo programma in Linguaggio C \n"); exit(0); printf L'istruzione "printf" e' una funzione C che visualizza cio' che gli viene passato come argomento. Per creare un file contenente uno dei precedenti programmi si puo' utilizzare un qualsiasi text editor disponibile sulla macchina (vi, emacs, xedit, ...). Il nome del file deve avere l'estensione ".c", cioe' chiamarsi, ad esempio, prog.c. Il contenuto, ovviamente, deve rispettare la sintassi C; per quanto riguarda gli esempi sopra riportati, potrebbero iniziare con una riga del tipo /* Esempio ... */ (anche con una linea vuota che la precede) e terminare con la linea } /* Fine del programma */ (anche con una linea vuota che la segue) Un programma C ha in linea di principio la seguente forma: Comandi per il preprocessore Definizione di tipi Prototipi di funzioni (dichiarazione dei tipi delle funzioni e delle variabili passate alle funzioni) Variabili Funzioni Vediamo l'esempio di un programma: main() { printf(“ IL LINGUAGGIO C \n"); exit(0); } Note: - Il C richiede un punto e virgola alla fine di ogni statement. printf() e' una funzione standard richiamata da main. - \n significa una nuova linea (a capo). - exit() e' anch'essa una funzione standard che fa terminare il programma (qui non sarebbe necessaria in quanto e' l'ultima linea di main e il programma terminerebbe comunque). Il C sfrutta l'output formattato. Per stampare il contenuto di una variabile si utilizza la funzione printf(). Bisogna pero' specificare il formato della variabile utilizzando il carattere speciale di formattazione "%" seguito dal carattere che definisce un certo formato per una variabile: %c – char %d - int %f - float Ad esempio: printf("%c%d%f",letter,somma,z); Nota: l'istruzione di formattazione e' racchiusa tra "", e le variabili vengono esposte di seguito; assicurarsi che l'ordine dei formati ed il tipo di dato delle variabili coincidano. Sempre a proposito della funzione "printf", vediamo il seguente esempio di una istruzione di stampa: printf(".\n.1\n..2\n...3\n"); per la quale l'output sara': . .1 ..2 ...3 scanf() e' la funzione per l'input di valori a strutture di dati. Il suo formato e' simile a quello di printf(): scanf("%c%d%f",&ch,&i,&x); Nota: "&" si riferisce all'indirizzo della variabile, e va sempre messo davanti ai nomi di variabili in acquisizione; il motivo verra' spiegato nel paragrafo dei "puntatori". Primo Programma . Eseguire la somma dall’immissione di due numeri da tastiera. #include <stdio.h> #include <stdlib.h> main (void) { float a,b,somma ; printf(" Inserire il 1 numero a = "); scanf("%f",&a); printf( " Inserire il 2 numero b = " ); scanf("%f",&b); somma = a + b; printf(" Il risultato somma e' : %.2f\n",somma); system("PAUSE"); return 0; } Istruzione if ….else if(<condizione>) { (<istruzioni da svolgere se la condizione è vera>); } else { (<istruzioni da svolgere se la condizione è falsa>); } Possiamo anche porre delle condizioni a cascata per gestire diverse alternative dopo l’else if(<condizione 1>) { <istruzioni da svolgere solo se la condizione 1 è vera>); } else if(<condizione 2>) { (<istruzioni da svolgere solo se la condizione 1 è falsa e la condizione 2 è vera>); } CONFRONTO DI DUE NUMERI #include <stdio.h> #include <stdlib.h> main (void) { float a,b ; printf(" Inserire il 1 numero a = "); scanf("%f",&a); printf( " Inserire il 2 numero b = " ); scanf("%f",&b); if (a<b) { printf(" il numero minore risulta essere %.2f\n",a ); printf(" il numero maggiore risulta essere %.2f\n",b ); } else { printf(" il numero minore risulta essere %.2f\n",b ); printf(" il numero maggiore risulta essere %.2f\n",a ); } system("PAUSE"); return 0; }