3 aprile 2002 Avvisi: 1 o Esonero: mercoledi 17 aprile ore 11:30 – 14:00 consulta la pag. WEB alla voce esoneri si raccomanda la puntualita!

Slides:



Advertisements
Presentazioni simili
Cosa sono? Come si risolvono?
Advertisements

Welcome Dati del corso e del docente Argomenti studiati nel corso
Corso di laurea in INFORMATICA RETI di CALCOLATORI A.A. 2003/2004 Presentazione del corso Alberto Polzonetti
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
Informatica Generale Marzia Buscemi
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
1 SPEGNETE GRAZIE. 2 MATEMATICA (A-L) a.a Numero di crediti :8 Docente:Prof. Gianni Ricci Periodo di svolgimento del corso: primo semestre.
Lez. 41 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Programmazione.
Corso di Psicologia della Comunicazione
Iterazione enumerativa (for)
Funzioni definite dall’utente
Informatica A (informatica grafica) Allievi di Ingegneria Civile, L-Z
Algoritmo di Ford-Fulkerson
Welcome Dati del corso e del docente Argomenti studiati nel corso
CORSO DI PROGRAMMAZIONE II
CORSO DI PROGRAMMAZIONE II Introduzione alla ricorsione
Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.
Algoritmi e Strutture Dati Valutazione del tempo di esecuzione degli algoritmi.
1 Lezione XXXVI Ma 29-Dic-2005 Informazioni varie.
Corso di Microelettronica Laboratorio di Progettazione
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente) ITERAZIONE: ripetere piu volte una sequenza di operazioni istruzioni: for, while, do.
ORGANIZZAZIONE DELL’ESAME - PROGETTO (pallavolo e pallamano) - DOMANDE A RISPOSTA MULTIPLA (pallavolo e parte generale)
FONDAMENTI DI MANAGEMENT curriculum TURISMO (9 CFU) A.A prof.ssa Francesca Simeoni.
Obiettivo esame Lessere in tanti e diversi ci arrichisce di esperienze ma ci crea anche qualche problema che possiamo forse risolvere adottando alcuni.
LIP Laboratorio di Informatica: Programmazione Rosario Pugliese
Laboratorio di Calcolo I 1) Introduzione Università Roma Tre Corso di Studi in Fisica AA 2002/03.
Le funzioni.
Intelligenza Artificiale
Esercizio 10.* Un cassiere vuole dare un resto di n centesimi di euro usando il minimo numero di monete. a) Descrivere un algoritmo goloso per fare ciò.
ASSEMBLEA STUDENTESCA FACOLTA DI ECONOMIA 12/03/2013 AULA COLLETTI.
Radix-Sort(A,d) // A[i] = cd...c2c1
Corso di studio in Ingegneria Gestionale La prova finale Gennaio 2003.
RISOLVERE LE EQUAZIONI
14 marzo 2002 Avvisi:.
Primo Esame: Esame sulle Materie
Milano, 17 Dicembre 2013 Informatica B Informatica B Matlab Laboratorio del 14/01/2014 Responsabili di laboratorio: Gianluca Durelli:
Docente: Prof. Lorenzo Mezzalira Esercitatore: Ing. Stefano Giavardi
Tail recursion: esempio
Esercizi La distanza di hamming tra due interi x e y si definisce come il numero di posizioni nella rappresentazione binaria di x e y aventi bit differenti.
Cos’è l’ECDL ? La European Computer Driving Licence (ECDL) è un certificato, riconosciuto a livello internazionale, attestante che chi lo possiede ha l'insieme.
Linguaggi e modelli computazionali LS Manni Tiziano
Complessità di un algoritmo
Corso di Fisica Generale II (L-Z) 1mo modulo ing. Civile - ambientale
Sessione live Testing. Esercizio Quesito 1 Soluzione 1.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 2 La ricorsione Corso di Informatica 2 a.a. 2003/04 Lezione 2.
Il corso di economia e misurazione aziendale
Sistemi e Tecnologie Informatiche Ricorsione Umberto Ferraro Petrillo.
Ricorsione CORDA – Informatica A. Ferrari Testi da Alessandro Bugatti
LE EQUAZIONI DI GRADO SUPERIORE AL SECONDO
Ugo de'Liguoro - Informatica 2 - Introduzione Informatica 2 Introduzione al corso a.a. 2003/04.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 6 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE La Ricorsione Marco D. Santambrogio – Ver. aggiornata al 21 Maggio 2014.
DATA MINING PER IL MARKETING Andrea Cerioli Sito web del corso
DATA MINING PER IL MARKETING
1 LINGUA INGLESE 1 LLEM Introduction to the triennio Lesson 2A A.A
Modulo didattico “Disegno Tecnico Navale”
4/25/2015E. Giovannetti -- OI09.1 Olimpiadi di Informatica 2010 Giornate preparatorie Dipartimento di Informatica Università di Torino marzo –
1 Laboratorio di Introduzione alla Programmazione §II MODULO §3 crediti §Esame e voto unico (su 6 crediti totali)
Informatica 4 La ricorsione. Definizione di ricorsione Ricorsione è la proprietà di quei programmi che, all’interno delle istruzioni che li compongono,
Psicometria A – I semestre
Fisica Generale per Ingegneria Consuntivo A.A Primo Semestre Livio Lanceri.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 4 L Maggio 2015 Marco D. Santambrogio – Gianluca Durelli -
Corso integrato di Matematica, Informatica e Statistica Informatica di base Linea 1 Daniela Besozzi Dipartimento di Informatica e Comunicazione Università.
S.Lancelotti, “Analisi Matematica II”, Vers. 1.1 del 17/9/2015 Analisi Matematica II (Ing. Aerospaziale 2) 1/13 Welcome 1)Dati del corso e del docente.
Sessione di laurea aprile 2016 Contenuti: istruzioni per laurearsi; modalità di svolgimento della prova finale; criteri di valutazione della prova.
Analisi 1.
PRESENTAZIONE PROPOSTE DI TESI CHIMICA E TECNOLOGIA FARMACEUTICHE 10 MAGGIO 2016.
Dipartimento di Economia, Management e Istituzioni APPPLICAZIONI AZIENDALI MEDIANTE FOGLIO ELETTRONICO 6° modulo: Analisi scostamenti, lotto economico.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Come affrontare un problema… Marco D. Santambrogio – Ver. aggiornata al 15 Giugno.
Lezione n. Parole chiave: Corso di Laurea: Insegnamento: Docente: A.A Salvatore Cuomo La ricorsione 15 Approccio ricorsivo, esercizi sulla.
Transcript della presentazione:

