Il C è un linguaggio di programmazione procedurale, a differenza dei linguaggi moderni che si basano sulla cosiddetta "programmazione ad oggetti". Viene definito procedurale in quanto un programma scritto in questo linguaggio è composto da istruzioni e strutture dati eseguite sequenzialmente l'una dopo l'altra, fatta eccezione per le funzioni che sono blocchi di codice indipendente richiamati dall'interno del programma stesso. Per quanto riguarda le funzioni approfondiremo il loro significato e la loro implementazione in una successiva lezione.
La differenza tra linguaggio procedurale e linguaggio ad oggetti sta nell'approccio con cui il programmatore si accinge a scrivere il software.
La programmazione procedurale richiede di concentrare l'attenzione sullo sviluppo e la risoluzione algoritmica di un determinato problema. Nel caso del C è indispensabile (chiaramente si sta parlando di programmi di un certo livello) conoscere a fondo la macchina su cui si lavora per poterla sfruttare al meglio.Inoltre chi programma con questa tecnica cerca di risolvere il problema affidatogli attraverso l'uso di comandi che istruiscano la macchina a compiere quello di cui il programmatore ha bisogno.
La programmazione ad oggetti, invece, è molto più vicina al modo di pensare umano, in quanto ci si concentra sugli oggetti e sugli elementi di cui si ha bisogno per risolvere il problema e si trova il modo di farli cooperare insieme fino ad arrivare alla soluzione del problema. Anche se inizialmente vi è una notevole difficoltà a crearsi una mentalità orientata agli oggetti, una volta acquisita risulta molto più semplice utilizzare un approccio di questo tipo. E allora sorge spontaneamente una domanda: perchè con linguaggi potenti come ad esempio Visual Basic, Java, i linguaggi del framework .NET bisogna ostinarsi ad imparare il C?
Vi elenco soltanto alcune delle risposte che possono essere date a questa domanda:
1) Il C permette un approccio diretto all'hardware della macchina (ed è per questo che viene definito linguaggio di medio livello), quindi, ad esempio, se si vuole programmare un driver di periferica è indispensabile utilizzare il C
2) Il C permette di avere programmi eseguibili molto più snelli e veloci dei corrispondenti programmi scritti con linguaggi ad alto livello. Questo perchè i compilatori C evitano di inserire istruzioni di controllo, ad esempio, sulla memoria.
3) Se si vuole conoscere davvero come funziona una macchina è INDISPENSABILE saper programmare correttamente in C in quanto i linguaggi ad alto livello non chiariscono (anzi nascondono) assolutamente come avviene l'accesso alla memoria
Non preoccupatevi se non capite molte delle terminologie utilizzate in questi primi incontri...verrà tutto spiegato ampliamente nel corso delle varie lezioni. Se invece non riuscite a trattenere la curiosità...chiedete pure all'interno del forum!
Dopo questa prima breve presentazione vediamo come viene strutturato un programma in linguaggio C. Gli esempi che faremo saranno tutti brevi e semplici; questo per far capire meglio il tutto. Tutti i concetti che andremo ad esporre, comunque, sono validi ed applicabili anche a programmi ben più complessi!
Ogni programma C è rappresentato da una o più funzioni contenenti del codice.
Per il momento vi basti pensare che una funzione è come già detto un insieme di istruzioni che vengono eseguite in sequenza (un istruzione alla volta) finchè non viene richiamata un'altra funzione. A quel punto viene eseguito il codice contenuto nella funzione chiamata ed una volta che il codice è stato eseguito interamente si torna al punto in cui ci si era fermati (nella prima funzione) e si continua da lì ad eseguire il codice. Come avvengono questi passaggi lo vedremo meglio quando parleremo delle funzioni.
Un programma C deve essere quindi composto da almeno una funzione. Un'altra condizione importante è che ci sia almeno una funzione che si chiami "main". Questo perchè il linker quando andrà ad assemblare il codice sorgente cercherà come prima cosa questa funzione (che sarà la prima ad essere inserita nel codice binario eseguibile) e se non la troverà segnalerà un errore.
Vediamo un primo esempio di programma C che stampi a video la frase conosciutissima nel mondo della programmazione "Ciao mondo!"
-----------------------------------------------------------------------
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("Ciao mondo!\n");
return 0;
}
Vediamo di dare una breve descrizione (anche se non esauriente) al programma:
#include <stdio.h>
-->Questa istruzione permette di inserire (includere) all'interno del nostro programma il codice contenuto all'interno della libreria "stdio.h".
A cosa serva questo lo vedremo nelle prossime lezioni
int main(int argc, char *argv[]) {
-->Abbiamo definito la funzione principale che conterrà il nostro programma. La sintassi verrà spiegata più avanti nel corso. Per ora va detto che ogni funzione ha un nome (in questo caso main) e che il codice della funzione deve essere delimitato dalle parentesi graffe
printf("Ciao mondo!\n");
return 0;
}
-->Questo è il codice della funzione main. La parentesi graffa alla fine sta ad indicare che lì finisce la funzione. Il codice presenta solo 2 istruzioni: con printf stampiamo a video un messaggio mentre con return diciamo che vogliamo uscire dalla funzione restituendo un parametro (in questo caso 0)
---------------------------------------------------------------------------
Questo semplicissimo programma può essere scritto con qualsiasi compilatore C in quanto la sua sintassi risulta essere pienamente supportata dall'ANSI C.
Quest'ultimo è uno standard su cui si basa l'attuale linguaggio C. Questo significa che tutte le istruzioni, le strutture dati e le librerie contenute in questo standard sono correttamente interpretate da tutti i compilatori in commercio. Esistono invece librerie e strutture dati che possono venire compilate solamente con determinati compilatori. Un esempio è la libreria <conio.h> presente nel compilatore Borland che presenta funzioni riconosciute solo da quest'ultimo.
Per questa prima lezione è tutto. La prossima volta vedremo come compilare il codice presentato utilizzando vari compilatori ed inoltre spiegheremo il significato delle istruzioni esposte
La differenza tra linguaggio procedurale e linguaggio ad oggetti sta nell'approccio con cui il programmatore si accinge a scrivere il software.
La programmazione procedurale richiede di concentrare l'attenzione sullo sviluppo e la risoluzione algoritmica di un determinato problema. Nel caso del C è indispensabile (chiaramente si sta parlando di programmi di un certo livello) conoscere a fondo la macchina su cui si lavora per poterla sfruttare al meglio.Inoltre chi programma con questa tecnica cerca di risolvere il problema affidatogli attraverso l'uso di comandi che istruiscano la macchina a compiere quello di cui il programmatore ha bisogno.
La programmazione ad oggetti, invece, è molto più vicina al modo di pensare umano, in quanto ci si concentra sugli oggetti e sugli elementi di cui si ha bisogno per risolvere il problema e si trova il modo di farli cooperare insieme fino ad arrivare alla soluzione del problema. Anche se inizialmente vi è una notevole difficoltà a crearsi una mentalità orientata agli oggetti, una volta acquisita risulta molto più semplice utilizzare un approccio di questo tipo. E allora sorge spontaneamente una domanda: perchè con linguaggi potenti come ad esempio Visual Basic, Java, i linguaggi del framework .NET bisogna ostinarsi ad imparare il C?
Vi elenco soltanto alcune delle risposte che possono essere date a questa domanda:
1) Il C permette un approccio diretto all'hardware della macchina (ed è per questo che viene definito linguaggio di medio livello), quindi, ad esempio, se si vuole programmare un driver di periferica è indispensabile utilizzare il C
2) Il C permette di avere programmi eseguibili molto più snelli e veloci dei corrispondenti programmi scritti con linguaggi ad alto livello. Questo perchè i compilatori C evitano di inserire istruzioni di controllo, ad esempio, sulla memoria.
3) Se si vuole conoscere davvero come funziona una macchina è INDISPENSABILE saper programmare correttamente in C in quanto i linguaggi ad alto livello non chiariscono (anzi nascondono) assolutamente come avviene l'accesso alla memoria
Non preoccupatevi se non capite molte delle terminologie utilizzate in questi primi incontri...verrà tutto spiegato ampliamente nel corso delle varie lezioni. Se invece non riuscite a trattenere la curiosità...chiedete pure all'interno del forum!
Dopo questa prima breve presentazione vediamo come viene strutturato un programma in linguaggio C. Gli esempi che faremo saranno tutti brevi e semplici; questo per far capire meglio il tutto. Tutti i concetti che andremo ad esporre, comunque, sono validi ed applicabili anche a programmi ben più complessi!
Ogni programma C è rappresentato da una o più funzioni contenenti del codice.
Per il momento vi basti pensare che una funzione è come già detto un insieme di istruzioni che vengono eseguite in sequenza (un istruzione alla volta) finchè non viene richiamata un'altra funzione. A quel punto viene eseguito il codice contenuto nella funzione chiamata ed una volta che il codice è stato eseguito interamente si torna al punto in cui ci si era fermati (nella prima funzione) e si continua da lì ad eseguire il codice. Come avvengono questi passaggi lo vedremo meglio quando parleremo delle funzioni.
Un programma C deve essere quindi composto da almeno una funzione. Un'altra condizione importante è che ci sia almeno una funzione che si chiami "main". Questo perchè il linker quando andrà ad assemblare il codice sorgente cercherà come prima cosa questa funzione (che sarà la prima ad essere inserita nel codice binario eseguibile) e se non la troverà segnalerà un errore.
Vediamo un primo esempio di programma C che stampi a video la frase conosciutissima nel mondo della programmazione "Ciao mondo!"
-----------------------------------------------------------------------
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("Ciao mondo!\n");
return 0;
}
Vediamo di dare una breve descrizione (anche se non esauriente) al programma:
#include <stdio.h>
-->Questa istruzione permette di inserire (includere) all'interno del nostro programma il codice contenuto all'interno della libreria "stdio.h".
A cosa serva questo lo vedremo nelle prossime lezioni
int main(int argc, char *argv[]) {
-->Abbiamo definito la funzione principale che conterrà il nostro programma. La sintassi verrà spiegata più avanti nel corso. Per ora va detto che ogni funzione ha un nome (in questo caso main) e che il codice della funzione deve essere delimitato dalle parentesi graffe
printf("Ciao mondo!\n");
return 0;
}
-->Questo è il codice della funzione main. La parentesi graffa alla fine sta ad indicare che lì finisce la funzione. Il codice presenta solo 2 istruzioni: con printf stampiamo a video un messaggio mentre con return diciamo che vogliamo uscire dalla funzione restituendo un parametro (in questo caso 0)
---------------------------------------------------------------------------
Questo semplicissimo programma può essere scritto con qualsiasi compilatore C in quanto la sua sintassi risulta essere pienamente supportata dall'ANSI C.
Quest'ultimo è uno standard su cui si basa l'attuale linguaggio C. Questo significa che tutte le istruzioni, le strutture dati e le librerie contenute in questo standard sono correttamente interpretate da tutti i compilatori in commercio. Esistono invece librerie e strutture dati che possono venire compilate solamente con determinati compilatori. Un esempio è la libreria <conio.h> presente nel compilatore Borland che presenta funzioni riconosciute solo da quest'ultimo.
Per questa prima lezione è tutto. La prossima volta vedremo come compilare il codice presentato utilizzando vari compilatori ed inoltre spiegheremo il significato delle istruzioni esposte
Comment