• Non ci sono risultati.

IEIM 2019-2020

N/A
N/A
Protected

Academic year: 2021

Condividi "IEIM 2019-2020"

Copied!
68
0
0

Testo completo

(1)

IEIM 2019-2020

Esercitazione IX

“Ripasso Generale”

Alessandro A. Nacci

(2)

Immagini

Mercato

Tris 1

Tris 2

Ricorsione

2

(3)

Es 0 - Immagini BN

Si scriva un programma che sappia gestire una immagine con una risoluzione di 65536 pixels

L’immagine è in scala di grigi: deve saper gestire 256 differenti tonalità di grigio.

Il programma deve avere una funziona che crea una immagine completamente bianca

Il programma deve avere una funziona che crea una immagine completamente nera

(4)

Es 0 - Immagini BN

4

Si scriva un programma che sappia gestire una immagine con una risoluzione di 65536 pixels

L’immagine è in scala di grigi: deve saper gestire 256 differenti tonalità di grigio.

Il programma deve avere una funziona che crea una immagine completamente bianca

Il programma deve avere una funziona che crea una immagine completamente nera

(5)

Es 0 - Immagini BN

(6)

Es 0 - Immagini Colori

6

Si scriva un programma che sappia gestire una immagine con una risoluzione di 65536 pixels

L’immagine è a colori: deve saper gestire 256 differenti tonalità per ogni colore nello spazio RGB (Red, Green, Blue)

Il programma deve avere una funzione che crea una immagine completamente bianca

Il programma deve avere una funzione che crea una immagine completamente nera

(7)

Es 0 - Immagini Colori

(8)

Es 0 - Immagini Colori

8

https://www.google.com/search?q=color+picker&oq=color+picker

(9)

Es 1 - Mercato

Si scriva un programma per la gestione del carrello di un supermercato.

Si definisca una struttura dati per rappresentare un prodotto acquistabile;

tale struttura deve contenere:

Codice prodotto

Nome

Prezzo

Si definisca una struttura dati per rappresentare il carrello:

Lista di prodotti

Numero di prodotti acquistati

Totale da pagare

Viene chiesto all'utente di inserire i prodotti che devono essere acquistati.

Tali prodotti vengono inseriti nel carrello e le informazioni del carrello

vengono aggiornate. Alla fine si procede alla stampa dello scontrino e del totale da pagare.

Vincolo:

(10)

Es 1 - Mercato - Strutture Dati

10

#include <stdio.h>

#define MAX_PRODOTTI 10

#define MAX_NOME 50

typedef struct{

int codice;

char nome[MAX_NOME];

float prezzo;

} prodotto;

typedef struct{

prodotto prodotti[MAX_PRODOTTI];

int numeroProdotti;

float totale;

} carrello;

prodotto leggiProdotto();

void inserisciProdotto(carrello *c, prodotto p);

void calcolaTotale(carrello *c);

void stampaScontrino(carrello *c);

int main(){

carrello c;

prodotto p;

c.numeroProdotti=0;

int i;

char s;

do{

printf("Vuoi comprare un prodotto (s/n)? ");

scanf(" %c",&s);

if(s=='s' || s=='S'){

p=leggiProdotto();

inserisciProdotto(&c,p);

}

}while((s=='s' || s=='S') && c.numeroProdotti<MAX_PRODOTTI);

calcolaTotale(&c);

stampaScontrino(&c);

return 0;

}

prodotto leggiProdotto(){

prodotto p;

printf("Codice: ");

scanf("%d",&p.codice);

printf("Nome: ");

scanf("%s",p.nome);

printf("Prezzo: ");

scanf("%f",&p.prezzo);

return p;

}

void inserisciProdotto(carrello *c, prodotto p){

c->prodotti[c->numeroProdotti]=p;

c->numeroProdotti+=1;

}

void calcolaTotale(carrello *c){

int i;

c->totale=0;

for(i=0;i<c->numeroProdotti;i++)

c->totale+=c->prodotti[i].prezzo;

}

void stampaScontrino(carrello *c){

int i;

for(i=0;i<c->numeroProdotti;i++)

printf("%d\t%s\t%f\n",c->prodotti[i].codice, c->prodotti[i].nome, c->prodotti[i].prezzo);

printf("\n\tTOTALE:\t%f\n",c->totale);

}

(11)

