Elaborazione di Immagini e Suoni / Riconoscimento e Visioni Artificiali 12 c.f.u. Algoritmi

Documenti analoghi
Informatica di Base - 6 c.f.u.

Lezioni di Informatica di Base per la Facoltà di Lettere e Filosofia. Algoritmi

Sistemi di Elaborazione delle Informazioni 6 CFU. Algoritmi

Università degli Studi di Palermo Dipartimento di Ingegneria Informatica. Informatica ed Elementi di Statistica 3 c.f.u. Anno Accademico 2010/2011

Informatica per la Storia dell Arte. Algoritmi

Introduzione ai sistemi informatici 3/ed Donatella Sciuto, Giacomo Buonanno, Luca Mari. Copyright 2005 The McGraw-Hill Companies srl

Programmazione per Bioinformatica Introduzione al Corso. Dr Damiano Macedonio Università di Verona

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

INFORMATICA GENERALE Prof. Alberto Postiglione. Università degli Studi di Salerno. UD 3.1a: Gli Algoritmi

Introduzione: informatica. 18/2/2013 Informatica applicata alla comunicazione multimediale Cristina Bosco

Algoritmi e Strutture Dati (A.A 2014/15) Damiano Macedonio

Corso di Informatica di Base

INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno

Algoritmi. Un tema centrale dell informatica è lo studio degli algoritmi.

Corso di Informatica

Appunti del corso di Informatica 1 (IN110 Fondamenti) 2 Algoritmi e diagrammi di flusso

Sviluppo di programmi

= < < < < < Matematica 1

Tecnico Superiore per lo sviluppo del software finalizzato alla valorizzazione e promozione turistica, culturale ed ambientale del territorio

Concetti Introduttivi. Il Computer

A lezione sono stati presentati i seguenti passi per risolvere un problema:

Sistemi di numerazione

Algoritmi. Pagina 1 di 5

Elaborazione di Immagini e Suoni / Riconoscimento e Visioni Artificiali 12 c.f.u. Presentazione del corso

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Termine algoritmo da:

INFORMATICA. Scienza degli elaboratori elettronici (Computer. informazione

Algoritmi e soluzione di problemi

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

Programmazione strutturata

Il linguaggio di programmazione Python

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Linguaggio C. strutture di controllo: strutture iterative. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Sistemi Web per il turismo - lezione 3 -

Lezione 8. Soluzione di un problema Problema. Soluzione di un problema. Comprensione del Problema. Analisi. Introduzione agli algoritmi

Progetto e analisi di algoritmi

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi

1 Esercizi in pseudocodice

Richiami di aritmetica (1)

Università degli Studi di Cassino e del Lazio Meridionale Corso di Fondamenti di Informatica Algoritmi ed esecutori

Dal Problema all Algoritmo. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan

A proposito di informatica

Corso di Informatica A.A

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Informatica e Bioinformatica: Algoritmi

Rappresentazione con i diagrammi di flusso (Flow - chart)

Corso di Programmazione Problem Solving. Tipi di Problemi. Problemi Complessi Soluzione. Dott. Pasquale Lops. Primitivi. Complessi

L'algoritmo di Euclide

Algoritmi e Diagrammi di flusso

Algoritmi e Linguaggi

n Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

ESERCIZI DI PROGRAMMAZIONE DA SVOLGERE INDIVIDUALMENTE - parte 1 -

Il concetto di calcolatore e di algoritmo

Il concetto di informatica. Graziano Pravadelli (2012)

RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO

Istruzioni iterative (o cicliche)

ESERCIZIARIO DI MATEMATICA

Dispensa di Informatica II.1

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

Teoria dell Informazione

Calcolatori: Sistemi di Numerazione

1.1 Concetti base dell Informatica: Algoritmi

Informatica di Base - 6 c.f.u.

Matlab. Istruzioni condizionali, cicli for e cicli while.

Sviluppo di programmi. E ora, finalmente. Si comincia! 1. Analizzare il problema. 2. Progettare una soluzione (1) E necessario capire:

Algoritmi e Programmi

Strutture di Controllo

Informatica. Come si risolve un problema?

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.)

