La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Array n-dimensionali e tipi di dati strutturati

Presentazioni simili


Presentazione sul tema: "Array n-dimensionali e tipi di dati strutturati"— Transcript della presentazione:

1 Array n-dimensionali e tipi di dati strutturati
Process synchronization Operating System Array n-dimensionali e tipi di dati strutturati Marco D. Santambrogio – Ver. aggiornata al 4 Novembre 2016 © 2005 William Fornaciari

2 Immagini 17 11 07 Come si rappresenta? 28 09 12 Creiamo una griglia
(aka matrice) 100 Ma cosa contiene la matrice? I punti rappresentati, ad esempio, come int 100 100 Osservazioni Come aumento la risoluzione? Come rappresento i colori? Lo vedremo dopo la pausa… 57

3 Obiettivi Array n-dimensionali: le matrici
Dichiarazione di nuovi tipi di dato Dato strutturati

4 Array a più dimensioni 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 202030 variabili di tipo float (12.000!) Oppure a quattro dimensioni, ecc…

5 Excursus Matematico – Le Matrici
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)

6 Le Matrici: gli elementi
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.

7 Le Matrici: somma (A + B)i,j: = Ai,j + Bi,j
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

8 Somma di matrici c[i][j] = a[i][j] + b[i][j] #include <stdio.h>
#define N 3 #define M 4 int main() { int a[N][M], b[N][M], c[N][M]; int i, j; //leggo la prima matrice for (i=0; i<N; i++) for (j=0; j<M; j++) scanf(“%d”, &a[i][j]); //leggo la seconda matrice scanf(“%d”, &b[i][j]); //calcolo e stampo la somma for (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; c[i][j] = a[i][j] + b[i][j] 1 2 3 3 7 10 1 11 2 5 8 9 24 1 2 + 2 1 5 7 9 6 4 1 2 = 5 8 10 12 17 4 9 11 28 1 2 8

9 Le Matrici: 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.

10 Le Matrici: moltiplicazione tra matrici
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

11 Le Matrici: moltiplicazione - esempio

12 Prodotto di matrici 1 2 3 4 #define N 3 #define M 4 #define L 5 .....
1 2 3 4 1 2 3 2 1 4 3 7 9 6 5 11 8 3 7 10 1 11 2 5 8 9 24 c[1][2] =∑(a[1][k]*b[k][2]), con k = 0, ..., 3 1 1 * 2 2 3 1 2 3 4 #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”); 1 2 12

13 Come rappresento un pixel?
Il pixel è Il colore Come ottengo il verde? Con il formato RGB R: 91 G: 191 B: 33 PIXEL = {R, G, B}

14 Tipi di dati strutturati: pixel
struct pixel{ char G; char R; char B; };

15 Tipi di dati strutturati
struct miastruttura { char campo1; float campo2; int campo3[2]; }; ? miastruttura campo1 campo2 campo3

16 Definire 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().

17 Definire un nuovo tipo Tipi strutturati: typedef struct { char campo1; float campo2; int campo3[2]; } Record; Record ilMioRecord; 24.56 23 A ilMioRecord 45 ? ilMioRecord campo1 campo2 campo3 ilMioRecord.campo1 = 'A'; ilMioRecord.campo2 = 24.56; ilMioRecord.campo3[0] = 23; ilMioRecord.campo3[1] = 45;

18 Numeri complessi: problema
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.

19 Numeri complessi

20 Numeri complessi

21 Numeri complessi

22 Numeri complessi

23 Numeri complessi

24 Numeri 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

25 Schedine: 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 2010 Quindi, visualizza queste giocate.

26 Schedine: dati

27 Schedine: inserimento dati

28 Schedine: copia valori

29 Schedine: stampa dei risultati

30 Problemi di fine giornata…
Si scriva un programma che visualizzi gli istogrammi verticalmente: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

31 Fonti per lo studio + Credits
Informatica arte e mestiere, S. Ceri, D. Mandrioli, L. Sbattella, McGrawHill Credits Vito Perrone, Daniele Braga


Scaricare ppt "Array n-dimensionali e tipi di dati strutturati"

Presentazioni simili


Annunci Google