FONDAMENTI DI INFORMATICA. Prof. Alfredo Accattatis Tutor: prof. Venturino Taggi

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "FONDAMENTI DI INFORMATICA. Prof. Alfredo Accattatis Tutor: prof. Venturino Taggi"

Transcript

1 FONDAMENTI DI INFORMATICA Prof. Alfredo Accattatis Tutor: prof. Venturino Taggi

2 Fondamenti di Informatica - A.Accattatis 2 Complessità computazionale Un problema può essere risolto utilizzando diversi algoritmi Qual è il migliore? => la bontà o efficienza di un algoritmo si misura in base alla quantità minima di risorse sufficienti per il calcolo; queste sono: Il tempo necessario per eseguire le azioni elementari (complessità temporale) Lo spazio necessario per memorizzare e manipolare i dati (complessità spaziale)

3 Fondamenti di Informatica - A.Accattatis 3 Complessità computazionale Faremo riferimento, per motivi di semplicità, unicamente al concetto di complessità temporale. In realtà la complessità e un fenomeno.complesso, che dovrebbe tenere conto di moltissimi fattori Per esempio lo stesso concetto di spazio dovrebbe tenere conto delle differenti tipologie di spazio (memoria) esistenti e di come le diverse architetture la impiegano, compreso il relativo grado di parallelismo In questo corso ci interessa chiarire solo alcune linee essenziali

4 Fondamenti di Informatica - A.Accattatis 4 Il tempo risorsa di maggior interesse Non è significativo misurare il tempo di calcolo di un algoritmo in base al numero di secondi richiesti per l esecuzione su un elaboratore di un programma che lo descriva. Infatti, tale tempo dipende da: i dati di ingresso (non solo dimensioni ) il linguaggio in cui è scritto il programma la qualità della traduzione in sequenze di bit la velocità dell elaboratore la tipologia del microprocessore utilizzato (RISC, CISC, DSP etc.) ossia la sua architettura (Neumann, Harvard etc.)

5 Fondamenti di Informatica - A.Accattatis 5 Tempo di esecuzione Una buona misura dell efficienza di un algoritmo deve prescindere dal calcolatore utilizzato (quindi dalla tipologia del microprocessore, frequenza di clock ma anche periferiche aggiuntive etc.) Occorre una misura astratta che tenga conto (solo, o principalmente) del metodo di risoluzione con cui l algoritmo effettua la computazione

6 Fondamenti di Informatica - A.Accattatis 6 Tempo di esecuzione Per calcolare il tempo di esecuzione di un programma abbiamo bisogno di: Valutare tutte le operazioni «atomiche» che verranno eseguite dal programma data un istanza del programma e valutare, in una fase successiva, quanto ogni operazione impiega In pratica, quando effettuiamo la stima: Selezioniamo e contiamo solo un sottoinsieme di operazioni (che consideriamo significative) Assumiamo che ognuna impieghi lo stesso tempo

7 Fondamenti di Informatica - A.Accattatis 7 Tempo di esecuzione Sono solo assunzioni approssimative, ma sufficienti per lo scopo di questo corso ed in generale per molti casi concreti; esse implicano che stiamo solo esaminando l algoritmo, ed ignoriamo volutamente dettagli come (repetita juvant): Processore(i) principale(i) Interprete/Compilatore Frequenza di clock Co-processori Etc.

8 Fondamenti di Informatica - A.Accattatis 8 Misurare il tempo di calcolo La complessità dei problemi da risolvere dipende dalla dimensione dei dati in ingresso. Il tempo di calcolo si può quindi esprimere come: Il numero complessivo di operazioni elementari in funzione della dimensione «n» dei dati in ingresso Le operazioni elementari sono quelle: aritmetiche logiche di confronto di assegnazione Solitamente, il numero di operazioni considerate è valutato nel caso peggiore, ossia nel caso di dati in ingresso più sfavorevoli tra tutti quelli di dimensione n. Inoltre come detto le consideriamo «equitemporali»

9 Fondamenti di Informatica - A.Accattatis 9 Misurare il tempo di calcolo Come detto, per motivi di semplicità, considereremo tutte le operazioni come eseguite nel medesimo intervallo di tempo (per alcune macchine questo corrisponde al vero: esempio DSP) Ossia faremo conto che somme, sottrazioni, moltiplicazioni, salti etc. impieghino tutte il medesimo tempo: per esempio quello necessario ad eseguire una moltiplicazione tra due numeri floating point

10 Fondamenti di Informatica - A.Accattatis 10 Come calcolare il costo: Operazioni atomiche hanno costo 1; Il costo di una sequenza è la somma dei costi individuali; Il costo di un loop è la somma dei singoli passi, incluso il costo del test della condizione di fine; Istruzioni che usano array hanno un costo che si calcola espandendoli nel loro loop equivalente ; Una istruzione condizionale ha un costo worst case che è il più grande tra la parte if e la parte else ; per ottenere il costo medio moltiplicheremo i due rami per la probabilità che hanno di essere percorsi; a cui aggiungeremo il costo dell operazione di selezione.

11 Fondamenti di Informatica - A.Accattatis 11 Calcolare il costo Passi base

12 Fondamenti di Informatica - A.Accattatis 12 Quantità scalari. a = 2.5; % 0 o 1: in genere ignorato tranne quantità; b = a * a + 1; % 2 operazioni atomiche ; c = bˆ3; % bˆ3 è b*b*b, ancora 2 operazioni atomiche ; for k = n1 : n2 % Eseguito in ( n2 n1 + 1 ) passi c = a + b end % costo totale : 1*( n2 n1 + 1 ) if ( mod( k, 2 ) == 0 ) % se k è un intero casuale 50% di prob. c = a * b + c ; % worst case se ramo IF di costo 2 else % costo medio 1.5 b = b + 1; % più 2 per valutare ( MOD() == 0 ) end

13 Esempio Fondamenti di Informatica - A.Accattatis 13

14 Soluzione Fondamenti di Informatica - A.Accattatis 14

15 Esempio Fondamenti di Informatica - A.Accattatis 15

16 Soluzione Fondamenti di Informatica - A.Accattatis 16

17 Esempio Fondamenti di Informatica - A.Accattatis 17

18 Soluzione Fondamenti di Informatica - A.Accattatis 18

19 Fondamenti di Informatica - A.Accattatis 19 Calcolare il costo Gli «O» grandi

20 Fondamenti di Informatica - A.Accattatis 20 «O» grandi Una funzione f(n) è di ordine g(n) e si scrive f(n) = O(g(n)) Se esiste una costante numerica C maggiore di zero tale che valga (eccetto per un numero finito di valori di n): Ossia f(n) <= C*g(n) f(n)/g(n) <= C La funzione è LIMITATA ossia al tendere di n all infinito Il rapporto AL PIU assumerà il valore C

21 Fondamenti di Informatica - A.Accattatis 21 «O» grandi Usando la definizione di ordine O, potremo in effetti dire che la funzione 3*n + 7 è sicuramente di ordine n, infatti: 3*n = O(n) giacché esiste una costante C tale che: 3*n + 7 <= C*n per ogni n. Infatti se scegliamo C = 11 avremo sicuramente (verificate): 3*n + 7 <= 11*n per ogni n Ma vale anche che: 3*n + 7 = O(n 2 ) per n>=6