Diagrammi di flusso. Un metodo per rappresentare graficamente gli algoritmi. sotto programma. Input/ Output. Start. predicato Elaborazione Stop

Introduzione alla programmazione. Walter Didimo

(1) (2) (3) (4) 11 nessuno/a (1) (2) (3) (4) X è il minore tra A e B nessuno/a X è sempre uguale ad A X è il maggiore tra A e B

Corso di Fondamenti di Informatica Classi di istruzioni 2

I.4 Rappresentazione dell informazione

LINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware

Lezione 2. La conoscenza del mondo

ALGORITMI. Obiettivo: risolvere problemi mediante l uso di un elaboratore elettronico. Elaboratore elettronico

Cosa si intende con stato

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Architettura dei calcolatori e Software di sistema

Esercitazione 3. Espressioni booleane I comandi if-else e while

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

Sommario. Tabelle ad indirizzamento diretto e hash Funzioni Hash

Analisi e programmazione 1

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

PROGRAMMAZIONE: Le strutture di controllo

Sommario. Problema computazionale Sviluppo software Algoritmi. Istruzioni Sequenziali, Condizionali, Cicliche; Javascript

Appunti del corso di Informatica 1 (IN110 Fondamenti) 3 Modelli di calcolo

Analisi e Programmazione

Informazione binaria: - codici binari, notazione binaria/ottale/esadecimale -

Corso di Fondamenti di Informatica Linguaggi di Programmazione

Algoritmi e basi del C Struttura di un programma

Dall algoritmo al programma

LA TRASMISSIONE DELLE INFORMAZIONI SECONDA PARTE 1

Algoritmi. Un tema centrale dell informatica è lo studio degli algoritmi.

Laboratorio di Informatica. Esercitazione su algoritmi e diagrammi di flusso

Formalismi per la descrizione di algoritmi

ESERCIZI DI PROGRAMMAZIONE. - condizionali e cicli -

La codifica digitale

Fasi della programmazione. Gabriella Trucco

Transcript:

Università degli Studi di Palermo Dipartimento di Ingegneria Informatica Elaborazione di Immagini e Suoni / Riconoscimento e Visioni Artificiali 12 c.f.u. Anno Accademico 2009/2010 Docente: ing. Salvatore Sorce Algoritmi

Introduzione L informatica è una tra le discipline scientifiche più giovani e stimolanti Evoluzione continua: Realtà virtuale Telemedicina Supercalcolatori Monitoraggio ambientale Non sempre intuitivamente si riesce a comprendere gli argomenti che sono oggetto dell informatica

Malintesi Primo malinteso L informatica è lo studio dei calcolatori Secondo malinteso: L informatica è lo studio di come scrivere programmi per calcolatori Terzo malinteso: L informatica è lo studio degli utilizzi e delle applicazioni dei calcolatori e del software Fellows and Parberry, Computing Research News, 1993: L informatica non riguarda i calcolatori, così come l astronomia con i telescopi, la biologia con i microscopi e la chimica con le provette. La scienza non riguarda i dispositivi: riguarda il modo in cui li utilizziamo e ciò che scopriamo utilizzandoli

La definizione di Informatica Il concetto centrale nell informatica è il concetto di algoritmo Algoritmo (da Abu Ja far Muhammad ibn-musa Al- Khowarizmi, 780-850 a.c.): Una procedura per risolvere matematicamente un problema in un numero finito di passi, che spesso comprende ripetizioni di una operazione. In generale: un metodo passo-passo per eseguire un dato compito. Gibbs&Tucker, Communications of the ACM, 1986 Informatica: lo studio degli algoritmi, che comprende: Le loro proprietà formali e matematiche Le loro realizzazioni hardware Le loro realizzazioni linguistiche Le loro applicazioni

Definizione Formale di Algoritmo Un insieme ben ordinato di operazioni non ambigue ed effettivamente calcolabili che, eseguito, produce un risultato e termina in una quantità finita di tempo. Insieme ben ordinato Operazioni non ambigue e calcolabili Produce un risultato Termina in una quantità finita di tempo

