Laboratorio di Algoritmi e Strutture Dati Ingegneria e Scienze Informatiche - Cesena A.A

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Laboratorio di Algoritmi e Strutture Dati Ingegneria e Scienze Informatiche - Cesena A.A"

Transcript

1 Ingegneria e Scienze Informatiche - Cesena A.A dilena@cs.unibo.it, pietro.dilena@unibo.it

2 Note introduttive sul corso Modalità d esame Note introduttive sul corso Finalità: fornire competenze di base relative all implementazione di algoritmi efficienti (in termini di risorse di calcolo utilizzate) per la risoluzione di problemi su liste, alberi e grafi.

3 Note introduttive sul corso Modalità d esame Note introduttive sul corso Finalità: fornire competenze di base relative all implementazione di algoritmi efficienti (in termini di risorse di calcolo utilizzate) per la risoluzione di problemi su liste, alberi e grafi. Prerequisiti: conoscenza delle tecniche per l analisi di algoritmi (corso di Algoritmi e Strutture Dati), conoscenza di base del linguaggio C e familiarità con un qualsiasi ambiente di sviluppo C (Dev-C++, Linux, ecc).

4 Note introduttive sul corso Modalità d esame Note introduttive sul corso Finalità: fornire competenze di base relative all implementazione di algoritmi efficienti (in termini di risorse di calcolo utilizzate) per la risoluzione di problemi su liste, alberi e grafi. Prerequisiti: conoscenza delle tecniche per l analisi di algoritmi (corso di Algoritmi e Strutture Dati), conoscenza di base del linguaggio C e familiarità con un qualsiasi ambiente di sviluppo C (Dev-C++, Linux, ecc). Testi consigliati: Introduzione agli Algoritmi e Strutture Dati. T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein. Programmazione con strutture dati in C. D. Calvanese, P. Liberatore, F. Massacci. Lucidi delle lezioni, Wikipedia

5 Note introduttive sul corso Modalità d esame Note introduttive sul corso Finalità: fornire competenze di base relative all implementazione di algoritmi efficienti (in termini di risorse di calcolo utilizzate) per la risoluzione di problemi su liste, alberi e grafi. Prerequisiti: conoscenza delle tecniche per l analisi di algoritmi (corso di Algoritmi e Strutture Dati), conoscenza di base del linguaggio C e familiarità con un qualsiasi ambiente di sviluppo C (Dev-C++, Linux, ecc). Testi consigliati: Introduzione agli Algoritmi e Strutture Dati. T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein. Programmazione con strutture dati in C. D. Calvanese, P. Liberatore, F. Massacci. Lucidi delle lezioni, Wikipedia Infos: Web: dilena/homepage/lasd1314.html Ricevimento: su appuntamento (via ) oppure ogni mercoledì dalle 11 alle 12, studio 11, via Sacchi 3, Cesena.

6 Note introduttive sul corso Modalità d esame Modalità d esame Sviluppo di un progetto, da realizzare in linguaggio C con relativa relazione scritta. Il progetto può essere sviluppato in gruppi di massimo tre studenti. Scelta preferita/consigliata: gruppi di due studenti. Il progetto deve essere consegnato entro un mese dal superamento della prova scritta. Può essere consegnato prima del superamento della prova scritta e resterà valido fino al superamento della stessa.

7 Note introduttive sul corso Modalità d esame Modalità d esame Sviluppo di un progetto, da realizzare in linguaggio C con relativa relazione scritta. Il progetto può essere sviluppato in gruppi di massimo tre studenti. Scelta preferita/consigliata: gruppi di due studenti. Il progetto deve essere consegnato entro un mese dal superamento della prova scritta. Può essere consegnato prima del superamento della prova scritta e resterà valido fino al superamento della stessa. Dettagli sul progetto: Vi verranno proposti due progetti distinti: uno progetto semplice e un progetto (leggermente più) complesso. Ogni gruppo deve consegnare uno solo dei due progetti, a scelta. Il progetto semplice non ha una valutazione numerica: se valutato positivamente, permette di registrare il voto dello scritto. Il progetto complesso, se valutato positivamente, permette di incrementare il voto della prova scritta fino ad un massimo di 3 punti.

8 Note introduttive sul corso Modalità d esame Modalità d esame Sviluppo di un progetto, da realizzare in linguaggio C con relativa relazione scritta. Il progetto può essere sviluppato in gruppi di massimo tre studenti. Scelta preferita/consigliata: gruppi di due studenti. Il progetto deve essere consegnato entro un mese dal superamento della prova scritta. Può essere consegnato prima del superamento della prova scritta e resterà valido fino al superamento della stessa. Dettagli sul progetto: Vi verranno proposti due progetti distinti: uno progetto semplice e un progetto (leggermente più) complesso. Ogni gruppo deve consegnare uno solo dei due progetti, a scelta. Il progetto semplice non ha una valutazione numerica: se valutato positivamente, permette di registrare il voto dello scritto. Il progetto complesso, se valutato positivamente, permette di incrementare il voto della prova scritta fino ad un massimo di 3 punti. Le specifiche dei due progetti verranno presentate verso la metà del corso. Motivazione: tarare la difficoltà dei progetti in base al livello medio della classe.

9 La successione di Fibonacci Introduzione La successione di Fibonacci La successione di Fibonacci generalizzata Implementazione della funzione di Fibonacci generalizzata Nota sul prodotto riga per colonna di due matrici 2x2 generalizzata La successione di Fibonacci, attribuita al matematico pisano del XIII secolo Leonardo Fibonacci, descrive il rate di crescita di una popolazione di conigli. Funzione matematica che descrive la successione di Fibonacci: j 1 se n 2 Fib(n) = Fib(n 1) + Fib(n 2) se n > 2 Primi 4 termini della successione di Fibonacci: Fib(1) = 1, Fib(2) = 1, Fib(3) = 2, Fib(4) = 3

10 La successione di Fibonacci generalizzata La successione di Fibonacci La successione di Fibonacci generalizzata Implementazione della funzione di Fibonacci generalizzata Nota sul prodotto riga per colonna di due matrici 2x2 generalizzata Proviamo a complicare leggermente la funzione che descrive la successione di Fibonacci.

