gli algoritmi - eneagrid · pasquale de michele un algoritmo mal scritto gli algoritmi 1.posa il...

18
Pasquale De Michele Gli algoritmi Prof. Pasquale De Michele Gli algoritmi

Upload: others

Post on 15-Oct-2019

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Gli algoritmi - ENEAGRID · Pasquale De Michele Un algoritmo mal scritto Gli algoritmi 1.Posa il dentifricio. 2.Spazzolare. 3.Chiudi l’acqua. 4.Posa lo spazzolino. 5.Prendi il dentifricio

Pasquale De Michele

Gli algoritmi

Prof. Pasquale De Michele

Gli algoritmi

Page 2: Gli algoritmi - ENEAGRID · Pasquale De Michele Un algoritmo mal scritto Gli algoritmi 1.Posa il dentifricio. 2.Spazzolare. 3.Chiudi l’acqua. 4.Posa lo spazzolino. 5.Prendi il dentifricio

Pasquale De Michele

Algoritmo (procedura di elaborazione)Prima definizione: successione finita e ordinata di passi(operazioni) che risolve una classe di problemi in untempo finito.

ProgrammaCodifica dell’algoritmo in un linguaggio comprensibiledall’esecutore.

EsecutoreUna macchina capace di eseguire i programmi (le azionispecificate dall’algoritmo codificate in un determinatolinguaggio di programmazione).

Elaborazione dell’informazione

Gli algoritmi

Page 3: Gli algoritmi - ENEAGRID · Pasquale De Michele Un algoritmo mal scritto Gli algoritmi 1.Posa il dentifricio. 2.Spazzolare. 3.Chiudi l’acqua. 4.Posa lo spazzolino. 5.Prendi il dentifricio

Pasquale De Michele

Un algoritmo è una successione finita e ordinata dioperazioni elementari, non ambigue ed effettivamenteeseguibili che, applicate ad un insieme di condizioni iniziali,allo scopo di risolvere una classe di problemi, produce unrisultato e termina in una quantità di tempo finita.

Ogni compito che noi svolgiamo quotidianamente puòessere visto come un algoritmo.

Definizione di algoritmo

Gli algoritmi

Page 4: Gli algoritmi - ENEAGRID · Pasquale De Michele Un algoritmo mal scritto Gli algoritmi 1.Posa il dentifricio. 2.Spazzolare. 3.Chiudi l’acqua. 4.Posa lo spazzolino. 5.Prendi il dentifricio

Pasquale De Michele

Un algoritmo è una successione finita e ordinata dioperazioni elementari, non ambigue ed effe0vamenteeseguibili che, applicate ad un insieme di condizioni iniziali,allo scopo di risolvere una classe di problemi, produce unrisultato e termina in una quan6tà di tempo finita.

Parole chiave:Successione finita e ordinata.Operazioni non ambigue ed effeBvamente calcolabili.Risolve una classe di problemi.Produce un risultato.Termina in un tempo finito.

Definizione di algoritmo

Gli algoritmi

Page 5: Gli algoritmi - ENEAGRID · Pasquale De Michele Un algoritmo mal scritto Gli algoritmi 1.Posa il dentifricio. 2.Spazzolare. 3.Chiudi l’acqua. 4.Posa lo spazzolino. 5.Prendi il dentifricio

Pasquale De Michele

Algoritmo: una successione finita e ordinata di operazioni…

Per finita si intende che un algoritmo ha un inizio ed una fine:non ci sono infinite operazioni da compiere. Di conseguenza,un algoritmo ha sempre un inizio ed una fine.

Per ordinato si intende che l’ordine con il quale si eseguono leoperazioni è fondamentale. Cambiando l’ordine con il quale sieseguono le operazioni, cambia l’algoritmo stesso.

Definizione di algoritmo: successione finita e ordinata

Gli algoritmi

Page 6: Gli algoritmi - ENEAGRID · Pasquale De Michele Un algoritmo mal scritto Gli algoritmi 1.Posa il dentifricio. 2.Spazzolare. 3.Chiudi l’acqua. 4.Posa lo spazzolino. 5.Prendi il dentifricio

Pasquale De Michele

Algoritmo: …operazioni elementari, non ambigue ed effettivamente calcolabili, applicate ad uninsieme di condizioni iniziali…Operazioni elementari (atomica o primitiva)

Operazione non atomica: risolvi equazione di II grado.Operazioni atomiche:• Richiedi il coefficiente a;• Richiedi il coefficiente b;• Richiedi il coefficiente c;• Calcola il delta;• …

Operazioni non ambigue, nel senso che ogni operazione prevista dall’algoritmo deve essereunivocamente interpretabile dall’esecutore. In questo modo, i risultati ottenuti dall'esecuzionedell'algoritmo non cambiano al variare dell’esecutore (macchina o essere umano).

Operazione ambigua: se l’acqua è calda calare la pasta.Operazione non ambigua: se l’acqua raggiunge i 100�C calare la pasta.

Operazioni effettivamente eseguibili, nel senso che le informazioni devono poter essereeseguite con le risorse a disposizione dell’esecutore:

Operazione non effettivamente eseguibile su un PC: prepara il caffè.Operazione non effettivamente eseguibile su un PC: calcola l’area di un rettangolo.

Definizione di algoritmo: operazioni elementari, non ambigue ed effeMvamente eseguibili

Gli algoritmi

Page 7: Gli algoritmi - ENEAGRID · Pasquale De Michele Un algoritmo mal scritto Gli algoritmi 1.Posa il dentifricio. 2.Spazzolare. 3.Chiudi l’acqua. 4.Posa lo spazzolino. 5.Prendi il dentifricio

Pasquale De Michele

Algoritmo: …allo scopo di risolvere una classe di problemi…

Classe di problemi: calcolo dell’area di un genericorettangolo (qualunque sia la base e qualunque sia l’altezza).

Problema: calcolo dell’area del rettangolo con base di 6cm ealtezza di 4cm.

Definizione di algoritmo: risolve una classe di problemi

Gli algoritmi

Page 8: Gli algoritmi - ENEAGRID · Pasquale De Michele Un algoritmo mal scritto Gli algoritmi 1.Posa il dentifricio. 2.Spazzolare. 3.Chiudi l’acqua. 4.Posa lo spazzolino. 5.Prendi il dentifricio

Pasquale De Michele

Algoritmo: …produce un risultato e termina in una quantitàdi tempo finito.

L’algoritmo deve produrre un risultato finale.Ad esempio, il valore dell’area del rettangolo dopo chel’utilizzatore ha fornito in INPUT il valore della base edell’altezza del rettangolo.

L’algoritmo deve produrre il suddetto risultato in un tempofinito (anche in virtù del numero finito di passi di cui ècostituito).

Gli algoritmi: viene prodotto un risultato in un tempo finito

Gli algoritmi

Page 9: Gli algoritmi - ENEAGRID · Pasquale De Michele Un algoritmo mal scritto Gli algoritmi 1.Posa il dentifricio. 2.Spazzolare. 3.Chiudi l’acqua. 4.Posa lo spazzolino. 5.Prendi il dentifricio

Pasquale De Michele

Tutte le caratteristiche analizzate a proposito degli algoritmo si possonosintetizzare con le seguenti proprietà.

Atomicità. I passi costituenti (le operazioni) devono essere“elementari”, ovvero non ulteriormente scomponibili.

Non ambiguità. I passi costituenti devono essere interpretabili inmodo diretto e univoco dall'esecutore, sia esso umano o artificiale.

Finitezza. L'algoritmo deve essere composto da un numero finito dipassi e richiedere una quantità finita di dati in ingresso.

Terminazione. L'esecuzione deve avere termine dopo un tempofinito.

Effettività. L'esecuzione deve portare a un risultato univoco.

Gli algoritmi: le proprietà

Gli algoritmi

Page 10: Gli algoritmi - ENEAGRID · Pasquale De Michele Un algoritmo mal scritto Gli algoritmi 1.Posa il dentifricio. 2.Spazzolare. 3.Chiudi l’acqua. 4.Posa lo spazzolino. 5.Prendi il dentifricio

Pasquale De Michele

Inoltre:Un algoritmo si dice completo quando considera tu8 i casiche si possono verificare nell’esecuzione.• Supponiamo di voler verificare se un numero N è posiBvo,

nullo o negaBvo.– Se l’algoritmo verificasse solo se il numero N è posiBvo

o negaBvo, senza controllare se è nullo, allora nonsaprebbe come comportarsi nel caso in cui N=0. Unalgoritmo siffaHo sarebbe non completo.

Un algoritmo si dice generale quando risolve una classe diproblemi.• Considera l’esempio di prima sulla definizione di classe di

problemi.Un algoritmo si dice determinis/co quando partendo dallastessa situazione iniziale (gli stessi input) fornisce sempre lostesso risultato (output).

Gli algoritmi: le proprietà

Gli algoritmi

Page 11: Gli algoritmi - ENEAGRID · Pasquale De Michele Un algoritmo mal scritto Gli algoritmi 1.Posa il dentifricio. 2.Spazzolare. 3.Chiudi l’acqua. 4.Posa lo spazzolino. 5.Prendi il dentifricio

Pasquale De Michele

In informatica le operazioni vengono dette istruzioni.

Tipi di istruzioni:Azioni: “calcola il valore x”Controllo: “se si verifica A allora calcola x… altrimenticalcola y”Comunicazione: “leggi il valore x”; “stampa il valore y”Salto: “se si verifica A allora prosegui… altrimenti salta adun’altra istruzione”

Operazioni: istruzioni

Gli algoritmi

Page 12: Gli algoritmi - ENEAGRID · Pasquale De Michele Un algoritmo mal scritto Gli algoritmi 1.Posa il dentifricio. 2.Spazzolare. 3.Chiudi l’acqua. 4.Posa lo spazzolino. 5.Prendi il dentifricio

Pasquale De Michele

Ricetta di cucina.

Sequenza di operazioni per registrare unprogramma con un videoregistratore.

Sequenza di operazioni per montare una tenda.

Sequenza di operazioni per moltiplicare duenumeri.

Sequenza di operazioni per lavarsi i denti