Insieme ben ordinato Ordinamento delle operazioni da eseguire chiaro e non ambiguo Il controllo deve procedere senza ambiguità da una operazione alla successiva Le operazioni sono elencate come passi numerati In assenza di altra indicazione (operazioni condizionali o iterative) il controllo passa sempre al passo successivo Preparazione di di una una torta di di ciliegie 1. 1. Prepara la la base base 2. 2. Prepara il il ripieno di di ciliegie 3. 3. Versa il il ripieno sulla sulla base base 4. 4. Cuoci in in forno a 200 C per per 45 45 minuti

Operazioni non ambigue e calcolabili Tutti i passi devono essere chiari per l agente. I passi 1 e 2 potrebbero essere chiari solo ad un pasticcere professionista. Una operazione non-ambigua è detta una operazione primitiva Preparazione di di una una torta di di ciliegie 1. 1. Prepara la la base base 2. 2. Prepara il il ripieno di di ciliegie 3. 3. Versa il il ripieno sulla sulla base base 4. 4. Cuoci in in forno a 200 C per per 45 45 minuti Partendo da una prima versione dell algoritmo, occorre verificare che tutte le operazioni coinvolte siano primitive

Operazioni non ambigue e calcolabili Per un non professionista, il passo 1 va scomposto in un insieme di sottopassi più semplici Preparazione di una torta di ciliegie Preparazione di una torta di ciliegie 1. Prepara la base 1.1. Prendi 1/3 tazza di farina 1.2. Setaccia la farina 1.3. In una terrina, miscela farina, ½ tazza di burro e ¼ tazza di acqua 1.4. Spiana il composto in due basi di torta da circa 23 cm 2. Prepara il ripieno di ciliegie 3. Versa il ripieno sulla base 4. Cuoci in forno a 200 C per 45 minuti

Operazioni non ambigue e calcolabili Il passo 1 viene scomposto in un insieme di sottopassi più semplici Il passo 2 viene scomposto in una serie di sottopassi più semplici Tuttavia, il passo 1.2 potrebbe essere non adatto ad essere eseguito per esempio da un bambino Preparazione di una torta di ciliegie Preparazione di una torta di ciliegie 1. Prepara la base 1.1. Prendi 1/3 tazza di farina 1.2. Setaccia la farina 1.3. In una terrina, miscela farina, ½ tazza di burro e ¼ tazza di acqua 1.4. Spiana il composto in due basi di torta da circa 23 cm 2. Prepara il ripieno di ciliegie 2.1. Versa in una terrina 100 g di ripieno di ciliegia 2.2. Aggiungi un pizzico di noce moscata e cannella 2.3. Mescola 3. Versa il ripieno sulla base 4. Cuoci in forno a 200 C per 45 minuti

Operazioni non ambigue e calcolabili Il passo 1.2 può essere ulteriormente decomposto in operazioni più elementari Preparazione di di una una torta di di ciliegie 1. Prepara la base 1.1. Prendi 1/3 tazza di farina 1.2. Setaccia la farina 1.2.1. Prendi un setaccio e mettilo su una terrina da due quarti di litro 1.2.2. Versa la farina nel setaccio e gira la manovella 1.2.3. Lascia cadere la farina nella terrina 1.3. In una terrina, miscela farina, ½ tazza di burro e ¼ tazza di acqua 1.4. Spiana il composto in due basi di torta da circa 23 cm 2. Prepara il ripieno di ciliegie 2.1. Versa in una terrina 100 g di ripieno di ciliegia 2.2. Aggiungi un pizzico di noce moscata e cannella 2.3. Mescola 3. Versa il ripieno sulla base 4. Cuoci in forno a 200 C per 45 minuti