22 Fondamenti di Informatica - A.Accattatis 22 «O» grandi Quindi secondo la definizione appena data la nostra 3*n+7 è anche di ordine n 2 e si può vedere che è anche di ordine 2 n e così via. Vale però il viceversa SOLO per un caso, ossia: n = O(3*n+7) ma non vale: n 2 = O(3*n + 7) Infatti n 2 /(3*n + 7) NON è limitata (se n tende ad infinito il rapporto tende a infinito).

23 Fondamenti di Informatica - A.Accattatis 23 «O» grandi Grazie a quest ultima osservazione allora possiamo definire un criterio di ordinamento tra gli O grandi e dire che f(n) è di ordine inferiore a g(n) se vale che: f(n) = O(g(n)) g(n) NON è O(f(n)) Allora possiamo finalmente definire la Complessità Asintotica, giacché possiamo definire una relazione d ordine tra le f(n). Si dice che f(n) ha complessità asintotica g(n) se vale: f(n) = O(g(n)) g(n) è la più piccola delle funzioni che rispettano la definizione sopra

24 Fondamenti di Informatica - A.Accattatis 24 «O» grandi 4n + 5 è di complessità n 3n 3 + n 2 è di complessità n 3 log(n) + n è di complessità n Come risulta evidente, la complessità è definita dal blocco di complessità maggiore. Attenzione! Trascurare i termini di ordine inferiore significa dire che un algoritmo la cui complessità in passi base è 10n 2 + n + 12 è di ordine n 2 al pari di uno eseguito con passi totali n Ma il secondo, quando implementato su una macchina reale può impiegare ore mentre il primo qualche giorno.

25 «O» grandi Fondamenti di Informatica - A.Accattatis 25

26 Fondamenti di Informatica - A.Accattatis 26 Formalismo degli «O» grandi Useremo una «notazione asintotica»: Dato un algoritmo per risolvere un problema, definiremo il suo tempo di esecuzione T(n) come O(f(n)) (leggi ordine di f(n)) se esistono due costanti c e n0 > 0 tali che: 0 <= T(n) <= c * f(n) per tutti n>=n0; Il limite è valido per tutte le istanze del problema di dimensione n; In generale la funzione potrebbe essere dipendente da più dimensioni [ es. T(n,m) ] ma tutti i concetti esposti e che esporremo sono validi anche nel caso più semplice di una sola variabile.

27 Fondamenti di Informatica - A.Accattatis 27 Formalismo degli «O» grandi Perché dunque usare il concetto di O grande che potrebbe portarci ad errori di valutazione? Perché grazie a questo concetto ed alle operazioni che presto vedremo definite sugli O grandi (algebra degli O grandi ) potremo calcolare la complessità di qualsiasi algoritmo anche molto sofisticato senza conoscerne la complessità in passi base (questi ultimi possono essere a volte difficilissimi da valutare).

28 Fondamenti di Informatica - A.Accattatis 28 Algebra degli «O» grandi (1)Blocchi di codice in sequenza (2)Blocchi di codice annidati Nel primo caso detta g 1 (n) la complessità del primo blocco e g 2 (n) la complessità del secondo si ha: O( g1(n) + g2(n) ) = O( max{ g1(n),g2(n) } ) Quindi vince il blocco a complessità maggiore.

29 Fondamenti di Informatica - A.Accattatis 29 Algebra degli «O» grandi Nel secondo caso detta g 1 (n) la complessità del blocco esterno e g 2 (n) la complessità del blocco interno si ha: O(g1(n)*g2(n)) = O(g1(n))* O(g2(n)) Ossia la complessità è data dal prodotto della complessità dei blocchi annidati.

30 Fondamenti di Informatica - A.Accattatis 30 Tempo di esecuzione NOTATE che il tempo effettivo di esecuzione non è necessariamente lo stesso per tutte le istanze di taglia n : abbiamo definito implicitamente il caso peggiore di complessità, richiedendo l esistenza di un limite superiore valido per tutte le istanze. Si potrebbe anche definire una complessità media su tutte le istanze con la stessa taglia n ed il caso migliore. ESEMPIO: sommare due vettori di taglia n richiede sempre n operazioni aritmetiche, ma ordinare un vettore di n componenti dipende dal contenuto del vettore, ossia dai valori delle n componenti. Pensate ad un vettore già ordinato oppure contro-ordinato.

31 Fondamenti di Informatica - A.Accattatis 31 Selection SORT: n*n function v = SelectionSort( v ) n = length(v); for i = 1 : ( n 1 ) indicemin = i; for j = (i + 1) : n if v( j ) < v( indicemin ) indicemin = j; end end temp = v( indicemin ); v( indicemin ) = v( i ); v( i ) = temp; end end

32 Fondamenti di Informatica - A.Accattatis 32 Insertion Sort E di ordine «n» se la sequenza è ordinata E di ordine n quadro se completamente disordinata

33 Fondamenti di Informatica - A.Accattatis 33 Definizioni, nomenclatura O(1): algoritmo che impiega sempre lo stesso tempo, indipendentemente dalla taglia; O(log(n)): algoritmo logaritmico; O(n): algoritmo lineare; O(n^k ): algoritmo polinomiale; O(a^n): algoritmo esponenziale Nell insieme, si dovrebbero preferire algoritmi con un migliore (ossia più basso) limite asintotico: un algoritmo O(n^2) sarà preferibile ad uno O(n^3) anche se il coefficiente moltiplicativo dovesse essere maggiore. Un algoritmo di complessità superiore è ovviamente anche di classe inferiore. Gli algoritmi polinomiali sono considerati trattabili

34 Fondamenti di Informatica - A.Accattatis 34 Trattabilità Algoritmi trattabili: problemi per cui esistono algoritmi la cui complessità sia di tipo polinomiale, Algoritmi intrattabili i problemi per cui un tale algoritmo non esiste (ma esiste di altra complessità) Ascissa n=dimensione, ordinata f=funzione, operazione elementare = 1e-6 sec

35 Fondamenti di Informatica - A.Accattatis 35 Trattabilità In questa tabella indichiamo i miglioramenti ottenibili, in termini di Dimensioni delle istanze risolvibili, per diverse funzioni di complessità, al migliorare della tecnologia dei calcolatori. La colonna delle x è la dimensione dell istanza risolvibile oggi in un minuto. Il miglioramento della tecnologia non riduce significativamente il tempo di esecuzione di alcune importanti classi di algoritmi.

36 Fondamenti di Informatica - A.Accattatis 36 Trattabilità N = numero dati gestiti in un lasso di tempo «t» (dipendente dalla complessità) Ad es.: 2 N operazioni gestite nel tempo t (x 4 = 2^N). Con tecnologia 100 volte più veloce 2 N operazioni in t/100 quindi 2 N *100 operazioni nel tempo t 100 è circa = 2 6,64 pertanto 2 N *2 6,64 = 2 N+6,64 operazioni nel tempo t ossia x

37 Fondamenti di Informatica - A.Accattatis 37 Se ne deduce: E più significatival evoluzione di un algoritmo rispetto all evoluzione delle risorse elaborative

