LISTE, INSIEMI, ALBERI E RICORSIONE
|
|
|
- Alberta Palla
- 10 anni fa
- Visualizzazioni
Transcript
1 LISTE, INSIEMI, ALBERI E RICORSIONE Settimo Laboratorio
2 LISTE E RICORSIONE
3 SVUOTALISTA: CONSIDERAZIONI Per svuotare una lista si devono eliminare i singoli nodi allocati con la malloc... Come fare? Per eliminare ogni nodo, dovrò potermi muoveri sulla lista... quindi se parto ad eliminare dal primo nodo, succede che...???
4 SVUOTALISTA: VERSIONE RICORSIVA SCHEMA RICORSIVO: caso base: E([]) = [] caso generale: E([a L]) = [E(L)] void svuotalistaric(lista* l){ if((*l) == NULL) return; // lista vuota svuotalistaric(&((l*)->next)); // scorro la lista free(*l); // elimino nodo (*l) = NULL; // aggiorno puntatore } Note: Notice that this function leaves the value of ptr unchanged, hence it still points to the same (now invalid) location, and not to the null pointer.
5 SVUOTALISTA: VERSIONE ITERATIVA void svuotalistait(lista* l){ if(*l == NULL) return; nodo * curr = *l; nodo * succ = (*l)->next; *l = NULL; } while(curr!= NULL){ free(*curr); *curr = *succ; *succ = (*succ)->next; }
6 ESERCIZIO: INSERIMENTO IN POSIZIONE I_ESIMA Inserire un nuovo elemento in posizione i_esima. Se la lista contiene meno di i elementi, inserire il nuovo elemento in coda. SCHEMA RICORSIVO: caso base: caso generale:
7 ESERCIZIO: INSERIMENTO IN POSIZIONE I_ESIMA Inserire un nuovo elemento in posizione i_esima. Se la lista contiene meno di i elementi, inserire il nuovo elemento in coda. lista InserisciPosizione(lista li, int pos, int i, int v); Argomenti: li: puntatore al primo nodo della lista; pos: posizione corrente nella lista; i: posizione dove aggiungere il nuovo elemento; v: valore del nuovo elemento.
8 ESERCIZIO: INSERIMENTO IN POSIZIONE I_ESIMA Inserire un nuovo elemento in posizione i_esima. Se la lista contiene meno di i elementi, inserire il nuovo elemento in coda. lista InserisciPosizione(lista li, int pos, int i, int v); SCHEMA RICORSIVO: caso base: II([], pos, i, v) = [v] caso base: II([a L], pos, i, v) = [v a L] // se i = pos caso generale: II([a L], pos, i, v) = [a II(L, pos, i + 1, v)] // se i < pos
9 ESERCIZIO: INSERIMENTO IN POSIZIONE I_ESIMA lista InserisciPosizione(lista li, int pos, int i, int v) { if(li == NULL){ lista pn = malloc(sizeof(nodo)); pn->val = v; pn->next = NULL; return pn; } if(pos == i){ return InserisciinTesta(li, v); } li->next = InserisciPosizione(li->next, pos, i + 1, v); return li; }
10 ESERCIZIO: ELIMINA NODO Scrivere un programma che elimini tutti i nodi di una lista che contengono il valore v. SCHEMA RICORSIVO: caso base: caso generale:
11 ESERCIZIO: ELIMINA NODO Scrivere un programma che elimini tutti i nodi di una lista che contengono il valore v. SCHEMA RICORSIVO: caso base: E([], v) = [] caso generale: E([a L], v) = E([L], v) [a E(L)] // se a = v // se a!= v
12 ESERCIZIO: ELIMINA NODO lista eliminanodo(lista li, int v) { if(li == NULL) return li; nodo * succ = li->next; if(li->value == v){ li->next = NULL; free(li); return eliminanodo(succ, v); } li -> next = eliminanodo(succ, v); return li; }
13 ESERCIZIO: STAMPA NODI IN POSIZIONE DISPARI Scrivere un programma che stampa solamente i valori contenuti nei nodi in posizione dispari SCHEMA RICORSIVO: caso base: caso generale:
14 ESERCIZIO: STAMPA NODI IN POSIZIONE DISPARI Scrivere un programma che stampa solamente i valori contenuti nei nodi in posizione dispari SCHEMA RICORSIVO: caso base: S([], i) = stampa[] caso generale: S([a L], i) = stampa[a] S([L]) S([L]) se i è dispari se i è pari
15 ESERCIZIO: STAMPA NODI IN POSIZIONE DISPARI void stampadispari(lista li, int i) { if(li == NULL) return; if(i % 2!= 0) printf( %d, li->value); stampadispari(li->next, i + 1); }
16 ESERCIZIO: CONTA VALORI Scrivere una funzione ricorsiva che conta il numero di elementi contenuti in una lista che hanno valore minore di un valore v int contaminore(lista li, int v); SCHEMA RICORSIVO: caso base: caso generale:
17 ESERCIZIO: CONTA VALORI Scrivere una funzione ricorsiva che conta il numero di elementi contenuti in una lista che hanno valore minore di un valore v int contaminore(lista li, int v); SCHEMA RICORSIVO: caso base: C([]) = 0 caso generale: C([a L]) = 1+C(L) 0+C(L) // se a < v // se a >= v
18 ESERCIZIO: CONTA VALORI int contavalori(lista li, int v) { if(li == NULL) return 0; if(li->value == v) return 1 + contavalori(li->next, v); return contavalori(li->next, v); }
19 ESERCIZIO: TROVA VALORE Scrivere una funzione ricorsiva che ritorna 1 se il valore v è contenuto nella lista li, 0 altrimenti. int trovavalore(lista li, int v); SCHEMA RICORSIVO: caso base: caso generale:
20 ESERCIZIO: TROVA VALORE Scrivere una funzione ricorsiva che ritorna 1 se il valore v è contenuto nella lista li, 0 altrimenti. int trovavalore(lista li, int v); SCHEMA RICORSIVO: caso base: T([], v) = 0 caso generale: T([a L]) = 1 // se a = v T([L], v) // se a!= v
21 ESERCIZIO: TROVA VALORE int trovavalore(lista li, int v) { if(li == NULL) return 0; if(li->value == v) return 1; return trovavalori(li->next, v); }
22 INSIEMI E RICORSIONE
23 INSIEME Lista con due proprietà Ordinata Senza repliche typedef Lista Insieme; Ogni operazione che viene eseguita su un oggetto di tipo insieme, deve rispettare le due proprietà.
24 FUNZIONE INSERIMENTO L inserimento di un nuovo elemento all interno di un insieme, richiede di individuare la corretta posizione di inserimento, per mantenere la proprietà di ordinamento, e dovrà controllare che l elemento non sia già presente. Si può fare sia ricorsivamente sia iterativamente Schema Ricorsivo caso base: I([], v) = [v] caso base: I([a L], v) = [v a L] caso ricorsivo: I([a L], v) = [a I(L, v)] se a > v [a L] se a = v se a < v
25 FUNZIONE INSERIMENTO Insieme InsiemeIns(Insieme li, int el) { if (!li li->val > el) return inseriscilistatesta(li,el); if (li->val==el) return li; } if (li->val<el) { Insieme pi=insiemeins(li->next, el); li->next=pi; return li; }
26 ESERCIZIO: INTERSEZIONE Scrivere la funzione che esegue l intersezione di due insiemi. Insieme InsiemeIntersezione(Insieme l1, Insieme l2); SCHEMA RICORSIVO: Caso base: Caso generale:
27 ESERCIZIO: INTERSEZIONE Scrivere la funzione che esegue l intersezione di due insiemi. Insieme InsiemeIntersezione(Insieme l1, Insieme l2); SCHEMA RICORSIVO: Caso base: I([],[]) = [] I([],[a L]) = [] I([a L],[]) = [] Caso generale: I([a L1],[b L2]) = I(L1,[b L2]) se a<b I([a L1],L2) se a>b [a I(L1,L2)] se a=b
28 ESERCIZIO: INTERSEZIONE Insieme InsiemeIntersezione(Insieme l1, Insieme l2) { if (!l1 &&!l2) return NULL; if (l1 &&!l2) return InsiemeIntersezione(l1->next,l2); if (!l1 && l2) return InsiemeIntersezione(l1,l2->next); if (l1->val==l2->val) return ListInsInTesta(InsiemeIntersezione(l1->next, l2->next), l1->val); if (l1->val<l2->val) return InsiemeIntersezione(l1->next,l2); } if (l1->val>l2->val) return InsiemeIntersezione(l1,l2->next);
29 ESERCIZIO: DIFFERENZA Scrivere la funzione che esegue la differenza tra due insiemi. Insieme InsiemeDifferenza(Insieme l1, Insieme l2); SCHEMA RICORSIVO: D([],[])=[] Caso base: D([],[a L])=[] D([a L],[])=[a D(L,[])] [a D(L1,[b L2]) se a<b Caso generale: D([a L1],[b L2]) = D([a L1],L2) se a>b D(L1,L2) se a=b
30 ESERCIZIO: DIFFERENZA Insieme InsiemeDifferenza(Insieme l1, Insieme l2) { if (!l1 &&!l2) return NULL; if (l1 &&!l2) return ListInsInTesta(InsiemeDifferenza(l1->next,l2), l1->val); if (!l1 && l2) return InsiemeDifferenza(l1,l2->next); if (l1->val==l2->val) return InsiemeDifferenza(l1->next, l2->next); if (l1->val<l2->val) return ListInsInTesta(InsiemeDifferenza(l1->next,l2), l1->val); } if (l1->val>l2->val) return InsiemeDifferenza(l1,l2->next);
31 ALBERI E RICORSIONE
32 DEFINIZIONE: ALBERO typedef struct Nodo { int val; struct Nodo* left; struct Nodo* right; } Nodo; typedef Nodo* Albero; radice Nodi Interni Livello 0 Livello 1 Livello I1 Livello 1II foglie
33 ESERCIZIO: CREO UN ALBERO VUOTO Albero CreaAlberoVuoto(){ } return NULL;
34 typedef struct Nodo { int val; struct Nodo* left; struct Nodo* right; } Nodo; MAIN typedef Nodo* Albero; Albero CreaAlberoVuoto(){ return NULL; } main(){... }
35 ESERCIZIO: ALBERO ORDINATO Creare un albero binario ordinato: ogni nodo contiene nell albero di sinistra tutti i valori minori o uguali al valore del nodo e nell albero di destra tutti i valori maggiori al valore del nodo. Esempio: dall inserendo dei valori 5, 2, 10, 8, 4, 15 si ottiene il seguente albero Al 5 [5,Al, Ar] Sotto-albero destro Ar 2 10 Sotto-albero sinistro
36 ESERCIZIO: INSERIMENTO DI UN ELEMENTO Creare una funzione per inserire un elemento all interno dell albero, mantenendo la proprietà di ordinamento dell albero. Albero Inserisci(Albero alb, int val); SCHEMA RICORSIVO: Caso base: Caso generale:
37 ESERCIZIO: INSERIMENTO DI UN ELEMENTO Creare una funzione per inserire un elemento all interno dell albero, mantenendo la proprietà di ordinamento dell albero. Albero Inserisci(Albero alb, int val); SCHEMA RICORSIVO: Caso base: I([], v) = [v] Caso generale: I(A=[val Al Ar], v) = [val I(Al, v) Ar] // se v <= val [val Al I(Ar, v)] // se v > val
38 ESERCIZIO: INSERIMENTO DI UN ELEMENTO Albero Inserisci(Albero al, int v){ if(al == NULL){ Albero pn=malloc(sizeof(nodo)); pn->val=v; pn->left=null; pn->right=null; return pn; } } if(al->val >= v){ al->left = Inserisci(al->left, v); }else{ al->right = Inserisci(al->right, v); } return al;
39 ESERCIZIO: STAMPA ALBERO Scrivere una funzione che stampa il contenuto dell albero. void Stampa(Albero alb); SCHEMA RICORSIVO: Caso base: S([]) = [] Caso generale: S(A=[val Al Ar]) = val S(Al) S(Ar)
40 ESERCIZIO: STAMPA ALBERO // stampa in ordine di inserimento void Stampa(Albero al){ } if(!al) return; printf("%d - ", al->val); Stampa(al->left); Stampa(al->right);
41 ESERCIZIO: STAMPA ALBERO // variante ordine crescente void StampaOrdinata(Albero al){ if(!al) return; StampaOrdinata(al->left); printf("%d - ", al->val); StampaOrdinata(al->right); } // variante ordine decrescente void StampaInversa(Albero al){ if(!al) return; StampaInversa(al->right); printf("%d - ", al->val); StampaInversa(al->left); }
42 ESERCIZIO: CERCA VALORE Scrivere una funzione ricorsiva che cerca il nodo contenente un valore v all interno dell albero. Albero CercaValore(Albero alb, int val); SCHEMA RICORSIVO: Caso base: Caso generale:
43 ESERCIZIO: CERCA VALORE Scrivere una funzione ricorsiva che cerca il nodo contenente un valore v all interno dell albero. Albero CercaValore(Albero alb, int val); SCHEMA RICORSIVO: Caso base: C([], v) = [] C(A=[val, Al, Ar], v) = A se v = val Caso generale: C(A=[val, Al,Ar], v) = C(Al, v) // se v < val C(Ar, v) // se v > val
44 ESERCIZIO: CERCA VALORE Albero Cerca(Albero al, int v){ if(!al) return NULL; if(v == al->val) return al; } if(v < al->val) return Cerca(al->left, v); else return Cerca(al->right, v);
45 CONTA NUMERO NODI Scrivere una funzione che ritorna il numero di nodi presenti in un albero Schema ricorsivo caso base: caso ricorsivo:
46 CONTA NUMERO NODI Scrivere una funzione che ritorna il numero di nodi presenti in un albero Schema ricorsivo caso base: C([]) = 0 caso ricorsivo: C([a Al Ar]) = 1 + C(Al) + C(Ar)
47 CONTA NUMERO NODI int contanumeronodi(albero al){ } if(!al) return 0; return 1 + contanumeronodi(al->left) + contanumeronodi(al->right);
48 ELIMINA FOGLIE Scrivere una funzione che elimini tutte le foglie dell albero passato e ritorni il numero di elementi eliminati Schema ricorsivo caso base; caso ricorsivo:
49 ELIMINA FOGLIE Scrivere una funzione che elimini tutte le foglie dell albero passato e ritorni il numero di elementi eliminati Schema ricorsivo caso base: E([]) = [], 0 caso base: E([a Al Ar]) = [], 1 // se Al = Ar = NULL caso ricorsivo = E([a Al Ar]) = [a E(Al) E(Ar)]
50 SESTA CONSEGNA
51 SESTA CONSEGNA Consegna dovrà essere eseguita entro il giorno 26 gennaio 2011 Le consegne effettuate successivamente non verranno considerate... Comando per la consegna: consegna consegna6
52 ESERCIZIO 1 Creare un file Amici che contenga per ogni riga i seguenti dati: Nome spazio Cognome spazio età spazio squadra del cuore Realizzare un programma che implementi le seguenti funzioni: leggere il file creando una lista dinamica di tipo amico (un tipo definito come sopra); data la lista di amici e un intero, crea una nuova lista di tutti gli amici che hanno quell'età e la visualizza; data la lista di amici e una squadra di calcio, elimina dalla lista tutti gli amici che tifano quella squadra di calcio e visualizza la lista.
53 ESERCIZIO 2 Si consideri il seguente problema di matematica ricreativa, dovuto al matematico russo Boris Kordemsky. Il gatto Purrer ha deciso di schiacciare un pisolino, e subito sogna di essere circondanto da 13 topolini, 12 grigi e uno bianco disposti a cerchio; nel sogno il padrone gli dice: "Purrer, devi mangiare tutti i topi ma quello bianco per ultimo". Dato che non li mangia in sequenza ma saltando ogni volta n posizioni, da quale topo deve partire, ovvero in quale posizione si deve trovare il topolino bianco partendo dal primo mangiato? Realizzare un programma in C che, fornito in ingresso il passo n che il gatto fa tra due topi mangiati (n>=2), tramite l'utilizzo di una lista dica in quale posizione si deve trovare il topo bianco rispetto al primo mangiato.
Una funzione è detta ricorsiva se chiama, direttamente o indirettamente, se stessa. In C tutte le funzioni possono essere usate ricorsivamente.
Ricorsione Funzioni ricorsive Una funzione è detta ricorsiva se chiama, direttamente o indirettamente, se stessa. In C tutte le funzioni possono essere usate ricorsivamente. Un esempio di funzione ricorsiva
Laboratorio di Algoritmi e Strutture Dati
Laboratorio di Algoritmi e Strutture Dati Prof. Aniello Murano Implementazioni di Liste Doppiamente Puntate e Circolari Corso di Laurea Codice insegnamento Email docente Anno accademico Informatica 13917
Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)
Strutture Strutture e Unioni DD cap.10 pp.379-391, 405-406 KP cap. 9 pp.361-379 Strutture Collezioni di variabili correlate (aggregati) sotto un unico nome Possono contenere variabili con diversi nomi
La struttura dati ad albero binario
La struttura dati ad albero binario L albero è una struttura dati nella quale le informazioni sono organizzate in modo gerarchico, dall alto verso il basso. Gli elementi di un albero si chiamano nodi,
Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011
Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011 Testo Il database di un videonoleggio è costituito da due vettori paralleli.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa E08 Soluzione Esercizi F. Gasparetti, C. Limongelli Marzo 2008 http://www.dia.uniroma3.it/~java/fondinf1/ Soluzione Esercizi
Fondamenti di Informatica 2
Fondamenti di Informatica 2 della prova scritta del 28 Febbraio 2006 Esercizio 1 (4 punti) Date le seguenti variabili int A[] = 2,3,7,-2,5,8,-4; int N = 7; int min = 3; int i; Scrivere la porzione di codice
Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007
Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 08/03/07 Nota Questi lucidi sono tratti
Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante
Esercizio 0 Scambio lettere Scrivere la funzione void scambiolettere(char *dest, char *lettere, int p_o_d) che modifichi la stringa destinazione (dest), sostituendone i caratteri pari o dispari (a seconda
2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore.
1 Esercizio 1 1. Immaginate di avere una calcolatore che invece che poter rappresentare i classici due valori per ogni bit (0/1) possa rappresentare 7 valori per ogni bit. (a) Quanti bit gli occorreranno
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa 10 Strutture collegate - 2 A. Miola Febbraio 2008 http://www.dia.uniroma3.it/~java/fondinf2/ Strutture collegate - 2 1 Contenuti!Strutture
B+Trees. Introduzione
B+Trees Introduzione B+Trees Il B+Trees e la variante maggiormente utilizzata dei BTrees BTrees e B+trees fanno parte della famiglia degli alberi di ricerca. Nel B+Trees i dati sono memorizzati solo nelle
Esercizi Capitolo 6 - Alberi binari di ricerca
Esercizi Capitolo 6 - Alberi binari di ricerca Alberto Montresor 23 settembre 200 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile
Algoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione
Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione Appello dell 8 Febbraio 2005 Esercizio 1 (ASD) 1. Dire quale delle seguenti affermazioni è vera giustificando la risposta. (a) lg
Università degli Studi di Ferrara - A.A. 2014/15 Dott. Valerio Muzzioli ORDINAMENTO DEI DATI
ORDINAMENTO DEI DATI Quando si ordina un elenco (ovvero una serie di righe contenenti dati correlati), le righe sono ridisposte in base al contenuto di una colonna specificata. Distinguiamo due tipi di
Calcolare il massimo di una lista
Calcolare il massimo di una lista Ieri abbiamo imparato a calcolare il massimo di una lista predefinita: lista = [4,24,-89,81,3,0,-12,31] max = lista[0] # questo e' un commento: primo elemento di lista
Programmazione I - Laboratorio
Programmazione I - Laboratorio Esercitazione 2 - Funzioni Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti di.unipi.it 2.
Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:
Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante
(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)
(Esercizi Tratti da Temi d esame degli ordinamenti precedenti) Esercizio 1 L'agenzia viaggi GV - Grandi Viaggi vi commissiona l'implementazione della funzione AssegnaVolo. Tale funzione riceve due liste
Laboratorio di Algoritmi e Strutture Dati
Laboratorio di Algoritmi e Strutture Dati Docente: Camillo Fiorentini 18 dicembre 2007 Esercizio 1: rappresentazione di una tabella di occorrenze L obiettivo è quello di rappresentare in modo efficiente
Realizzazione di una classe con un associazione
Realizzazione di una classe con un associazione Nel realizzare una classe che è coinvolta in un associazione, ci dobbiamo chiedere se la classe ha responsabilità sull associazione. Diciamo che una classe
Funzioni in C. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni
Gestione dei File in C
Gestione dei File in C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania [email protected] http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno introdotte
Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006
Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006 Si noti che le soluzioni ai quesiti saranno considerate
Compito di Fondamenti di Informatica
Compito di Fondamenti di Informatica In un magazzino viene utilizzato un archivio informatico, nel quale vengono memorizzate le informazioni relative ai prodotti contenuti nel magazzino e che ne permette
RICERCA DI UN ELEMENTO
RICERCA DI UN ELEMENTO Si legga da tastiera un array di N elementi (N stabilito dall utente) Si richieda un elemento x il programma deve cercare l elemento x nell array Se l elemento è presente, deve visualizzare
Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione
Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione Esercizi II parte Esercizio 1 Discutere la correttezza di ciascuna delle seguenti affermazioni. Dimostrare formalmente la validità
16.3.1 Alberi binari di ricerca
442 CAPITOLO 16. STRUTTURE DI DATI DINAMICHE root 7 5 11 2 8 13 10 Figura 16.11 Esempio di albero binario: ogni nodo contiene il dato da immagazzinare e tre puntatori che definiscono le sue relazioni di
Introduzione al MATLAB c Parte 2
Introduzione al MATLAB c Parte 2 Lucia Gastaldi Dipartimento di Matematica, http://dm.ing.unibs.it/gastaldi/ 18 gennaio 2008 Outline 1 M-file di tipo Script e Function Script Function 2 Costrutti di programmazione
Laboratorio di Algoritmi e Strutture Dati
Laboratorio di Algoritmi e Strutture Dati Aniello Murano http://people.na.infn.it people.na.infn.it/~murano/ 1 Operazioni su Liste Doppie e Circolari 2 1 Indice Liste puntate semplici: Gli elementi sono
I tipi di dato astratti
I tipi di dato astratti.0 I tipi di dato astratti c Diego Calvanese Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica A.A. 001/00.0 0 I tipi di dato astratti La nozione di tipo di dato
Algoritmi e Strutture Dati
[email protected] Laurea di Informatica - Università di Ferrara 2011-2012 [1] Strutture dati Dinamiche: Le liste Una lista è una sequenza di elementi di un certo tipo in cui è possibile aggiungere e/o
Tipi di Dato Ricorsivi
Tipi di Dato Ricorsivi Luca Abeni September 2, 2015 1 Tipi di Dato Vari linguaggi di programmazione permettono all utente di definire nuovi tipi di dato definendo per ogni nuovo tipo l insieme dei suoi
obiettivi di questa seconda metà del corso fare un passo avanti rispetto a :... meccanismi di composizione dei dati
obiettivi di questa seconda metà del corso fare un passo avanti rispetto a :... meccanismi di composizione dei dati puntatori ( strutture dinamiche collegate) strutture dinamiche collegate (liste, pile,
Fondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 5 di Giovedì 15 Luglio 2010 tempo a disposizione 2h30'
Prima di cominciare: si scarichi dal sito http://esamix.labx il file StartKit5.zip contenente i file necessari (solution di VS2008 e progetto compresi). Avvertenze per la consegna: apporre all inizio di
Le Liste. Elisa Marengo. Università degli Studi di Torino Dipartimento di Informatica. Elisa Marengo (UNITO) Le Liste 1 / 31
Le Liste Elisa Marengo Università degli Studi di Torino Dipartimento di Informatica Elisa Marengo (UNITO) Le Liste 1 / 31 Cos è una Lista Una lista è una collezione di elementi omogenei che: potrebbero
dall argomento argomento della malloc()
Allocazione dinamica Quando? Tutte le volte in cui i dati possono crescere in modo non prevedibile staticamente a tempo di sviluppo Un array con dimensione i fissata a compile-time non è sufficiente È
COGNOME E NOME (IN STAMPATELLO) MATRICOLA
Politecnico di Milano Facoltà di Ingegneria dell Informazione Informatica 3 Proff. Ghezzi, Lanzi, Matera e Morzenti Seconda prova in itinere 4 Luglio 2005 COGNOME E NOME (IN STAMPATELLO) MATRICOLA Risolvere
Algoritmi e strutture dati. Codici di Huffman
Algoritmi e strutture dati Codici di Huffman Memorizzazione dei dati Quando un file viene memorizzato, esso va memorizzato in qualche formato binario Modo più semplice: memorizzare il codice ASCII per
Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio
Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio 1-La memoria dinamica La scrittura di un programma (indipendentemente dal linguaggio adottato) deve sempre tener conto
Alberi binari di ricerca
Alberi binari di ricerca Definizione Visita dell albero inorder Ricerca Ricerca minimo, massimo e successore. Inserimento ed eliminazione di un nodo Problema del bilanciamento dell albero Albero binario
Appello di Informatica B
Politecnico di Milano Facoltà di Ingegneria Industriale 19 febbraio 2004 Appello di Informatica B Prof. Angelo Morzenti - Prof. Vincenzo Martena Cognome e nome: Matricola: Tipo di prova: recupero I prova
I puntatori e l allocazione dinamica di memoria
I puntatori e l allocazione dinamica di memoria L allocazione delle variabili Allocazione e rilascio espliciti di memoria Le funzioni malloc e free 2 2006 Politecnico di Torino 1 Allocare = collocare in
Laboratorio di Algoritmi e Strutture Dati
Realizzazione di Liste Laboratorio di Algoritmi e Strutture Dati Domenico Redavid [email protected] Materiale di base gentilmente concesso dal dott. Nicola Di Mauro Ricercatore presso l'univ. di Bari
costruttori e distruttori
costruttori e distruttori Costruttore E un metodo che ha lo stesso nome della classe a cui appartiene: serve per inizializzare un oggetto all atto della sua creazione Ce ne possono essere uno, più di uno,
INTRODUZIONE A WINDOWS
INTRODUZIONE A WINDOWS Introduzione a Windows Il Desktop Desktop, icone e finestre Il desktop è una scrivania virtuale in cui si trovano: Icone: piccole immagini su cui cliccare per eseguire comandi o
ci sono più problemi che programmi esiste un problema che non si può risolvere con un programma
Calcolabilità problemi facili trovare la media di due numeri stampare le linee di un file che contengono una parola problemi difficili trovare il circuito minimo data una tabella determinare la migliore
Gestione dinamica di una pila
Gestione dinamica di una pila Una pila o stack è una lista lineare a lunghezza variabile in cui inserimenti (push) ed estrazioni (pop) vengono effettuate ad un solo estremo, detto testa (top) della pila.
Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.
Algoritmo Formalmente, per algoritmo si intende una successione finita di passi o istruzioni che definiscono le operazioni da eseguire su dei dati (=istanza del problema): in generale un algoritmo è definito
Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica
Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Dipartimento di Elettronica, Informazione e Bioingegneria Informatica B Sezione D Franchi Alessio Mauro,
Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE
Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE NOME: COGNOME: ============================================================== Esercizio 1 ci sono tante "righe"; non è detto servano tutte...
Utilizzo delle formule in Excel
Utilizzo delle formule in Excel Excel è dotato di un potente motore di calcolo che può essere utilizzato per elaborare i dati immessi dagli utenti. I calcoli sono definiti mediante formule. Ogni formula
Per visualizzare e immettere i dati in una tabella è possibile utilizzare le maschere;
Maschere e Query Le Maschere (1/2) Per visualizzare e immettere i dati in una tabella è possibile utilizzare le maschere; Le maschere sono simili a moduli cartacei: ad ogni campo corrisponde un etichetta
Il tipo di dato astratto Pila
Il tipo di dato astratto Pila Il tipo di dato Pila Una pila è una sequenza di elementi (tutti dello stesso tipo) in cui l inserimento e l eliminazione di elementi avvengono secondo la regola seguente:
RICORSIVITA. Vediamo come si programma la soluzione ricorsiva al problema precedente: Poniamo S 1 =1 S 2 =1+2 S 3 =1+2+3
RICORSIVITA 1. Cos è la ricorsività? La ricorsività è un metodo di soluzione dei problemi che consiste nell esprimere la soluzione relativa al caso n in funzione della soluzione relativa al caso n-1. La
File di testo e file binari Directory
File di testo e file binari Directory Dove salvare i file perché vengano ritrovati dal programma? CASO 1 Programma eseguito da ambiente di lavoro (MS Visual C++). La directory in cui viene creato/letto
Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti
Capitolo 3 L applicazione Java Diagrammi ER Dopo le fasi di analisi, progettazione ed implementazione il software è stato compilato ed ora è pronto all uso; in questo capitolo mostreremo passo passo tutta
Corso di Fondamenti di Informatica Algoritmi su array / 2
Corso di Fondamenti di Informatica Algoritmi su array / Anno Accademico 00/009 Francesco Tortorella Algoritmi su array Operazioni tipiche sugli array: inizializzazione lettura stampa ricerca del minimo
Inizializzazione, Assegnamento e Distruzione di Classi
Inizializzazione, Assegnamento e Distruzione di Classi Lezione 9 Operazioni Automatiche In ogni programma C++ oggetti classe vengono gestiti automaticamente dal compilatore Inizializzati al momento della
Database Manager Guida utente DMAN-IT-01/09/10
Database Manager Guida utente DMAN-IT-01/09/10 Le informazioni contenute in questo manuale di documentazione non sono contrattuali e possono essere modificate senza preavviso. La fornitura del software
Laboratorio di Informatica
Laboratorio di Informatica Introduzione a Python Dottore Paolo Parisen Toldin - [email protected] Argomenti trattati Che cosa è python Variabili Assegnazione Condizionale Iterazione in una lista di
Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2007-08 Primo scritto 11 Gennaio 2008
Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2007-08 Primo scritto 11 Gennaio 2008 Si noti che le soluzioni ai quesiti saranno considerate valide
Liberare la memoria allocata dinamicamente.
Scrivere un programma per la gestione dei libri e dei prestiti di una biblioteca universitaria. I libri sono caratterizzati dalle seguenti informazioni: titolo, autore, collocazione del libro, numero di
Esame di Informatica Generale 9 CFU 21 Giugno 2011 Professori: Carulli, Fiorino, Mazzei
04-21-giugno-2011-DomandeConSoluzione.doc 1/12 22/06/2011 15:07:59 Esame di Informatica Generale 9 CFU 21 Giugno 2011 Professori: Carulli, Fiorino, Mazzei Docente Risultati Scritto Orali Carulli Venerdì
Matematica in laboratorio
Unità 1 Attività guidate Attività 1 Foglio elettronico Divisibilità tra numeri naturali Costruisci un foglio di lavoro per determinare se a è divisibile per b, essendo a e b due numeri naturali, con a
GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL
GUIDA RAPIDA BOZZA 23/07/2008 INDICE 1. PERCHÉ UNA NUOVA VERSIONE DEI MODULI DI RACCOLTA DATI... 3 2. INDICAZIONI GENERALI... 4 2.1. Non modificare la struttura dei fogli di lavoro... 4 2.2. Cosa significano
PROGRAMMI LINGUAGGIO C
PROGRAMMI IN LINGUAGGIO C Corso di Programmazione Modulo B Prof. GIULIANO LACCETTI Studentessa Bellino Virginia Matr. 408466 Corso di Diploma in Informatica http://www.dicecca.net Indice 1. Package per
Informatica 3. LEZIONE 23: Indicizzazione. Modulo 1: Indicizzazione lineare, ISAM e ad albero Modulo 2: 2-3 trees, B-trees e B + -trees
Informatica 3 LEZIONE 23: Indicizzazione Modulo 1: Indicizzazione lineare, ISAM e ad albero Modulo 2: 2-3 trees, B-trees e B + -trees Informatica 3 Lezione 23 - Modulo 1 Indicizzazione lineare, ISAM e
Allocazione dinamica della memoria - riepilogo
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Storage duration Allocazione dinamica della
Programmazione 1 A.A. 2015/2016
Cognome e Nome Matricola (se disponibile) Programmazione 1 A.A. 2015/2016 Parziale del 4 Novembre 2015 Compito n 1 Esercizio 1 (4 punti) Convertire da base 16 a base 2 il numero FA1 Convertire da base
MODULO 5 ACCESS Basi di dati. Lezione 4
MODULO 5 ACCESS Basi di dati Lezione 4 ARGOMENTI Lezione 4 Filtrare i dati Esempio 1 Query Cos è Creare Query in visualizza struttura Criteri di ricerca Esempio 2 Esempio 3 Esempio 4 Creare Query in creazione
Esame del 3 febbraio 2010
Fondamenti di Informatica CdL in Ingegneria Gestionale a.a. 2009/2010 Docente: Andrea Prati Esame del 3 febbraio 2010 Esercizio 1 Vettori Sia data un vettore (array monodimensionale) di interi: int VETT[N];
CRITERI DI CONVERGENZA PER LE SERIE. lim a n = 0. (1) s n+1 = s n + a n+1. (2) CRITERI PER LE SERIE A TERMINI NON NEGATIVI
Il criterio più semplice è il seguente. CRITERI DI CONVERGENZA PER LE SERIE Teorema(condizione necessaria per la convergenza). Sia a 0, a 1, a 2,... una successione di numeri reali. Se la serie a k è convergente,
Introduzione al Linguaggio C
Introduzione al Linguaggio C File I/O Daniele Pighin April 2009 Daniele Pighin Introduzione al Linguaggio C 1/15 Outline File e dati Accesso ai file File I/O Daniele Pighin Introduzione al Linguaggio C
http://esamix.labx Quotazione compareto( ) Quotazione piurecente( ) Quotazione Quotazione Quotazione non trovato count( )
Materiale di ausilio utilizzabile durante l appello: tutto il materiale è a disposizione, inclusi libri, lucidi, appunti, esercizi svolti e siti Web ad accesso consentito in Lab06. L utilizzo di meorie
Punto Print Il programma per stampare. Documentazione Tecnica
Punto Print Il programma per stampare Documentazione Tecnica 1 Punto Software di Iselle Mirko Documentazione tecnica PuntoPrint 1. Installazione Per effettuare l installazione del programma, decomprimere
Programmazione funzionale
Cognome Nome Matricola Programmazione funzionale 12-09-2014 PROVA SCRITTA 1 2 3 4 5 Somma Il compito ha la durata di 1 ora, per la compilazione attenersi alle seguenti istruzioni: Scrivere in maniera chiara.
Esercizio 1. Esercizio 2
Esercizio 1 Realizzare un programma che, aperto un file di testo di nome Prova.txt in modalità scrittura, provveda a leggere da input delle parole separate da spazi (stringhe di al più 63 caratteri) e
Guida all uso di Java Diagrammi ER
Guida all uso di Java Diagrammi ER Ver. 1.1 Alessandro Ballini 16/5/2004 Questa guida ha lo scopo di mostrare gli aspetti fondamentali dell utilizzo dell applicazione Java Diagrammi ER. Inizieremo con
WWW.GARENUOTOLAZIO.COM ISCRIZIONE GARE NUOTO ON LINE ISTRUZIONI OPERATIVE PER LE SOCIETA
Versione 4.1 FIN FEDERAZIONE ITALIANA NUOTO COMITATO REGIONALE LAZIO WWW.GARENUOTOLAZIO.COM ISCRIZIONE GARE NUOTO ON LINE ISTRUZIONI OPERATIVE PER LE SOCIETA A) Selezionare il programma GESTIONE ISCRIZIONI.
STAMPA DI UNA PAGINA SEMPLICE
Pagina 11 copiati nel proprio sistema (disco fisso o floppy). Questa operazione è detta download o scaricamento. Il modo più semplice per effettuare un download di un file (a meno che non sia specificato
Gest ione di list e in C
Gest ione di list e in C Politecnico di Milano Sede di Cremona Gianpaolo Cugola Dipartimento di Elettronica e Informazione [email protected] http://www.elet.polimi.it/~cugola Strutture dinamiche Gli
Lezione 9: Strutture e allocazione dinamica della memoria
Lezione 9: Strutture e allocazione dinamica della memoria Laboratorio di Elementi di Architettura e Sistemi Operativi 9 Maggio 2012 Allocazione dinamica della memoria Memoria dinamica È possibile creare
ESERCIZI DI PROBLEM SOLVING E COMPOSIZIONE DEI DIAGRAMMI DI FLUSSO per le classi terza
ESERCIZI DI PROBLEM SOLVING E COMPOSIZIONE DEI DIAGRAMMI DI FLUSSO per le classi terza vers.3 in lavorazione Docente SAFFI FABIO Contenuti 01.Esercizi generici sul diagramma di flusso - flow chart... 2
Prossime lezioni. Dai TDA agli oggetti. Riassunto. Riassunto TDA. Oggi. Stefano Mizzaro 1
Prossime lezioni Dai TDA agli oggetti Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro [email protected] Programmazione, lezione 18 19 gennaio
Gestione del sito in WordPress
Indice Gestione del sito in WordPress 1. Scrivi 2. Inserisci immagine 3. Gestione 4. Commenti 5. Utenti Amministrazione WordPress Pagina si accesso all amministrazione: www.miosito.xyz/wp-admin Nome utente:
Ricorsione. (da lucidi di Marco Benedetti)
Ricorsione (da lucidi di Marco Benedetti) Funzioni ricorsive Dal punto di vista sintattico, siamo in presenza di una funzione ricorsiva quando all interno della definizione di una funzione compaiono una
Struttura a record. File ad accesso diretto. Modalità di apertura. Modalità di apertura
Struttura a record 2 File ad accesso diretto Il file è organizzato in record aventi tutti la stessa struttura e quindi dimensione record 0 record 1 record 2 Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione
www.filoweb.it STAMPA UNIONE DI WORD
STAMPA UNIONE DI WORD Molte volte abbiamo bisogno di stampare più volte lo stesso documento cambiando solo alcuni dati. Potremmo farlo manualmente e perdere un sacco di tempo, oppure possiamo ricorrere
Algoritmi su array / 2
Corso di Informatica Algoritmi su array / Anno Accademico / Francesco Tortorella Algoritmi su array Operazioni tipiche sugli array: inizializzazione lettura stampa ricerca del minimo e del massimo ricerca
Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2005-06 Secondo Compitino 17 Dicembre 2005
Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2005-06 Secondo Compitino 17 Dicembre 2005 Si noti che le soluzioni ai quesiti saranno considerate
Informatica 3. Informatica 3. LEZIONE 12: Liste. Lezione 12 - Modulo 1. Posizione corrente. Introduzione
Informatica 3 Informatica 3 LEZIONE 12: Liste Lezione 12 - Modulo 1 Modulo 1: ADT lista e implementazione basata su array Modulo 2: Lista concatenata ADT lista e implementazione basata su array Politecnico