Operazioni non ambigue e calcolabili In sintesi, è fondamentale arrivare ad una descrizione dell algoritmo in primitive eseguibili da un agente di calcolo senza necessità di ulteriori istruzioni. Le operazioni devono poi essere effettivamente calcolabili Stampare la lista di tutti i numeri primi Somma 1 al valore corrente di x Preparazione di una torta di ciliegie Preparazione di una torta di ciliegie 1. Prepara la base 1.1. Prendi 1/3 tazza di farina 1.2. Setaccia la farina 1.2.1. Prendi un setaccio e mettilo su una terrina da due quarti di litro 1.2.2. Versa la farina nel setaccio e gira la manovella 1.2.3. Lascia cadere la farina nella terrina 1.3. In una terrina, miscela farina, ½ tazza di burro e ¼ tazza di acqua 1.4. Spiana il composto in due basi di torta da circa 23 cm 2. Prepara il ripieno di ciliegie 2.1. Versa in una terrina 100 g di ripieno di ciliegia 2.2. Aggiungi un pizzico di noce moscata e cannella 2.3. Mescola 3. Versa il ripieno sulla base 4. Cuoci in forno a 200 C per 45 minuti

Produce un risultato Gli algoritmi risolvono problemi Per comprendere se una soluzione algoritmica è corretta, il suo risultato deve potere essere confrontato con quello atteso. Se un risultato non è producibile, l algoritmo deve produrre un messaggio di errore, attivare un allarme, o fornire una approssimazione del risultato corretto Preparazione di di una una torta di di ciliegie 1. Prepara 1. la la base base 2. Prepara 2. il il ripieno ripieno di di ciliegie ciliegie 3. Versa 3. Versa il il ripieno ripieno sulla sulla base base 4. Cuoci 4. Cuoci in in forno forno a 200 C 200 C per per 45 45 minuti minuti Risultato: la la torta torta Programmazione di di un un VCR VCR Risultato: il il nastro nastro col col programma televisivo registrato

Termina in una quantità finita di tempo Il risultato deve essere prodotto dopo l esecuzione di un numero finito di operazioni E tipico causare cicli infiniti quando la condizione presente nelle operazioni iterative non si verifica mai Esempio: 1. Poni n=0 2. Ripeti i passi 3 e 4 mentre n<3 3. Stampa Ciao! 4. n = n - 1 5. Fine Risultato: Ciao!Ciao!Ciao!Ciao!Ciao! Fare Fare lo lo shampoo --I 1. 1. Inumidisci Inumidisci i i capelli capelli 2. 2. Insapona Insapona 3. 3. Risciacqua Risciacqua 4. 4. Ripeti Ripeti Risultato Il Il cliente cliente si si stanca, stanca, finisce finisce l acqua, l acqua, finisce finisce lo lo shampoo? shampoo? Fare Fare lo lo shampoo --II II 1. 1. Inumidisci Inumidisci i i capelli capelli 2. 2. Ripeti Ripeti due due volte volte i i passi passi 33 e e 44 3. 3. Insapona Insapona 4. 4. Risciacqua Risciacqua 5. 5. Stop. Stop. Lo Lo shampoo shampoo èè fatto fatto

Termina in una quantità finita di tempo Il risultato deve essere prodotto dopo l esecuzione di un numero finito di operazioni E tipico causare cicli infiniti quando la condizione presente nelle operazioni iterative non si verifica mai Esempio: 1. Poni n=0 2. Ripeti i passi 3 e 4 mentre n<3 3. Stampa Ciao! 4. n = n + 1 5. Fine Risultato: Ciao!Ciao!Ciao! Fare Fare lo lo shampoo --I 1. 1. Inumidisci Inumidisci i i capelli capelli 2. 2. Insapona Insapona 3. 3. Risciacqua Risciacqua 4. 4. Ripeti Ripeti Risultato Il Il cliente cliente si si stanca, stanca, finisce finisce l acqua, l acqua, finisce finisce lo lo shampoo? shampoo? Fare Fare lo lo shampoo --II II 1. 1. Inumidisci Inumidisci i i capelli capelli 2. 2. Ripeti Ripeti due due volte volte i i passi passi 33 e e 44 3. 3. Insapona Insapona 4. 4. Risciacqua Risciacqua 5. 5. Stop. Stop. Lo Lo shampoo shampoo èè fatto fatto

