Caratteri, Matrici e Puntatori - salvemini.altervista.org · I Caratteri Caratteri, Matrici e...

16
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

Transcript of Caratteri, Matrici e Puntatori - salvemini.altervista.org · I Caratteri Caratteri, Matrici e...

Page 1: Caratteri, Matrici e Puntatori - salvemini.altervista.org · I Caratteri Caratteri, Matrici e Puntatori 19.04.2012 I caratteri in C si memorizzano in variabili di tipo char ponendo

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

Page 2: Caratteri, Matrici e Puntatori - salvemini.altervista.org · I Caratteri Caratteri, Matrici e Puntatori 19.04.2012 I caratteri in C si memorizzano in variabili di tipo char ponendo

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

Page 3: Caratteri, Matrici e Puntatori - salvemini.altervista.org · I Caratteri Caratteri, Matrici e Puntatori 19.04.2012 I caratteri in C si memorizzano in variabili di tipo char ponendo

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

Page 4: Caratteri, Matrici e Puntatori - salvemini.altervista.org · I Caratteri Caratteri, Matrici e Puntatori 19.04.2012 I caratteri in C si memorizzano in variabili di tipo char ponendo

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

Page 5: Caratteri, Matrici e Puntatori - salvemini.altervista.org · I Caratteri Caratteri, Matrici e Puntatori 19.04.2012 I caratteri in C si memorizzano in variabili di tipo char ponendo

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

Page 6: Caratteri, Matrici e Puntatori - salvemini.altervista.org · I Caratteri Caratteri, Matrici e Puntatori 19.04.2012 I caratteri in C si memorizzano in variabili di tipo char ponendo

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

Page 7: Caratteri, Matrici e Puntatori - salvemini.altervista.org · I Caratteri Caratteri, Matrici e Puntatori 19.04.2012 I caratteri in C si memorizzano in variabili di tipo char ponendo

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

Page 8: Caratteri, Matrici e Puntatori - salvemini.altervista.org · I Caratteri Caratteri, Matrici e Puntatori 19.04.2012 I caratteri in C si memorizzano in variabili di tipo char ponendo

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

Page 9: Caratteri, Matrici e Puntatori - salvemini.altervista.org · I Caratteri Caratteri, Matrici e Puntatori 19.04.2012 I caratteri in C si memorizzano in variabili di tipo char ponendo

Le Matrici

19.04.2012 Caratteri, Matrici e Puntatori

9/16

Page 10: Caratteri, Matrici e Puntatori - salvemini.altervista.org · I Caratteri Caratteri, Matrici e Puntatori 19.04.2012 I caratteri in C si memorizzano in variabili di tipo char ponendo

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

Page 11: Caratteri, Matrici e Puntatori - salvemini.altervista.org · I Caratteri Caratteri, Matrici e Puntatori 19.04.2012 I caratteri in C si memorizzano in variabili di tipo char ponendo

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

Page 12: Caratteri, Matrici e Puntatori - salvemini.altervista.org · I Caratteri Caratteri, Matrici e Puntatori 19.04.2012 I caratteri in C si memorizzano in variabili di tipo char ponendo

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

Page 13: Caratteri, Matrici e Puntatori - salvemini.altervista.org · I Caratteri Caratteri, Matrici e Puntatori 19.04.2012 I caratteri in C si memorizzano in variabili di tipo char ponendo

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

Page 14: Caratteri, Matrici e Puntatori - salvemini.altervista.org · I Caratteri Caratteri, Matrici e Puntatori 19.04.2012 I caratteri in C si memorizzano in variabili di tipo char ponendo

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

Page 15: Caratteri, Matrici e Puntatori - salvemini.altervista.org · I Caratteri Caratteri, Matrici e Puntatori 19.04.2012 I caratteri in C si memorizzano in variabili di tipo char ponendo

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

Page 16: Caratteri, Matrici e Puntatori - salvemini.altervista.org · I Caratteri Caratteri, Matrici e Puntatori 19.04.2012 I caratteri in C si memorizzano in variabili di tipo char ponendo

I Puntatori

19.04.2012 Caratteri, Matrici e Puntatori

Riepilogo

16/16