Introduzione al linguaggio C
Cos’e’ il C? Il C e’ un linguaggio ad alto livello Un compilatore C prende in input un file contenente codice sorgente C e produce un file eseguibile C e’ uno dei linguaggi imperativi piu’ diffusi
Un esempio /* Converts distances from miles to kilometers */ #include #defineKMS_PER_MILE int main(void) { double miles,/* distance in miles */ kms;/* equiv. distance in kms */ /* Get the distance in miles */ printf(“Enter the distance in miles>”); scanf (“%lf”, &miles); /* Convert the distance to kilometers */ kms = KMS_PER_MILE * miles; /* Display the distance in kilometers */ printf (“That equals %f kilometers.\n”,kms); return(0); }
Direttive al preprocessore Una direttiva al preprocessore e’ un comando per il preprocessore C. Il preprocessore viene invocato all’inizio del processo di compilazione e modifica il codice sorgente prima della compilazione vera e propria. Le direttive al preprocessore iniziano con il carattere # Nell’esempio precedente vengono usate le direttive #include e #define
#include La direttiva #include permette al programma di accedere a una libreria. Quando il preprocessore trova una #include, carica un header file; l’header file viene utilizzato dal compilatore per sapere quali funzioni vengono fornite dalla libreria. #include indica che il programma utilizza la libreria standard di input/output (che contiene ad esempio la funzione printf).
#define La direttiva #define permette di specificare una costante. Ogni volta che il preprocessore trova il nome della costante, lo rimpiazza con il testo che segue il nome Ad esempio, #define KMS_PER_MILE dice al preprocessore di sostiture KMS_PER_MILE con ogni volta che KMS_PER_MILE appare nel programma.
Direttive al preprocessore /* Converts distances from miles to kilometers */ #include #defineKMS_PER_MILE int main(void) { double miles,/* distance in miles */ kms;/* equiv. distance in kms */ /* Get the distance in miles */ printf(“Enter the distance in miles>”); scanf (“%lf”, &miles); /* Convert the distance to kilometers */ kms = KMS_PER_MILE * miles; /* Display the distance in kilometers */ printf (“That equals %f kilometers.\n”,kms); return(0); }
Commenti Un commento e’ un testo che permette ai lettori del programma di capire meglio il comportamento del programma Un testo racchiuso tra “/*” e “*/” e’ considerato un commento ed e’ ignorato dal preprocessore e dal compilatore I commenti possono apparire in ogni punto del programma ed essere estesi su piu’ righe
Commenti /* Converts distances from miles to kilometers */ #include #defineKMS_PER_MILE int main(void) { double miles,/* distance in miles */ kms;/* equiv. distance in kms */ /* Get the distance in miles */ printf(“Enter the distance in miles>”); scanf (“%lf”, &miles); /* Convert the distance to kilometers */ kms = KMS_PER_MILE * miles; /* Display the distance in kilometers */ printf (“That equals %f kilometers.\n”,kms); return(0); }
Parole riservate Le parole riservate (o parole chiave) sono parole che hanno un significato particolare in C e non possono essere usate per altri scopi Esempi di parole chiave: int, void, double e return.
Parole riservate /* Converts distances from miles to kilometers */ #include #defineKMS_PER_MILE int main(void) { double miles,/* distance in miles */ kms;/* equiv. distance in kms */ /* Get the distance in miles */ printf(“Enter the distance in miles>”); scanf (“%lf”, &miles); /* Convert the distance to kilometers */ kms = KMS_PER_MILE * miles; /* Display the distance in kilometers */ printf (“That equals %f kilometers.\n”,kms); return(0); }
Identificatori Identificano celle di memoria utilizzate per contenere dati oppure operazioni e funzioni. Gli identificatori standard hanno un significato speciale in C (ma potrebbero essere ridefiniti dal programmatore). Esempi di identificatori standard: printf e scanf. Gli identificatori definiti dall’utente identificano locazioni di memoria, operazioni e funzioni definite dal programmatore.
Identificatori standard /* Converts distances from miles to kilometers */ #include #defineKMS_PER_MILE int main(void) { double miles,/* distance in miles */ kms;/* equiv. distance in kms */ /* Get the distance in miles */ printf(“Enter the distance in miles>”); scanf (“%lf”, &miles); /* Convert the distance to kilometers */ kms = KMS_PER_MILE * miles; /* Display the distance in kilometers */ printf (“That equals %f kilometers.\n”,kms); return(0); }
Identificatori definiti dall’utente /* Converts distances from miles to kilometers */ #include #defineKMS_PER_MILE int main(void) { double miles,/* distance in miles */ kms;/* equiv. distance in kms */ /* Get the distance in miles */ printf(“Enter the distance in miles>”); scanf (“%lf”, &miles); /* Convert the distance to kilometers */ kms = KMS_PER_MILE * miles; /* Display the distance in kilometers */ printf (“That equals %f kilometers.\n”,kms); return(0); }
Identificatori validi Gli identificatori sono composti da lettere, cifre e “_” (underscore). Non possono iniziare con una cifra Le parole riservate non possono essere usate come identificatori. La lunghezza di un identificatore non e’ limitata. Il C e’ case-sensitive: le lettere maiuscole e minuscole sono diverse ( kms e Kms sono identificatori diversi).
Riassunto Quali dei seguenti sono identificatori validi? This_is_a_long_identifier_but_is_it_valid? 8timesTheRadius miles Jeff’s variable kilometers_per_hour “radius” x