Rappresentazione di un algoritmo Linguaggio naturale Pseudocodice Diagrammi di flusso Linguaggio di programmazione formale

Esempio: Rappresentazione di un algoritmo Somma di due numeri interi A e B composti da m cifre A = a m-1 a m-2 a 1 a 0, B = b m-1 b m-2 b 1 b 0 C = A + B = c m c m-1 c m-2 c 1 c 0 A = a m-1 a m-2 a 0 + B = b m-1 b m-2 b 0 = ------------------------------------------------- C = c m c m-1 c m-2 c 0

Linguaggio naturale Rappresentazione di un algoritmo Metti in colonna in due numeri e poni inizialmente il valore del riporto a 0. Cominciando dalla colonna più a destra (quella delle unità), somma le cifre in colonna più il riporto per ottenere la corrispondente cifra nel risultato. Se il risultato è maggiore di dieci, la cifra del risultato si ottiene sottraendo dieci e ponendo il riporto alla colonna successiva pari a 1 e passa alla colonna successiva, altrimenti passa direttamente alla colonna successiva. Ripeti queste operazioni per tutte le colonne fino all ultima. Quando sono finite le cifre da sommare poni la cifra più a sinistra del risultato uguale all ultimo riporto e stampa il risultato finale. Dopo la stampa, l algoritmo è finito. Fermati.

Pseudocodice Rappresentazione di un algoritmo 1. Poni il valore della variabile riporto a 0 2. Poni il valore della variabile i a 0 3. Ripeti i passi da 4 a 6 fino a che il valore di i è maggiore di m-1 4. Somma a i e b i al valore corrente del riporto per ottenere c i 5. Se il valore ottenuto per c i è maggiore o uguale di 10 allora calcola il nuovo c i, sottraendo 10 dal valore corrente di c i poni riporto=1 altrimenti poni riporto uguale a 0 6. Aggiungi 1 ad i, e ripeti passando alla colonna a sinistra. 7. Poni la cifra più a sinistra del risultato, c, i uguale a riporto 8. Stampa il risultato finale, c m c m-1 c m-2 c 1 c 0 9. Fermati.

Rappresentazione di un algoritmo Diagramma di flusso Inizio Inizio Poni Poni i=0 i=0 Poni Poni riporto riporto r=0 r=0 i i > m-1? m-1? NO cc i = i a i + i b i + i rr SI Poni Poni cc m =r m =r SI cc i > i 10? 10? NO cc i = i cc i 10 i 10 r=1 r=1 r=0 r=0 Stampa Stampa cc m c m c m-1 c m-1 c 0 0 i i = i+1 i+1 Fine Fine

Rappresentazione di un algoritmo Linguaggio di programmazione formale (C++) 1. int a[3], b[3], c[3]; 2. int m, i, riporto; 3. riporto=0; 4. i=0; 5. while(i<m) { 6. c[i]=a[i]+b[i]+riporto; 7. if(c[i]>10) 8. {c[i]-=10; 9. r=1;} 10. else r=0; 11. i++; 12. } 13. c[m]=r; 14. printf( %d %d %d\n, c[2],c[1],c[0]);

Un esempio di algoritmo L origami

Il flusso di esecuzione Il flusso di esecuzione procede da un'istruzione a quella successiva fino a quando non viene raggiunta la fine del programma

Algoritmi e diagrammi di flusso Pseudocodice Operazioni sequenziali Realizzano un solo compito ben definito Il controllo passa all operazione successiva quando il compito è finito Frase dichiarativa Operazioni di I/O Operazioni condizionali Selezionano l operazione successiva sulla base di una domanda Operazioni iterative Eseguono un ciclo di istruzioni fino a quando la condizione di uscita è verificata Diagrammi di flusso Inizio Inizio Operazioni Operazioni sequenziali sequenziali condiz? condiz? NO Passi Passi da da ripetere ripetere Incremento Incremento i i = i+1 i+1 SI SI Fine Fine Stampa Stampa Risultati Risultati condiz? condiz? NO