11 La successione di Fibonacci generalizzata La successione di Fibonacci La successione di Fibonacci generalizzata Implementazione della funzione di Fibonacci generalizzata Nota sul prodotto riga per colonna di due matrici 2x2 generalizzata Proviamo a complicare leggermente la funzione che descrive la successione di Fibonacci. Sia x un numero intero (non necessariamente positivo). Definiamo la seguente funzione: j x se n 2 GFib(x, n) = GFib(x, n 1) + GFib(x, n 2) se n > 2 Primi 4 termini della successione di Fibonacci generalizzata per x = 4: GFib(4, 1) = 4, GFib(4, 2) = 4, GFib(4, 3) = 8, GFib(4, 4) = 12

12 La successione di Fibonacci generalizzata La successione di Fibonacci La successione di Fibonacci generalizzata Implementazione della funzione di Fibonacci generalizzata Nota sul prodotto riga per colonna di due matrici 2x2 generalizzata Proviamo a complicare leggermente la funzione che descrive la successione di Fibonacci. Sia x un numero intero (non necessariamente positivo). Definiamo la seguente funzione: j x se n 2 GFib(x, n) = GFib(x, n 1) + GFib(x, n 2) se n > 2 Primi 4 termini della successione di Fibonacci generalizzata per x = 4: GFib(4, 1) = 4, GFib(4, 2) = 4, GFib(4, 3) = 8, GFib(4, 4) = 12 Ovviamente, Fib(n) = GFib(1, n) per ogni intero n.

13 La successione di Fibonacci La successione di Fibonacci generalizzata Implementazione della funzione di Fibonacci generalizzata Nota sul prodotto riga per colonna di due matrici 2x2 generalizzata Implementazione della funzione di Fibonacci generalizzata Soluzione ricorsiva: 1: function GFib(x, n) 2: if n 2 then 3: return x 4: else 5: return GFib(x, n 2) + GFib(x, n 1) 6: end if 7: end function

14 La successione di Fibonacci La successione di Fibonacci generalizzata Implementazione della funzione di Fibonacci generalizzata Nota sul prodotto riga per colonna di due matrici 2x2 generalizzata Implementazione della funzione di Fibonacci generalizzata Soluzione ricorsiva: 1: function GFib(x, n) 2: if n 2 then 3: return x 4: else 5: return GFib(x, n 2) + GFib(x, n 1) 6: end if 7: end function Soluzione iterativa: 1: function GFib(x, n) 2: a b x 3: for i 3 to n do 4: c a + b 5: a b 6: b c 7: end for 8: return b 9: end function

15 La successione di Fibonacci La successione di Fibonacci generalizzata Implementazione della funzione di Fibonacci generalizzata Nota sul prodotto riga per colonna di due matrici 2x2 generalizzata Nota (superflua) sul passaggio di parametri da riga di comando in C Template C per una implementazione di GFib(x, n) che legge i parametri da riga di comando. # include <stdio.h> # include < stdlib.h> int GFib ( int x, int n) { // Codice della funzione GFib } int main ( int argc, char * argv []) { int x,n; if( argc!=3) { fprintf ( stderr," Usage : Gfib <x> <n>\ n"); return 1; } x=atoi ( argv [1]) ; n=atoi ( argv [2]) ; printf ("% d\n", GFib (x,n)); return 0; }

16 La successione di Fibonacci La successione di Fibonacci generalizzata Implementazione della funzione di Fibonacci generalizzata Nota sul prodotto riga per colonna di due matrici 2x2 generalizzata Quale implementazione è maggiormente efficiente in termini di tempo di calcolo: ricorsiva o iterativa?

17 La successione di Fibonacci La successione di Fibonacci generalizzata Implementazione della funzione di Fibonacci generalizzata Nota sul prodotto riga per colonna di due matrici 2x2 generalizzata Quale implementazione è maggiormente efficiente in termini di tempo di calcolo: ricorsiva o iterativa? Costo computazionale: implementazione ricorsiva O(2 n ), implementazione iterativa O(n). Riusciamo a fare di meglio?

18 La successione di Fibonacci La successione di Fibonacci generalizzata Implementazione della funzione di Fibonacci generalizzata Nota sul prodotto riga per colonna di due matrici 2x2 generalizzata Quale implementazione è maggiormente efficiente in termini di tempo di calcolo: ricorsiva o iterativa? Costo computazionale: implementazione ricorsiva O(2 n ), implementazione iterativa O(n). Riusciamo a fare di meglio? Suggerimento. Dimostriamo per induzione che per ogni n 3 «n 1 «1 1 Fib(n) Fib(n 1) = 1 0 Fib(n 1) Fib(n 2)

19 La successione di Fibonacci La successione di Fibonacci generalizzata Implementazione della funzione di Fibonacci generalizzata Nota sul prodotto riga per colonna di due matrici 2x2 generalizzata Quale implementazione è maggiormente efficiente in termini di tempo di calcolo: ricorsiva o iterativa? Costo computazionale: implementazione ricorsiva O(2 n ), implementazione iterativa O(n). Riusciamo a fare di meglio? Suggerimento. Dimostriamo per induzione che per ogni n 3 «n 1 «1 1 Fib(n) Fib(n 1) = 1 0 Fib(n 1) Fib(n 2) 1 Caso base n = « «2 « = = ««Fib(3) Fib(3 1) Fib(3) Fib(2) = = Fib(3 1) Fib(3 2) Fib(2) Fib(1) «

20 La successione di Fibonacci La successione di Fibonacci generalizzata Implementazione della funzione di Fibonacci generalizzata Nota sul prodotto riga per colonna di due matrici 2x2 generalizzata Quale implementazione è maggiormente efficiente in termini di tempo di calcolo: ricorsiva o iterativa? Costo computazionale: implementazione ricorsiva O(2 n ), implementazione iterativa O(n). Riusciamo a fare di meglio? Suggerimento. Dimostriamo per induzione che per ogni n 3 «n 1 «1 1 Fib(n) Fib(n 1) = 1 0 Fib(n 1) Fib(n 2) 1 Caso base n = « «2 « = = ««Fib(3) Fib(3 1) Fib(3) Fib(2) = = Fib(3 1) Fib(3 2) Fib(2) Fib(1) « Caso induttivo. Assumiamo che la relazione sia vera per n e dimostriamo che vale anche per n + 1. «n «n 1 « = = ««Fib(n) Fib(n 1) 1 1 = = Fib(n 1) Fib(n 2) 1 0 ««Fib(n) + Fib(n 1) Fib(n) Fib(n + 1) Fib(n) = = Fib(n 1) + Fib(n 2) Fib(n 1) Fib(n) Fib(n 1)