Es 1 - Mercato - Prototipi Funzioni

11

#include <stdio.h>

#define MAX_PRODOTTI 10

#define MAX_NOME 50

typedef struct{

int codice;

char nome[MAX_NOME];

float prezzo;

} prodotto;

typedef struct{

prodotto prodotti[MAX_PRODOTTI];

int numeroProdotti;

float totale;

} carrello;

prodotto leggiProdotto();

void inserisciProdotto(carrello *c, prodotto p);

void calcolaTotale(carrello *c);

void stampaScontrino(carrello *c);

int main(){

carrello c;

prodotto p;

c.numeroProdotti=0;

int i;

char s;

do{

printf("Vuoi comprare un prodotto (s/n)? ");

scanf(" %c",&s);

if(s=='s' || s=='S'){

p=leggiProdotto();

inserisciProdotto(&c,p);

}

}while((s=='s' || s=='S') && c.numeroProdotti<MAX_PRODOTTI);

calcolaTotale(&c);

stampaScontrino(&c);

return 0;

}

prodotto leggiProdotto(){

prodotto p;

printf("Codice: ");

scanf("%d",&p.codice);

printf("Nome: ");

scanf("%s",p.nome);

printf("Prezzo: ");

scanf("%f",&p.prezzo);

return p;

}

void inserisciProdotto(carrello *c, prodotto p){

c->prodotti[c->numeroProdotti]=p;

c->numeroProdotti+=1;

}

void calcolaTotale(carrello *c){

int i;

c->totale=0;

for(i=0;i<c->numeroProdotti;i++)

c->totale+=c->prodotti[i].prezzo;

}