Operazioni sequenziali Elaborazione, Ingresso, Uscita Operazioni di ingresso Es.: acquisisci il valore per variabile Operazioni di uscita Es.: stampa il valore per variabile, descrizione della variabile Operazioni di Elaborazione Es.: eseguire un calcolo per il valore di variabile

Rappresentazione di un algoritmo Operazioni sequenziali Inizio Inizio Poni Poni i=0 i=0 Poni Poni riporto riporto r=0 r=0 i i > m-1? m-1? NO cc i = i a i + i b i + i rr SI Poni Poni cc m =r m =r SI cc i > i 10? 10? NO cc i = i cc i 10 i 10 r=1 r=1 r=0 r=0 Stampa Stampa cc m c m c m-1 c m-1 c 0 0 i i = i+1 i+1 Fine Fine

Operazioni condizionali Se condizione è vera/falsa allora Prima serie di istruzioni Altrimenti Seconda serie di istruzioni

Rappresentazione di un algoritmo Operazioni condizionali Inizio Inizio Poni Poni i=0 i=0 Poni Poni riporto riporto r=0 r=0 i i > m-1? m-1? NO cc i = i a i + i b i + i rr SI Poni Poni cc m =r m =r SI cc i > i 10? 10? NO cc i = i cc i 10 i 10 r=1 r=1 r=0 r=0 Stampa Stampa cc m c m c m-1 c m-1 c 0 0 i i = i+1 i+1 Fine Fine

Operazioni iterative Ciclo a condizione iniziale: Finchè condizione è vera/falsa ripeti: Istruzione 1 Istruzione 2 Istruzione N Ciclo a condizione finale: Ripeti: Istruzione 1 Istruzione 2 Istruzione N Finchè condizione è vera/falsa

Rappresentazione di un algoritmo Operazioni iterative Inizio Inizio Poni Poni i=0 i=0 Poni Poni riporto riporto r=0 r=0 i i > m-1? m-1? NO cc i = i a i + i b i + i rr SI Poni Poni cc m =r m =r SI cc i > i 10? 10? NO cc i = i cc i 10 i 10 r=1 r=1 r=0 r=0 Stampa Stampa cc m c m c m-1 c m-1 c 0 0 i i = i+1 i+1 Fine Fine

Pseudocodice Somma di due numeri di m cifre 1. Poni il valore della variabile riporto = 0 2. Poni il valore della variabile i = 0 3. Ripeti i passi da 4 a 6 fino a che il valore di i è maggiore di m-1 4. Somma a i e b i al valore corrente del riporto per ottenere c i 5. Se il valore ottenuto per c i è maggiore o uguale di 10 allora calcola il nuovo c i, sottraendo 10 dal valore corrente di c i poni riporto=1 altrimenti poni riporto uguale a 0 6. Aggiungi 1 ad i, e ripeti passando alla colonna a sinistra. 7. Poni la cifra più a sinistra del risultato, c i, uguale a riporto 8. Stampa il risultato finale, c m c m-1 c m-2 c 1 c 0 9. Fermati.

Esempio m=2 A=47 a1=4 a0=7 B=25 b1=2 b0=5 C=72 c1=7 c0=2 i Operazioni Risultato 0 r=0 r=0 i>m-1? NO c0=a0+b0+r c0=7+5+0=12 c0>10? SI c0=c0-10 c0=2 r=1 r=1 m=2 A=47 a1=4 a0=7 B=25 b1=2 b0=5 C=72 c1=7 c0=2 i Operazioni Risultato 1 r=1 r=1 i>m-1? NO c1=a1+b1+r c1=4+2+1=7 c1>10? NO r=0 r=0

Esempio m=2 A=47 a1=4 a0=7 B=25 b1=2 b0=5 C=72 c1=7 c0=2 i Operazioni Risultato 2 i>m-1? SI c2=r c2=0 C=c2 c1 c0 C=072