21 La successione di Fibonacci La successione di Fibonacci generalizzata Implementazione della funzione di Fibonacci generalizzata Nota sul prodotto riga per colonna di due matrici 2x2 generalizzata Possiamo utilizzare la proprietà precedente per implementare la funzione di Fibonacci in tempo O(log(n)). Perchè? 1: function Fib(n) 2: if n 2 then 3: return 1 4: else «1 1 5: M 1 0 6: MatrixPow(M,n 1) 7: return M[0][0] 8: end if 9: end function 10: procedure MatrixPow(M,n) 11: if n > 1 then 12: MatrixPow(M,n/2) 13: M M M 14: if n dispari then «1 1 15: M M : end if 17: end if 18: end procedure

22 Nota sul prodotto riga per colonna di due matrici 2x2 La successione di Fibonacci La successione di Fibonacci generalizzata Implementazione della funzione di Fibonacci generalizzata Nota sul prodotto riga per colonna di due matrici 2x2 generalizzata Siano abbiamo a b M M = c d = «a b M = e N = c d «« ««a b a a + b c a b + b d = = c d c a + d c c b + d d «a 2 + bc ab + bd ca + dc cb + d 2 ««a b 1 1 M N = = c d 1 0 «a + b a = c + d c «a 1 + b 1 a 1 + b 0 = c 1 + d 1 c 1 + d 0

23 La successione di Fibonacci La successione di Fibonacci generalizzata Implementazione della funzione di Fibonacci generalizzata Nota sul prodotto riga per colonna di due matrici 2x2 generalizzata generalizzata Riusciamo ad implementare efficientemente GFib(x, n) sfruttando l implementazione efficiente di Fib(n)?

24 La successione di Fibonacci La successione di Fibonacci generalizzata Implementazione della funzione di Fibonacci generalizzata Nota sul prodotto riga per colonna di due matrici 2x2 generalizzata generalizzata Riusciamo ad implementare efficientemente GFib(x, n) sfruttando l implementazione efficiente di Fib(n)? E necessario capire come è definita GFib(x, n).

25 La successione di Fibonacci La successione di Fibonacci generalizzata Implementazione della funzione di Fibonacci generalizzata Nota sul prodotto riga per colonna di due matrici 2x2 generalizzata generalizzata Riusciamo ad implementare efficientemente GFib(x, n) sfruttando l implementazione efficiente di Fib(n)? E necessario capire come è definita GFib(x, n). Primi 8 termini della funzione di Fibonacci generalizzata in funzione di x: x, x, 2x, 3x, 5x, 8x, 13x, 21x. Primi 8 termini della funzione di Fibonacci: 1, 1, 2, 3, 5, 8, 13, 21.

26 La successione di Fibonacci La successione di Fibonacci generalizzata Implementazione della funzione di Fibonacci generalizzata Nota sul prodotto riga per colonna di due matrici 2x2 generalizzata generalizzata Riusciamo ad implementare efficientemente GFib(x, n) sfruttando l implementazione efficiente di Fib(n)? E necessario capire come è definita GFib(x, n). Primi 8 termini della funzione di Fibonacci generalizzata in funzione di x: x, x, 2x, 3x, 5x, 8x, 13x, 21x. Primi 8 termini della funzione di Fibonacci: 1, 1, 2, 3, 5, 8, 13, 21. Conclusione: GFib(x, n) = x Fib(n)

27 La successione di Fibonacci La successione di Fibonacci generalizzata Implementazione della funzione di Fibonacci generalizzata Nota sul prodotto riga per colonna di due matrici 2x2 generalizzata generalizzata Riusciamo ad implementare efficientemente GFib(x, n) sfruttando l implementazione efficiente di Fib(n)? E necessario capire come è definita GFib(x, n). Primi 8 termini della funzione di Fibonacci generalizzata in funzione di x: x, x, 2x, 3x, 5x, 8x, 13x, 21x. Primi 8 termini della funzione di Fibonacci: 1, 1, 2, 3, 5, 8, 13, 21. Conclusione: GFib(x, n) = x Fib(n) generalizzata. 1: function GFib(x, n) 2: return x Fib(n) 3: end function

28 InsertionSort: pseudocodice

29 InsertionSort: pseudocodice key = 2, j = 2 j

30 InsertionSort: pseudocodice key = 2, j = 2, i = 1 2 < 5 SWAP j i

31 InsertionSort: pseudocodice key = 4, j = 3 j

32 InsertionSort: pseudocodice key = 4, j = 3, i = 2 4 < 5 SWAP j i

33 InsertionSort: pseudocodice key = 4, j = 3, i = 1 4 > 2 STOP j i

34 InsertionSort: pseudocodice key = 6, j = 4 j

35 InsertionSort: pseudocodice key = 6, j = 4, i = 3 6 > 5 STOP j i

36 InsertionSort: pseudocodice key = 1, j = 5 j

37 InsertionSort: pseudocodice key = 1, j = 5, i = 4 1 < 6 SWAP j i

38 InsertionSort: pseudocodice key = 1, j = 5, i = 3 1 < 5 SWAP j i

39 InsertionSort: pseudocodice key = 1, j = 5, i = 2 1 < 4 SWAP j i

40 InsertionSort: pseudocodice key = 1, j = 5, i = 1 1 < 2 SWAP j i

41 InsertionSort: pseudocodice key = 3, j = 6 j

42 InsertionSort: pseudocodice key = 3, j = 6, i = 5 3 < 6 SWAP j i

43 InsertionSort: pseudocodice key = 3, j = 6, i = 4 3 < 5 SWAP j i

44 InsertionSort: pseudocodice key = 3, j = 6, i = 3 3 < 4 SWAP j i

45 InsertionSort: pseudocodice key = 3, j = 6, i = 3 3 > 2 STOP j i

46 InsertionSort: pseudocodice InsertionSort: pseudocodice Pseudo codice dell algoritmo InsertionSort. 1: procedure InsertionSort(A) 2: for j 2 to Length(A) do 3: key A[j] 4: i j 1 5: while i > 0 & A[i] > key do 6: A[i + 1] A[i] 7: i i 1 8: end while 9: A[i + 1] key 10: end for 11: end procedure

