Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Per leleganza della sintassi e la compattezza dei costrutti, il C una sfida permanente alle capacit intellettuali del programmatore. E un linguaggio di alto livello con un insieme ristretto di costrutti di controllo e parole chiave (circa trenta), ma possiede un buon numero di operatori. Il C e' diventato un linguaggio professionale ampiamente utilizzato perch ha appunto strutture di alto livello ma pu maneggiare attivit di basso livello. Produce inoltre programmi efficienti e pu essere compilato su un'ampia gamma di sistemi operativi.
Il primo programma in C
Il pi semplice in assoluto il famoso "Hello World!" (Ciao Mondo) che ha soltanto lo scopo di stampare a video la suddetta scrittura.
1 2 3 4 5 6 7 8 9 10 /* Un primo programma in C */ #include <stdio.h> int main () { printf("Hello World! \n"); return 0; }
Risultato
#include <stdio.h> #include <conio.h> int main () { printf("Hello World! \n"); getch(); return 0; }
Leditor di testo
Un programma in C pu essere scritto anche con un semplice editor di testi. Per poter vedere il risultato del codice dobbiamo salvare necessariamente il file con un'estensione ".c", ad esempio "hello world.c".
La compilazione
A questo punto non dobbiamo fare altro che compilare il programma.
La compilazione
La compilazione di un programma in C segue varie fasi: Il codice sorgente viene controllato dal preprocessore che ha i seguenti compiti: - rimuovere eventuali commenti presenti nel sorgente; - interpretare speciali direttive per il preprocessore denotate da "#" - controllare eventuali errori del codice Il risultato del preprocessore sar un nuovo codice sorgente "pulito" ed espanso" che viene tradotto dal compilatore C in codice assembly L'assembler sar incaricato di creare il codice oggetto salvandolo con estensione .obj Il Link editor ha il compito di collegare tutti i file oggetto risolvendo eventuali dipendenze e creando il programma (.exe)
La compilazione
Tutte queste operazioni possono individuare facilmente errori di sintassi, ma mai e poi mai potranno trovare errori logici (come ad esempio un ciclo che non finisce), anche se spesso vengono segnalati dei Warning che non costituiscono errore, ma che segnalano parti di codice strane e quindi sulle quali porre attenzione per eventuali errori logici. Correggere gli errori e ripetere la procedura.
Lesecuzione
Puntare il mouse su Esegui
Il programma provveder, non solo ad eseguire tutte le operazioni citate, ma, una volta compilato, mander in esecuzione il vostro file presentandovi il risultato a video. Questo file, in ambiente Dos/Windows generalmente ha lo stesso nome del sorgente ma con estensione .exe invece che .c
La variabile
Il concetto di variabile. Pensiamo, ad esempio, a quando salviamo un numero di telefono di un nostro amico sul cellulare; se vogliamo chiamare il nostro amico, baster inserire il suo nome (nome della variabile) ed il cellulare comporr automaticamente il numero di telefono (valore della variabile). Si pu vedere quindi che una variabile esiste in funzione del nome e del suo valore corrispondente; la comodit risiede (come nel cellulare) nel poter usare un nome per valori, che possono essere numeri o lettere, di grande entit o difficili da ricordare. Un altro vantaggio, non da sottovalutare, la possibilit di usare il nome della variabile al posto del suo valore per eseguirvi sopra delle operazioni, con la possibilit, in seguito, di modificare il valore come e quante volte vogliamo. Le variabili vengono definite da un tipo e da un nome.
La variabile
Il nome di una variabile costituito da una o pi lettere, cifre o caratteri e deve iniziare con una lettera o il carattere di sottolineatura (underscore "_" ); la loro lunghezza massima dipende dal compilatore, ma generalmente non si possono superare i 31 caratteri, ed inoltre il C case-sensitive, quindi si fa distinzione tra lettere maiuscole e lettere minuscole. Il tipo della variabile indica quale tipo di valori pu assumere il contenuto della variabile stessa. Si pu ben capire che un tipo intero conterr soltanto dei numeri, mentre il tipo carattere conterr solamente lettere dell'alfabeto, numeri e simboli. Va fatto notare che l'intero '7' estremamente diverso dal carattere '7', infatti l'intero viene trattato come un numero e su di esso si possono svolgere le pi svariate operazioni matematiche, mentre il carattere viene gestito come un simbolo.
La variabile
Tutte le variabili, prima di essere utilizzate, devono essere dichiarate, cio deve essere detto al compilatore il tipo della variabile ed il suo nome (es. int x), questo per permettergli di allocare la memoria necessaria alla variabile stessa; la dichiarazione generalmente viene fatta all'inizio del programma, ma in programmi di grandi dimensioni pu trovarsi anche in altre posizioni (o altri file), ma bisogna ricordare che comunque la dichiarazione di una variabile pu essere fatta una ed una sola volta. Successivamente la variabile deve essere inizializzata, cio le deve essere assegnato un valore, operazione che generalmente viene fatta contemporaneamente alla dichiarazione. // solo dichiarazione int x; // inizializzazione x = 10;
Tipi di variabile
Tipi di Rappresentazione dichiarazione Char Int Short Long Float Double Carattere Numero intero Numero intero "corto" Numero intero "lungo" Numero reale Numero reale "lungo" N. di byte 1 (8 bit) 2 (16 bit) 2 (16 bit) 4 (32 bit) 4 (32 bit) 8 (64 bit)
Tipi di variabile
Il tipo char adibito a contenere uno ed un solo carattere Per dichiarare ed inizializzare una variabile char, ad esempio inizializzandola con la lettera 'r', basta scrivere: char a = 'r'; Il tipo int contiene numeri, appunto, interi, quelli che in matematica vengono chiamati numeri naturali, e cio senza la virgola e parti frazionate. int x = 7; Attenzione: int y = 3; int z; z = x / y; z vale 2, cio la parte intera della divisione tra 7 e 3
Tipi di variabile
I tipi float e double sono chiamati anche numeri in virgola mobile, cio quelli che in matematica vengono chiamati numeri reali. La differenza tra i due sta solamente nei bit che sono riservati per la loro rappresentazione. float x = 7.0 float y = 2.0 float z; z=x/y // z vale 3.5 short e long sono le due varianti del tipo int anche se in realt un tipo int gi di per s un tipo short.
Queste operazioni restituiscono necessariamente 1 quando sono vere e 0 quando sono false, quindi facendo "a || b" questa assume valore uno se e solo se "a" o "b" valgono uno, mentre vale zero se entrambi gli operandi valgono zero; analogamente quando si ha "a & b", questa assume valore zero se "a" o "b" valgono zero, uno nel caso entrambi valgano uno.
y = 2 * 5 * 5 + 3 * 5 + 7 (la moltiplicazione pi a sinistra) y = 10 * 5 + 3 * 5 + 7 (la moltiplicazione pi a sinistra) y = 50 + 3 * 5 + 7 (prima la moltiplicazione delladdizione) y = 50 + 15 + 7 (laddizione pi a sinistra) y = 65 + 7 (lultima addizione) y = 72 (lultima operazione posiziona 72 in y)
La moltiplicazione, il resto e la divisione saranno valutati per primi in ordine da sinistra a destra, poich hanno una priorit maggiore delladdizione e della sottrazione. In seguito saranno valutate la somma e la sottrazione anche queste da sinistra a destra.
ATTENZIONE
Non confondere loperatore di uguaglianza == con quello di assegnamento =
Ci che rende questi scambi cos dannosi che essi, solitamente, non provocano degli errori di sintassi e quindi non vengono segnalati dal compilatore. Se vogliamo verificare che la variabile x assuma il valore 0 dovremo scrivere x == 0. Nel caso in cui vogliamo assegnare il valore 0 a suddetta variabile dovr scrivere x = 0.
Si inseriscono prima di chiudere le virgolette: int x = 10; printf("Il numero %d\n", x); // l'output a video "Il numero 10 e il cursore torna a capo
Questo semplice programma sopra esposto serve solamente per leggere un numero da tastiera e ristamparlo a video.
In questo caso possibile omettere il simbolo & che richiama l'indirizzo del puntatore, ed usare, invece, il nome della variabile, perch il nome di un array corrisponde all'indirizzo di partenza dell'array stesso.
Le decisioni
Nella programmazione le istruzioni vengono eseguite dalla prima fino all'ultima. Per deviare il flusso delle scelte (ad esempio per scegliere tra l'opzione A e l'opzione B) basta porre delle condizioni che, se verificate, eseguono un pezzo di codice o altrimenti ne eseguono un altro; queste istruzioni particolari che permettono di incanalare il flusso si chiamano strutture di controllo condizionale e sono:
ifelse
eseguir una certa azione nel caso che una data condizione sia vera, mentre ne eseguir una differente nel caso sia falsa
Le decisioni: ifelse
L'istruzione ifelse ha la seguente sintassi: if (espressione) { istruzione 1 } else { istruzione 2 } ESEMPIO: Se il voto dello studente maggiore o uguale a 60 Visualizza PROMOSSO altrimenti Diagramma di flusso Visualizza BOCCIATO if (voto >= 60) { printf(PROMOSSO\n);} else { printf(BOCCIATO\n);}
REGOLA: "l'else si riferisce sempre all'if pi vicino, a meno che non sia diversamente specificato da eventuali parentesi graffe"
Istruzioni di ciclo
Permettono di risparmiare la quantit di codice scritta rendendo quindi il programma pi leggero e pi facile da comprendere. Le istruzioni di ciclo, come le istruzioni condizionali, hanno bisogno che alcune condizioni vengano verificate affinch il ciclo continui nella sua opera o si interrompa. Le istruzioni di ciclo del C sono tre: : il while, che continua il suo ciclo fino a quando l'espressione associata non risulta falsa il do-while, che agisce come il while, ma assicura l'esecuzione delle istruzioni associate almeno una volta il for, che il costrutto pi usato, versatile e potente tra i tre
Diagramma di flusso
1 2 3 4 5 6 7 8 9 10