Costrutti del linguaggio "C"
Assegnamento
= A sinistra si indica la variabile di destinazione che viene interpretata come locazione di memoria nella quale inserire il risultato dell'assegnamento. Le variabili che compaiono a destra assumono il valore presente nella rispettiva locazione di memoria.
Confronto
< <= >= ==
Aritmetica
+, -, *, /, %
Aritmetica booleana
- &&: AND
- ||: OR
- !: NOT
Costrutto For
for (statement iniziale; test di uscita; statement iterativo) { <corpo del ciclo> }
Costrutto while
Se il test d'uscita è già falso la prima volta, il corpo del ciclo non viene mai eseguito.
While(test di uscita) { <corpo del ciclo> }
Costrutto Do while
Se il test d'uscita è già falso la prima volta, il corpo del ciclo viene riprodotto una sola volta.
Do { <corpo del ciclo> } while(test di uscita)
Costrutto If-Then-Else
If(test) { <ramo then; il test è VERO> } Else if(test) { <ramo else, il test è FALSO> } Else { }
Andrea De Dominicis andreadedominicis@studenti.unisalento.it
Costrutto switch – case
Switch(operando su cui eseguire l'equivalenza) { case val1: <corpo primo caso> break; case val2: <corpo secondo caso> break; default: ... }
Le variabili
Ogni variabile è un identificativo che rappresenta sia la locazione di memoria sia il valore in essa contenuto. Quando la variabile compare a sinistra di un assegnamento, il nome simbolico rappresenta la locazione di memoria (LEFT HAND VALUE) dove memorizzare il valore assunto dall'espressione a destra dell'assegnamento. Quando la variabile compare in una espressione, il nome simbolico rappresenta il contenuto della locazione di memoria (RIGHT HAND VALUE). Ad ogni variabile è associato anche un tipo di dato che descrive e indica come viene rappresentato il valore assunto dalla variabile e l'insieme di operazioni che si possono compiere sul dato. In C tutte le variabili prima di essere usate, devono essere dichiarate ovvero denominate la casella.
Dichiarazione di una variabile
Nella dichiarazione di una variabile stiamo chiedendo al nostro dispositivo elettronico di assegnare un nome simbolico a una locazione di memoria quindi dopo la dichiarazione, possiamo riferirci a una determinata locazione di memoria utilizzando il nome della variabile, questo è il primo obiettivo della dichiarazione di una variabile. Il secondo obiettivo della dichiarazione è quello di andare a specificare il tipo di dato e come devono essere interpretati quell'insieme di bit presenti in quella locazione di memoria.
Tipo di dato
Il tipo di dato esprime:
- La rappresentazione in memoria del dato;
- Un insieme di operazioni che si possono compiere su quel dato.
Il tipo di dato permette anche di effettuare dei controlli di correttezza del programma in fase di compilazione. Il tipo di dato identifica la codifica usata per quei bit.
Tipi di dati primitivi in C
I tipi di dati primitivi sono i tipi di dati predefiniti in C e sono:
- Caratteri - char
- Interi naturali (senza segno) - unsigned char, unsigned short int, unsigned int, unsigned long int, unsigned long long int
- Interi relativi (con segno) - signed char, short int, int, long int, long long int
- Reali - float (single precision), double (double precision), long double (quadruple precision)
- Booleano (introdotto nello standard C99) - _Bool Si comporta come un intero e può assumere solamente due valori 0=false 1=true
Ogni assegnamento diverso da 0 ad una variabile di tipo _Bool viene memorizzato con il valore 1 in memoria. Il programmatore ha la possibilità di costruire altri tipi di dati. In C è possibile conoscere la dimensione di un certo tipo di dato dim = sizeof(tipo_dato). La conversione di un dato in C può avvenire anche in modo esplicito attraverso il casting che si effettua con la seguente sintassi:
int a; float b; b = a / 2; b = (float)a / 2;
Andrea De Dominicis andreadedominicis@studenti.unisalento.it
Dichiarazione di una variabile
Prima di poter utilizzare una variabile, questa deve essere dichiarata specificandone il tipo di dato e il nome. Per ogni variabile dichiarata verrà automaticamente riservato uno spazio di memoria sufficiente a contenere il dato descritto dal suo tipo.
Per la dichiarazione di una variabile si utilizza la seguente sintassi: <tipo di dato> <nome variabile>
int var1; // Nome tipo di dato variabile
- Left Hand Value: rappresenta la locazione di memoria associata alla variabile che compare a sinistra del simbolo uguale;
- Right Hand Value: indica il valore assunto dall'espressione che compare a destra del simbolo uguale.
In generale, l'espressioni in cui una variabile può comparire, non è detto che siano sempre a destra dell'uguale, per esempio in una istruzione di if/then/else, tutte le variabili all'interno della condizione hanno tutte valore RIGHT VALUE.
Divisioni tra numeri in codifiche diverse
Se ho due variabili di tipo intero e vado a fare un'operazione di divisione tra due interi, la divisione che viene eseguita è una divisione di tipo intera quindi che prevede solo il quoziente ignorando il resto e quindi troncando il resto.
int a; int b; a = 19; b = a / 2;
Nel caso in cui avessimo una divisione tra un numero di tipo float e un numero di tipo int, prima di poter effettuare l'operazione, il compilatore promuove automaticamente il tipo di dato meno espressivo verso il tipo di dato più espressivo. Quindi in questo caso, il 2 viene promosso a float e la divisione viene fatta tra due float producendo un risultato esatto con valore decimale.
float a; float b; a = 19; b = a / 2;
Andrea De Dominicis andreadedominicis@studenti.unisalento.it
Note sui numeri reali
Sappiamo che la rappresentazione dei numeri reali è una rappresentazione approssimata, ciò comporta in:
- Perdita della proprietà associativa, ovvero (b+a)-a può essere diverso da b-(a-a), questo perché se b è molto minore rispetto ad a allora il risultato di b+a mi produce comunque un risultato uguale ad a, questo è dovuto all'approssimazione. Questo è un effetto da tenere in considerazione quando si opera con le variabili reali. Tendenzialmente è conveniente sommare prima tutte le variabili che hanno l'ordine di grandezza più piccolo e poi sommarlo ai valori più grandi;
- Confronto di uguaglianza, l'approssimazione nella rappresentazione dei numeri reali ci porta ad avere un problema quando si va a eseguire il confronto tra due numeri reali, è possibile che il nostro valore reale non arrivi mai ad essere uguale ad un altro valore reale perché i due numeri non hanno approssimazioni differenti. Per ovviare a questi problemi, invece di porre un'uguaglianza tra due numeri reali si trasforma questa uguaglianza in un intervallo, se il valore è compreso tra + e -, possiamo dire che i due valori sono uguali.
Andrea De Dominicis andreadedominicis@studenti.unisalento.it
Costruttore Array
Il costruttore ARRAY ci permette di costruire un tipo di dato che rappresenta un insieme di elementi omogenei. ARRAY è un costruttore di tipo, una volta che abbiamo costruito un tipo di dato, possiamo utilizzare quel tipo per dichiarare delle variabili. Dal punto di vista della sintassi l'ARRAY è definito dall'uso delle due parentesi quadre nella dichiarazione <tipo> <nome variabile> [<dimensione>].
int vet;
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Appunti di "Informatica A"
-
Informatica - Appunti
-
Appunti Informatica - 1/2
-
Appunti Informatica - 2/2