DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Recap sul C Marco D. Santambrogio – Ver. aggiornata al 11 Aprile 2013.

Slides:



Advertisements
Presentazioni simili
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 1: Marzo 2013 Marco D. Santambrogio – Gianluca Durelli -
Advertisements

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array, matrici Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2013.
Process synchronization
/ fax
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
1 la competenza alfabetica della popolazione italiana CEDE distribuzione percentuale per livelli.
Algebra di Boole ed elementi di logica
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 20 Marzo 2013.
Process synchronization
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 4 Aprile 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 8 Marzo 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Stringhe e tipi di dati strutturati Marco D. Santambrogio – Ver. aggiornata al.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Stringhe e Puntatori Marco D. Santambrogio – Ver. aggiornata al 18 Marzo 2013.
Algebra di Boole ed elementi di logica
Process synchronization
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 6: 16 Maggio 2013 Gianluca Durelli – Marco D. Santambrogio –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2: 04 Aprile 2013 Marco D. Santambrogio – Gianluca Durelli –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Stringhe e tipi di dati strutturati Marco D. Santambrogio – Ver. aggiornata al.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2: 25 Marzo 2013 Marco D. Santambrogio – Gianluca Durelli -
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 3: 8 Aprile 2013 Marco D. Santambrogio – Gianluca Durelli -
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 3: 11 Aprile 2013 Marco D. Santambrogio – Gianluca Durelli -
Process synchronization
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE ExtraLab 6: I corsi del SIT Marco D. Santambrogio – 13 Maggio 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 6: 13 Maggio 2013 Gianluca Durelli – Marco D. Santambrogio –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE ExtraLab 3: Partiamo con il SIT! Marco D. Santambrogio – 15 Aprile 2013.
Process synchronization
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE ExtraLab 4: Partiamo con il SIT! Marco D. Santambrogio – 19 Aprile 2013.
Process synchronization
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Exe 19 Aprile 2013 Marco D. Santambrogio – Ver. aggiornata al 18 Aprile 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ulitma lezione… fine corso IEIM 2013 Marco D. Santambrogio – Ver. aggiornata al.
Strutture di controllo in C -- Flow Chart --
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 3 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
Sistemi e Tecnologie Informatiche
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
Roberto Ariani Presidente Comm. Supporto e sviluppo informatico I Siti in cui dobbiamo navigare per crescere SINS - Seminario Istruzione Nuovi Soci - Arezzo,
1 Questionario di soddisfazione ATA - a. sc. 2008/09 Il questionario è stato somministrato nel mese di aprile Sono stati restituiti 29 questionari.
1 Questionario di soddisfazione Studenti - a. sc. 2008/09 Il questionario è stato somministrato dal mese di aprile al mese di maggio Sono stati restituiti.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e stringhe Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Come affrontare un problema… Marco D. Santambrogio – Ver. aggiornata al 18 Ottobre.
Settimana: 10 – 14 marzo Orariolunedimartedi Mercoledi 12 Giovedi 13 Venerdi Lezione Dal c al c Lezione Dal c al c
Ad opera di: Matteo Donatelli e Maurizio Di Paolo Presentazione su : Elettropneumatica 1.
1Piero Scotto - C14. Finalità del corso Programma Materiale Requisiti Spendibilità 2Piero Scotto - C14.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Esercitazione 1 Marco D. Santambrogio – Ver. aggiornata al 9 Aprile 2014.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 1: Marzo 2014 Marco D. Santambrogio – Gianluca Durelli -
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 13 Marzo 2014.
lun mar mer gio ven SAB DOM FEBBRAIO.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Come affrontare un problema… Marco D. Santambrogio – Ver. aggiornata al 21 Agosto.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 20 Ottobre 2014.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 3: 31 Marzo 2014 Marco D. Santambrogio – Gianluca Durelli –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 7: 16 Giugno 2014 Marco D. Santambrogio – Gianluca Durelli –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 3: 3 Aprile 2014 Marco D. Santambrogio – Gianluca Durelli –
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5: 24 Aprile 2014 Marco D. Santambrogio – Gianluca Durelli –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 4: 10 Aprile 2014 Marco D. Santambrogio – Gianluca Durelli –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 11 Ottobre 2014.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 4: 7 Aprile 2014 Marco D. Santambrogio – Gianluca Durelli –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 L Aprile 2015 Marco D. Santambrogio – Gianluca Durelli -
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Recap su: array e puntatori Marco D. Santambrogio – Ver. aggiornata al 20 Aprile.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5: 14 Aprile 2014 Marco D. Santambrogio – Gianluca Durelli –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – Matteo Ferroni –
Recap su: array e puntatori
Transcript della presentazione:

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Recap sul C Marco D. Santambrogio – Ver. aggiornata al 11 Aprile 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEFeedback NUOVO, per le exe: Per i lab: Per le lezioni: 2

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEWAT 8 Maggio, sospesione lezione! No homework!! 3 WATWAT

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEWAT Da feedback l'esercitatore era troppo veloce.... ahahah 4 WAT

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEObiettivi Un ripasso generale sul C In particolare Array multi-dimensionali Dati strutturati e passaggio a funzioni 5

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEProblema Si scriva in C un programma che, recuperato un cubo di caratteri, dice quante a vi sono contenute. La dimensione del cubo è: 2x3x4 6

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONESotto-problemi Si scriva in C un programma che, recuperato un cubo di caratteri, dice quante a vi sono contenute. La dimensione del cubo è: 2x3x4 Sotto-problemi P0: cubo di caratteri P1: Popolare il cubo di caratteri P2: Contare le a 7

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Cubo di caratteri La dimensione del cubo è: 2x3x4 8 char data[dx][dy][dz]; #define dx 3 #define dy 2 #define dz 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array in memoria 9 char data[dx]; array di dx char (dx:3) data[0] data[1] data[2]

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Matrice (array di array) in memoria 10 char data[dx][dy]; char data[dx]; array di dx char (dx:3) array di dx array (dx:3) array di dy char (dy:2) [0] [1] [0] [1] [0] [1] [2] data[0][0] data[0][1] data[1][0] data[1][1] data[2][0] data[2][1]

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Un array 3D 11 char data[dx][dy][dz] char data[dx][dy]; char data[dx];array di dx char array di dx array di dy char array di dx array (dx:3) array di dy array (dy:2) array di dz char (dz:4)

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 12 char data[dx][dy][dz] data[0][0][0] In memoria, macchina a 32bit, e.g. x86 dx:3, dy:2, dz:4 data[0][0][1] data[0][0][2] data[0][0][3] data[0][1][0] data[0][1][1] data[0][1][2] data[0][1][3] data[1][0][0] data[1][0][1] data[1][0][2] data[1][0][3] data[1][1][0] data[1][1][1] data[1][1][2] data[1][1][3] data[2][0][0] [0] [1]

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Torniamo al problema Si scriva in C un programma che, recuperato un cubo di caratteri, dice quante a vi sono contenute. La dimensione del cubo è: 2x3x4 Sotto-problemi P0: cubo di caratteri P1: Popolare il cubo di caratteri P2: Contare le a 13

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE P1: popolare il cubo di char Serve una funzione che Recuperato il cubo Permette linserimento dei caratteri 14 void popola(char *p, int x, int y, int z);

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE P2: contare le a Serve una funzione che Recuperato il cubo Scorre gli elementi per cercare le a 15 int foo2(char p[][dy][dz], char x); Attenzione a char x

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEProblema Si scriva in C un programma che, recuperati i cognomi di 5 studenti, li ordina alfabeticamente 16

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONESotto-problemi Si scriva in C un programma che, recuperati i cognomi di 5 studenti, li ordina alfabeticamente Sotto-problemi P0: rappresentare i cognomi P1: recuperare i cognomi P2: ordinare i cognomi alfabeticamente 17

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE P0: rappresentare i cognomi Vi sono diversi modi… Noi, per esercitarci, creiamo una struttura e definiamo un nuovo tipo di dato 18

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEdati Dopo aver definito studente Dobbiamo creare 5 studenti 19 studente studenti[5];

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE P1: recuperare i cognomi 20 Studenti è un array… si passa per indirizzo studente è strutturato come accedo ai campi attraverso un puntatore? Con una freccia void ins_alunno(studente *p, int dimensione); p->cognome;

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE P1: recuperare i cognomi 21

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE P2: ordinare i cognomi Come faccio ad ordinare i cognomi? Vi è differenza nellordinare studente rispetto ad ordinare int? Ma quindi il problema è… Come ordino N interi??? 22

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ordiniamo N interi Problema Dati: 4, 3, 1, 2 Voglio ottenere: 1, 2, 3, 4 Iniziamo ad ipotizzare una soluzione Confronto gli elementi a due a due e se non sono nellordine corretto, inverto i valori 23

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ordino 4, 3, 1, 2 Confronto gli elementi a due a due e se non sono nellordine corretto, inverto i valori Dati: 4, 3, 1, 2 4 > 3? Si, inverto: 3, 4, 1, 2 4 > 1? Si, inverto: 3, 1, 4, 2 4 > 2? Si, inverto: 3, 1, 2, 4 24

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Da 4, 3, 1, 2 a 3, 1, 2, 4… Problema 3, 1, 2, 4 è ordinato? Basta confrontare a due a due gli elementi? 25 NO!!! Devo confrontare a due a due TUTTI (quasi vero) gli elementi

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Facciamolo su tutti Dato vet[4]={4, 3, 1, 2} for(j=0;j<dimensione-1;j++) è vero che vet[j]>vet[j+1]? ci porta da 4, 3, 1, 2 a 3, 1, 2, 4 Ma questo vogliamo farlo su tutti gli elementi for(i=0;i<dimensione;i++) for(j=0;j<dimensione-1;j++) 26

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE E quindi… i=0 Dato vet[4]={4, 3, 1, 2} for(i=0;i<dimensione;i++) for(j=0;j<dimensione-1;j++) è vero che vet[j]>vet[j+1]? i=0, vario j ci porta da 4, 3, 1, 2 a 3, 1, 2, 4 j=0: 4 > 3? Si, inverto: 3, 4, 1, 2 j=1: 4 > 1? Si, inverto: 3, 1, 4, 2 j=2: 4 > 2? Si, inverto: 3, 1, 2, 4 27

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE E quindi… i=1 Dato vet[4]={4, 3, 1, 2} for(i=0;i<dimensione;i++) for(j=0;j<dimensione-1;j++) è vero che vet[j]>vet[j+1]? i=0, vario j ci porta da 4, 3, 1, 2 a 3, 1, 2, 4 i=1, vario j ci porta da 3, 1, 2, 4 a 1, 2, 3, 4 j=0: 3 > 1? Si, inverto: 1, 3, 2, 4 j=1: 3 > 2? Si, inverto: 1, 2, 3, 4 j=2: 3 > 4? No, non faccio nulla: 1, 2, 3, 4 28

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE E quindi… i=2 Dato vet[4]={4, 3, 1, 2} for(i=0;i<dimensione;i++) for(j=0;j<dimensione-1;j++) è vero che vet[j]>vet[j+1]? i=0, vario j ci porta da 4, 3, 1, 2 a 3, 1, 2, 4 i=1, vario j ci porta da 3, 1, 2, 4 a 1, 2, 3, 4 i=2, vario j ci porta da 1, 2, 3, 4 a 1, 2, 3, 4 j=0: 1 > 2? No, non faccio nulla: 1, 2, 3, 4 j=1: 2 > 3? No, non faccio nulla: 1, 2, 3, 4 j=2: 3 > 4? No, non faccio nulla: 1, 2, 3, 4 29

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE E quindi… i=3 Dato vet[4]={4, 3, 1, 2} for(i=0;i<dimensione;i++) for(j=0;j<dimensione-1;j++) è vero che vet[j]>vet[j+1]? i=0, vario j ci porta da 4, 3, 1, 2 a 3, 1, 2, 4 i=1, vario j ci porta da 3, 1, 2, 4 a 1, 2, 3, 4 i=2, vario j ci porta da 1, 2, 3, 4 a 1, 2, 3, 4 i=3, vario j ci porta da 1, 2, 3, 4 a 1, 2, 3, 4 j=0: 1 > 2? No, non faccio nulla: 1, 2, 3, 4 j=1: 2 > 3? No, non faccio nulla: 1, 2, 3, 4 j=2: 3 > 4? No, non faccio nulla: 1, 2, 3, 4 30

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ordinamento, qualche osservazione Si può migliorare? for(i=0;i<dimensione;i++) for(j=0;j<dimensione-1;j++) è vero che vet[j]>vet[j+1]? Nel for innestato Mi serve davvero arrivare a dimensione-1? Nel for esterno, mi serve veramente arrivare a dimensione? 31

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE P2: ordinare i cognomi Come faccio ad ordinare i cognomi? 32

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Fonti per lo studio + Credits Fonti per lo studio Tutte le slide precedenti del corso di IEIM 2012/