void stampaScontrino(carrello *c){

int i;

#include <stdio.h>

#define MAX_PRODOTTI 10

#define MAX_NOME 50

typedef struct{

int codice;

char nome[MAX_NOME];

float prezzo;

} prodotto;

typedef struct{

prodotto prodotti[MAX_PRODOTTI];

int numeroProdotti;

float totale;

} carrello;

prodotto leggiProdotto();

void inserisciProdotto(carrello *c, prodotto p);

void calcolaTotale(carrello *c);

void stampaScontrino(carrello *c);

int main(){

carrello c;

prodotto p;

c.numeroProdotti=0;

int i;

char s;

do{

printf("Vuoi comprare un prodotto (s/n)? ");

scanf(" %c",&s);

if(s=='s' || s=='S'){

p=leggiProdotto();

inserisciProdotto(&c,p);

}

}while((s=='s' || s=='S') && c.numeroProdotti<MAX_PRODOTTI);

calcolaTotale(&c);

stampaScontrino(&c);

return 0;

}

prodotto leggiProdotto(){

prodotto p;

printf("Codice: ");

scanf("%d",&p.codice);

printf("Nome: ");

scanf("%s",p.nome);

printf("Prezzo: ");

scanf("%f",&p.prezzo);

return p;

}

void inserisciProdotto(carrello *c, prodotto p){

c->prodotti[c->numeroProdotti]=p;

c->numeroProdotti+=1;

}

void calcolaTotale(carrello *c){

int i;

c->totale=0;

for(i=0;i<c->numeroProdotti;i++)

c->totale+=c->prodotti[i].prezzo;

}

void stampaScontrino(carrello *c){

int i;

for(i=0;i<c->numeroProdotti;i++)

printf("%d\t%s\t%f\n",c->prodotti[i].codice, c->prodotti[i].nome, c->prodotti[i].prezzo);

printf("\n\tTOTALE:\t%f\n",c->totale);

(12)

Es 1 - Mercato - Funzioni

12

#include <stdio.h>

#define MAX_PRODOTTI 10

#define MAX_NOME 50

typedef struct{

int codice;

char nome[MAX_NOME];

float prezzo;

} prodotto;

typedef struct{

prodotto prodotti[MAX_PRODOTTI];

int numeroProdotti;

float totale;

} carrello;

prodotto leggiProdotto();

void inserisciProdotto(carrello *c, prodotto p);

void calcolaTotale(carrello *c);

void stampaScontrino(carrello *c);

int main(){

carrello c;

prodotto p;

c.numeroProdotti=0;

int i;

char s;

do{

printf("Vuoi comprare un prodotto (s/n)? ");

scanf(" %c",&s);

if(s=='s' || s=='S'){

p=leggiProdotto();

inserisciProdotto(&c,p);

}

}while((s=='s' || s=='S') && c.numeroProdotti<MAX_PRODOTTI);

calcolaTotale(&c);

stampaScontrino(&c);

return 0;

}

prodotto leggiProdotto(){

prodotto p;

printf("Codice: ");

scanf("%d",&p.codice);

printf("Nome: ");

scanf("%s",p.nome);

printf("Prezzo: ");

scanf("%f",&p.prezzo);

return p;

}

void inserisciProdotto(carrello *c, prodotto p){

c->prodotti[c->numeroProdotti]=p;

c->numeroProdotti+=1;

}

void calcolaTotale(carrello *c){

int i;

c->totale=0;

for(i=0;i<c->numeroProdotti;i++)

c->totale+=c->prodotti[i].prezzo;

}

void stampaScontrino(carrello *c){

int i;

for(i=0;i<c->numeroProdotti;i++)

printf("%d\t%s\t%f\n",c->prodotti[i].codice, c->prodotti[i].nome, c->prodotti[i].prezzo);

printf("\n\tTOTALE:\t%f\n",c->totale);

}

(13)

Es 1 - Mercato - Funzioni

13

#include <stdio.h>

#define MAX_PRODOTTI 10

#define MAX_NOME 50

typedef struct{

int codice;

char nome[MAX_NOME];

float prezzo;

} prodotto;

typedef struct{

prodotto prodotti[MAX_PRODOTTI];

int numeroProdotti;

float totale;

} carrello;

prodotto leggiProdotto();

void inserisciProdotto(carrello *c, prodotto p);

void calcolaTotale(carrello *c);

void stampaScontrino(carrello *c);

int main(){

carrello c;

prodotto p;

c.numeroProdotti=0;

int i;

char s;

do{

printf("Vuoi comprare un prodotto (s/n)? ");

scanf(" %c",&s);

if(s=='s' || s=='S'){

p=leggiProdotto();

inserisciProdotto(&c,p);

}

}while((s=='s' || s=='S') && c.numeroProdotti<MAX_PRODOTTI);

calcolaTotale(&c);

stampaScontrino(&c);

return 0;

}

prodotto leggiProdotto(){

prodotto p;

printf("Codice: ");

scanf("%d",&p.codice);

printf("Nome: ");

scanf("%s",p.nome);

printf("Prezzo: ");

scanf("%f",&p.prezzo);

return p;

}

void inserisciProdotto(carrello *c, prodotto p){

c->prodotti[c->numeroProdotti]=p;

c->numeroProdotti+=1;

}

void calcolaTotale(carrello *c){

int i;

c->totale=0;

for(i=0;i<c->numeroProdotti;i++)

c->totale+=c->prodotti[i].prezzo;

}

void stampaScontrino(carrello *c){

int i;

(14)

Es 1 - Mercato - Funzioni

14

#include <stdio.h>

#define MAX_PRODOTTI 10

#define MAX_NOME 50

typedef struct{

int codice;

char nome[MAX_NOME];

float prezzo;

} prodotto;

typedef struct{

prodotto prodotti[MAX_PRODOTTI];

int numeroProdotti;

float totale;

} carrello;

prodotto leggiProdotto();

void inserisciProdotto(carrello *c, prodotto p);

void calcolaTotale(carrello *c);

void stampaScontrino(carrello *c);

int main(){

carrello c;

prodotto p;

c.numeroProdotti=0;

int i;

char s;

do{

printf("Vuoi comprare un prodotto (s/n)? ");

scanf(" %c",&s);

if(s=='s' || s=='S'){

p=leggiProdotto();

inserisciProdotto(&c,p);

}

}while((s=='s' || s=='S') && c.numeroProdotti<MAX_PRODOTTI);

calcolaTotale(&c);

stampaScontrino(&c);

return 0;

}

prodotto leggiProdotto(){

prodotto p;

printf("Codice: ");

scanf("%d",&p.codice);

printf("Nome: ");

scanf("%s",p.nome);

printf("Prezzo: ");

scanf("%f",&p.prezzo);

return p;

}

void inserisciProdotto(carrello *c, prodotto p){

c->prodotti[c->numeroProdotti]=p;

c->numeroProdotti+=1;

}

void calcolaTotale(carrello *c){

int i;

c->totale=0;

for(i=0;i<c->numeroProdotti;i++)

c->totale+=c->prodotti[i].prezzo;

}

void stampaScontrino(carrello *c){

int i;

for(i=0;i<c->numeroProdotti;i++)

printf("%d\t%s\t%f\n",c->prodotti[i].codice, c->prodotti[i].nome, c->prodotti[i].prezzo);

printf("\n\tTOTALE:\t%f\n",c->totale);

}

(15)

Es 1 - Mercato - Funzioni

#include <stdio.h>

#define MAX_PRODOTTI 10

#define MAX_NOME 50

typedef struct{

int codice;

char nome[MAX_NOME];

float prezzo;

} prodotto;

typedef struct{

prodotto prodotti[MAX_PRODOTTI];

int numeroProdotti;

float totale;

} carrello;

prodotto leggiProdotto();

void inserisciProdotto(carrello *c, prodotto p);

void calcolaTotale(carrello *c);

void stampaScontrino(carrello *c);

int main(){

carrello c;

prodotto p;

c.numeroProdotti=0;

int i;

char s;

do{

printf("Vuoi comprare un prodotto (s/n)? ");

scanf(" %c",&s);

if(s=='s' || s=='S'){

p=leggiProdotto();

inserisciProdotto(&c,p);

}

}while((s=='s' || s=='S') && c.numeroProdotti<MAX_PRODOTTI);

calcolaTotale(&c);

stampaScontrino(&c);

return 0;

}

prodotto leggiProdotto(){

prodotto p;

printf("Codice: ");

scanf("%d",&p.codice);

printf("Nome: ");

scanf("%s",p.nome);

printf("Prezzo: ");

scanf("%f",&p.prezzo);

return p;

}

void inserisciProdotto(carrello *c, prodotto p){

c->prodotti[c->numeroProdotti]=p;

c->numeroProdotti+=1;

}

void calcolaTotale(carrello *c){

int i;

c->totale=0;

for(i=0;i<c->numeroProdotti;i++)

c->totale+=c->prodotti[i].prezzo;

}

void stampaScontrino(carrello *c){

int i;

for(i=0;i<c->numeroProdotti;i++)

printf("%d\t%s\t%f\n",c->prodotti[i].codice, c->prodotti[i].nome, c->prodotti[i].prezzo);

printf("\n\tTOTALE:\t%f\n",c->totale);

}

(16)

Es 1 - Mercato - Main

16

#include <stdio.h>

#define MAX_PRODOTTI 10

#define MAX_NOME 50

typedef struct{

int codice;

char nome[MAX_NOME];

float prezzo;

} prodotto;

typedef struct{

prodotto prodotti[MAX_PRODOTTI];

int numeroProdotti;

float totale;

} carrello;

prodotto leggiProdotto();

void inserisciProdotto(carrello *c, prodotto p);

void calcolaTotale(carrello *c);

void stampaScontrino(carrello *c);

int main(){

carrello c;

prodotto p;

c.numeroProdotti=0;

int i;

char s;

do{

printf("Vuoi comprare un prodotto (s/n)? ");

scanf(" %c",&s);

if(s=='s' || s=='S'){

p=leggiProdotto();

inserisciProdotto(&c,p);

}

}while((s=='s' || s=='S') && c.numeroProdotti<MAX_PRODOTTI);

calcolaTotale(&c);

stampaScontrino(&c);

return 0;

}

prodotto leggiProdotto(){

prodotto p;

printf("Codice: ");

scanf("%d",&p.codice);

printf("Nome: ");

scanf("%s",p.nome);

printf("Prezzo: ");

scanf("%f",&p.prezzo);

return p;

}

void inserisciProdotto(carrello *c, prodotto p){

c->prodotti[c->numeroProdotti]=p;

c->numeroProdotti+=1;

}

void calcolaTotale(carrello *c){

int i;

c->totale=0;

for(i=0;i<c->numeroProdotti;i++)

c->totale+=c->prodotti[i].prezzo;

}

void stampaScontrino(carrello *c){

int i;

for(i=0;i<c->numeroProdotti;i++)

printf("%d\t%s\t%f\n",c->prodotti[i].codice, c->prodotti[i].nome, c->prodotti[i].prezzo);

printf("\n\tTOTALE:\t%f\n",c->totale);

}

(17)

L’impiccato

Esercizio 3

(18)

Il gioco dell’impiccato

Scrivere un programma che permetta di giocare al gioco dell’impiccato

18

(19)

Vediamo cosa ci serve...

L’idea è quella di avere

un dizionario di parole da indovinare

un numero massimo di tentativi

lo stato delle parola (quali lettere sono state indovinate?)

(20)

Dichiarazione ed inizializzazione variabili

20

(21)

Dichiarazione ed inizializzazione variabili

come la implemento?

(22)

Scegli parola

21

(23)

Ragioniamo sulle funzioni necessarie...

Ora ci servono ancora alcune funzionalità:

Controllare se una data lettera è corretta o meno

Sostituire le lettere indovinate al posto dei trattini ‘_’

Stampare a schermo lo stato attuale della parola

(24)

Controllo e sostituzione lettera

Ora ci servono ancora alcune funzionalità:

Controllare se una data lettera è corretta o meno

Sostituire le lettere indovinate al posto dei trattini ‘_’

Stampare a schermo lo stato attuale della parola

Controllare se il giocatore ha vinto

23

(25)

Controllo e sostituzione lettera

Ora ci servono ancora alcune funzionalità:

Controllare se una data lettera è corretta o meno

Sostituire le lettere indovinate al posto dei trattini ‘_’

Stampare a schermo lo stato attuale della parola

(26)

Controllo vincita & stampa a schermo

24

(27)

Controllo vincita & stampa a schermo

(28)

Controllo vincita & stampa a schermo

24

(29)

Gestione del gioco

(30)

Gestione del gioco

25

(31)

L’albero genealogico

Esercizio 2

(32)

L’albero genealogico

Scrivere un programma C che sia in grado di rappresentare e gestire un albero genealogico

27

In particolare, vogliamo poter fare:

- Creare una persona

- Rappresentare di una popolazione

- Aggiungere figli ad una persona

- Elencare i figli e i nipoti dato un antenato

(33)

Una famosa struttura dati: l’albero

P0

P1 P2 P3

P4 P5

(34)

Una famosa struttura dati: l’albero

28

P0

P1 P2 P3

P4 P5

ogni cerchio si chiama “nodo”

(35)

Una famosa struttura dati: l’albero

P0

P1 P2 P3

P4 P5

ogni cerchio si chiama “nodo”

PADRE

FIGLIO

(36)

Una famosa struttura dati: l’albero

28

P0

P1 P2 P3

P4 P5

ogni cerchio si chiama “nodo”

PADRE

FIGLIO

PADRE

FIGLI

(37)

Una famosa struttura dati: l’albero

P0

P1 P2 P3

P4 P5

ogni cerchio si chiama “nodo”

PADRE

FIGLIO

PADRE

FIGLI

PADRE

FIGLIO

(38)

Una famosa struttura dati: l’albero

28

P0

P1 P2 P3

P4 P5

ogni cerchio si chiama “nodo”

PADRE

FIGLIO

PADRE

FIGLI

PADRE

FIGLIO PADRE

FIGLIO

(39)

Una famosa struttura dati: l’albero

P0

P1 P2 P3

P4 P5

ogni cerchio si chiama “nodo”

PADRE

FIGLIO

PADRE

FIGLI

PADRE

FIGLIO PADRE

FIGLIO

PADRE

FIGLIO

(40)

Una famosa struttura dati: l’albero

28

P0

P1 P2 P3

P4 P5

RADICE

FOGLIA FOGLIA

FOGLIA FOGLIA

ogni cerchio si chiama “nodo”

PADRE

FIGLIO

PADRE

FIGLI

PADRE

FIGLIO PADRE

FIGLIO

PADRE

FIGLIO

(41)

Una famosa struttura dati: l’albero

P0

P1 P2 P3

P4 P5

RADICE

FOGLIA FOGLIA

ogni cerchio si chiama “nodo”

PADRE

FIGLIO

PADRE

FIGLI

PADRE

FIGLIO PADRE

FIGLIO

PADRE

FIGLIO

(42)

Una famosa struttura dati: l’albero

28

P0

P1 P2 P3

P4 P5

Può essere utile per rappresentare un albero genealogico?

RADICE

FOGLIA FOGLIA

FOGLIA FOGLIA

ogni cerchio si chiama “nodo”

PADRE

FIGLIO

PADRE

FIGLI

PADRE

FIGLIO PADRE

FIGLIO

PADRE

FIGLIO

OVVIAMENTE SI

(43)

OGNI NODO DELL’ALBERO SARA’ PER NOI UNA PERSONA

== P

(44)

Una Persona

SESSO

NOME

ETA?

CHI SONO I GENITORI?

CHI SONO I FIGLI?

QUANTI FIGLI?

30

(45)

Una Popolazione

Una popolazione è rappresentata da un insieme di persone

Ogni persona ha un suo indice (numero univoco di identificazione)

Esiste un numero di persone della

1 2 3 4 5 6 7

(46)

Una Persona nella popolazione

SESSO

NOME

ETA?

CHI SONO I GENITORI?

CHI SONO I FIGLI?

QUANTI FIGLI?

cardinalità 32

1 2 3 4 5 6 7

Li rappresentiamo con l’indice della persona nella popolazione

(47)

\

(48)

\

33

(49)

\

(50)

Creazione di una persona

34

(51)

Creazione di una persona

(52)

Aggiunta persona alla popolazione

35

(53)

Aggiunta persona alla popolazione

(54)

Aggiunta di un figlio

36

(55)

Aggiunta di un figlio

(56)

Funzioni di stampa a schermo

\

37

(57)

Funzioni di stampa a schermo

\

(58)

Funzioni di stampa a schermo

\

37

(59)

Elenco dei figli e dei nipoti

(60)

Elenco dei figli e dei nipoti

38

(61)

La nostra popolazione

MARCO STEFANIA LUCA PIPPO LUCIA ARIANNA RINALDO STEFANO

P0 P1 P2 P3 P4 P5 P6 P7

(62)

La nostra popolazione

39

MARCO STEFANIA LUCA PIPPO LUCIA ARIANNA RINALDO STEFANO

P0 P1 P2 P3 P4 P5 P6 P7

Marco e' padre di LUCA e di PIPPO Stefania e' madre di LUCA e di PIPPO Arianna e' figlia di Marco e Lucia

Stefano e' figlio di Arianna e Rinaldo

(63)

La nostra popolazione

MARCO STEFANIA LUCA PIPPO LUCIA ARIANNA RINALDO STEFANO

P0 P1 P2 P3 P4 P5 P6 P7

P4 P0 P1

P5 P2 P3

Marco e' padre di LUCA e di PIPPO Stefania e' madre di LUCA e di PIPPO Arianna e' figlia di Marco e Lucia

Stefano e' figlio di Arianna e Rinaldo

(64)

La nostra popolazione (codice C)

40

(65)

Aggiungiamo le parentele

P4 P0 P1

P5 P2 P3

(66)

Aggiungiamo le parentele

41

P4 P0 P1

P5 P2 P3

P7 P6

(67)

Il main()

(68)

43

Tutte il materiale sarà disponibile sul mio sito internet!

alessandronacci.it

Riferimenti

Documenti correlati

D’ARBOREA” – CAGLIARI Liceo Linguistico – Liceo Scienze Umane – Liceo Economico Sociale.. PROGRAMMA DI LATINO

7.a Entro il 2030, rafforzare la cooperazione internazionale per facilitare l’accesso alla tecnologia e alla ricerca di energia pulita, comprese le energie rinnovabili,

Le classi 4^A e 4^B primaria Monticelli, dopo l’incontro con il gruppo alpini, hanno ricostruito la storia delle penne nere anche grazie ad alcune canzoni che canteranno in

permesso di studiare.. permesso

Pippo, il nostro amico riccio, si cibava di un mucchio di cose: oltre alle chiocciole amava la frutta matura, i lombrichi, le uova, insetti di ogni tipo e persino la carne!.

Fattispecie: accertamento per indebito utilizzo in compensazione in data 16 agosto del credito IVA 2° trimestre, a seguito della presentazione mod.. IVA TR il 1° agosto per scadenza

La concentrazione media di PM10 evidenzia un brusco calo a fine febbraio (un importante rimescolamento delle masse d’aria) e si mantiene per buona parte del mese di marzo con valori

E Grasselli, A Voci, L Vergani, R Fabbri, A Smerilli, K Cortese, G Gallo, L Canesi 15th Italian Association of Developmental and Comparative Immunobiology Meeting February 12th-