Somma di Due Numeri La somma di due numeri: 1 47 + 25 = ------ 72 Due numeri con m>1 cifre: A = a m-1 a m-2 a 0 + B = b m-1 b m-2 b 0 = ------------------------------------------------- C = c m c m-1 c m-2 c 0 SI Inizio Inizio Poni Poni i=0 i=0 Poni Poni riporto riporto r=0 r=0 i i > m-1? m-1? NO cc i = i a i + i b i + i rr cc i > i 10? 10? SI NO cc i = i cc i 10 i 10 r=1 r=1 r=0 r=0 Poni Poni cc m =r m =r Stampa Stampa cc m c m c m-1 c m-1 c 0 0 i i = i+1 i+1 Fine Fine

Somma di Due Numeri (modificato) Inizio Inizio Poni Poni i=0 i=0 Poni Poni riporto riporto r=0 r=0 Se c m =0 allora C = c m-1 c m-2 c 0 altrimenti SI i i > m-1? m-1? NO cc i = i a i + i b i + i rr cc i > i 10? 10? SI NO SI Poni Poni cc m =r m =r cc m =0? m =0? C = c m c m-1 c m-2 c 0 NO cc i = i cc i 10 i 10 r=1 r=1 r=0 r=0 Stampa Stampa cc m-1 c m-1 c 0 0 Stampa Stampa cc m c m c m-1 c m-1 c 0 0 i i = i+1 i+1 Fine Fine

Un esempio: prosegui e moltiplica Moltiplicazione di due interi mediante la somma prodotto = A x B = A + A + A + + A (B volte) 1. Acquisisci il valore di A 2. Acquisisci il valore di B 3. Poni i = 1 4. Poni prodotto = 0 5. Se A = 0 allora vai all istruzione nr. 7 6. Mentre i <= B ripeti: 1. prodotto = prodotto + A 2. i = i + 1 7. Stampa il valore di prodotto 8. Fine

Correttezza Attributi di un algoritmo Un algoritmo non deve soltanto produrre un risultato, ma deve produrre un risultato corretto Un algoritmo deve produrre un risultato utile Facilità di comprensione Necessità di adattare un algoritmo per una varietà di scenari possibili. Importante per garantire la manutenibilità dei programmi Eleganza Spesso in antitesi con facilità di comprensione Es.: Somma dei primi 100 numeri

Efficienza Attributi di un algoritmo - II Tempo di calcolo e spazio in memoria sono quantità limitate L efficienza di una algoritmo misura la sua capacità di utilizzare bene le risorse del calcolatore sui cui gira, in termini di tempo di calcolo e memoria utilizzata Efficienza nell uso dello spazio Quantità di informazioni da memorizzare per svolgere il compito in aggiunta ai dati di ingresso Tanto più inefficiente quanto più memoria aggiuntiva è richiesta Efficienza nell uso del tempo di calcolo Benchmarking: fissare i parametri della misura, ovvero l insieme dei dati di ingresso, la macchina specifica, il particolare profilo di uso dell algoritmo

Attributi di un algoritmo - III Efficienza nell uso del tempo di calcolo Indicazione della quantità di lavoro richiesta dalla natura dell algoritmo Tale quantità di lavoro dipende dal numero di passi richiesti per eseguire il compito Il confronto tra due algoritmi va operato sulla base del numero di passi e non del tempo di esecuzione su una particolare macchina.

Domande?

Esercizio Calcolo del Massimo Comun Divisore (algoritmo di Euclide) 1. Prendi due numeri interi positivi I e J, con I > J 2. Dividi I per J e chiama R il resto 3. Se R è diverso da 0, reimposta I al valore di J, reimposta J al valore di R e torna al passo 2 4. Stampa il risultato, MCD che è il valore di J 5. Stop I = 32, J = 20 I = 32, J = 0

Esercizio Calcolo del Massimo Comun Divisore (algoritmo di Euclide) 1. Prendi due numeri interi positivi I e J, con I > J 2. Se J è diverso da zero, allora esegui i passi da 3 a 5 3. Dividi I per J e chiama R il resto 4. Se R è diverso da 0, reimposta I al valore di J, reimposta J al valore di R e torna al passo 2 5. Stampa il risultato, MCD che è il valore di J 6. Stop I = 32, J = 20 I = 32, J = 0