47 InsertionSort: pseudocodice InsertionSort: pseudocodice Pseudo codice dell algoritmo InsertionSort. 1: procedure InsertionSort(A) 2: for j 2 to Length(A) do 3: key A[j] 4: i j 1 5: while i > 0 & A[i] > key do 6: A[i + 1] A[i] 7: i i 1 8: end while 9: A[i + 1] key 10: end for 11: end procedure In cosa differisce dall esempio precedente? Di quale accortezza dobbiamo tenere conto per una implementazione in C?

48 InsertionSort: pseudocodice Nota (superflua) sulla lettura di una lista di interi da file Funzione C che legge una lista di interi da un file. int * readlist ( char * file, int *n) { FILE *in = fopen (file,"r"); int * list,x; if( in== NULL ) return NULL ; while ( fscanf (in,"% d",&x)!= EOF ) (*n) ++; list = ( int *) calloc (*n, sizeof ( int )); rewind (in); (*n) =0; while ( fscanf (in,"% d",&x)!= EOF ) list [(* n) ++]= x; fclose (in); return list ; }

Esercizio 1 (15 punti)

Esercizio 1 (15 punti) Esercizio 1 (15 punti) Corsi di laurea in Ingegnera Elettronica e Ingegneria Gestionale Fondamenti di Programmazione / Fondamenti di Informatica I Prova scritta del 30 giugno 2017 In un lontano paese da

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica CdL in Matematica e CdL in Matematica per le Applicazioni Prof. G. Nicosia Dipartimento di Matematica e Informatica Facoltà di Scienze MM.FF.NN. Università degli Studi di Catania A.

Dettagli

RICORSIONE. Informatica B - A.A. 2013/2014

RICORSIONE. Informatica B - A.A. 2013/2014 RICORSIONE Informatica B - A.A. 2013/2014 RICORSIONE Che cos è la ricorsione? Un sottoprogramma P richiama se stesso (ricorsione diretta) Un sottoprogramma P richiama un altro sottoprogramma Q che comporta

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Introduzione al Corso Emanuela Merelli Università di Camerino 4 ottobre 2016 Struttura del corso Il corso consiste di 42 ore di lezione 2 ore di ricevimento settimanali Il corso viene valutato in 6 CFU

Dettagli

Fondamenti di Informatica A.A Studenti

Fondamenti di Informatica A.A Studenti Fondamenti di Informatica A.A. 2008-2009 Corso di recupero Ingegneria Area Industriale Docente: Laura Gilda Paccagnella Dipartimento di Matematica Pura ed Applicata tel. 049-8271417 Torre Archimede - Via

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Introduzione al Corso Emanuela Merelli Università di Camerino 23 ottobre 2017 Struttura del corso Il corso consiste di 42 ore di lezione 2 ore di ricevimento settimanali Il corso viene valutato in 6 CFU

Dettagli

Esercizio 1 (15 punti)

Esercizio 1 (15 punti) Esercizio 1 (15 punti) Corsi di laurea in Ingegnera Elettronica e Ingegneria Gestionale Fondamenti di Programmazione / Fondamenti di Informatica I Prova scritta del 16 giugno 2017 Il noto gioco MasterMind

Dettagli

Algoritmi e Strutture dati a.a. 2013/2014

Algoritmi e Strutture dati a.a. 2013/2014 a.a. 2013/2014 Dr Informazioni docente E-mail docente: fdrmra@unife.it Ricevimento: Mercoledì 15:00-16:00 presso ufficio docenti a contratto (3 piano), Dipartimento di Matematica e Informatica, Campus

Dettagli

Relativamente agli esempi sopra riportati, al termine dell esecuzione della funzione il file di uscita dovrà contenere quanto riportato a lato.

Relativamente agli esempi sopra riportati, al termine dell esecuzione della funzione il file di uscita dovrà contenere quanto riportato a lato. Corsi di laurea in Ingegnera Elettronica e Ingegneria Gestionale Fondamenti di Programmazione / Fondamenti di Informatica I Prova scritta del 2 febbraio 2016 Esercizio 1 (16 punti) Un file di testo contiene

Dettagli

Esempio : i numeri di Fibonacci

Esempio : i numeri di Fibonacci Esempio : i numeri di Fibonacci La successione di Fibonacci F 1, F 2,... F n,... è definita come: F 1 =1 F 2 =1 F n =F n 1 F n 2,n 2 Leonardo Fibonacci (Pisa, 1170 Pisa, 1250) http://it.wikipedia.org/wiki/leonardo_fibonacci

Dettagli

Gestione dei file. File di testo e binari

Gestione dei file. File di testo e binari Gestione dei file Un file e definito come un oggetto, presente nel file system, costituito da una sequenza continua di bytes Un file, per poter essere utilizzato, deve essere aperto Successivamente e possibile

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Introduzione al Corso Emanuela Merelli (Camerino) 1 Maria Rita Di Berardini (Ascoli Piceno) 1 Polo Informatico - Scuola di Scienze e Tecnologie Università di Camerino 7 ottobre 2010 Struttura del corso

Dettagli

INTRODUZIONE. ALLA PROGRAMMAZIONEColonna 1. in linguaggio C

