Guida C - Manuale programmazione con articoli e risorse interessanti
Imparare il linguaggio di programmazione C con una guida facile e completa. Trucchi e suggerimenti a cura di Webmasterpoint.org.
- Cenni generali Abbiamo deciso di pubblicare questa guida per anticipare la futura guida di C++ che servirà anche per la programmazione web. Come qualunque linguaggio, anche il linguaggio C si comp
- La produzione dei programmi C: sviluppare softwareLinguaggi interpretati e compilati Si è detto che il linguaggio di programmazione consente di esprimere gli algoritmi in modo "umano" ,
- Un primo approccio a C E' giunto il momento di cominciare ad addentrarsi nei segreti del C. All'approccio tecnico seguito dalla maggior parte dei manuali sull'argomento, è sembrata preferibile un'e
- La gestione dei dati in C Per poter parlare di come si gestiscono i dati, occorre prima precisare che cosa essi siano, o meglio che cosa si intenda con il termine "dati" , non tanto dal punto di vista della logica
- I tipi di dato: character, unsigned, integer short e long, floating point, double precision I tipi di dato Al fine di attribuire significato ad una sequenza di bit occorre sapere quanti bit la compongono, e, come vedremo, qual è la loro organizzazione al suo interno. La p
- Le variabili: dichiarare le var in C Le variabili E' il momento di ripescare CIAO.C e complicarlo un poco. #includevoid main(void);void main(void){ unsigned int anni; float numero;
- I puntatori C: cosa sono, a cosa servono e come si usano I puntatori Una variabile è un'area di memoria alla quale è associato un nome simbolico, scelto dal programmatore. Detta area di memoria è grande quanto basta per
- I puntatori: gli indirizzi di memoria PUNTATORI Gli indirizzi di memoria Proviamo ad immaginare la memoria come una sequenza di piccoli contenitori, ciascuno dei quali rappresenta un byte: ad ogni "contenitore&
- Gli operatori * e &Gli operatori * e & Il C consente di pasticciare a volontà, ed anche... troppo, con gli indirizzi di memoria mediante particolari strume
- I puntatori C: complicazioni e problemi PUNTATORI Complicazioni I puntatori sono, dunque, strumenti appropriati alla manipolazione ad alto livello degli indirizzi delle variabili. C'è proprio bisogno di pre
- I Puntatori far e huge PUNTATORI Puntatori far e huge Le considerazioni sin qui espresse, però, aprono la via ad alcuni approfondimenti. In primo luogo, va sottolineato ancora una volta che num
- I puntatori static PUNTATORI Puntatori static La dichiarazione static float *ptr; dichiara un puntatore static a un dato di tipo float. In realtà non è possibile, nel di
- I puntatori C: le stringhe PUNTATORI Le stringhe Abbiamo anticipato che non esiste, in C, il tipo di dato "stringa". Queste sono gestite dal compilatore come sequenze di caratteri, cioè d
- I puntatori C: gli array PUNTATORI Gli array Un array (o vettore) è una sequenza di dati dello stesso tipo, sistemati in memoria... in fila indiana. Una stringa è, per definizione, un arra
- L'aritmetica dei puntatori PUNTATORI L'aritmetica dei puntatori Quanti byte di memoria occupa un array? La risposta dipende, ovviamente, dal numero degli elementi e dal tipo di dato dichiarato. Un arr
- I puntatori C void PUNTATORI Puntatori void Un puntatore può essere dichiarato di tipo void. Si tratta di una pratica poco diffusa, avente lo scopo di lasciare indeterminato il tipo di dato
- Puntatori a puntatori PUNTATORI Puntatori a puntatori Un puntatore è una variabile che contiene un indirizzo. Perciò è lecito (e, tutto sommato, abbastanza normale) fare uso di p
- L'accessibilità e la durata delle variabili L'accessibilità e la durata delle variabili In C le variabili possono essere classificate, oltre che secondo il tipo di dato, in base alla loro accessibilità e alla loro
- Le variabili C automatic L'ACCESSIBILITÀ' E LA DURATA DELLE VARIABILI Le variabili automatic Qualsiasi variabile dichiarata all'interno di un blocco di codice racchiuso tra parentesi graffe
- Le variabili C register L'ACCESSIBILITÀ' E LA DURATA DELLE VARIABILI Le variabili register Dal momento che il compilatore colloca le variabili automatic nella RAM del calcolatore, i valori in
- Le variabili C static L'ACCESSIBILITÀ' E LA DURATA DELLE VARIABILI Le variabili static Una variabile è static se dichiarata utilizzando, appunto, la parola chiave static: sta
- Le variabili C external L'ACCESSIBILITÀ' E LA DURATA DELLE VARIABILI Le variabili external Sono variabili external tutte quelle dichiarate al di fuori delle funzioni. Esse hanno durata estesa
- Le costanti in C Le costanti Le costanti, in senso lato, sono dati che il programma non può modificare. Una costante è, ad esempio, la sequenza di caratteri "Ciao Ciao! " vista in
- Le costanti manifeste LE COSTANTI Le costanti manifeste Supponiamo di scrivere un programma per la gestione dei conti correnti bancari. E' noto (e se non lo era ve lo dico io) che nei calcoli finanziar
- Le costanti simboliche LE COSTANTI Le costanti simboliche E' di recente diffusione, tra i programmatori C, la tendenza a limitare quanto più possibile l'uso delle costanti manifeste, in parte
- Entità complesse Entità complesse I tipi di dato discussi in precedenza sono intrinseci al compilatore: quelli, cioè, che esso è in grado di gestire senza ulteriori costruzioni logich
- Le strutture ENTITA' COMPLESSE Le strutture Tra gli strumenti cui si è fatto cenno appare fondamentale la struttura (structure), mediante la quale si definisce un modello (templat
- Le unioni ENTITA' COMPLESSE Le unioni Da quanto detto circa le strutture, appare evidente come esse costituiscano uno strumento per la rappresentazione di realtà complesse, in
- Gli enumeratori ENTITA' COMPLESSE Gli enumeratori Gli enumeratori sono un ulteriore strumento che il C rende disponibile per rappresentare più agevolmente i dati gestiti dai programm
- I campi di bit ENTITA' COMPLESSE I campi di bit Se una variabile di tipo intero può assumere solo un limitato numero di valori, è teoricamente possibile memorizzarla utilizza
- Gli operatori Come tutti i linguaggi di programmazione, il C dispone di un insieme di operatori, cioè di simboli che rappresentano particolari operazioni sul valore di un dato (che viene comunemente detto
- Gli operatori: il not logico Not logico Il not logico si indica con il punto esclamativo. Esso consente di negare logicamente il risultato di un confronto, cioè di "capovolgerlo". Perciò, se a
- Gli operatori: complemento a uno Complemento a uno L'operatore di complemento a uno è rappresentato con la tilde ("~"). Il complemento ad uno di un numero si ottiene invertendo tutti i bit che lo com
- Gli operatori: negazione algebrica Negazione algebrica Il segno meno ("") può essere utilizzato come negazione algebrica, cioè per esprimere numeri negativi o, più esattamente, per inver
- Gli operatori: autoincremento e autodecremento Autoincremento e autodecremento Gli operatori di (auto)incremento e (auto)decremento sommano e, rispettivamente, sottraggono 1 alla variabile a cui sono applicati. L'espressione
- Gli operatori: cast e conversioni di tipo Cast e conversioni di tipo In una espressione è sempre possibile avere operandi di tipo diverso. Non è poi così strano dividere, ad esempio, un numero in virgola mobi
- Gli operatori: operatore sizeof() Operatore sizeof() Il compilatore C rende disponibile un operatore, sizeof(), che restituisce come int il numero di byte[4] occupato dal tipo di dato o dalla variabile indicati tra le par
- Gli operatori: operatori aritmetici Operatori aritmetici Gli operatori aritmetici del C sono i simboli di addizione ("+"), sottrazione (""), divisione ("/") e moltiplicazione ("*"
- Gli operatori: resto di divisione intera Resto di divisione intera Quando si effettua una divisione tra due interi, il C restituisce solamente la parte intera del risultato. Se esiste un resto, questo è perso. Ad esempio,
- Gli operatori: Shift su bit Shift su bit Pur essendo classificato normalmente tra i linguaggi di alto livello, il C manifesta spesso la propria natura di linguaggio orientato al sistema: gli operatori su bit di cui
- Gli operatori: Operatori logici di test Operatori logici di test Gli operatori logici di test possono essere suddivisi in due gruppi: quelli normalmente usati nei confronti tra valori e quelli utilizzati per collegare i risulta
- Gli operatori: Operatori logici su bit Operatori logici su bit Gli operatori logici su bit consentono di porre in relazione due valori mediante un confronto effettuato bit per bit. Consideriamo l'operatore di prodotto logi
- Gli operatori: operatore condizionale Operatore condizionale L'operatore condizionale, detto talvolta operatore ternario in quanto lavora su tre operandi[8], ha simbolo "? :" e può essere paragonato ad un
- Gli operatori: assegnamento Assegnamento L'operatore di assegnamento per eccellenza è l'uguale ("="), che assegna alla variabile alla propria sinistra il risultato dell'espressione alla
- Gli operatori: separatore di espressioni Separatore di espressioni In una sola istruzione C è possibile raggruppare più espressioni, non collegate tra loro da operatori logici, ma semplicemente elencate in sequenza
- Il flusso elaborativo Qualsiasi programma può venire codificato in un linguaggio di programmazione usando tre sole modalità di controllo del flusso elaborativo: l'esecuzione sequenziale, l'esecuzio
- Il flusso elaborativo: if else if... else L'esecuzione condizionale nella forma più semplice è specificata tramite la parola chiave if, la quale indica al compilatore che l'istruzione seguente deve esse
- Il flusso elaborativo: switch switch La if gestisce ottimamente quelle situazioni in cui, a seguito della valutazione di una condizione, si presentano due sole possibilità alternative. Quando le alternative siano pi&
- Il flusso elaborativo: goto goto Il C supporta un'istruzione che ha il formato generale: goto etichetta; .... etichetta: oppure: &
- Il flusso elaborativo: i cicli I cicli Il linguaggio C dispone anche di istruzioni per il controllo dei cicli: con esse è possibile forzare l'iterazione su blocchi di codice più o meno ampi.
- Il flusso elaborativo: while while Mediante l'istruzione while è possibile definire un ciclo ripetuto finché una data condizione risulta vera. Vediamo subito un esempio: while(
- Il flusso elaborativo: do while do... while I cicli di tipo do...while sono, come si può immaginare, "parenti stretti" dei cicli di tipo while. Vediamone subito uno: do { &n
- Il flusso elaborativo: for for Tra le istruzioni C di controllo dei ciclo, la for è sicuramente la più versatile ed efficiente. La for è presente in tutti (o quasi) i linguaggi, ma in nessuno ha la p
- Le funzioni La funzione è l'unità elaborativa fondamentale dei programmi C. Dal punto di vista tecnico essa è un blocco di codice a sé stante, isolato dal resto del program
- Le funzioni: definizione, parametri e valori restituiti Definizione, parametri e valori restituiti La definizione di una funzione coincide, in pratica, con il codice che la costituisce. Ogni funzione, per poter essere utilizzata, deve essere definit
- Puntatori a funzioni Puntatori a funzioni Credevate di esservene liberati? Ebbene no! Rieccoci a parlare di puntatori... Sin qui li abbiamo presentati come variabili un po' particolari, che contengono l'ind
- Le funzioni: la ricorsione La ricorsione Abbiamo già accennato che la ricorsione è realizzata da una funzione che richiama se stessa: si tratta di una tecnica di programmazione che può fornire soluzi
- Le funzioni: main() parametri e valore restituito main(): parametri e valore restituito La funzione main() è presente in tutti i programmi C ed è sempre eseguita per prima, tuttavia non è necessario chiamarla dall'
- Allocazione dinamica della memoria Quando è dichiarata una variabile, il compilatore riserva la quantità di memoria ad essa necessaria e le associa, ad uso dei riferimenti futuri, il nome scelto dal programmatore. Il c
- Le istruzioni di controllo generale Le istruzioni di controllo generale Il linguaggio C dispone di due diversi strumenti per condizionare il flusso di esecuzione dei programmi. Vale la pena di analizzarli compiutamente.