3 aprile 2002 Avvisi: 1 o Esonero: mercoledi 17 aprile ore 11:30 – 14:00 consulta la pag. WEB alla voce esoneri si raccomanda la puntualita!

Qualche informazione sullesonero… Argomenti trattati: svolti nelle lezioni fino al 4 aprile (domani) Tipologia compito: Esercizi da svolgere del tipo proposto e discusso a lezione. (Ovviamente senza lausilio del compilatore…..) Non e possibile consultare: –Libri o appunti –I colleghi vicini e lontani

Qualche informazione sullesonero… 1.Perche' gli esoneri sostituiscano il compito d'esame devono essere stati valutati entrambi. (Ad un esonero non fatto viene assegnato automaticamente un punteggio insufficiente.) 2.Anche chi ottiene un voto insufficiente al primo esonero puo' partecipare al secondo. 3.Dopo gli esoneri, verra' proposto un voto che tiene conto dei risultati ottenuti in entrambe le prove (il secondo esonero avra' un peso maggiore del primo). 4.Il voto proposto dopo gli esoneri puo' essere verbalizzato (con gli aggiustamenti relativi al voto del progetto) soltanto nei due appelli della sessione estiva. 5.Chi si presenta e consegna il compito ad uno dei due appelli della sessione estiva, rinuncia automaticamente al voto proposto dopo gli esoneri.

Qualche minuto di laboratorio … Esercizio 5.17 Scrivere una funzione multiplo che per una coppia di interi determina se il primo e multiplo del secondo. Utilizzare questa funzione per un programma che prende in input serie di coppie di interi e, per ogni coppia, decide se i due numeri sono uno multiplo dellaltro. Vediamo le soluzioni che avete proposto…

Esercizio 5.51 Ampliamento del programma Simulatore del gioco craps. Incapsulare una partita in una funzione e consentire una successione di partite in cui lutente puo fare delle scommesse. Per questo inizializzare una somma di denaro di partenza (es. 100 Euro) ed alla fine di ogni partita valutare la somma posseduta. (Ovviamente si puo continuare a giocare e a scommettere solo se si possiede ancora qualche euro….). Vediamo le soluzioni che avete proposto…

Esercizio 5.23 Scrivere una funzione che accetta in input lora, suddivisa in tre numeri interi (ore, minuti, secondi) e restituisce il numero di secondi trascorsi dalla mezzanotte. Utilizzare questa funzione per calcolare la quantita di secondi intercorsi tra due orari della stessa giornata. Vediamo le soluzioni che avete proposto…

Ricorsione Funzioni Ricorsive –Funzione che chiama se stessa –Si puo risolvere solo il caso base –Divido il problema in: Quello che si puo risolvere Quello che non si puo risolvere – somiglia al problema originale –Lancia una nuova copia di se stesso (passo ricorsivo) Alla fine arrivo al caso base, che risolvo –Sostituisco la soluzione, ritorno su fino a risolvere lintero problema

Il fattoriale n! = n(n-1)(n-2)(n-3)…. 1 1.// funzione fattoriale iterativa 2.long factorial(long number) 3.{ 4. long fact =1; 5. for (counter= number; counter>=1; counter --) 6. fact *= counter; 7. return fact; 8.}

Il fattoriale: versione ricorsiva n! = n(n-1)(n-2)(n-3)…. 1 Formula ricorsiva: n! = n(n-1)! 1!=1 Osservo lesempio: 5! = 5 * 4 * 3 * 2 * 1 Quindi: 5! = 5 * 4! 4! = 4 * 3!...

Il fattoriale: versione ricorsiva 1.// funzione fattoriale ricorsiva 2.long factorial(long number) 3.{ 4. if (number <=1) 5. return 1; 6. else 7. return (number * factorial(number - 1)); 8.} 5! 4! 3!2! 1! 5* 4! 4* 3!3* 2!2* 1!

1.#include 2.#include 3.void stampa(); 4.main() 5.{ 6. stampa(); 7. system("pause"); 8. return 0; 9.} 10.void stampa() 11.{ 12. char c; if ((c = getchar()) != EOF) { 15. stampa(); 16. printf("%c", c); 17. }; 18.} Cosa fa questo programma?

Qualcosa sul tipo char char richiede 1 byte di memoria ( valore da –128 a 127) si puo visualizzare come: valore intero (conversione %d ) carattere vero e proprio (conversione %c ) printf( Il carattere (%c) ha valore %d.\n,a,a); Da in output: Il carattere (a) ha valore 97. (valore ASCII)

Esempio uso ricorsione : Le serie d Fibonacci Serie di Fibonacci : 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, Il rapporto tra due numeri consecutivi tende a sezione aurea per i=2,3,….

Esempio uso ricorsione : Le serie d Fibonacci Serie di Fibonacci : 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, Ogni numero e la somma dei due precedenti fib(0) = 0 formula ricorsiva fib(1) = 1 fib(n) = fib(n-1) + fib(n-2)

Esempio uso ricorsione : Le serie d Fibonacci long fibonacci(long n) { if (n==0 || n==1) // caso base return n; else return fibonacci(n-1) + fibonacci(n-2); }

Esempio uso ricorsione : Le serie d Fibonacci f( 3 ) f( 1 ) f( 2 ) f( 1 )f( 0 )return 1 return 0 return + +

Sommario prototipo Inizializzazione variabili Chiamata funz. fibonacci Risultato in output. 3. Defininzione ricorsiva per fibonacci 1/* Fig. 5.15: fig05_15.c 2 Recursive fibonacci function */ 3#include 4 5long fibonacci( long ); 6 7int main() 8{8{ 9 long result, number; printf( "Enter an integer: " ); 12 scanf( "%ld", &number ); 13 result = fibonacci( number ); 14 printf("Fibonacci(%ld)= %ld\n", number,result ); 15 return 0; 16} 17 18/* Definizione ricorsiva della funzione Fibonacci */ 19long fibonacci( long n ) 20{ 21 if ( n == 0 || n == 1 ) 22 return n; 23 else 24 return fibonacci(n - 1) + fibonacci(n - 2); 25}

Sommario Output Enter an integer: 2 Fibonacci(2) = 1 Enter an integer: 3 Fibonacci(3) = 2 Enter an integer: 4 Fibonacci(4) = 3 Enter an integer: 5 Fibonacci(5) = 5 Enter an integer: 6 Fibonacci(6) = 8 Enter an integer: 10 Fibonacci(10) = 55 Enter an integer: 20 Fibonacci(20) = 6765 Enter an integer: 30 Fibonacci(30) = Enter an integer: 35 Fibonacci(35) =

Esempio uso ricorsione : Le serie d Fibonacci Domanda:Quante chiamate ricorsive fa il programma? Risposta: Ad ogni passo due Da un semplice calcolo: Per calcolare fibonacci(23)=28657, Occorrono chiamate ricorsive!

Esercizio 1 Scrivere una versione iterativa della funzione long fibonacci( long n ) (*) spedire la soluzione entro il 9/4 ore 14:00

Ricorsione e Iterazione Ripetizione –iterazione : loop esplicito –ricorsione : ripetizione di chiamate di funzioni Terminazione –iterazione : la condizione del loop non e piu verificata –ricorsione : si arriva al caso base Entrambi possono avere loop infinito Quale scegliere? –La scelta e tra performance (iterazione) e buon software engineering (ricorsione)

1.#include 2. 3.int mystery(int, int); 4. 5.main() 6.{ 7. int x, y; printf("Enter two integers: "); 10. scanf("%d%d", &x, &y); 11. printf("The result is %d\n", mystery(x, y)); 12. return 0; 13.} 14./* Parameter b must be a positive 15. integer to prevent infinite recursion */ 16.int mystery(int a, int b) 17.{ 18. if (b == 1) 19. return a; 20. else 21. return a + mystery(a, b - 1); 22.} Cosa fa questo programma?

Esercizio 2 Scrivere un programma con una funzione ricorsiva che prenda in input una coppia di interi e ne restituisca il Massimo Comune Divisore (cioe il piu grande intero che li divide entrambi) (*) spedire la soluzione entro il 9/4 ore 14:00