38 Fondamenti di Informatica - A.Accattatis 38 Trasformata di Fourier Vi ricordate il teorema del campionamento? Spettro di un segnale? L algoritmo per il calcolo dello spettro di un segnale tempo discreto si basava sulla trasformata di Fourier (DFT): La complessità di questo algoritmo è di ordine O(n^2). Nel 1965 Cooley e Tuckey scoprirono un nuovo algoritmo che, sotto alcune condizioni, faceva le stesse cose della DFT e lo chiamarono FFT = Fast Fourier Transform

39 Fondamenti di Informatica - A.Accattatis 39 Trasformata di Fourier : FFT L algoritmo per il calcolo dello spettro del segnale, basato sulla FFT ha una complessità di ordine O(n*log(n)). Quindi: Il primo algoritmo (DFT) riesce ad calcolare lo spettro di una sequenza di n numeri (campioni) con n^2 istruzioni Il secondo (FFT) con n * log(n) istruzioni

40 DFT vs FFT Fondamenti di Informatica - A.Accattatis 40

41 Fondamenti di Informatica - A.Accattatis 41 Esempi ordine di grandezza

42 Fondamenti di Informatica - A.Accattatis 42 Esempi ordine di grandezza

43 Fondamenti di Informatica - A.Accattatis 43 FFT e Shannon Cose che non potrebbero esistere SENZA l algoritmo FFT ed il Teorema del Campionamento CD JPEG DVD Digital TV Cellulari ABS, ESP, Common-rail etc. => in generale processi controllati da sistemi embedded in tempo reale..

44 Fondamenti di Informatica - A.Accattatis 44 In taluni casi, per problemi di piccola taglia, si può verificare che un algoritmo di ordine superiore sia preferibile ad uno potenzialmente più efficiente: per esempio 5*n^3 è migliore di 100*n^2 se n < 20; inoltre alcuni algoritmi sono convenienti solo per ingressi di taglia elevatissima => inutilizzabili nella realtà; Se un programma verrà usato una o due volte il tempo speso per scriverlo diventa importante: se l algoritmo più lento è più facile da codificare, sarà preferibile ad uno più veloce; In qualche caso l algoritmo più veloce richiede troppo spazio; In qualche caso un algoritmo può essere migliore in media ma allo stesso tempo molto poco efficiente nel caso peggiore (e.g. quicksort); In ultimo: MAI cercare di migliorare un programma senza effettivamente conoscere (e misurare) le sue prestazioni; Premature optimization is the root of all evil: D. Knuth

45 Fondamenti di Informatica - A.Accattatis 45 Ricapitoliamo fattori tempo: L algoritmo scelto per risolvere il problema La dimensione dell input La velocità della macchina Cerchiamo un modello di calcolo astratto per la valutazione della complessità temporale che tenga conto solo di: Algoritmo Dimensione dell input

46 Fondamenti di Informatica - A.Accattatis 46

47 Fondamenti di Informatica - A.Accattatis 47

48 Fondamenti di Informatica - A.Accattatis 48

49 Fondamenti di Informatica - A.Accattatis 49

50 Fondamenti di Informatica - A.Accattatis 50

51 51 Fondamenti di Informatica - A.Accattatis I/O - Input & Output Input: dati in ingresso a CPU Output: dati in uscita da CPU I/O da periferiche in MATLAB: input() disp(), fprintf(), plot() I/O da/a un file contenente dati: Input: leggere dal file Output: scrivere nel file

52 52 Fondamenti di Informatica - A.Accattatis I/O Basilare load & save Input: comando load >> load nomefile.ext Crea una matrice (NxM) di nome nomefile: ciascun elemento contiene un dato letto dal file. Il file deve essere strutturato in maniera regolare: tabella righecolonne cioè stesso numero di dati su ciascuna riga. Output: comando save >> save nomefile.ext matricedati ascii Crea un file di dati o testo in formato ASCII contenente i valori di matricedati. Se il file già esiste viene sovrascritto. Per aggiugere i dati di matricedati ad un file esistente si devono «appendere» questi dati a quelli già esistenti: si usa il qualificatore append. >> save nomefile.ext matricedati ascii -append

53 53 Fondamenti di Informatica - A.Accattatis I/O Generalizzato Per poter accedere ai contenuti di un file con struttura generica (non regolare), p.e. file di testo o file con dati numerici e testo/caratteri, è necessario: 1. Aprire il file - il file viene cercato (per lettura) o creato (per scrittura) 2. Leggere dal file, scrivere nel file, appendere al file 3. Chiudere il file MATLAB supporta svariati tipologie di comandi e funzioni per svolgere I/O da file. Consideriamo textscan(), fscanf() e fprintf().