Esempi di algoritmi

Gli algoritmi

Page 13: Gli algoritmi - ENEAGRID · Pasquale De Michele Un algoritmo mal scritto Gli algoritmi 1.Posa il dentifricio. 2.Spazzolare. 3.Chiudi l’acqua. 4.Posa lo spazzolino. 5.Prendi il dentifricio

Pasquale De Michele

Un algoritmo ben scritto

Gli algoritmi

Consideriamo l’algoritmo per lavarsi i den<:

1.Prendi lo spazzolino.

2.Prendi il den<fricio.

3.MeD il den<fricio sullo spazzolino.

4.Posa il den<fricio.

5.Apri l’acqua.

6.Bagna lo spazzolino.

7.Chiudi l’acqua.

8.Porta lo spazzolino alla bocca.

9.Spazzolare.

10.Controlla se i den< sono puli<.

a. Se i den< non sono ancora puli<, ritorna all’operazione 9.

b. Se i den< sono puli< vai all’operazione 11.

11.Posa lo spazzolino.

12.Apri l’acqua.

13.Sciacqua la bocca.

14.Chiudi l’acqua.

Page 14: Gli algoritmi - ENEAGRID · Pasquale De Michele Un algoritmo mal scritto Gli algoritmi 1.Posa il dentifricio. 2.Spazzolare. 3.Chiudi l’acqua. 4.Posa lo spazzolino. 5.Prendi il dentifricio

Pasquale De Michele

Nell’esempio mostrato, si verificano le proprietà ”finito eordinato”.

L’algoritmo è finito: inizia con l’operazione 1 etermina con l’operazione 14.L’algoritmo è ordinato: se cambiassi l’ordine dialcune operazioni, potrei ottenere:

Un algoritmo ben scritto

Gli algoritmi

Page 15: Gli algoritmi - ENEAGRID · Pasquale De Michele Un algoritmo mal scritto Gli algoritmi 1.Posa il dentifricio. 2.Spazzolare. 3.Chiudi l’acqua. 4.Posa lo spazzolino. 5.Prendi il dentifricio

Pasquale De Michele

Un algoritmo mal scritto

Gli algoritmi

1. Posa il dentifricio.2. Spazzolare.3. Chiudi l’acqua.4. Posa lo spazzolino.5. Prendi il dentifricio.6. Metti il dentifricio sullo spazzolino.7. Apri l’acqua.8. Bagna lo spazzolino.9. Chiudi l’acqua.10. Porta lo spazzolino alla bocca.11. Controlla se i denti sono puliti.12. Prendi lo spazzolino.

a. Se i denti non sono ancora puliti, ritorna all’operazione 11.b. Se i denti sono puliti vai all’operazione 13.

13. Apri l’acqua.14. Sciacqua la bocca.

Da come possiamo osservare, le operazioni restano le stesse, benché l’ordine sia variato, ma sicuramente con questo algoritmo non potremmo dire di aver lavato i denti correttamente.

Page 16: Gli algoritmi - ENEAGRID · Pasquale De Michele Un algoritmo mal scritto Gli algoritmi 1.Posa il dentifricio. 2.Spazzolare. 3.Chiudi l’acqua. 4.Posa lo spazzolino. 5.Prendi il dentifricio

Pasquale De Michele

L’obie2vo è la costruzione di uno o più mezzi dicalcolo in grado di eseguire “operazioni primi?ve”(ovvero effe2vamente calcolabili).

Un mezzo di calcolo che esegue operazioni primi?vepermeFe di automa?zzare la soluzione di unproblema espressa da un algoritmo.

La soluzione di un problema espressa da un algoritmocos?tuito da sequenze di operazioni primi?ve puòessere automa?zzata.

Concetto di algoritmo

Gli algoritmi

Page 17: Gli algoritmi - ENEAGRID · Pasquale De Michele Un algoritmo mal scritto Gli algoritmi 1.Posa il dentifricio. 2.Spazzolare. 3.Chiudi l’acqua. 4.Posa lo spazzolino. 5.Prendi il dentifricio

Pasquale De Michele

Rappresentazione degli algoritmi

Gli algoritmi

Uno degli strumenti utilizzati per introdurre e rappresentaregli algoritmi è rappresentato dai diagrammi di flusso (flow-chart diagrams) o diagrammi a blocchi.

Inizio

FineAzione

ComunicazioneI

ComunicazioneO

ControlloV F

Salto

Page 18: Gli algoritmi - ENEAGRID · Pasquale De Michele Un algoritmo mal scritto Gli algoritmi 1.Posa il dentifricio. 2.Spazzolare. 3.Chiudi l’acqua. 4.Posa lo spazzolino. 5.Prendi il dentifricio

Pasquale De Michele

Verificare se un numero è maggiore di 10 oppure no. Nel caso in cui ilnumero sia maggiore di 10 raddoppiarlo, altrimenti, dividerlo per 2.Stampare il nuovo numero.

Un algoritmo rappresentato con i diagrammi di flusso

Inizio

N I

Fine

“Inserisci un numero” O

N>10V F

N ß N*2 N ß N/2

“Il nuovo numero è: ”, N O