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.

  1. 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
  2. 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" ,
  3. 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
  4. 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
  5. 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
  6. 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;
  7. 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
  8. 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&
  9. Gli operatori * e &Gli operatori * e &  Il C consente di pasticciare a volontà, ed anche... troppo, con gli indirizzi di memoria mediante particolari strume
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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
  21. 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
  22. 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
  23. 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
  24. 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
  25. 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
  26. 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
  27. 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
  28. 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
  29. 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
  30. 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
  31. 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
  32. 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
  33. 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
  34. 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
  35. 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 
  36. 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
  37. 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
  38. Gli operatori: operatori aritmetici Operatori aritmetici  Gli operatori aritmetici del C sono i simboli di addizione ("+"), sottrazione ("­"), divisione ("/") e moltiplicazione ("*"
  39. 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,
  40. 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
  41. 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
  42. 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
  43. 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
  44. Gli operatori: assegnamento Assegnamento  L'operatore di assegnamento per eccellenza è l'uguale ("="), che assegna alla variabile alla propria sinistra il risultato dell'espressione alla
  45. 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
  46. 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
  47. 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
  48. 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&
  49. Il flusso elaborativo: goto goto Il C supporta un'istruzione che ha il formato generale:     goto etichetta;    ....    etichetta: oppure:  &
  50. 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. 
  51. 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(
  52. 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
  53. 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
  54. 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
  55. 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
  56. 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
  57. 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
  58. 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'
  59. 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
  60. 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.