54 54 Fondamenti di Informatica - A.Accattatis I/O Generalizzato: aprire un file L apertura del file (ricerca o creazione) si esegue mediante la funzione fopen FID = fopen( 'nomefile.ext', 'permessi ) 1. FID è numero intero che identifica il file. Se FID = -1 allora il file non esiste. 2. nomefile.ext è il nome del file, relativo al percorso di ricerca configurato (in genere MATLABPATH) 3. permessi modalità di accesso al file, 'r' per leggere 'w' per scrivere 'a' per appendere

55 55 Fondamenti di Informatica - A.Accattatis I/O Generalizzato: chiudere un file La chiusura del file va eseguita se non si devono fare più accessi, e comunque prima che termini l esecuzione del programma, utilizzando la funzione fclose esitochiusura = fclose(fid) 1. esitochiusura è un valore pari a 0 se la chiusura è andata a buon fine, altrimenti pari a -1, p.e. nel caso di file corrotto. Se si utilizza come parametro la stringa 'all', tutti i file aperti verranno chiusi. 2. FID è l identificativo del file assegnato in apertura.

56 56 Fondamenti di Informatica - A.Accattatis I/O Verifiche apertura/chiusura Buona norma è verificare che apertura e chiusura sono state completate correttamente, e nel caso contrario dare indicazioni all utente. fid = fopen('nomefile', 'r' ); % apro in lettura if fid == -1 else disp('apertura del file fallita!') % qui vanno le istruzioni per accedere al file % ed elaborare i dati (es. Con textscan o fscanf) % end esitochiusura = fclose(fid); if esitochiusura ~= 0 disp('chiusura file fallita!') end

57 57 Fondamenti di Informatica - A.Accattatis I/O Generalizzato: lettura (1) La lettura del file può eseguire mediante la funzione textscan,che trasferisce tutti i dati del file in un Cell Array in ordine per colonna. Lettura= textscan(fid, 'formato') 1. Lettura è la cell-array di destinazione. La lettura terminerà quando si raggiunge l end-of-file (EOF). 2. FID è l identificativo del file. 3. formato specifica la struttura di ciascuna riga del file: le righe devono essere formattate compatibilmente (%s, %d etc.)

58 Fondamenti di Informatica - A.Accattatis 58 I/O Generalizzato: lettura (2) La lettura del file può eseguire mediante la funzione textscan,che trasferisce tutti i dati del file in un Cell Array in ordine per colonna. ArrayLettura= fscanf(fid, 'formato') 1. Lettura è l array di destinazione (matrice o vettore). La lettura terminerà quando si raggiunge l end-of-file (EOF) oppure dato di tipo non previsto. 2. FID è l identificativo del file. 3. formato specifica la struttura di ciascuna riga del file: le righe devono essere formattate compatibilmente (%s, %d etc.)

59 59 Fondamenti di Informatica - A.Accattatis I/O Generalizzato: lettura (3) ESEMPIO: Elencare i comandi per leggere dal file auto.txt i nomi di modelli di autovetture e consumi di carburante dichiarati per ciclo urbano (km/l). Calcolare il consumo media. >> IDFile = fopen('auto.txt') 5 IDFile = >> dati = textscan(idfile, '%s %f') dati = {5x1 cell} {5x1 double } >> consumo = dati{1, 2}; >> consumomedio = mean(consumo) consumomedio = >> fclose(idfile) ans = 0

60 60 Fondamenti di Informatica - A.Accattatis I/O Generalizzato: scrittura (1) La scrittura del file si può eseguire mediante la funzione fprintf; fprintf restituisce il numero dei byte effettivamente trasferiti. esito= fprintf(fid, 'formato', variabili) 1. FID è l identificativo del file, che è stato aperto con permesso di scrittura. Per appendere dei dati è necessario aprire il file con permesso a. Se viene omesso i dati sono trasferiti al monitor, essendo il dispositivo di output di default. 2. formato specifica la struttura di ciascuna riga del file. 3. variabili i dati da scrivere 4. esito il numero di byte scritti oppure cod. errore

61 61 Fondamenti di Informatica - A.Accattatis I/O Generalizzato: scrittura (2) ESEMPIO: Scrivere i comandi per scrivere il file alti_bassi.txt contenente i nomi modelli delle autovetture del precedente esempio affiancati da A se superano il consumo medio calcolato, B se si trovano al di sotto.

62 Fondamenti di Informatica - A.Accattatis 62 I/O Generalizzato: scrittura (3) >> IDFile = fopen('alti_bassi.txt', 'w') IDFile = 7 >> modello = dati{1, 1}; >> for i = 1:length(modelli) if consumo[i] > consumomedio codice = 'A'; else codice = 'B'; end; fprintf(idfile, ' %s %c', modello(i), codice); end; >> fclose(idfile) ans = 0

FONDAMENTI DI INFORMATICA. Prof. Alfredo Accattatis Tutor: prof. Venturino Taggi

FONDAMENTI DI INFORMATICA. Prof. Alfredo Accattatis Tutor: prof. Venturino Taggi FONDAMENTI DI INFORMATICA Prof. Alfredo Accattatis accattatis@ing.uniroma2.it Tutor: prof. Venturino Taggi taggi@ing.uniroma2.it Fondamenti di Informatica a.a. 2016/17 - A.Accattatis 2 Complessità computazionale

Dettagli

FONDAMENTI DI INFORMATICA. Prof. Alfredo Accattatis

FONDAMENTI DI INFORMATICA. Prof. Alfredo Accattatis FONDAMENTI DI INFORMATICA Prof. Alfredo Accattatis accattatis@ing.uniroma2.it Fondamenti di Informatica a.a. 2015/16 - A.Accattatis 2 Prefazione Il materiale della presente lezione è ispirato ai lavori

Dettagli

FONDAMENTI DI INFORMATICA. Prof. Alfredo Accattatis Tutor: prof. Marcello Colella

FONDAMENTI DI INFORMATICA. Prof. Alfredo Accattatis Tutor: prof. Marcello Colella FONDAMENTI DI INFORMATICA Prof. Alfredo Accattatis accattatis@ing.uniroma2.it Tutor: prof. Marcello Colella mcolella.uniroma2@outlook.it Fondamenti di Informatica - A.Accattatis 2 Complessità computazionale

Dettagli

FONDAMENTI DI INFORMATICA. Prof. Alfredo Accattatis Prof. Venturino Taggi

FONDAMENTI DI INFORMATICA. Prof. Alfredo Accattatis Prof. Venturino Taggi FONDAMENTI DI INFORMATICA Prof. Alfredo Accattatis Prof. Venturino Taggi accattatis@ing.uniroma2.it taggi@ing.uniroma2.it 2 Fondamenti di Informatica 2015/16 V.Taggi taggi@ing.uniroma2.it Strutture dati:

Dettagli

FONDAMENTI DI INFORMATICA. Prof. Alfredo Accattatis Tutor : Prof. Venturino Taggi

FONDAMENTI DI INFORMATICA. Prof. Alfredo Accattatis Tutor : Prof. Venturino Taggi FONDAMENTI DI INFORMATICA Prof. Alfredo Accattatis accattatis@ing.uniroma2.it Tutor : Prof. Venturino Taggi taggi@ing.uniroma2.it 2 Strutture dati: cenni Una struttura dati è una raccolta di dati organizzati

Dettagli

Nell' Informatica è importante porsi questa domanda: Questo è l'argomento che viene trattato nella Complessità Computazionale, e si articola in due

Nell' Informatica è importante porsi questa domanda: Questo è l'argomento che viene trattato nella Complessità Computazionale, e si articola in due Complessità Nell' Informatica è importante porsi questa domanda: Quanto costa risolvere un dato problema? Questo è l'argomento che viene trattato nella Complessità Computazionale, e si articola in due

Dettagli

Indice Capitolo 1 Capitolo 2 Capitolo 3 Capitolo 4 Capitolo 5 Capitolo 6

Indice Capitolo 1 Capitolo 2 Capitolo 3 Capitolo 4 Capitolo 5 Capitolo 6 1 Indice Capitolo 1... 7 Introduzione al Problem Solving... 7 Computer... 11 Informatica... 13 Capitolo 2... 17 Rappresentazione e Algoritmi... 17 Un esempio di algoritmo... 19 Diagrammi di flusso... 22

Dettagli

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI Fondamenti di Informatica a.a.200.2005/06 Prof. V.L. Plantamura Dott.ssa A. Angelini Ω (grande omega) Diciamo che T(n) = Ω (f(n)), - leggiamo T(n) ha complessità

Dettagli

Algoritmi, Strutture Dati e Programmi. UD 4.b: Trattabilità e Intrattabilità

Algoritmi, Strutture Dati e Programmi. UD 4.b: Trattabilità e Intrattabilità Algoritmi, Strutture Dati e Programmi : Trattabilità e Intrattabilità Prof. Alberto Postiglione AA 2007-2008 INTRODUZIONE Dispense, cap. 4.2.1 1 Problemi Intrattabili Esistono problemi che, pur avendo

Dettagli

UD 4.b: Trattabilità e Intrattabilità INTRODUZIONE

UD 4.b: Trattabilità e Intrattabilità INTRODUZIONE Algoritmi, Strutture Dati e Programmi : Trattabilità e Intrattabilità INTRODUZIONE Prof. Alberto Postiglione Dispense, cap. 4.2.1 AA 2007-2008 Problemi Intrattabili Problemi Intrattabili Esistono problemi

Dettagli

Principali strumenti per lo sviluppo di algoritmi in pascal-like. concetti universali presenti in tutti i linguaggi di programmazione

Principali strumenti per lo sviluppo di algoritmi in pascal-like. concetti universali presenti in tutti i linguaggi di programmazione LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 12 LA COMPLESSITA COMPUTAZIONALE Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II wpage.unina.it/lapegna

Dettagli

1. Calcolo dell indice di condizionamento di una matrice

1. Calcolo dell indice di condizionamento di una matrice 1 Esercizi sul condizionamento con matlab laboratorio di Calcolo Scientifico per Geofisici Prof. A. Murli a.a. 2006/07 1. Calcolo dell indice di condizionamento di una matrice Determinare una function

Dettagli

Di cosa parliamo oggi?

Di cosa parliamo oggi? Di cosa parliamo oggi? Oggi parliamo di Analisi di Algoritmi Analisi di Algoritmi = valutazione delle risorse usate da algoritmi per risolvere un dato problema Risorse = Tempo impiegato dall algoritmo

Dettagli

complessità degli algoritmi

complessità degli algoritmi complessità degli algoritmi progetto CORDA informatica algoritmo matematico persiano Muhammad al-khwarizmi (IX secolo) un algoritmo è una sequenza finita di passi interpretabili da un esecutore l esecuzione

Dettagli

File binari e file di testo

File binari e file di testo I file File binari e file di testo distinzione tra file binari file di testo si possono usare funzioni diverse per la gestione di tipi di file diversi Programmazione Gestione dei file 2 File binari e file

Dettagli

FONDAMENTI DI INFORMATICA

FONDAMENTI DI INFORMATICA FONDAMENTI DI INFORMATICA CENNI ELEMENTARI AL TEOREMA DEL CAMPIONAMENTO E SPETTRO DI UN SEGNALE Prof. Alfredo Accattatis Fondamenti di Informatica - Alfredo Accattatis 2 Vi ricordate la slide introdotta

Dettagli

Algoritmi di ricerca. Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati.

Algoritmi di ricerca. Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati. E. Calabrese: Fondamenti di Informatica Algoritmi-1 Algoritmi di ricerca Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati. Per esempio: - cercare

Dettagli

Studio degli algoritmi

Studio degli algoritmi COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI Fondamenti di Informatica a.a.2006/07 Prof. V.L. Plantamura Dott.ssa A. Angelini Studio degli algoritmi Dato un problema P, le problematiche riguardano: Sintesi

Dettagli

Complessità computazionale

Complessità computazionale Università Roma Tre Dipartimento di Matematica e Fisica Percorso Abilitante Speciale Classe A048 Matematica Applicata Corso di Informatica Complessità computazionale Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Prof. Pagani Corrado ALGORITMI E COMPLESSITÀ COMPUTAZIONALE

Prof. Pagani Corrado ALGORITMI E COMPLESSITÀ COMPUTAZIONALE Prof. Pagani Corrado ALGORITMI E COMPLESSITÀ COMPUTAZIONALE COMPLESSITÀ DEGLI ALGORITMI L oggetto della teoria della complessità è stabilire se un problema sia facile o difficile In base a quali parametri

Dettagli

Appendice B. Algoritmi e Complessità

Appendice B. Algoritmi e Complessità Appendice B Algoritmi e Complessità 1. Introduzione Un algoritmo A è una procedura passo-passo per risolvere un problema P. Un problema P è caratterizzato dall insieme I delle sue istanze. L algoritmo

Dettagli

Gli algoritmi e la loro complessità

Gli algoritmi e la loro complessità Gli algoritmi e la loro complessità Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Algoritmo Un algoritmo è una procedura di calcolo (eventualmente composta da un certo numero di passi)

Dettagli

Complessità degli algoritmi (cenni)

Complessità degli algoritmi (cenni) Complessità degli algoritmi (cenni) CORDA Informatica A. Ferrari Testo di riferimento Dispense del Corso di Algoritmi e Strutture Dati Marco Bernardo - Edoardo Bontà Università degli Studi di Urbino Carlo

Dettagli

Testo di riferimento. Problema delle 12 monete. Algoritmi. Complessità degli algoritmi (cenni) Dispense del Corso di Algoritmi e Strutture Dati

Testo di riferimento. Problema delle 12 monete. Algoritmi. Complessità degli algoritmi (cenni) Dispense del Corso di Algoritmi e Strutture Dati Testo di riferimento Complessità degli algoritmi (cenni) CORDA Informatica A. Ferrari Dispense del Corso di Algoritmi e Strutture Dati Marco Bernardo - Edoardo Bontà Università degli Studi di Urbino Carlo

Dettagli

COMPLESSITA COMPUTAZIONALE. Esercitazioni Tutor: Francesca Piersigilli

COMPLESSITA COMPUTAZIONALE. Esercitazioni Tutor: Francesca Piersigilli COMPLESSITA COMPUTAZIONALE Esercitazioni Tutor: Francesca Piersigilli La complessità computazionale si occupa della valutazione del costo degli algoritmi in termini di risorse di calcolo: tempo di elaborazione;

Dettagli

FONDAMENTI DI INFORMATICA

FONDAMENTI DI INFORMATICA FONDAMENTI DI INFORMATICA Prof. Alfredo Accattatis Slide (rielaborate) del prof. Emiliano Casalicchio accattatis@ing.uniroma2.it Esercizio (1) Dati due vettori V1 e V2 scrivere un algoritmo che permetta

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

Capitolo 9: Trattabilitá e intrattabilitá dei problemi

Capitolo 9: Trattabilitá e intrattabilitá dei problemi Capitolo 9: Trattabilitá e intrattabilitá dei problemi 1 La classe P : é considerata tradizionalmente come una caratterizzazione formale dei problemi trattabili. n = 2 n = 5 n = 10 n = 100 n = 1000 n 2

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Analisi di Algoritmi Modelli di calcolo e analisi di algoritmi Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino Analisi di Algoritmi Analisi

Dettagli

sono le risorse di calcolo necessarie per la sua l esecuzione di un metodo sono tipicamente:

sono le risorse di calcolo necessarie per la sua l esecuzione di un metodo sono tipicamente: Complessità dei metodi e degli algoritmi Carla Binucci e Walter Didimo Efficienza di un metodo Un metodo è tanto più efficiente quanto minori sono le risorse di calcolo necessarie per la sua esecuzione

Dettagli

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI Fondamenti di Informatica a.a.200.2005/06 Prof. V.L. Plantamura Dott.ssa A. Angelini Confronto di algoritmi Uno stesso problema può essere risolto in modi diversi,

Dettagli

Algoritmi. Andrea Passerini Informatica. Algoritmi

Algoritmi. Andrea Passerini Informatica. Algoritmi Andrea Passerini passerini@disi.unitn.it Informatica Elaboratore Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni sui dati digitale

Dettagli

Fondamenti di Informatica, A.A FILA A

Fondamenti di Informatica, A.A FILA A Fondamenti di Informatica, A.A. 2013-2014 - FILA A 28/07/2014 Esercizio 1 È dato il frammento di codice Matlab a = [ 1 6 32 64 128 256 512 1024 2 0 4 8 ] ; b = [ 8 16 24 32 40 48 56 6 4 ] ; x = find (

Dettagli

Esercizi per il corso di Algoritmi, anno accademico 2011/12

Esercizi per il corso di Algoritmi, anno accademico 2011/12 Esercizi per il corso di Algoritmi, anno accademico 2011/12 Esercizi sulla Tecnica Divide et Impera N.B. Tutti gli algoritmi vanno scritti in pseudocodice (non in Java, nè in C++, etc. ). Di tutti gli

Dettagli

liceo B. Russell PROGRAMMAZIONE INDIRIZZO: SCIENTIFICO SCIENZE APPLICATE BIENNIO: SECONDA DISCIPLINA: INFORMATICA

liceo B. Russell PROGRAMMAZIONE INDIRIZZO: SCIENTIFICO SCIENZE APPLICATE BIENNIO: SECONDA DISCIPLINA: INFORMATICA INDIRIZZO: SCIENTIFICO SCIENZE APPLICATE PROGRAMMAZIONE BIENNIO: SECONDA DISCIPLINA: INFORMATICA PIANO DI LAVORO DEL DOCENTE / RELAZIONE FINALE Anno scolastico 2014/2015 DOCENTE Prof. PAOLO ARMANI CLASSE:

Dettagli

Algoritmi. Andrea Passerini Conoscenze informatiche e relazionali Corso di laurea in Scienze dell Ingegneria Edile

Algoritmi. Andrea Passerini Conoscenze informatiche e relazionali Corso di laurea in Scienze dell Ingegneria Edile Algoritmi Andrea Passerini passerini@dsi.unifi.it Conoscenze informatiche e relazionali Corso di laurea in Scienze dell Ingegneria Edile Elaboratore Un elaboratore o computer è una macchina digitale, elettronica,

Dettagli

Lezione 25: File Mercoledì 18 Novembre 2009

Lezione 25: File Mercoledì 18 Novembre 2009 Università di Salerno Corso di FONDAMENTI DI INFORMATICA Corso di Laurea Ingegneria Meccanica & Ingegneria Gestionale Mat. Pari Docente : Ing. Secondulfo Giovanni Anno Accademico 2009-2010 Lezione 25:

Dettagli

in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico

in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico Click to edit Algoritmo Master title style algoritmo: un insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce un risultato e si arresta in un tempo finito

Dettagli

Università degli Studi di Ferrara

Università degli Studi di Ferrara Università degli Studi di Ferrara Corso di Laurea in Matematica - A.A. 2018 2019 Programmazione Lezione 24 Correzione Simulazione Docente: Michele Ferrari - michele.ferrari@unife.it In questa lezione Correzione

Dettagli

Ordinamento di una lista: bubble-sort

Ordinamento di una lista: bubble-sort Ordinamento di una lista: bubble-sort L idea è di far galleggiare il minimo della lista nelle prima posizione Riduco la parte di lista da considerare, escludendo le prime posizioni già ordinate Ordinamento:

Dettagli

FONDAMENTI DI INFORMATICA. Prof. Alfredo Accattatis Tutor: prof. Venturino Taggi

FONDAMENTI DI INFORMATICA. Prof. Alfredo Accattatis Tutor: prof. Venturino Taggi FONDAMENTI DI INFORMATICA Prof. Alfredo Accattatis (accattatis@ing.uniroma2.it) Tutor: prof. Venturino Taggi (taggi@ing.uniroma2.it) 2 Fondamenti di Informatica Argomenti Approfondimenti sui floating-point:

Dettagli

Algoritmi e loro proprietà. Che cos è un algoritmo? Un esempio di algoritmo

Algoritmi e loro proprietà. Che cos è un algoritmo? Un esempio di algoritmo 1 Cos è l informatica? L informatica è la scienza della rappresentazione e dell elaborazione dell informazione Algoritmi e loro proprietà Proprietà formali degli Algoritmi Efficienza rispetto al tempo

Dettagli

Tempo e spazio di calcolo

Tempo e spazio di calcolo Tempo e spazio di calcolo Modelli di calcolo e metodologie di analisi In quale modo stimiamo il tempo di calcolo? Possiamo considerare due approcci: Approccio empirico (a posteriori) Approccio teorico

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica AlgoBuild: Strutture selettive, iterative ed array Prof. Arcangelo Castiglione A.A. 2016/17 AlgoBuild : Strutture iterative e selettive OUTLINE Struttura selettiva Esempi Struttura

Dettagli

1 Esercizi in pseudocodice

1 Esercizi in pseudocodice Questa dispensa propone esercizi sulla scrittura di algoritmi in un linguaggio semiformale, utile all acquisizione delle abilità essenziali per implementare algoritmi in qualsiasi linguaggio di programmazione.

Dettagli

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI Fondamenti di Informatica a.a.00.005/06 Prof. V.L. Plantamura Dott.ssa A. Angelini Classificazione degli algoritmi Tassonomia di costo: algoritmo costante: c

Dettagli

Algoritmi e Strutture Dati. Luciano Gualà

Algoritmi e Strutture Dati. Luciano Gualà Algoritmi e Strutture Dati Luciano Gualà guala@mat.uniroma2.it www.mat.uniroma2.it/~guala È sensato misurare la complessità di un algoritmo contando il numero di linee di codice eseguite? riassunto puntate

Dettagli

Algoritmi e loro proprietà. Proprietà formali degli Algoritmi Efficienza rispetto al tempo Efficienza rispetto allo spazio

Algoritmi e loro proprietà. Proprietà formali degli Algoritmi Efficienza rispetto al tempo Efficienza rispetto allo spazio Algoritmi e loro proprietà Proprietà formali degli Algoritmi Efficienza rispetto al tempo Efficienza rispetto allo spazio Cos è l informatica? L informatica è la scienza della rappresentazione e dell elaborazione

Dettagli

Altrimenti, il M.C.D. di a e b è anche divisore di r (e.g. a=15,b=6,r=3 che è il M.C.D.)

Altrimenti, il M.C.D. di a e b è anche divisore di r (e.g. a=15,b=6,r=3 che è il M.C.D.) Elaboratore Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni sui dati digitale l informazione è rappresentata in forma numerica

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica AlgoBuild: Strutture iterative e selettive Prof. Christian Esposito Corso di Laurea in Ingegneria Meccanica e Gestionale (Classe I) A.A. 2016/17 AlgoBuild: Strutture iterative

Dettagli

Cos è l informatica? Un esempio di algoritmo. Che cos è un algoritmo? Algoritmi e loro proprietà. non ambigue ed effettivamente calcolabili

Cos è l informatica? Un esempio di algoritmo. Che cos è un algoritmo? Algoritmi e loro proprietà. non ambigue ed effettivamente calcolabili Algoritmi e loro proprietà Proprietà formali degli Algoritmi Efficienza rispetto al tempo Efficienza rispetto allo spazio Cos è l informatica? L informatica è la scienza della rappresentazione e dell elaborazione

Dettagli

Tempo e spazio di calcolo

Tempo e spazio di calcolo Tempo e spazio di calcolo Modelli di calcolo e metodologie di analisi F. Damiani - Alg. & Lab. 04/05 (da M. Zacchi - Alg. & Lab. 03/04) In quale modo stimiamo il tempo di calcolo? Possiamo considerare

Dettagli

Codifica dell informazione

Codifica dell informazione Codifica dell informazione Informatica B Come memorizzo l informazione nel calcolatore? 1 bit di informazione 1 bit di informazione La memoria del calcolatore L informazione nel calcolatore q Il calcolatore

Dettagli

Problema. Sistemi lineari. Problema. Problema. Quali sono i potenziali in ogni nodo? Leggi di Kirkoff e di Ohm:

Problema. Sistemi lineari. Problema. Problema. Quali sono i potenziali in ogni nodo? Leggi di Kirkoff e di Ohm: Problema 4 Ω 3 3 Ω 2 2 Ω 40 V Sistemi lineari 2 Ω Ω 2 Ω Ω 5 6 7 8 Ω 4 Ω Ω 0 V Quali sono i potenziali in ogni nodo? 2 4 Ω Problema 3 3 Ω 2 2 Ω 40 V 4 Ω Problema 3 3 Ω 2 2 Ω 40 V 2 Ω Ω 2 Ω Ω 2 Ω Ω 2 Ω Ω

Dettagli

Trasformata discreta di Fourier diunasequenzafinita: algoritmifft

Trasformata discreta di Fourier diunasequenzafinita: algoritmifft diunasequenzafinita: algoritmifft La TDF di una sequenza finita può essere calcolata utilizzando algoritmi, computazionalmente efficienti, quali gli algoritmi Fast Fourier Transform (FFT). L efficienza

Dettagli

Introduzione al MATLAB c Parte 2

Introduzione al MATLAB c Parte 2 Introduzione al MATLAB c Parte 2 Lucia Gastaldi Dipartimento di Matematica, http://dm.ing.unibs.it/gastaldi/ 24 settembre 2007 Outline 1 M-file di tipo Script e Function Script Function 2 Elementi di programmazione

Dettagli

Gestione dei files in linguaggio C. Fondamenti

Gestione dei files in linguaggio C. Fondamenti Programmazione e Laboratorio di Programmazione Gestione dei files in linguaggio C Fondamenti 1 Che cosa è un file? Un file può essere visto come un contenitore di informazioni simile ad un vettore di bytes

Dettagli

FONDAMENTI DI INFORMATICA

FONDAMENTI DI INFORMATICA FONDAMENTI DI INFORMATICA Prof. Venturino Taggi e prof. Alfredo Accattatis, slide (rielaborate) del prof. Emiliano Casalicchio accattatis@ing.uniroma2.it 2 Fondamenti di Informatica 2015/16 V.Taggi Argomenti

Dettagli

A.A. 2018/2019. CPU e Linguaggio Macchina FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante

A.A. 2018/2019. CPU e Linguaggio Macchina FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante A.A. 2018/2019 Docente Prof. Raffaele Pizzolante FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE Architettura di Von Neumann Modello concettuale di un architettura di computer che permette di rappresentare,

Dettagli

UNIVERSITA DEGLI STUDI DI ROMA TOR VERGATA

UNIVERSITA DEGLI STUDI DI ROMA TOR VERGATA UNIVERSITA DEGLI STUDI DI ROMA TOR VERGATA Dipartimento di Ingegneria Industriale Corso di studio in Ingegneria Meccanica/Energetica Esame di Fondamenti di Informatica sessione estiva appello I A.A. 2015/16

Dettagli

2 OTTIMIZZAZIONE SU GRAFI. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

2 OTTIMIZZAZIONE SU GRAFI. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1 2 OTTIMIZZAZIONE SU GRAFI E. Amaldi Fondamenti di R.O. Politecnico di Milano 1 Molti problemi decisionali possono essere formulati utilizzando il linguaggio della teoria dei grafi. Esempi: - problemi di

Dettagli

Corso di Calcolatori Elettronici I

Corso di Calcolatori Elettronici I Corso di Calcolatori Elettronici I Architettura dei Calcolatori Elettronici: primi cenni introduttivi Roberto Canonico Università degli Studi di Napoli Federico II A.A. 2017-2018 Roberto Canonico Corso

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Scelta di un algoritmo Fondamenti di Informatica 19. Complessità computazionale Dato un problema, esistono diversi algoritmi che permettono di risolverlo. I fattori che possono influenzare la scelta dell

Dettagli

2 OTTIMIZZAZIONE SU GRAFI. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

2 OTTIMIZZAZIONE SU GRAFI. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1 2 OTTIMIZZAZIONE SU GRAFI E. Amaldi Fondamenti di R.O. Politecnico di Milano 1 Molti problemi decisionali possono essere formulati utilizzando il linguaggio della teoria dei grafi. Esempi: - problemi di

Dettagli

GESTIONE DEI FILE IN C. Docente: Giorgio Giacinto AA 2008/2009

GESTIONE DEI FILE IN C. Docente: Giorgio Giacinto AA 2008/2009 Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2

Dettagli

Corso di Informatica A.A

Corso di Informatica A.A Corso di Informatica A.A. 2009-2010 Lezione 7 Lezione 7 1 Algoritmi e loro proprietà Efficienza rispetto al tempo Efficienza rispetto allo spazio Efficienza degli algoritmi Una volta determinato un algoritmo

Dettagli

Efficienza: esempi. Nella lezione precedente. Fondamenti di Informatica. Ferdinando Cicalese. ! Qualche problema computazionale

Efficienza: esempi. Nella lezione precedente. Fondamenti di Informatica. Ferdinando Cicalese. ! Qualche problema computazionale Efficienza: esempi Fondamenti di Informatica Ferdinando Cicalese Nella lezione precedente! Qualche problema computazionale " Trova min " Selection sort! Pseudocodice per descrivere algoritmi " Variabili

Dettagli

PROGRAMMAZIONE STRUTTURATA

PROGRAMMAZIONE STRUTTURATA PROGRAMMAZIONE STRUTTURATA Programmazione strutturata 2 La programmazione strutturata nasce come proposta per regolamentare e standardizzare le metodologie di programmazione (Dijkstra, 1965) Obiettivo:

Dettagli

Rappresentazione degli algoritmi

Rappresentazione degli algoritmi Rappresentazione degli algoritmi Universitá di Ferrara Ultima Modifica: 21 ottobre 2014 1 1 Diagramma di flusso Utilizzare il diagramma di flusso per rappresentare gli algoritmi che risolvono i seguenti

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

Valutazione delle Prestazioni Barbara Masucci

Valutazione delle Prestazioni Barbara Masucci Architettura degli Elaboratori Valutazione delle Prestazioni Barbara Masucci Punto della situazione Ø Abbiamo studiato Ø Una prima implementazione hardware (a ciclo singolo) di un sottoinsieme dell IS

Dettagli

Programmare con MATLAB c Parte 5 Cicli: for e while

Programmare con MATLAB c Parte 5 Cicli: for e while Programmare con MATLAB c Parte 5 Cicli: for e while Lucia Gastaldi DICATAM - Sezione di Matematica, http://lucia-gastaldi.unibs.it Indice 1 La notazione due punti 2 Ciclo: for 3 Ciclo con controllo: while

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

Ricerca di Massimo e Minimo di un Array

Ricerca di Massimo e Minimo di un Array Universitá degli Studi di Salerno Corso di Introduzione agli Algoritmi e Strutture Dati Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 1/18 Ricerca di Massimo e Minimo di un Array Problema. Trova l elemento di

Dettagli

COMPLESSITÀ COMPUTAZIONALE. Fondamenti di Informatica A - Massimo Bertozzi

COMPLESSITÀ COMPUTAZIONALE. Fondamenti di Informatica A - Massimo Bertozzi COMPLESSITÀ COMPUTAZIONALE Tipi di complessità Consideriamo l'analisi della complessità di un programma da due punti di vista: spazio tempo Complessità Spaziale Lo spazio utilizzato da un programma può

Dettagli

Un esempio di calcolo di complessità: insertion sort

Un esempio di calcolo di complessità: insertion sort Un esempio di calcolo di complessità: insertion sort Vediamo su un esempio come si può calcolare la complessità di un algoritmo... L esempio è un metodo semplice per ordinare arrays: insertion sort, o

Dettagli

Sviluppo di programmi

Sviluppo di programmi Sviluppo di programmi Per la costruzione di un programma conviene: 1. condurre un analisi del problema da risolvere 2. elaborare un algoritmo della soluzione rappresentato in un linguaggio adatto alla

Dettagli

1. Un array è: A. Un simbolo usato nel linguaggio C per rappresentare un numero non specificato di variabili B. Un insieme di indirizzi di memoria

1. Un array è: A. Un simbolo usato nel linguaggio C per rappresentare un numero non specificato di variabili B. Un insieme di indirizzi di memoria Esame teorico Rispondere alle domande a risposta multipla (probabilmente 10) Eventualmente 1-2 domande a risposta libera Ogni domanda ha una ed una sola risposta corretta Tempo di risposta: 60 minuti Peso:

Dettagli

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE Francesco Tura francesco.tura@unibo.it 1 Lo strumento dell informatico: ELABORATORE ELETTRONICO [= calcolatore = computer] Macchina multifunzionale Macchina

Dettagli

Complessità. Ricorda: Problema P decidibile Linguaggio L P decidibile Taglia input x x. Esempio: G è un grafo connesso? { G G è un grafo connesso}

Complessità. Ricorda: Problema P decidibile Linguaggio L P decidibile Taglia input x x. Esempio: G è un grafo connesso? { G G è un grafo connesso} Complessità Calcolabilità: studia la frontiera tra problemi solubili e insolubili, Si limita ad aspetti qualitativi della risolubilità dei problemi (distingue ciò che è risolubile da ciò che non lo è).

Dettagli

Algoritmi stabili e instabili

Algoritmi stabili e instabili Algoritmi stabili e instabili Laboratorio di Calcolo Numerico 13 Marzo 2018 Vettori in MATLAB Finora abbiamo pensato alle variabili utilizzate come semplici valori numerici (variabili scalari). In realtà,

Dettagli

Il calcolatore. È un sistema complesso costituito da un numero elevato di componenti. è strutturato in forma gerarchica

Il calcolatore. È un sistema complesso costituito da un numero elevato di componenti. è strutturato in forma gerarchica Il calcolatore È un sistema complesso costituito da un numero elevato di componenti. è strutturato in forma gerarchica ogni livello di descrizione è caratterizzato da una struttura rappresentante l organizzazione

Dettagli

Informatica II. Capitolo 2 Analisi di algoritmi. Valutare la complessità in tempo. Complessità in tempo: cosa serve?

Informatica II. Capitolo 2 Analisi di algoritmi. Valutare la complessità in tempo. Complessità in tempo: cosa serve? Valutare la complessità in tempo Complessità in tempo: cosa serve? Informatica II Capitolo 2 Analisi di algoritmi Per stimare il tempo impiegato da un programma Per stimare il più grande input gestibile

Dettagli

Esame di INFORMATICA ARCHITETTURA DI VON NEUMANN. Lezione 4 ARCHITETTURA DI VON NEUMANN

Esame di INFORMATICA ARCHITETTURA DI VON NEUMANN. Lezione 4 ARCHITETTURA DI VON NEUMANN Università degli Studi di L Aquila Facoltà di Biotecnologie Esame di INFORMATICA A.A. 2008/09 Lezione 4 ARCHITETTURA DI VON NEUMANN Anni 40 i dati e i programmi che descrivono come elaborare i dati possono

Dettagli

Laboratorio di Calcolo Numerico Laboratorio 5: Scrittura su FILE. Soluzione di Equazioni non lineari

Laboratorio di Calcolo Numerico Laboratorio 5: Scrittura su FILE. Soluzione di Equazioni non lineari Laboratorio di Calcolo Numerico Laboratorio 5: Scrittura su FILE. Soluzione di Equazioni non lineari Claudia Zoccarato E-mail: claudia.zoccarato@unipd.it Dispense: Moodle Dipartimento ICEA 05 Aprile 2017

Dettagli

Elementi di Complessità Computazionale

Elementi di Complessità Computazionale Elementi di Complessità Computazionale Ultima modifica 23.06.2004 Il problema Esiste una misura oggettiva per valutare l'efficienza di un algoritmo? In che relazione sono gli input di un algoritmo con

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T1 2-Iterazione 1 Prerequisiti Salto condizionato Salto incondizionato Espressione logica 2 1 Introduzione In alcuni casi si presenta la necessità di eseguire un ciclo, ossia

Dettagli

Valutazione delle prestazioni

Valutazione delle prestazioni Valutazione delle prestazioni Architetture dei Calcolatori (lettere A-I) Valutazione delle prestazioni Misura/valutazione di un insieme di parametri quantitativi per Quantificare le caratteristiche di

Dettagli

Valutazione delle prestazioni. Valutazione delle prestazioni. Tempo di risposta e throughput. Prestazioni e tempo di esecuzione

Valutazione delle prestazioni. Valutazione delle prestazioni. Tempo di risposta e throughput. Prestazioni e tempo di esecuzione Valutazione delle prestazioni Valutazione delle prestazioni Architetture dei Calcolatori (lettere A-I) Misura/valutazione di un insieme di parametri quantitativi per Quantificare le caratteristiche di

Dettagli

Fondamenti di Informatica A. A / 1 9

Fondamenti di Informatica A. A / 1 9 Fondamenti di Informatica Prof. Marco Lombardi A. A. 2 1 8 / 1 9 Architettura di Von Neumann Architettura di Von Neumann: l Unità di Elaborazione L Unità di Elaborazione L unità di elaborazione (CPU) contiene

Dettagli

Fondamenti di Informatica, A.A

Fondamenti di Informatica, A.A Fondamenti di Informatica, A.A. 2012-2013 10/07/2013 fila A Esercizio 1 È dato il frammento di codice Matlab n = 6 ; v = [ 1 3 2 4 5 2 ] ; m = 1 ; v ( i ) = v ( i ) ˆ 2 ; [m j ] = max( v ) ; v ( i ) =

Dettagli

Pag. 1. Informatica Facoltà di Medicina Veterinaria a.a. 2012/13 prof. Stefano Cagnoni. Architettura del calcolatore (parte II)

Pag. 1. Informatica Facoltà di Medicina Veterinaria a.a. 2012/13 prof. Stefano Cagnoni. Architettura del calcolatore (parte II) 1 Università degli studi di Parma Dipartimento di Ingegneria dell Informazione Informatica a.a. 2012/13 La inserita nella architettura dell elaboratore Informatica Facoltà di Medicina Veterinaria a.a.

Dettagli

Efficienza: esempi. Fondamenti di Informatica. Ferdinando Cicalese. Nella lezione precedente. Pseudocodice per descrivere algoritmi

Efficienza: esempi. Fondamenti di Informatica. Ferdinando Cicalese. Nella lezione precedente. Pseudocodice per descrivere algoritmi Efficienza: esempi Fondamenti di Informatica Ferdinando Cicalese Nella lezione precedente Qualche problema computazionale Trova min Selection sort Pseudocodice per descrivere algoritmi Variabili Assegnamento

Dettagli