INTRODUZIONE. ALLA PROGRAMMAZIONEColonna 1. in linguaggio C 12 10 8 INTRODUZIONE 6 4 ALLA PROGRAMMAZIONEColonna 1 Colonna 2 Colonna 3 in linguaggio C 2 0 Riga 1 Riga 2 Riga 3 Riga 4 di Mauro Casula { Scopi del seminario Essere chiaro ed esauriente; Spiegare nei

Dettagli

Tempo e spazio di calcolo (continua)

Tempo e spazio di calcolo (continua) Tempo e spazio di calcolo (continua) I numeri di Fibonacci come case study (applichiamo ad un esempio completo le tecniche illustrate nei lucidi precedenti) Abbiamo introdotto tecniche per la correttezza

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica Laboratorio di Informatica Seconda lezione a Python Dottore Paolo Parisen Toldin - parisent@cs.unibo.it Dottoressa Sara Zuppiroli - sara.zuppiroli@unibo.it L'importanza di capire Perché non dobbiamo dichiarare

Dettagli

Algoritmi e Strutture dati a.a. 2012/2013

Algoritmi e Strutture dati a.a. 2012/2013 a.a. 2012/2013 Dr Informazioni docente E-mail docente: maria.federico@unimore.it Ricevimento: Su appuntamento (inviare e-mail) 2 Informazioni lezioni Lunedì, Martedì, Mercoledì 10:30-13:30 aula INFO2 15

Dettagli

Tempo e spazio di calcolo (continua)

Tempo e spazio di calcolo (continua) Tempo e spazio di calcolo (continua) I numeri di Fibonacci come case study (applichiamo ad un esempio completo le tecniche illustrate nei lucidi precedenti) Abbiamo introdotto tecniche per la correttezza

Dettagli

Addendum alle chiamate di sistema per la gestione processi. E Mumolo

Addendum alle chiamate di sistema per la gestione processi. E Mumolo Addendum alle chiamate di sistema per la gestione processi E Mumolo Definiamo un processo proc.c che scrive l'argomento passato in linea: void main(int argc, char *argv[]){ printf("sono il processo %s\n",

Dettagli

Ricorsione. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna

Ricorsione. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ 2 Definizione informale: la ricorsione è un procedimento mediante il quale

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi Ricorsivi e Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 I conigli di Fibonacci Ricerca Binaria L isola dei conigli

Dettagli

Ricorsione. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna

Ricorsione. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ 2 Definizione informale: la ricorsione è un procedimento mediante il quale

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Introduzione agli algoritmi Università di Camerino Corso di Laurea in Informatica 6CFU I periodo didattico Anno accademico 2005-06 Emanuela Merelli emanuela.merelli@unicam.it

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Informazioni sul corso + Un introduzione informale agli algoritmi Domenico Fabio Savo 1 Domenico Fabio Savo Email: savo@dis.uniroma1.it Web: http://www.dis.uniroma1.it/~savo

Dettagli

Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol.

Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol. Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione prof. Lorenzo Porcelli e mail: genna18@iol.it sito: users.iol.it/genna18 Risoluzione di un problema Dato

Dettagli

Operazioni su file di caratteri

Operazioni su file di caratteri Operazioni su file di caratteri Apertura fopen Chiusura fclose Scrittura fprintf Lettura fscanf Controllo fine file feof Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1 Apertura di un file: Si

Dettagli

int ninv; /* numero di inventario */

int ninv; /* numero di inventario */ 1) Scrivere il programma C che legga da un file di testo ("dati.dat") i record con dati relativi ad un archivio di dischi (utilizzando la struttura data) e scriva il file dati1.dat con i nomi degli artisti

Dettagli

La ricorsione. Sommario. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino

La ricorsione. Sommario. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino La ricorsione Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino Sommario! Definizione di ricorsione e strategie divide et impera! Semplici algoritmi ricorsivi! Merge

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Capitolo 1 Un introduzione informale agli algoritmi Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Definizione informale di algoritmo Insieme di istruzioni, definite

Dettagli

Il presente plico contiene 4 esercizi e deve essere debitamente compilato con cognome e nome, numero di matricola.

Il presente plico contiene 4 esercizi e deve essere debitamente compilato con cognome e nome, numero di matricola. Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Appello 19 Febbraio 2015 COGNOME E NOME RIGA COLONNA MATRICOLA Spazio riservato ai docenti Il presente plico contiene 4 esercizi e

Dettagli

Cognome e Nome : Corso e Anno di Immatricolazione: Modalità di Laboratorio (Progetto/Prova) :

Cognome e Nome : Corso e Anno di Immatricolazione: Modalità di Laboratorio (Progetto/Prova) : PROGRAMMAZIONE (Corsi B e C) Pre-appello di Gennaio 2004 (A.A. 2003/2004) PROGRAMMAZIONE (B e C) S. Straordinaria - Appello di Gennaio (A.A. 2002/2003) 22 Gennaio 2004 ore 11 Aula II di Facoltà (Durata:

Dettagli

Algoritmi e Sperimentazioni

Algoritmi e Sperimentazioni Algoritmi e Sperimentazioni Introduzione al corso Il corso Corso del secondo anno, curriculum STISI 9 crediti tenuto da: Ugo de Liguoro (teoria), Ferruccio Damiani (laboratorio) 54 + 36 ore di lezione/esercitazione

Dettagli

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length); Fondamenti di Informatica L-A (A.A. 004/005) - Ingegneria Informatica Prof.ssa Mello & Prof. Bellavista I Prova Intermedia del 11/11/004 - durata h - COMPITO B Esercizio 1 (punti 1) Una associazione di

Dettagli

RELAZIONE DELLA PROVA DI LABORATORIO DI INFORMATICA

RELAZIONE DELLA PROVA DI LABORATORIO DI INFORMATICA RELAZIONE DELLA PROVA DI LABORATORIO DI INFORMATICA Anno scolastico Lab informatica AULA n 35 Data inizio svolgimento Progr. relazione primo trimestre secondo pentamestre Cognome e Nome DATI DELLO STUDENTE

Dettagli

Programmazione I - Laboratorio

Programmazione I - Laboratorio Programmazione I - Laboratorio Esercitazione 6 - Liste Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti di.unipi.it 2. Dipartimento

Dettagli

Informazioni sul corso

Informazioni sul corso Informazioni sul corso Marco Alberti Programmazione e Laboratorio, A.A. 2016-2017 Dipartimento di Matematica e Informatica - Università di Ferrara Ultima modifica: 11 ottobre 2016 Programmazione Programmazione

Dettagli

LA RICORSIONE IN C. CdL Ingegneria Informatica n.o. Anno Accademico 2006/07 Fondamenti di Informatica I corso A Giacomo Piscitelli pag.

LA RICORSIONE IN C. CdL Ingegneria Informatica n.o. Anno Accademico 2006/07 Fondamenti di Informatica I corso A Giacomo Piscitelli pag. I lucidi sono una rielaborazione e integrazione di quelli messi a disposizione dei docenti nel sito relativo al testo: Informatica: arte e mestiere 2/ed Stefano Ceri, Dino Mandrioli, Licia Sbattella Copyright

Dettagli

Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base

Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1. Sia T una stringa arbitraria di lunghezza n 1 su un alfabeto Σ. È sempre possibile

Dettagli

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA INFORMATICA B + C

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA INFORMATICA B + C INFORMATICA B + C (sezione L-Z) Ingegneria Elettrica, Chimica e dei Materiali La ricorsione Ricorsione Che cos è la ricorsione? Un sottoprogramma P richiama se stesso (ricorsione diretta) Un sottoprogramma

Dettagli

LABORATORIO DI ALGORITMI E STRUTTURE DATI A-L. Ingegneria e scienze informatiche Cesena A.A: 2016/2017 Docente: Greta Sasso

