DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Stringhe e tipi di dati strutturati Marco D. Santambrogio...
-
Upload
eloisa-lopez -
Category
Documents
-
view
216 -
download
0
Transcript of DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Stringhe e tipi di dati strutturati Marco D. Santambrogio...
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Stringhe e tipi di dati Stringhe e tipi di dati strutturatistrutturati
Marco D. Santambrogio – [email protected]. aggiornata al 9 Agosto 2013
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
ObiettiviObiettivi
• Array n-dimensionali: le matrici• Dichiarazione di nuovi tipi di dato• Dato strutturati
2
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
ImmaginiImmagini
3
Come si rappresenta?Creiamo una griglia(aka matrice)
Ma cosa contiene la matrice?I punti rappresentati, ad esempio, come int
100100
100
57
17 11 07
28 09 12
Osservazioni
Come rappresento i colori?Lo vedremo domani…
Come aumento la risoluzione?
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
4
• Gli array a 1D realizzano i vettori, quelli a 2D realizzano le matrici, …e così via
• Dichiarazione:int A[20][30];
A è una matrice di 20 30 elementi interi (600 variabili distinte)
float F[20][20][30];F è una matrice 3D di 202030 variabili di tipo float
(12.000!)
• Oppure a quattro dimensioni, ecc…
Array a più dimensioniArray a più dimensioni
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Excursus Matematico – Le Excursus Matematico – Le MatriciMatrici
• In matematica, una matrice è uno schieramento rettangolare di oggetti (di solito numeri), organizzati in righe (orizzontali) e colonne (verticali)
• In generale, una matrice ha m righe e n colonne, con m e n interi positivi fissati. Spesso una matrice è descritta indicando con aij il generico elemento posizionato alla riga i-esima e alla colonna j-esima
• I vettori si possono considerare matrici con una sola riga o una sola colonna (detti più precisamente vettore riga e vettore colonna)
• Se la matrice si chiama A, l'elemento ai,j può essere indicato anche come A[i,j]. La notazione A = (ai,j) indica che A è una matrice e che i suoi elementi sono denotati con ai,j
• Gli elementi con i due indici di riga e di colonna uguali, cioè gli elementi della forma aii costituiscono la diagonale principale della matrice.
5
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Excursus Matematico – Le Excursus Matematico – Le MatriciMatrici
Somma• Due matrici A e B si possono sommare se hanno le stesse
dimensioni• La loro somma A + B è definita come la matrice i cui elementi
sono ottenuti sommando i corrispettivi elementi di A e B. Formalmente:(A + B)i,j: = Ai,j + Bi,j Per esempio
Moltiplicazione per uno scalare • È un'operazione che, data una matrice A ed un numero c
(detto scalare), costruisce una nuova matrice cA, il cui elemento è ottenuto moltiplicando l'elemento corrispondente di A per c(cA)ij: = cAi,j. Esempio:
6
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Excursus Matematico – Le Excursus Matematico – Le MatriciMatrici
Prodotto riga per colonna • La moltiplicazione tra due matrici A e B è un'operazione più
complicata delle precedenti. A differenza della somma, non è definita sommando semplicemente gli elementi aventi lo stesso posto La definizione di moltiplicazione che segue è motivata dal fatto
che una matrice modellizza una applicazione lineare, e in questo modo il prodotto di matrici corrisponde alla composizione di applicazioni lineari
• La moltiplicazione è definita soltanto se il numero di righe di B coincide con il numero n di colonne di A. Il risultato è una matrice con lo stesso numero di righe di A e lo stesso numero di colonne di B
• L’elemento di posizione (i,j) è dato dalla somma
7
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Excursus Matematico – Le Excursus Matematico – Le MatriciMatrici
8
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Somma di matriciSomma di matrici
3 7 10 0
1 3 11 2
5 8 9 24
0
1
2
0 1 2 3
2 1 0 5
7 9 6 2
5 1 2 4
+
=
5 8 10 5
8 12 17 4
10 9 11 28
c[i][j] = a[i][j] + b[i][j]#include <stdio.h>#define N 3#define M 4int main() { int a[N][M], b[N][M], c[N][M];
int i, j;//leggo la prima matricefor (i=0; i<N; i++) for (j=0; j<M; j++) scanf(“%d”, &a[i][j]);
//leggo la seconda matricefor (i=0; i<N; i++) for (j=0; j<M; j++) scanf(“%d”, &b[i][j]); //calcolo e stampo la sommafor (i=0; i<N; i++){ for (j=0; j<M; j++){
c[i][j]=a[i][j]+b[i][j]; printf(“%d “, c[i][j]);
} printf(“\n”);}return 0;
}
0
1
2
0
1
2
9
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Prodotto di matriciProdotto di matrici
#define N 3#define M 4#define L 5.....for (i=0; i<N; i++){
for (j=0; j<L; j++){ c[i][j] = 0; for (k=0; k<M; k++)
c[i][j] = c[i][j]+(a[i][k]*b[k][j]); printf(“%d”, c[i][j]);
} printf(“\n”);
}
3 7 10 0
1 3 11 2
5 8 9 24
0
1
2
0 1 2 3
3
*
0
1
2
c[1][2] =∑(a[1][k]*b[k][2]), con k = 0, ..., 3
2 1 0 4 3
7 9 6 1 2
5 1 2 5 0
11 0 3 8 7
0 1 2 3 4
18+22+6
0
1
2
0 1 2 3 4
10
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Pausa 15’Pausa 15’
11
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Come rappresento un Come rappresento un pixel?pixel?
12
Il pixel è Il coloreCome ottengo il verde?Con il formato RGBR: 91G: 191B: 33
PIXEL = {R, G, B}
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
? ??
miastruttura ?
Tipi di dati strutturatiTipi di dati strutturati
struct miastruttura{
char campo1;float campo2;int campo3[2];
};
13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Definire un nuovo tipoDefinire un nuovo tipo
Sinonimi:
typedef int Intero;Intero a;int b;
typedef char Stringa[10];Stringa c;char d[10];
Tipi enumerativi:
typedef enum {lun,mar,mer,gio,ven,sab,dom} Settimana;Settimana giorno;giorno = lun;giorno = 3; /* 3 equivale a gio */
Non funziona con scanf() e printf().
14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
? ??
ilMioRecord
?
Definire un nuovo tipoDefinire un nuovo tipo
Tipi strutturati:
typedef struct{
char campo1;float campo2;int campo3[2];
} Record;
Record ilMioRecord;
ilMioRecord.campo1 = 'A';ilMioRecord.campo2 = 24.56;ilMioRecord.campo3[0] = 23;ilMioRecord.campo3[1] = 45;
24.56 23A
ilMioRecord
45
campo1 campo2 campo3
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Numeri complessi: Numeri complessi: problemaproblema• L’utente inserisce due numeri
complessi (parte reale e parte immaginaria) e l’elaboratore esegue l’operazione di somma Es: 3+4i + 5-6i = 8-2i
• Il programma chiede all’utente se
vuole calcolare un’altra somma. Se l’utente inserisce il carattere ‘q’ il programma termina, altrimenti ricomincia daccapo.
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Numeri complessiNumeri complessi
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Numeri complessi: noteNumeri complessi: note
"%f" stampa un numero float con il segno “-” se è negativo, senza segno se è positivo"%+f" stampa un numero float con il segno “-” se è negativo, con il segno “+” se è positivo"i" non fa parte degli specificatori di formato
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Schedine: problemaSchedine: problema
• Il programma, partendo da un array di dimensione prefissata che contiene in ogni cella: data della giocata colonna con i tredici segni
• Copia in un altro vettore solo le giocate dell’anno 2012
• Quindi, visualizza queste giocate.
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Schedine: datiSchedine: dati
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Schedine: inserimento datiSchedine: inserimento dati
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Schedine: copia valoriSchedine: copia valori
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Schedine: stampa dei Schedine: stampa dei risultatirisultati
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Squadra di calcio: Squadra di calcio: problemaproblema• Il programma, partendo da un array che
contiene i dati personali dei calciatori di una squadra, permette di calcolare: totale goal fatti dalla squadra goal fatti dagli attaccanti goal fatti dai centrocampisti goal fatti dai difensori totale goal subiti dalla squadra
• Il programma inoltre visualizza i dati personali di tutti i giocatori
• Per ogni giocatore, il programma memorizza: numero di maglia ruolo goal fatti (subiti, se è un portiere).
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
25
Problemi di fine giornata…Problemi di fine giornata…
• Si scriva un programma che visualizzi gli istogrammi verticalmente:
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 19 3 15 7 11 9 13 5 17 1 0 1 2 3 4 5 6 7 8 9
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Fonti per lo studio + CreditsCredits• Fonti per lo studio
Informatica arte e mestiere, S. Ceri, D. Mandrioli, L. Sbattella, McGrawHill
• Credits Vito Perrone, Daniele Braga
26