L'ALGORITMO

A cosa serve

r

Un algoritmo rappresenta la massima concretizzazione di una capacità dell’essere umano: il problem solving, ossia la capacità di risolvere problemi, conoscendo le condizioni della situazione di partenza e prevedendo/osservando la situazione o le situazioni finali.Un algoritmo è importante per scrivere programmi funzionanti, sia che esso sia il programma che esegue ciclicamente la somma di più numeri inseriti sia che sia un grande software tipo Adobe Photoshop o Microsoft Flight Simulator, giusto per citarne qualcuno: naturalmente le tecniche di progettazione del software sono diverse, ma la risoluzione del problema o di una parte di esso è sempre affidata a un algoritmo.Oggi è facile affermare che gli algoritmi caratterizzano molti aspetti della nostra vita quotidiana.La prenotazione di un posto in aereo, l'effettuazione di una transazione sicura ad uno sportello bancario elettronico, la ricerca di informazioni nel Web, la sicurezza della firma elettronica, la compressione o decompressione di file di musica o immagini sono solo alcuni esempi della pervasività degli algoritmi nella nostra vita quotidiana.

Le sue caratteristiche

FINITO

FINITO

r

Il processo risolutivo descritto dall’algoritmo deve terminare dopo un numero finito di passi o azioni elementari e deve essere caratterizzato da un punto iniziale e da un punto finale

DETTAGLIATO

DETTAGLIATO

r

Ad ogni passo dell’algoritmo deve corrispondere un’azione elementare che l’esecutore è in grado di compiere.

NON AMBIGUO

NON AMBIGUO

r

Ogni passo o azione elementare di un algoritmo deve essere univocamente interpretabile dall’esecutore.

GENERALE

GENERALE

r

L’algoritmo va inteso come metodo di risoluzione non di un unico caso, ma di una classe di problemi dello stesso tipo.

DETERMINISTICO

DETERMINISTICO

r

L'algoritmo deve risolvere il problema in modo che, partendo sempre dalle stesse condizioni iniziali, deve fornire sempre gli stessi risultati finali ad ogni sua esecuzione.

COMPLETO

COMPLETO

r

Un buon algoritmo deve sempre considerare tutti i casi possibili che si possono verificare durante l’esecuzione e, per ogni caso previsto, indicare la soluzione da seguire.

LIMITATO NEL TEMPO

LIMITATO NEL TEMPO

r

Anche se l'algoritmo impiega molto tempo per raggiungere la soluzione, deve sempre comunque avere un punto di arresto.

EFFICIENTE

EFFICIENTE

r

L’esecuzione di un algoritmo deve comportare l’utilizzo, tendenzialmente, di meno risorse possibili (ossia tempo di esecuzione e spazio di memorizzazione).

Un semplice esempio

SOMMA DI DUE NUMERI INTERI

Tabelle dei dati

Tabelle dei dati

Pseudocodifica

Pseudocodifica

Flowchart

Flowchart

Cosa è

r

Un algoritmo contiene proprio la descrizione del processo risolutivo di un certo problema assegnato.Tale descrizione consiste in una sequenza finita, ordinata ed univocamente interpretabile di passi o istruzioni elementari che permettono di risolvere una determinata classe di problemi.Non tutti i problemi che si incontrano sono risolvibili tramite algoritmi!

Le figure coinvolte

Risolutore

Risolutore

r

IL RISOLUTORE è colui che definisce il processo risolutivo per risolvere il problema.Al risolutore spetta l’attività creativa, il processo risolutivo non dipende solo da capacità tecniche ma anche dalla cultura, dall’intuizione e dall'esperienza del risolutore.Il risolutore è un essere umano!

a
Esecutore

Esecutore

r

L’ESECUTORE è colui il quale esegue il processo risolutivo individuato dall'esecutore.All’esecutore spetta l’attività esecutiva del procedimento, ossia seguire il processo risolutivo descritto dal risolutore per giungere concretamente alla soluzione del problema,L’esecutore è la macchina!

Come si rappresenta

Linguaggio Formale

r

Un linguaggio formale si intende un linguaggio in cui i simboli e/o parole utilizzate hanno sempre un unico significato.Esempi di linguaggi formali: l'uso delle bandiere in formula 1, la segnaletica stradale, le segnalazioni in aeroporto sulla pista di rullaggio (AIRCFART MARSHALLING), le spie del cruscotto di un'automobile, etc.

a
Pseudocodifica

Pseudocodifica

Flowchart

Flowchart

Dulcis in fundo

L'algoritmo più bello del mondo