Linguaggio
C
Tipi
di Dati
descrizione
tipo
bit occupati
valori ammissibili
carattere
char
8
da 0 a 255
intero
int
16
da –32.768 a 32.767
reale
float
32
da 3,4E-38 a 3,4E+38
indefinito
void
indefinito
printf
permette
di scrivere sullo schermo
printf(“stringa
di controllo”, lista argomenti);
Stringa
di controllo:
·
stringa di caratteri da scrivere a
video
·
direttive di conversione che
descrivono il modo in cui gli argomenti devono essere
visualizzati.
Possono
avere varianti che specificano l’ampiezza dei campi, il numero di cifre
decimali…
%c
singolo carattere
%d
decimale intero
%i
decimale intero
%e
notazione scientifica
%f
decimale in virgola mobile
%s
stringa di caratteri
%u
decimale intero senza segno
scanf
Permette
di leggere dati dalla tastiera
GLI
OPERATORI
ARITMETICI
*
+ -
/ %
In
sequenza moltiplicazione addizione sottrazione divisione resto della divisione
LOGICI
&&
|| !
AND
OR NOT
INCREMENTO
A=
A+1;
o
A=
A-1;
possiamo
abbreviarlo mediante gli operatori
++
--
incremento
decremento
A++
restituisce
A e poi lo incrementa
++A
incrementa
A e lo restituisce incrementato
COMPARAZIONE
<
>
minore maggiore
<=
>= minore o
uguale maggiore o uguale
==
!= uguale
diverso
ASSEGNAMENTO
=
il
simbolo uguale =
viene considerato un operatore e quindi restituisce anch'esso un
valore.
Esempio:
A=B;
memorizza
in A il valore di B e restituisce B
Esempio:
A=B=0;
il valore 0 viene assegnato sia ad A che a B
A+=B;
assegna ad A il valore B sommato ad A
PUNTATORI
Riporta
l'indirizzo di una variabile.
Ad
esempio
int var_1;
int
*var_2;
var_1
= 130;
var_2
= &var_1;
assegna l'indirizzo di var_1
a var_2.
L'operatore
* dice a var_2 di puntare a quell'indirizzo in
altre
parole
di vedere il contenuto di quella locazione.
Al contrario una matrice che
occupa in memoria
lo
spazio necessario per tutti gli elementi, un
puntatore occupa
solo
lo spazio atto a contenere l'indirizzo.
Gli
indirizzi occupano sempre lo stesso spazio indipendentemente
dal
tipo.
Ad
esempio una matrice
int var[100];
occupa in memoria 100 volte lo spazio di un int
mentre
int *var_1;
occupa solo lo spazio per un indirizzo
MATRICE
INT
MATRICE [20]
Esempio:
{
I=5
MATRICE[I]=10
}
è
uguale a:
*(matrice+5)=10
Nel
caso in
cui dovessimo memorizzare una
stringa intera
o
piu'stringhe
dovremmo dichiarare la
variabile come una matrice di char.
Una
stringa e' considerata nel linguaggio C come una sequenza
di
caratteri
finalizzata da '\0' (carattere di fine stringa).
Supponiamo
di dichiarare la variabile 'nome' come
char nome[5];
e
di assegnarle la stringa "FRANCESCO".
Avremo
come risultato
FRANCESCO[10]
[ F | R | A | N | C | E | S | C | O | \0 ]
FRANCESCO
[ 1 | 2 | 3
| 4 | 5 | 6 | 7 |
8 | 9 | 10]
LA
STRUTTURA
La
struttura è un dato complesso {int,char,array,....}
STRINGA=ARRAY+"\0"
(come sopra illustrato per i puntatori);
STRCPY
copia una striga in un altra;
INCLUDE
STRING.H
CONIO.H
STDIO.H
STRUCT
{
CHAR
NOME [30];
CHAR
COGNOME [30];
CHAR
DATA [12];
INT
ALTEZZA;
}PATENTE;
PATENTE
ARGIOLAS
ARGIOLAS
ALTEZZA=180;
STRCPY(ARGIOLAS.NOME,"Francesco")
PRINTF("%S",ARGIOLAS.COGNOME);
SCANF("%S",&ARGIOLAS.COGNOME);
|