Fondamenti di Informatica II Ilaria Castelli castelli@dii.unisi.it Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione A.A. 2009/2010 I. Castelli Introduzione, A.A. 2009/2010 1/8
Testi di riferimento Slide del corso http://www.dii.unisi.it/~castelli/fondinf2_2010.html Introduction to algorithms. T. H. Cormer, C. E. Leiserson, R. L. Rivest Qualsiasi manuale di programmazione in Java, C, C++. I. Castelli Introduzione, A.A. 2009/2010 2/8
Introduzione Teoria degli insiemi Relazioni Funzioni Fondamenti di informatica I. Castelli Introduzione, A.A. 2009/2010 3/8
Teoria degli insiemi Un insieme è una collezione S di oggetti distinguibili. Gli elementi di S sono presi da un universo U. Esempi: l insieme vuoto l insieme dei numeri naturali N, l insieme dei numeri reali R, ecc. S = {1, 5, 7} con U = N Operazioni tra insiemi Intersezione A B = {x : x A e x B} Unione A B = {x : x A o x B} Complemento A = U A = {x : x U e x / A} I. Castelli Introduzione, A.A. 2009/2010 4/8
Teoria degli insiemi Un insieme è una collezione S di oggetti distinguibili. Gli elementi di S sono presi da un universo U. Esempi: l insieme vuoto l insieme dei numeri naturali N, l insieme dei numeri reali R, ecc. S = {1, 5, 7} con U = N Proprietà degli insiemi Commutativa A B = B A A B = B A Distributiva A (B C) = (A B) (A C) A (B C) = (A B) (A C) Associativa A (B C) = (A B) C A (B C) = (A B) C Leggi di De Morgan A (B C) = (A B) (A C) A (B C) = (A B) (A C) I. Castelli Introduzione, A.A. 2009/2010 4/8
Teoria degli insiemi Un insieme è una collezione S di oggetti distinguibili. Gli elementi di S sono presi da un universo U. Esempi: l insieme vuoto l insieme dei numeri naturali N, l insieme dei numeri reali R, ecc. S = {1, 5, 7} con U = N Partizione, cardinalità, prodotto cartesiano S = {S i } è una partizione dell insieme S se: S i, S j S, i j S i S j = e S = S S i S S i S indica la cardinalità di un insieme Prodotto cartesiano di due insiemi: A B = {(a, b) : a A e b B} I. Castelli Introduzione, A.A. 2009/2010 4/8
Relazioni Una relazione binaria R tra due insiemi A e B è un sottoinsieme del prodotto cartesiano A B. Se (a, b) R, scriviamo arb. Proprietà Riflessiva: ara, a A e = sono relazioni riflessive in N, ma < no! Simmetrica: arb bra, a, b A = è simmetrica, < no! Transitiva: arb e brc arc, a, b, c A <,, = sono transitive Antisimmetrica: arb e bra a = b è antisimmetrica I. Castelli Introduzione, A.A. 2009/2010 5/8
Relazioni Relazione di equivalenza Una relazione riflessiva, simmetrica e transitiva si dice relazione di equivalenza. Data una relazione di equivalenza R su un insieme A, si dice classe di equivalenza di a A l insieme [a] = {b A : arb} Relazione d ordine Una relazione riflessiva, antisimmetrica e transitiva si dice relazione d ordine (parziale). Una relazione d ordine è totale se a, b A: arb oppure bra. Cioè qualsiasi coppia di elementi di A è confrontabile secondo la relazione stessa. Esempio:, I. Castelli Introduzione, A.A. 2009/2010 6/8
Funzioni Una funzione f è una relazione binaria su A B, tale che ad ogni elemento a A viene associato univocamente un elemento b B, cioè (a, b) f. A è il dominio di f, B è il codominio di f. Se f : A B e b = f(a), b è l immagine di a tramite f. Immagine di un insieme A A tramite f: f(a ) = {b B : b = f(a) per qualche a A } Una funzione è suriettiva quando l immagine del dominio coincide con il codominio b B, a A : b = f(a) iniettiva quando ad elementi distinti del dominio corrispondono elementi distinti del codominio a 1, a 2 A, a 1 a 2 f(a 1 ) f(a 2 ) biettiva se è iniettiva e suriettiva. Se f è biettiva, allora è definita la sua inversa f 1. f 1 (b) = a f(a) = b I. Castelli Introduzione, A.A. 2009/2010 7/8
Fondamenti di informatica Algoritmo Sequenza ben definita di istruzioni che specificano le operazioni da eseguire per risolvere un problema (o meglio, una classe di problemi). Un algoritmo prende dei dati in ingresso (input), li elabora, e produce dei dati di uscita (output). Si suppone che conosciate: i concetti di variabile, costante, array, struttura Variabile = porzione di memoria destinata a contenere dei dati che possono essere modificati nel corso dell esecuzione di un programma. È identificata da un nome. Definendo il tipo di una variabile, si definisce il range di valori che può assumere, e le operazioni possibili con essa. Costante = porzione di memoria, anch essa identificata da un nome, il cui contenuto non può essere modificato durante l esecuzione di un programma. Array = struttura dati costituita da un insieme di elementi omogenei accessibili tramite indici. Struttura = struttura dati complessa che consente di considerare elementi non omogenei, come un unica entità logica. le istruzioni per il controllo di flusso (if-then-else, switch, while, do-while, for); i fondamenti della programmazione ( C, Java, C++) I. Castelli Introduzione, A.A. 2009/2010 8/8
Fondamenti di informatica Algoritmo Sequenza ben definita di istruzioni che specificano le operazioni da eseguire per risolvere un problema (o meglio, una classe di problemi). Un algoritmo prende dei dati in ingresso (input), li elabora, e produce dei dati di uscita (output). Si suppone che conosciate: i concetti di variabile, costante, array, struttura le istruzioni per il controllo di flusso (if-then-else, switch, while, do-while, for); T C F C F I I1 I2 T I T C F i fondamenti della programmazione ( C, Java, C++) I. Castelli Introduzione, A.A. 2009/2010 8/8
Fondamenti di informatica Algoritmo Sequenza ben definita di istruzioni che specificano le operazioni da eseguire per risolvere un problema (o meglio, una classe di problemi). Un algoritmo prende dei dati in ingresso (input), li elabora, e produce dei dati di uscita (output). Si suppone che conosciate: i concetti di variabile, costante, array, struttura le istruzioni per il controllo di flusso (if-then-else, switch, while, do-while, for); i fondamenti della programmazione ( C, Java, C++) I. Castelli Introduzione, A.A. 2009/2010 8/8