LABORATORIO DI ALGORITMI E STRUTTURE DATI A-L. Ingegneria e scienze informatiche Cesena A.A: 2016/2017 Docente: Greta Sasso LABORATORIO DI ALGORITMI E STRUTTURE DATI A-L Ingegneria e scienze informatiche Cesena A.A: 2016/2017 Docente: Greta Sasso Presentazione Docente: Greta Sasso greta.sasso2@unibo.it Orario e luogo delle

Dettagli

Librerie C. Corso di Linguaggi e Traduttori 1 AA Corso di Linguaggi e Traduttori 1 AA stdio.h

Librerie C. Corso di Linguaggi e Traduttori 1 AA Corso di Linguaggi e Traduttori 1 AA stdio.h Corso di Linguaggi e Traduttori 1 AA 2004-05 1 Corso di Linguaggi e Traduttori 1 AA 2004-05 stdio.h 2 Funzioni comuni di I/O? Le piu' comuni funzioni che permettono I/O sono getchar() e putchar():? int

Dettagli

algoritmi e strutture di dati

algoritmi e strutture di dati algoritmi e strutture di dati introduzione al corso maurizio patrignani roberto de virgilio algoritmi e strutture di dati nuovo ordinamento (d.m. 509/99) laurea in ingegneria informatica 2 anno 5 crediti

Dettagli

Programmazione Ricorsione

