Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e...

59
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – [email protected] Ver. aggiornata al 6 Aprile 2016

Transcript of Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e...

Page 1: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array e “stringhe”

Marco D. Santambrogio – [email protected]

Page 2: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Logistica Laboratori

2

Page 3: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Logistica Laboratori

3@DrepssedDarth

Page 4: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Logistica Laboratori

•  Lunedì (3.30pm – 6pm)§  EG7 (No portatili e basta)§  L26.1.3 (portatili)

4

Page 5: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Logistica Laboratori

•  Lunedì (3.30pm – 6pm)§  EG7 (No portatili e basta)§  L26.1.3 (portatili)

•  Giovedì (2pm – 4pm)§  EG7 (20 dei 31 gruppi del progetto)

5

Page 6: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

6

BESTIARIO

Page 7: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Bestiario…

•  Assegnamento di un valore ad una variabile

7

Page 8: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Bestiario…

•  Assegnamento di un valore ad una variabile§  x = 5; (int x)§  dato = ‘x’; (char dato)§  d = y/3.14; (float d, y or float d; int y)

8

Page 9: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Bestiario…

•  Assegnamento di un valore ad una variabile§  x = 5; (int x)§  dato = ‘x’; (char dato)§  d = y/3.14; (float d, y or float d; int y)

•  Confronto/test

9

Page 10: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Bestiario…

•  Assegnamento di un valore ad una variabile§  x = 5; (int x)§  dato = ‘x’; (char dato)§  d = y/3.14; (float d, y or float d; int y)

•  Confronto/test§  x == 5 (e.g., if (x == 5))§  dato == ‘x’; (e.g., if (dato == ‘x’))

10

Page 11: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Bestiario…

•  L’uso del punto e virgola!

11

Page 12: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Bestiario…

•  L’uso del punto e virgola!

if (x == 5);printf (“\n Vero”);

else printf (“\n Falso!”);

12

Page 13: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Bestiario…

13

Page 14: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Bestiario…

•  L’uso del punto e virgola!

if (x == 5)printf (“\n Vero”);

else printf (“\n Falso!”);

14

Page 15: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

•  Passaggio di dati “alla printf”

15

Page 16: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

•  Passaggio di dati “alla printf”

int dato=3;printf(“il dato vale %d”, &dato);

16

Page 17: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

•  Passaggio di dati “alla printf”

int dato=3;printf(“il dato vale %d”, &dato);

•  Dato è passato per copia!!!!

17

Page 18: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

•  Passaggio di dati “alla printf”

int dato=3;printf(“il dato vale %d”, &dato);

•  Dato è passato per copia!!!!

printf(“il dato vale %d”, dato);

18

Page 19: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

19

Problema: sequenza di interi

•  Mostrare una sequenza di 10 interi nell'ordine inverso rispetto a quello con cui è stata introdotta dall’utente

Page 20: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

La gara di nuoto: con salvataggio

•  Problema§  Si hanno10 giudici

•  1 giudice = 1 voto§  Si vogliono memorizzare i 10 voti, per

poterli rileggere §  Ogni voto è nell’itervallo 0-10§  Dato un tuffo, calcolare

•  La media dei voti•  Il voto massimo ed il voto minimo

20

Page 21: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Obiettivi

•  Gli array, questi sconosciuti•  Gli array in C•  Array particolari: le stringhe

21

Page 22: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

22

•  Gruppi di celle consecutive§  Rappresentano gruppi di variabili

•  con lo stesso nome e lo stesso tipo

•  Per riferirsi a un elemento, si specificano:§  Il nome dell’array§  La posizione dell’elemento (indice)

•  Sintassi: <nomearray>[<posizione>] §  Il primo elemento ha indice 0§  L’n° elemento dell’array v è v[n-1]

v[6]

-45

6 0

72

1543 -89

0

62 -3 1

6453

78

dichiarazione

v[0] v[1] v[2] v[3]

v[11]

v[10]

v[9]

v[8]

v[7]

v[5]

v[4]

posizione elemento

int v[12]; nome array

Gli array

Page 23: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

23

•  Gli elementi di un array sono normali variabili: vett[0] = 3; printf("%d", vett[0]); > 3 scanf("%d", &vett[1]); > 17 vett[1] assume valore 17

•  Si possono usare espressioni come indici:se x = 3

vett[5-2] è equivalente a vett[3] ed è equivalente a vett[x]

Gli array

Page 24: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

La gara di nuoto: con salvataggio

•  Problema§  Si hanno10 giudici

•  1 giudice = 1 voto§  Si vogliono memorizzare i 10 voti, per

poterli rileggere §  Ogni voto è nell’itervallo 0-10§  Dato un tuffo, calcolare

•  La media dei voti•  Il voto massimo ed il voto minimo

24

Page 25: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Come salvare i voti... La dichiarazione

25

Page 26: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Come salvare i voti... L’inserimento

•  Problema 1: devo salvare i dati nel mio array (int voto[10];)

•  Problema 2: devo definire un ciclo che mi permetta di scorrere N elementi

26

Page 27: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Come salvare i voti... L’inserimento

•  Problema 1: devo salvare i dati nel mio array (int voto[10];)

scanf(&voto[posix]);

27

*pseudo-codice

Page 28: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Come salvare i voti... L’inserimento

•  Problema 2: devo definire un ciclo che mi permetta di scorrere N elementi

for(index = 0, index < N, index++){ }

28

*pseudo-codice

Page 29: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Come salvare i voti... L’inserimento

