caratteri, matrici e puntatori - salvemini.altervista.org · i caratteri caratteri, matrici e...
TRANSCRIPT
Caratteri, Matrici e Puntatori
Corso di Laurea in Ingegneria Civile
Politecnico di Bari – Sede di Foggia
Fondamenti di Informatica Anno Accademico 2011/2012
docente:
Prof. Ing. Michele Salvemini
Sommario I Caratteri
Gli apici La Dualità dei Char Dal Minuscolo al Maiuscolo Esercizio: Quadrati di Lettere
Le matrici Lavorare con le matrici Matrici a più dimensioni Definizioni ed utilizzo
I Puntatori Operatore indirizzo-di Variabili puntatore Operatore di Accesso Indiretto Esempi
Caratteri, Matrici e Puntatori 19.04.2012 2/16
I Caratteri
Caratteristiche del codice ASCII Le lettere maiuscole sono tutte consecutive, ed in ordine
alfabetico
Le lettere minuscole sono tutte consecutive, ed in ordine alfabetico
Le lettere maiuscole vengono “prima” delle minuscole
Le cifre numeriche sono tutte consecutive, in ordine dallo 0 al 9
I simboli di punteggiatura sono sparsi
Caratteri, Matrici e Puntatori 19.04.2012 3/16
I Caratteri
19.04.2012 Caratteri, Matrici e Puntatori
I caratteri in C si memorizzano in variabili di tipo char ponendo il simbolo corrispondente tra singoli apici
char lettera ; lettera = 'Q' ;
Non confondere i 3 tipi di apici: Apice rovesciato ` (accento grave)
Non utilizzato in C
Apice doppio “ (virgolette) In C, delimita stringhe di caratteri
Apice singolo ‘ (apostrofo) In C, delimita singoli caratteri Per poterli inserire(visualizzare) come caratteri esistono apposite
sequenze di escape '\' ' Immette un apice singolo ‘ '\" ‘ Immette un apice doppio “
4/16
I Caratteri
19.04.2012 Caratteri, Matrici e Puntatori
La Dualità dei Char i char non sono altro che degli int di dimensione ridotta Ogni operazione possibile su un int, è anche possibile su un char
Ovviamente solo alcune di tali operazioni avranno senso nell’interpretazione testuale (ASCII) del valore numerico
Esempi int i ;
char c ;
c = 'A' ;
c = 65 ; /* equivalente! */
i = c ; /* i sarà 65 */
c = c + 1 ; /* c sarà 66 = 'B' */
if (c == 'Z') ...
for( c='A'; c<='Z'; c++) ...
5/16
I Caratteri
19.04.2012 Caratteri, Matrici e Puntatori
I codici ASCII delle lettere maiuscole e delle minuscole differiscono solamente per una costante: 'A' = 65 ... 'Z' = 90; 'a' = 97 ... 'z' = 122
Se ch è una variabile di tipo char che contiene una lettera minuscola La formula (ch - 'a' +1) restituisce la sua posizione nell’alfabeto La formula (ch + (- 'a‘ + 'A‘)) restituisce la corrispondente lettera
maiuscola conversione Maiuscolo/Minuscolo = traslazione del valore ( -'a'+'A' )
Esempio if( ch>='a' && ch<='z' ) {
printf("%c lettera minuscola\n", ch) ;
ch2 = ch + ('A'-'a') ;
printf(La maiuscola e': %c\n", ch2) ;
}
6/16
I Caratteri
19.04.2012 Caratteri, Matrici e Puntatori
Esercizio Si scriva un programma in linguaggio C che visualizzi a
video una serie di quadrati, composti dalle successive lettere dell’alfabeto (MAIUSCOLE), di dimensioni sempre crescenti:
Un quadrato 1x1 di lettere A
Un quadrato 2x2 di lettere B
Un quadrato 3x3 di lettere C
...etc
7/16
Le Matrici
19.04.2012 Caratteri, Matrici e Puntatori
La matrice e un’estensione logica del concetto di vettore
Vettore Sequenza uni-dimensionale di valori tutti dello stesso tipo
Identificati da un indice intero
Dimensione fissa
Matrice = Schiera bi- (o n-) dimensionale di valori Tutti dello stesso tipo
Identificati da 2 (o n) indici interi
Dimensioni fisse
8/16
Le Matrici
19.04.2012 Caratteri, Matrici e Puntatori
9/16
Le Matrici
19.04.2012 Caratteri, Matrici e Puntatori
Ogni operazione su una matrice deve essere svolta lavorando singolarmente su ciascuno degli elementi
Ciò solitamente significa dover ricorrere a due cicli annidati
Esempio
for(i=0; i<N; i++) /* righe */
{
for(j=0; j<M; j++) /* colonne */
{
somma = somma + matrice[i][j] ;
}
}
10/16
Le Matrici
19.04.2012 Caratteri, Matrici e Puntatori
Il concetto di matrice può essere generalizzato anche a piu di 2 dimensioni
Non vi sono, a priori, limiti sul numero di dimensioni
11/16
Le Matrici
19.04.2012 Caratteri, Matrici e Puntatori
Definizione di matrici in C int mat[10][5] ; int pitagora[10][10] ;
Accesso ai valori di una matrice Ciascun elemento di una matrice e una variabile del tipo base si usa l’operatore di indicizzazione [ ] Vi sono tanti indici quante sono le dimensioni della matrice Ogni indice e racchiuso da una coppia di parentesi quadre Esempio
Pitagora[2][3]=12;
Attenzione In una matrice NxM...., il valore dell’indice deve essere compreso
tra 0 e N-1/M-1/.... responsabilità del programmatore Una variabile di tipo matrice può essere utilizzata solamente
mediante l’operatore di indicizzazione
12/16
I Puntatori
19.04.2012 Caratteri, Matrici e Puntatori
Operatore & (indirizzo-di)
restituisce l’indirizzo di memoria della variabile a cui viene applicato
&a è l’indirizzo 1012
&b è l’indirizzo 1020
Osservazioni
L’indirizzo di una variabile viene deciso dal compilatore
L’operatore & si può applicare solo a variabili singole, non ad espressioni
Non ha senso &(a+b)
Non ha senso &(3)
Conoscere l’indirizzo di una variabile permette di
leggerne o modificarne il valore senza conoscerne il nome
13/16
I Puntatori
19.04.2012 Caratteri, Matrici e Puntatori
Per memorizzare gli indirizzi di memoria, occorre definire opportune variabili di tipo “indirizzo di...” Un puntatore si definisce con il simbolo *
int *p ; /* puntatore ad un valore intero */
float *q ; /* puntatore ad un valore reale */
14/16
I Puntatori
19.04.2012 Caratteri, Matrici e Puntatori
Operatore * (accesso indiretto)
Permette di accedere, in lettura o scrittura, al valore di una variabile di cui si conosce l’indirizzo
Esempio
*p equivale ad a
*q equivale a b
*p = 0 ;
if( *q > 0 ) …
15/16
I Puntatori
19.04.2012 Caratteri, Matrici e Puntatori
Riepilogo
16/16