Programmazione Ricorsione Programmazione Ricorsione Samuel Rota Bulò DAIS Università Ca Foscari di Venezia. Outline Ricorsione Cos è la ricorsione? In matematica... n! = { n (n 1)! se n > 0 1 altrimenti N = {0} {i + 1 : i N} Principio

Dettagli

Input / Output. Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard

Input / Output. Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard Stdio.h Input / Output Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard Sia i file che i dispositivi (tastiera, schermo...) sono visti come

Dettagli

Gestione dinamica della memoria

Gestione dinamica della memoria Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Gestione dinamica della memoria Pietro Di Lena - pietro.dilena@unibo.it A pessimistic programmer sees the array as half empty.

Dettagli

ALGORITMI E STRUTTURE DATI

ALGORITMI E STRUTTURE DATI ALGORITMI E STRUTTURE DATI Esercitazioni AndreA Orlandini http://www.dia.uniroma3.it/~orlandin/asd/ e-mail: orlandin@dia.uniroma3.it Orario di ricevimento: Martedì 14.00-16.00 Introduzione al C + Array

Dettagli

Input / Output. Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard

Input / Output. Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard Stdio.h Input / Output Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard Sia i file che i dispositivi (tastiera, schermo...) sono visti come

Dettagli

INFORMATICA. Strutture iterative

INFORMATICA. Strutture iterative INFORMATICA Strutture iterative Strutture iterative Si dice ciclo (loop) una sequenza di istruzioni che deve essere ripetuta più volte consecutivamente. Si consideri ad esempio il calcolo del fattoriale

Dettagli

Progetto e analisi di algoritmi

Progetto e analisi di algoritmi Progetto e analisi di algoritmi Roberto Cordone DTI - Università degli Studi di Milano Polo Didattico e di Ricerca di Crema Tel. 0373 / 898089 E-mail: cordone@dti.unimi.it Ricevimento: su appuntamento

Dettagli

C: panoramica. Violetta Lonati

C: panoramica. Violetta Lonati C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati

Dettagli

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C CORSO DI LABORATORIO DI INFORMATICA CORSO DI LAUREA IN SDM ANNO ACCADEMICO 2011-2012 Docente: R. Sparvoli Esercitazioni: R. Sparvoli, F. Palma OTTAVA ESPERIENZA DI LABORATORIO L elaborazione dei files

Dettagli

Librerie C. Corso di Linguaggi e Traduttori 1 AA

Librerie C. Corso di Linguaggi e Traduttori 1 AA Corso di Linguaggi e Traduttori 1 AA 2004-05 1 Corso di Linguaggi e Traduttori 1 AA 2004-05 stdio.h 2 Funzioni comunidi I/O? Le piu' comuni funzioni che permettono I/O sono getchar() e putchar():? int

Dettagli

Esercitazione 11. Liste semplici

Esercitazione 11. Liste semplici Esercitazione 11 Liste semplici Liste semplici (o lineari) Una lista semplice (o lineare) è una successione di elementi omogenei che occupano in memoria una posizione qualsiasi. Ciascun elemento contiene

Dettagli

Strutture dati dinamiche in C (II)

Strutture dati dinamiche in C (II) Strutture dati dinamiche in C (II) Laboratorio di Linguaggi di Programmazione a.a. 2001/2002 dott.ssa Francesca A. Lisi lisi@di.uniba.it Sommario Le liste concatenate (ancora ma in modo più formale) L

Dettagli

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA. INFORMATICA B Ingegneria Elettrica. La ricorsione

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA. INFORMATICA B Ingegneria Elettrica. La ricorsione INFORMATICA B Ingegneria Elettrica La ricorsione Ricorsione Che cos è la ricorsione? Un sottoprogramma P richiama se stesso (ricorsione diretta) Un sottoprogramma P richiama un altro sottoprogramma Q che

Dettagli

FONDAMENTI DI INFORMATICA II

FONDAMENTI DI INFORMATICA II Università degli Studi di Ferrara Facoltà di Ingegneria APPUNTI DEL CORSO DI FONDAMENTI DI INFORMATICA II Obiettivi del corso: Approfondire l uso del linguaggio C rispetto a quanto noto dal corso di Fondamenti

Dettagli

Corso di Informatica 1 Esercitazione n. 4

Corso di Informatica 1 Esercitazione n. 4 Corso di Informatica 1 Esercitazione n. 4 Marco Liverani Esercizio n. 1 Letti in input due numeri interi n > 0 e k > 1 costruire un array A di n numeri interi casuali minori di 100 che non siano multipli

Dettagli

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Appello del 21 Luglio 2010 COGNOME E NOME RIGA COLONNA MATRICOLA

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Appello del 21 Luglio 2010 COGNOME E NOME RIGA COLONNA MATRICOLA Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Appello del 21 Luglio 2010 COGNOME E NOME RIGA COLONNA MATRICOLA Spazio riservato ai docenti Il presente plico contiene 4 esercizi,

Dettagli

file fisico file logico

file fisico file logico I files Un file è una struttura di dati residente su una memoria di massa (file fisico) Un programma vede un file come una sequenza di bytes (file logico) Generalizzando, un file può comprendere qualsiasi

Dettagli

Complessità algoritmi su strutture dati (riassunto)

Complessità algoritmi su strutture dati (riassunto) Complessità algoritmi su strutture dati (riassunto) Struttura di dato Algoritmo di ricerca Complessità (caso peggiore) applicabile Tavola come array non Ricerca sequenziale O(N) ordinato (N elementi) Tavola

Dettagli

Puntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata

Puntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata Puntatori int i = 10; int * pi = &i; pi i = 10 116 int * pi = pi contiene un informazione che mi permette di accedere ( puntare ) ad una variabile intera Un puntatore contiene un numero che indica la locazione

Dettagli

Laboratorio di Programmazione: Linguaggio C Lezione 21 del 19 maggio 2014

Laboratorio di Programmazione: Linguaggio C Lezione 21 del 19 maggio 2014 Laboratorio di Programmazione: Linguaggio C Lezione 21 del 19 maggio 2014 Damiano Macedonio Esercizio 1 Scrivere una funzione che riceve in ingresso un puntatore ad un array di interi e modifica tale array

Dettagli

Sommario PREFAZIONE...XI CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 CAPITOLO 2: INTRODUZIONE ALLA PROGRAMMAZIONE IN C...

Sommario PREFAZIONE...XI CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 CAPITOLO 2: INTRODUZIONE ALLA PROGRAMMAZIONE IN C... Sommario PREFAZIONE...XI Aggiornamenti e novità... xi Lo scopo di questo libro... xii Diagramma delle dipendenze... xii La metodologia di insegnamento... xiii Panoramica sul libro... xvi Ringraziamenti...

Dettagli

prova.c #include <stdio.h> char funzione(char); codice oggetto del main()

prova.c #include <stdio.h> char funzione(char); codice oggetto del main() prova.c #include char funzione(char); {char c= a ; printf( Ecco il carattere: %c\n,c); c=funzione(c); printf( Ecco il carattere modificato: %c\n,c); char funzione(char tmp) {if(tmp

Dettagli

Il linguaggio C. Breve panoramica su stdio.h

Il linguaggio C. Breve panoramica su stdio.h Il linguaggio C Breve panoramica su stdio.h 1 Input/Output: stdio.h Contiene definizioni di costanti legate all I/O es. EOF (end of file) #define EOF (-1) valore restituito alla fine di un file Contiene

Dettagli

Dispense per i corsi di Informatica generale Corso di laurea in Matematica e. Introduzione agli Algoritmi Corso di laurea in Informatica

Dispense per i corsi di Informatica generale Corso di laurea in Matematica e. Introduzione agli Algoritmi Corso di laurea in Informatica Dispense per i corsi di Informatica generale Corso di laurea in Matematica e Introduzione agli Algoritmi Corso di laurea in Informatica Prof. Tiziana Calamoneri Prof. Giancarlo Bongiovanni Questi appunti

Dettagli

Precedenza e associatività. Complementi sul C - 2. Esempi. Esempi

Precedenza e associatività. Complementi sul C - 2. Esempi. Esempi Complementi sul C - 2 Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione in C Precedenza e associatività () [] ->. S D! ~ ++ + * & (cast ) sizeof S D * / % S D + - (somma e sottrazione) S D >

Dettagli

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN Breve Manuale di Riferimento sulla Sintassi Linguaggi e versione aggiornata al 05/02/2004 Sommario Elementi di Base... 2 Dati, Tipi e Dichiarazioni... 2 Tipi di Dato di Base... 2 Tipi di Dato Strutturati...

Dettagli

Indovina la lettera...

Indovina la lettera... Indovina la lettera... La lezione di oggi consiste nel preparare un programma che chiede all'utente di indovinare quale sia il carattere generato dal programma stesso in modo casuale. Il numero totale

Dettagli

Scrittura formattata - printf

Scrittura formattata - printf Esercizi su Input/Output con formato FormattedIO 1 Scrittura formattata - printf Funzione printf int printf ( , ) La funzione restituisce un valore intero uguale ai caratteri

Dettagli

Fondamenti di Programmazione

Fondamenti di Programmazione A.A. 08/09 Fondamenti di Programmazione (canale E-O) Docente: Prof.ssa Tiziana Calamoneri calamo@di.uniroma1.it Esercitatore: Dott. Roberto Petroccia petroccia@di.uniroma1.it Pagina del corso: http://twiki.di.uniroma1.it/twiki/view/programmazione1/eo/webhome

Dettagli

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Fondamenti di Informatica 6. Algoritmi e pseudocodifica Vettori e matrici #1 Fondamenti di Informatica 6. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile A.A. 2010-2011 1 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie

Dettagli

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013 Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Sommario La ricorsione Metodi ricorsivi Esercizi proposti 16/01/2013 2 La ricorsione In Java ogni metodo può chiamare anche se stesso,

Dettagli

Il linguaggio C Strutture

Il linguaggio C Strutture Il linguaggio C Strutture Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Linguaggio C -- Strutture 2 Ringraziamenti Questi

Dettagli

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 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 07/02/07 Nota Questi lucidi sono tratti

Dettagli

Algoritmi e Strutture Dati. Capitolo 4 Ordinamento: Selection e Insertion Sort

Algoritmi e Strutture Dati. Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati Capitolo 4 Ordinamento: Selection e Insertion Sort Ordinamento Dato un insieme S di n elementi presi da un dominio totalmente ordinato, ordinare S in ordine non crescente o non

Dettagli

Informatica 1. Prova di recupero 21 Settembre 2001

Informatica 1. Prova di recupero 21 Settembre 2001 Informatica 1 Prova di recupero 21 Settembre 2001 Si risolvano i seguenti esercizi. Ai fini della determinazione del voto finale il loro punteggio andrà sommato al punteggio del laboratorio. Il tempo complessivo

Dettagli

Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione

Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione

Dettagli

Algoritmi e strutture dati

Algoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 1 Un introduzione informale agli algoritmi Definizione informale di algoritmo Insieme di istruzioni, definite passo per passo, in modo da poter essere eseguite meccanicamente

Dettagli

Programmazione di base

Programmazione di base Fondamenti di Informatica Primo Appello 01-17 8 febbraio 017 Rispondi alle domande negli appositi spazi. I punti assegnati per ogni domanda sono indicati nel riquadro a lato. L'esame contiene 10 domande,

Dettagli

n n 1 n = > Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita

n n 1 n = > Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita n! = 1 n( n 1)! se se n n = > 0 0 dove n è un numero intero non negativo Il calcolo del fattoriale

Dettagli

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system - Complementi - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system - Università degli Studi di Brescia Prof. Massimiliano Giacomin

Dettagli

Sommario. Manipolazione sequenziale di file in C Funzioni di base per I/O di file

Sommario. Manipolazione sequenziale di file in C Funzioni di base per I/O di file File Input/Output 1 Sommario Manipolazione sequenziale di file in C Funzioni di base per I/O di file 2 Manipolazione di file I file devono essere aperti prima dell uso Associa un puntatore a file a ogni

Dettagli

File e puntatori a file

File e puntatori a file File e puntatori a file Vitoantonio Bevilacqua vitoantonio.bevilacqua@poliba.it La libreria stdio.h mette a disposizione delle funzioni che hanno la peculiarità di trattare con questa nuova tipologia di

Dettagli

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt); Un esempio per iniziare Il controllo del programma in C DD Cap.3 pp.91-130 /* calcolo di 8!*/ #include #define C 8 int main() int i=1; int fatt=1; while (i