•  Problema 1 + Problema 2

for(index = 0, index < N, index++){scanf(&voto[posix]);

}

29

Non va bene!!!

1) Scrivo sempre in voto[posix]

2) Quanto vale posix???

*pseudo-codice

Page 30: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Come salvare i voti... L’inserimento

•  Problema 1 + Problema 2

posix = 0;for(index = 0, index < N, index++){

scanf(&voto[posix]);posix++;

}

30

Come crescono index e posix?

*pseudo-codice

Page 31: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Come salvare i voti... L’inserimento

•  Problema 1 + Problema 2

for(index = 0, index < N, index++){scanf(&voto[index]);

}

31

*pseudo-codice

Page 32: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Come salvare i voti... L’inserimento

32

Page 33: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Come salvare i voti... La stampa

33

Page 34: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Mettiamo tutto insieme

34

Page 35: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Un piccolo riassunto…

•  Array: collezione di dati omogenei§ Dichiare il tipo dei suoi dati§ Dichiarare la sua dimensione

•  Come si accede ai dati di un array?§ Come a normali variabili

•  Esempio di scrittura

•  Esempio di lettura

35

Page 36: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

36

•  Sintassi compatta: int n[5] = {1, 2, 3, 4, 5};

§  Inizializzazione parziale: gli elementi più a destra sono posti a 0int n[5] = {13}; tutti gli altri elementi sono posti a 0

§  Specificare troppi elementi tra le graffe è un errore di sintassi

•  Se la lunghezza dell’array è omessa, gli inizializzatori la determinano: int n[] = {5, 47, -2, 0, 24};

è equivalente a: int n[5] = {5, 47, - 2, 0, 24};

§  In tal caso la dimensione è inferita automaticamente, e si avranno 5 elementi nell’array

Inizializzazione di un array

Page 37: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

37

•  Si opera sui singoli elementi, uno per volta•  Non è possibile operare sull’intero array,

agendo su tutti gli elementi simultaneamente

/* come ricopiare array1 in array2 */ int array1[10], array2[10]; int i; . . . array2 = array1; /* ERRATO */ . . . for( i = 0; i < 10; i++ ) {

array2[i] = array1[i]; /* CORRETTO */ }

Operazioni sugli array

Page 38: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

38

WAT

Page 39: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

39

WAT

CI TORNEREMO… I PUNTATORI

Page 40: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

40

I NON HO CAPITO MOLTO A COSA SERVANO GLI ARRAY…

Page 41: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

41

Problema: sequenza di interi

•  Mostrare una sequenza di 10 interi nell'ordine inverso rispetto a quello con cui è stata introdotta dall’utente

Page 42: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Provate senza array

42

Page 43: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Provate senza array

43

Page 44: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Provate senza array

44

Page 45: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Provate con gli array…

45

Page 46: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Provate con gli array…

46

Page 47: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Sequenza: possibile soluzione

47

Page 48: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Sequenza: possibile soluzione

48

E se ora volessi 100 numeri?

Page 49: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Sequenza: possibile soluzione

49

E se ora volessi 100 numeri?

Page 50: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

50

•  In testa al programma:#define LUNG_SEQ 100

•  Così possiamo adattare la lunghezza del vettore alle eventuali mutate esigenze senza riscrivere la costante 100 in molti i punti del programma§  Il preprocessore sostituisce nel codice LUNG_SEQ con 100

prima della compilazione

•  La lunghezza dell’array, quindi, anche in questo caso è decisa al momento della compilazione del programma

•  Nella dichiarazione degli array non si usano mai variabili per specificarne la dimensione

"Generalizziamo" con la direttiva #define

Page 51: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Sequenza con define

51

Page 52: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Sequenza con define

52

E se ora volessi 17 numeri?

Page 53: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Sequenza con define

53

E se ora volessi 17 numeri?

Page 54: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Frase… insieme di caratteri

•  Che cosa è una frase?§ Un insieme di caratteri

•  Come la rappresento?§ Un insieme, di tante variabili carattere?§ Una variabile, insieme di caratteri?

supercali fragili stiche spiralidoso

54

Page 55: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

55

•  Array di caratteri: spesso chiamati stringhe§  Quando rappresentano “caratteri da leggersi in

fila”•  Dichiarazione+inizializzazione di una stringa: char stringa[] = "word"; •  Il carattere nullo '\0' termina le stringhe•  Perciò l’array stringa ha 5 elementi (non 4):

•  Dichiarazione equivalente: char stringa[] = {'w', 'o', 'r', 'd', '\0'};

drow \0

Le stringhe

Page 56: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Problema: inserisci nome

56

Page 57: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

57

Stringhe e caratteri•  Qual è la differenza tra 'x' e "x"?

•  'x' è una costante di tipo char, rappresentata in memoria da un intero

• "x" è una stringa costante, rappresentata in memoria da un array che contiene i caratteri: 'x' e '\0'

ATTENZIONELe stringhe non sono propriamente un tipo di dato (non

sono un tipo base!)

Non hanno operatori nativi, ma una serie di funzioni nella libreria standard che permettono di manipolarle

Page 58: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

scanf: stringhe Vs char

58

Page 59: Array e “stringhe” - home.deib.polimi.it · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

•  Fonti per lo studio§  Informatica arte e mestiere, S. Ceri, D.

Mandrioli, L. Sbattella, McGrawHill•  Capitolo 5

•  Credits§  Daniele Braga - http://home.dei.polimi.it/

braga/

59