DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Stringhe e tipi di dati strutturati Marco D. Santambrogio – Ver. aggiornata al.

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
Introduzione ad Array e Funzioni 2IC/2ID – a. s.2012/13.
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 Recap sul C Marco D. Santambrogio – Ver. aggiornata al 11 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 –
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 Lab 2: 25 Marzo 2013 Marco D. Santambrogio – Gianluca Durelli -
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5: 29 Aprile 2013 Gianluca Durelli – Marco D. Santambrogio –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 3: 8 Aprile 2013 Marco D. Santambrogio – Gianluca Durelli -
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Corso di informatica e elementi di informatica medica Informazioni di Servizio 6 Marzo, 2013 Politecnico di.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Corso di informatica e elementi di informatica medica Informazioni di Servizio 9 Marzo, 2012 Politecnico di.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 3: 11 Aprile 2013 Marco D. Santambrogio – Gianluca Durelli -
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 Tipi di dati strutturati Marco D. Santambrogio – Ver. aggiornata al 4 Marzo 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 6 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 3: 24 Ottobre 2011 Sadegh Astaneh – Marco D. Santambrogio –
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 Ulitma lezione… fine corso IEIM 2013 Marco D. Santambrogio – Ver. aggiornata al.
Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.
TIPI DI DATO Un tipo di dato T è definito come: un dominio di valori, D un insieme di funzioni F 1,..,F n sul dominio D un insieme di predicati P 1,..,P.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 3 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 6 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Input/output 1 Marco D. Santambrogio – Ver. aggiornata al 2 Dicembre 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 7: 13 Giugno 2013 Gianluca Durelli – Marco D. Santambrogio –
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 Lab 8 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Come affrontare un problema… Marco D. Santambrogio – Ver. aggiornata al 18 Ottobre.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5: 29 Aprile 2013 Gianluca Durelli – Marco D. Santambrogio –
Pippo.
Ricerca sequenziale in un array di interi
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Esercitazione 1 Marco D. Santambrogio – Ver. aggiornata al 9 Aprile 2014.
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni – BCOR Ingegneria Elettronica – BELR Introduzione al C Esercitazione 5 D. Bloisi, A.
Corso di informatica e elementi di informatica medica
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 1: Marzo 2014 Marco D. Santambrogio – Gianluca Durelli -
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 6 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 3: 3 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 Puntatori Marco D. Santambrogio – Ver. aggiornata al 11 Marzo 2014.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 8 Aprile 2015.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 3 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 3 L Aprile 2015 Marco D. Santambrogio – Gianluca Durelli -
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 4 L Maggio 2015 Marco D. Santambrogio – Gianluca Durelli -
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – Matteo Ferroni –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 4 – Info B Marco D. Santambrogio – Matteo Ferroni –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 4 – Info B Marco D. Santambrogio – Matteo Ferroni –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – Matteo Ferroni –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array n-dimensionali e tipi di dati strutturati Marco D. Santambrogio – Ver. aggiornata.
Transcript della presentazione:

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Stringhe e tipi di dati strutturati Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Info sui Labs Ricordate di portare un adattatore! Gli esercizi, tolto il primo lab, saranno diversi tra il Lunedì ed il Giovedì Dove: EG 7 Quando Lunedì: – Giovedì: –

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEImmagini 3 Come si rappresenta? Creiamo una griglia (aka matrice) Ma cosa contiene la matrice? I punti rappresentati, ad esempio, come int Osservazioni Come rappresento i colori? Lo vedremo dopo… STRUCT 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 elementi interi (600 variabili distinte) float F[20][20][30]; F è una matrice 3D di variabili di tipo float (12.000!) Oppure a quattro dimensioni, ecc… Array a più dimensioni

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Prodotto di matrici #define N 3 #define M 4 #define L 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); } * c[1][2] = ( a[1][k]*b[k][2]), con k = 0,...,

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEObiettivi Array particolari: le stringhe Dichiarazione di nuovi tipi di dato Dato strutturati 6

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 7 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ò larray stringa ha 5 elementi (non 4): Dichiarazione equivalente: char stringa[] {'w', 'o', 'r', 'd', '\0'}; drow \0 Le stringhe

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Problema: inserisci nome 8

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 9 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' ATTENZIONE Le 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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 10 char str1[32]; / str1 ha spazio per 32 char. / char str2[64]; / str2 ha spazio per 64 char. / / inizializza str1 con la stringa "alfa" / strcpy(str1, "alfa"); / str1 contiene "alfa" / / copia str1 in str2 / strcpy(str2, str1); / str2 contiene "alfa" / / lunghezza di str1 / x = strlen(str1); / x assume valore 4 / / scrivi str1 su standard output / printf("%s", str1); / scrive str1 su stdout / / leggi str1 da standard input / scanf("%s", str1); / str1 riceve da stdin / Operazioni su stringhe

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 11 char str1[32]; char str2[64]; scanf("%s", str1); > ciao / ora str1 contiene "ciao" / strcpy(str2, str1);/ str2 riceve "ciao" / val = strlen(str2); / val = 4 / printf("%s\n", str2); > ciao/ stampa "ciao" / Attenzione: strlen("") vale 0 ! Operazioni su stringhe

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Problema: copia stringhe 12

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 13 Il nome dellarray rappresenta lindirizzo del suo primo elemento, perciò quando ci si vuole riferire allintero array nella scanf non si mette il simbolo &! scanf("%s", stringa); Questa scanf legge in input i caratteri fino a quando trova il carattere blank (lo spazio), o linvio Perciò se nel buffer si trova una stringa troppo lunga, essa è memorizzata oltre la fine dell array !!! Ed è un errore grave !!! Particolarità delle stringhe

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Problema: non esiste strcpy! 14

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 15 E se non ci fosse la funzione strcpy() ? Assegneremmo sempre un carattere alla volta! char s1[N], s2[M]; /* assegnamento di s2, omesso */ int i = 0; while( i <= strlen(s2) && i < N ) { s1[i] = s2[i]; ++i; } N.B. funziona correttamente se s2 è una stringa ben formata (cioè terminata da '\0') e se s1 è sufficientemente grande da contenere i caratteri di s2 (N >= strlen(s2)) strcpy(s1, s2)

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 16 Una funzione apposita: strcmp(s1,s2) restituisce un intero confronta le due stringhe fino al \0 char str1[32], str2[64]; int diverse; /*... acquisizione di valori per le stringhe... (codice omesso)*/ diverse = strcmp(str1, str2); if( diverse == 0 ) printf("UGUALI\n"); else if( diverse < 0 ) printf("%s PRECEDE %s\n", str1, str2); else printf("%s SEGUE %s\n", str1, str2); Confrontare due stringhe

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Pausa 15 17

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Come rappresento un pixel? 18 Il pixel è Il colore Come ottengo il verde? Con il formato RGB R: 91 G: 191 B: 33 PIXEL = {R, G, B}

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE ??? miastruttura ? Tipi di dati strutturati struct miastruttura { char campo1; float campo2; int campo3[2]; }; campo1 campo2 campo3 19

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 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(). 20

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE ??? ilMioRecord ? Definire 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; A ilMioRecord 45 campo1 campo2 campo3 21

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Numeri complessi: problema Lutente inserisce due numeri complessi (parte reale e parte immaginaria) e lelaboratore esegue loperazione di somma Es: 3+4i + 5-6i = 8-2i Il programma chiede allutente se vuole calcolare unaltra somma. Se lutente inserisce il carattere q il programma termina, altrimenti ricomincia daccapo. 22

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Numeri complessi 23

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 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 24

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 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 dellanno 2012 Quindi, visualizza queste giocate. 25

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Schedine: dati 26

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Schedine: inserimento dati 27

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Schedine: copia valori 28

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Schedine: stampa dei risultati 29

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Squadra di calcio: problema 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). 30

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 (No: 5.5.3, e 5.6) Credits Vito Perrone, Daniele Braga 31