Dettagli

1 (6) 2 (7) 3 (7) 4 (7) 5 (6)

1 (6) 2 (7) 3 (7) 4 (7) 5 (6) CORSO DI LAUREA IN INGEGNERIA ELETTRICA, CHIMICA e MATERIALI Informatica B anno accademico 010-011 Prof. Danilo ARDAGNA Seconda Prova in Itinere 7.06.011 Durata 1h 30 Valutazioni 1 (6) (7) 3 (7) 4 (7)

Dettagli

Corso di Perfezionamento

Corso di Perfezionamento Programmazione Dinamica 1 1 Dipartimento di Matematica e Informatica Università di Camerino 15 febbraio 2009 Tecniche di Programmazione Tecniche di progettazione di algoritmi: 1 Divide et Impera 2 Programmazione

Dettagli

FUNZIONI RICORSIVE PROGRAMMAZIONE RICORSIVA: Esempi di problemi ricorsivi:

FUNZIONI RICORSIVE PROGRAMMAZIONE RICORSIVA: Esempi di problemi ricorsivi: FUNZIONI RICORSIVE Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento (chiamata) a se stessa. Esempio: Esempi di problemi ricorsivi: 1) Somma dei primi

Dettagli

Programmi in Assembly

Programmi in Assembly Programmi in Assembly Prof. Alberto Borghese Dipartimento di Scienze dell Informazione borghese@dsi.unimi.it Università degli Studi di Milano 1/23 Esempio Numeri positivi # Programma che copia tramite

Dettagli

PROVA SCRITTA DEL CORSO DI CORSO DI LAUREA IN INGEGNERIA BIOMEDICA ED ELETTRICA 9/6/2008

PROVA SCRITTA DEL CORSO DI CORSO DI LAUREA IN INGEGNERIA BIOMEDICA ED ELETTRICA 9/6/2008 PROVA SCRITTA DEL CORSO DI CORSO DI LAUREA IN INGEGNERIA BIOMEDICA ED ELETTRICA 9/6/2008 MOTIVARE IN MANIERA CHIARA LE SOLUZIONI PROPOSTE A CIASCUNO DEGLI ESERCIZI SVOLTI ESERCIZIO 1 (5 punti) Descrivere

Dettagli

Istruzioni di Ciclo. Unità 4. Domenico Daniele Bloisi

Istruzioni di Ciclo. Unità 4. Domenico Daniele Bloisi Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm

Dettagli

Introduzione ai puntatori in C Definizione

Introduzione ai puntatori in C Definizione Introduzione ai puntatori in C Definizione Un puntatore è una variabile che contiene l indirizzo di un altra variabile Tramite i puntatori si può quindi accedere a un oggetto indirettamente (si usa il

Dettagli

Un algoritmo realizza una relazione funzionale tra i valori di input e quelli di output

Un algoritmo realizza una relazione funzionale tra i valori di input e quelli di output Un algoritmo realizza una relazione funzionale tra i valori di input e quelli di output F = { (s, s ) } per ogni s esiste una e una sola coppia (s, s ). Esempio: un algoritmo che calcola il quadrato di

Dettagli

Esempi di Problemi Iterativi

Esempi di Problemi Iterativi Corso di Laurea Ingegneria Civile Elementi di Informatica Esempi di Problemi Iterativi C. Limongelli Esempi di Problemi Iterativi 1 Contenuti Esercizi: Palindroma Anagramma Fibonacci Esempi di Problemi

Dettagli

Esercizi Array Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Esercizi Array Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm

Dettagli

I file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002

I file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002 I file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002 dott.ssa Francesca A. Lisi lisi@di.uniba.it Sommario Generalità sui file in C I file ad accesso sequenziale I file di testo Riferimenti

Dettagli

Algoritimi e Strutture Dati modulo 2

Algoritimi e Strutture Dati modulo 2 Algoritimi e Strutture Dati modulo 2 Moreno Marzolla Dip. di Informatica Scienza e Ingegneria Università di Bologna moreno.marzolla@unibo.it 2 Presentiamoci Modulo 2 (II sem.) Orario delle lezioni Moreno

Dettagli

Programmazione I - Laboratorio

Programmazione I - Laboratorio Programmazione I - Laboratorio Esercitazione 4 - Puntatori, vettori e stringhe Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti

Dettagli

Corso di Fondamenti di Programmazione canale E-O. Un esempio. Funzioni ricorsive. La ricorsione

Corso di Fondamenti di Programmazione canale E-O. Un esempio. Funzioni ricorsive. La ricorsione Corso di Fondamenti di Programmazione canale E-O Tiziana Calamoneri Ricorsione DD Cap. 5, pp. 160-184 KP Cap. 5, pp. 199-208 Un esempio Problema: prendere in input un intero e calcolarne il fattoriale

Dettagli

L organizzazione dei programmi

L organizzazione dei programmi L organizzazione dei programmi Lo sviluppo top-down L.S. Touschek - A.S. 2015/2016 - I fondamenti del Linguaggio C F. Cardarelli Lo sviluppo top-down I problemi complessi Blocco 1 Istruzione 1 Istruzione

Dettagli