Sei sulla pagina 1di 19

Algoritmo

Metodo di calcolo procedura per la risoluzione di un


problema.

un algoritmo si pu definire come un procedimento che


consente di ottenere un risultato atteso eseguendo, in un
determinato ordine, un insieme di passi semplici
(istruzioni) corrispondenti ad azioni scelte solitamente da
un insieme finito .

Ogni algoritmo si presenta come un elenco finito di


istruzioni scritte in un linguaggio pi o meno rigoroso.

Caratteristiche dellalgoritmo

Lalgoritmo deve essere:


completo

ed esaustivo, cio valido per tutti i casi che si


possono verificare durante la sua esecuzione;
riproducibile, cio, per ogni successiva applicazione,
partendo dagli stessi dati iniziali si deve arrivare agli
stessi dati finali;
deterministico, il che significa che le azioni di cui
composto devono fornire la medesima certa soluzione,
indipendentemente dalla natura dellesecutore.

Attenzione: lesecutore dellalgoritmo non


necessariamente il calcolatore!

Esempio 1

Problema del Lupo, della Capra e del Cavolo:

Un contadino deve attraversare un fiume portando con se


un Lupo, una Capra e un Cavolo. Egli dispone per di
una barca che pu portare uno solo dei tre suddetti
passeggeri oltre a se stesso. Trovare una sequenza di
azioni per portare il Contadino sullaltra sponda con le
sue cose tenendo presente che, in assenza del Contadino,
il Lupo mangerebbe la Capra e la Capra mangerebbe il
Cavolo.

Esempio 1

Sequenza corretta:
Porta

la capra sullaltra sponda;


Torna indietro;
Porta il cavolo sullaltra sponda;
Porta indietro la capra;
Porta il lupo sullaltra sponda;
Torna indietro;
Porta la capra sullaltra sponda.

Esempio 2

Problema della moneta falsa:

Data una bilancia a due piatti in grado di dire solo


se gli oggetti sul primo piatto hanno lo stesso peso
o meno di quelli sul secondo piatto, si vuole
individuare quale tra 3 monete quella falsa
sapendo che essa ha un peso diverso da quello
delle monete autentiche.

Esempio 2

Esempio pi significativo la cui soluzione pi


vicina al concetto di algoritmo, poich si nota la
gestione di dati in ingresso e uscita.

Esempio 2
Soluzione:

Acquisisci le tre monete M1, M2, M3;

Posa M1 su piatto ed M2 sullaltro;

Se la bilancia in equilibrio

Allora la moneta falsa M3

Altrimenti sostituisci M1 con M3 nella bilancia

Se la bilancia in equilibrio
Allora la moneta falsa M1
Altrimenti la moneta falsa M2

Esempio 2

Lalgoritmo dellesempio 2 pu dar luogo a pi di


un processo.

In questo caso i processi sono tanti quanti i


possibili esiti in uscita:
La

moneta falsa M1
La moneta falsa M2
La moneta falsa M3

Algoritmo di Euclide

Problema del Massimo Comun Divisore:

Dati due numeri naturali non entrambi nulli,


trovare il MCD.

Euclide Descrisse un algoritmo per la


meccanizzazione del calcolo del MCD. Lalgoritmo
si basa sulle seguenti propriet del MCD:
Il

MCD fra a e 0 a
Il MCD fra a e b uguale al MCD fra b e il resto della
divisione fra a e b

Algoritmo di Euclide
1] acquisisci A e B con B non nullo
2] XA; YB
3]a] se Y=0
b] allora il MCD fra A e B X (arrestati)
c] altrimenti Rresto della divisione tra X ed Y
d]
XY; YR e torna al punto 3

N. istr. Azione

Acquisizione A e B

45 75

XA; YB

3a

Y=0? no!

3c

R resto di X/Y

3d

XY; YR

3a

Y=0? no!

3c

R resto di X/Y

3d

XY; YR

45

75

75

45

45

30

45

30

Out

N. istr. Azione
3a
Y=0? no!
3c

R resto di X/Y

3d

XY; YR

3a

Y=0? no!

3c

R resto di X/Y

3d

XY; YR

3a

Y=0? si!

3b

Restituisci X
arrestati

30

15

15

Out

15

15

Quale linguaggio adottare per gli


algoritmi?

Gli algoritmi vengono generalmente proposti


mediante linguaggi di comodo per evitare di legarsi
a qualche linguaggio di programmazione.

Quale linguaggio adottare per gli


algoritmi?

Algoritmo di Euclide in linguaggio naturale:


Per trovare il MCD tra due numeri A e B procedi
come segue: copia i valori di A e B in due celle che
chiamiamo X ed Y. Se Y=0 allora X il MCD
cercato tra A e B e arrestati. Altrimenti sostituisci il
contenuto di X con Y e il contenuto di Y con il
resto della divisione tra i contenuti di X ed Y e
ripeti il procedimento.

Quale linguaggio adottare per gli


algoritmi?

Per descrivere gli algoritmi, si preferisce utilizzare


un linguaggio di progetto o di pseudocodifica.

Diagramma di flusso - Flow Chart

Pseudocodice

Metalinguaggio per algoritmo

Il metalinguaggio per la stesura di un algoritmo


un insieme di simboli grafici, ciascuno con un
determinato significato, che realizza il flow chart
(diagramma di flusso).

Come gi detto, tutto deve essere compreso tra un


inizio ed una fine, simboleggiati da due ovali.

Le azioni sono connesse tra loro mediante frecce.


INIZIO

FINE

Simbologia

Il rettangolo, blocco di elaborazione, contiene al


suo interno una istruzione da eseguire.

Il parallelogramma, blocco di input/output,


rappresenta operazioni di lettura o scrittura dei
dati.

elaborazione

leggi/scrivi

Simbologia

La losanga, blocco di controllo, rappresenta


unoperazione di confronto o una condizione che
pu avere un esito positivo o negativo. Le azioni
intraprese variano secondo lesito del controllo.
Questo lunico blocco da cui partono due frecce.

si

no
condizione

Simbologia