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
Do corpo del ciclo viene riprodotto una sola
{ volta
<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:
…..
}
06/04/2021 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 denominare la casella.
Nella DICHIARAZIONE DI UNA VARIABILE stiamo chiedendo al nostro dispositivo elettronico di assegnare
un nome simbolico ad 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 interpretato quell’insieme di bit presenti in quella locazione di memoria.
TIPO DI DATO
Il tipo di dato esprime
La rappresentazione in memoria del dato;
Andrea De Dominicis andreadedominicis@studenti.unisalento.it
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 var 1
Nome
Tipo di della
dato variabile
Left Hand Value: rappresenta la locazione di memoria associate 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
int a;
int b;
a=19;
b= a/2;
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.
Float a;
float 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
Andrea De Dominicis andreadedominicis@studenti.unisalento.it
tipo di dato più espressivo. Quindi in questo caso, il 2 viene promosso a float e la divisone viene fatta tra
due float producendo un risultato esatto con valore decimale.
NOTE SUI NUMERI REALI
Sappiamo che la rappresentazione dei numeri reali è una rappresentazione approssimata, ciò comporta in:
Il fatto di avere numeri reali approssimati ci fa perdere alcune proprietà dei numeri reali ovvero:
Si perde la PROPRIETA’ 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