Sei sulla pagina 1di 18

Gli algoritmi

Prof. Pasquale De Michele

Pasquale De Michele Gli algoritmi


Elaborazione dell’informazione
Algoritmo (procedura di elaborazione)
Prima definizione: successione finita e ordinata di passi
(operazioni) che risolve una classe di problemi in un
tempo finito.

Programma
Codifica dell’algoritmo in un linguaggio comprensibile
dall’esecutore.

Esecutore
Una macchina capace di eseguire i programmi (le azioni
specificate dall’algoritmo codificate in un determinato
linguaggio di programmazione).

Pasquale De Michele Gli algoritmi


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

Ogni compito che noi svolgiamo quotidianamente può


essere visto come un algoritmo.

Pasquale De Michele Gli algoritmi


Definizione di algoritmo
Un algoritmo è una successione finita e ordinata di
operazioni elementari, non ambigue ed effe0vamente
eseguibili che, applicate ad un insieme di condizioni iniziali,
allo scopo di risolvere una classe di problemi, produce un
risultato 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.

Pasquale De Michele Gli algoritmi


Definizione di algoritmo: successione finita e ordinata

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 le


operazioni è fondamentale. Cambiando l’ordine con il quale si
eseguono le operazioni, cambia l’algoritmo stesso.

Pasquale De Michele Gli algoritmi


Definizione di algoritmo: operazioni elementari, non
ambigue ed effeMvamente eseguibili
Algoritmo: …operazioni elementari, non ambigue ed effettivamente calcolabili, applicate ad un
insieme 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 essere
univocamente interpretabile dall’esecutore. In questo modo, i risultati ottenuti dall'esecuzione
dell'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 essere
eseguite 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.

Pasquale De Michele Gli algoritmi


Definizione di algoritmo: risolve una classe di problemi

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

Classe di problemi: calcolo dell’area di un generico


rettangolo (qualunque sia la base e qualunque sia l’altezza).

Problema: calcolo dell’area del rettangolo con base di 6cm e


altezza di 4cm.

Pasquale De Michele Gli algoritmi


Gli algoritmi: viene prodotto un risultato in un tempo finito

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 che
l’utilizzatore ha fornito in INPUT il valore della base e
dell’altezza del rettangolo.

L’algoritmo deve produrre il suddetto risultato in un tempo


finito (anche in virtù del numero finito di passi di cui è
costituito).

Pasquale De Michele Gli algoritmi


Gli algoritmi: le proprietà
Tutte le caratteristiche analizzate a proposito degli algoritmo si possono
sintetizzare 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 in


modo diretto e univoco dall'esecutore, sia esso umano o artificiale.

Finitezza. L'algoritmo deve essere composto da un numero finito di


passi e richiedere una quantità finita di dati in ingresso.

Terminazione. L'esecuzione deve avere termine dopo un tempo


finito.

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

Pasquale De Michele Gli algoritmi


Gli algoritmi: le proprietà
Inoltre:
Un algoritmo si dice completo quando considera tu8 i casi
che 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 non
saprebbe come comportarsi nel caso in cui N=0. Un
algoritmo siffaHo sarebbe non completo.
Un algoritmo si dice generale quando risolve una classe di
problemi.
• Considera l’esempio di prima sulla definizione di classe di
problemi.
Un algoritmo si dice determinis/co quando partendo dalla
stessa situazione iniziale (gli stessi input) fornisce sempre lo
stesso risultato (output).

Pasquale De Michele Gli algoritmi


Operazioni: istruzioni
In informatica le operazioni vengono dette istruzioni.

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

Pasquale De Michele Gli algoritmi


Esempi di algoritmi
Ricetta di cucina.

Sequenza di operazioni per registrare un


programma con un videoregistratore.

Sequenza di operazioni per montare una tenda.

Sequenza di operazioni per moltiplicare due


numeri.

Sequenza di operazioni per lavarsi i denti

Pasquale De Michele Gli algoritmi


Un algoritmo ben scritto
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.
Pasquale De Michele Gli algoritmi
Un algoritmo ben scritto
Nell’esempio mostrato, si verificano le proprietà ”finito e
ordinato”.

L’algoritmo è finito: inizia con l’operazione 1 e


termina con l’operazione 14.
L’algoritmo è ordinato: se cambiassi l’ordine di
alcune operazioni, potrei ottenere:

Pasquale De Michele Gli algoritmi


Un algoritmo mal scritto
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.
Pasquale De Michele Gli algoritmi
Concetto di algoritmo
L’obie2vo è la costruzione di uno o più mezzi di
calcolo in grado di eseguire “operazioni primi?ve”
(ovvero effe2vamente calcolabili).

Un mezzo di calcolo che esegue operazioni primi?ve


permeFe di automa?zzare la soluzione di un
problema espressa da un algoritmo.

La soluzione di un problema espressa da un algoritmo


cos?tuito da sequenze di operazioni primi?ve può
essere automa?zzata.

Pasquale De Michele Gli algoritmi


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

Inizio
Azione
Fine

I O
Comunicazione Comunicazione V F
Controllo

Salto

Pasquale De Michele Gli algoritmi


Un algoritmo rappresentato con i diagrammi di flusso

Verificare se un numero è maggiore di 10 oppure no. Nel caso in cui il


numero sia maggiore di 10 raddoppiarlo, altrimenti, dividerlo per 2.
Stampare il nuovo numero.
Inizio

“Inserisci un numero” O

N I
V F
N>10
N ß N*2 N ß N/2

“Il nuovo numero è: ”, N O

Fine

Pasquale De Michele

Potrebbero piacerti anche