Corso di Informatica
Modulo T1
2-Proprietà degli algoritmi
M. Malatesta 2-Proprietà degli algoritmi-17
1
26/09/2013
Prerequisiti
Conoscere il concetto di M.C.D. tra due numeri interi
Concetto intuitivo di funzione matematica
M. Malatesta 2-Proprietà degli algoritmi-17
2
26/09/2013
1
Introduzione
Sappiamo scrivere algoritmi, rappresentandoli in diversi modi, ma resta
da rispondere ancora ai seguenti interrogativi.
Ogni sequenza logica di operazioni è un algoritmo?
Quali sono le azioni elementari?
Quali sono le proprietà degli algoritmi?
In questa Unità rispondiamo a questi quesiti.
M. Malatesta 2-Proprietà degli algoritmi-17
3
26/09/2013
M.C.D. tra due interi
Problema: si deve calcolare il massimo comun divisore tra due numeri
interi (applicando la regola di calcolo consueta)
ATTIVITA’: scrivere l’analisi del testo del
problema
Fase 1
Analisi del testo
Il problema chiede di calcolare il M.C.D. tra due numeri interi a e b.
Usiamo una variabile mcd intera per il risultato. Supponiamo di saper
scomporre un numero in fattori primi, di saper individuare il minimo
fra 2 numeri, di saper individuare se un elemento è comune a due
insiemi e di saper svolgere la moltiplicazione. I dati espliciti sono
sufficienti ed il problema è solubile. La verifica del procedimento si
effettua constatando che mcd è effettivamente M.C.D.(a, b).
M. Malatesta 2-Proprietà degli algoritmi-17
4
26/09/2013
2
M.C.D. tra due interi
ATTIVITA’: scrivere la tabella delle variabili
Dati
INPUT
OUTPUT
Nome
a
b
mcd
Tipo
Intero
Intero
Intero
Significato
primo numero
secondo numero
M.C.D.(a, b)
ATTIVITA’: scrivere il procedimento risolutivo
Procedimento risolutivo:
Immetti i valori di a e di b. Scomponi a in fattori primi e ponili nell’insieme
PA; scomponi b in fattori primi e ponili nell’insieme PB. Seleziona negli
insiemi PA e PB i fattori comuni con il minimo esponente e ponili in un
insieme PAB. Calcola il prodotto mcd degli elementi di PAB ed emetti il
valore di mcd
M. Malatesta 2-Proprietà degli algoritmi-17
5
26/09/2013
M.C.D. tra due interi
Algoritmo MCD ATTIVITA’: scrivere il corrispondente algoritmo a passi
numerati (Fase 2)
Inizio
1: immetti il valore di a;
2: immetti il valore di b;
3: scomponi a in fattori primi e poni i fattori primi in un insieme PA;
4: scomponi b in fattori primi e poni i fattori in un insieme PB;
5: poni in PAB l’intersezione di PA e PB, selezionando i fattori comuni con il
minimo esponente;
6: calcola il prodotto mcd degli elementi di PAB;
7: emetti il valore di mcd;
Fine.
M. Malatesta 2-Proprietà degli algoritmi-17
6
26/09/2013
3
M.C.D. tra due interi
L’esempio descritto prevede:
un esecutore
– colui che esegue il processo
una sequenza logica di passi numerati
un repertorio di azioni operative
– immetti, scomponi in fattori primi, emetti, ecc che l’esecutore sa
svolgere autonomamente
una esecuzione sequenziale che NON effettua alcun salto.
Sfortunatamente, nessun esecutore ha nel suo repertorio azioni come:
“scomponi…”
“poni in un insieme…”
qiindi l’algoritmo scritto non può essere eseguito.
M. Malatesta 2-Proprietà degli algoritmi-17
7
26/09/2013
M.C.D. tra due interi
Problema: si deve calcolare il massimo comun divisore tra due numeri
interi (applicando la definizione)
ATTIVITA’: scrivere l’analisi del testo del
problema
Fase 1
Analisi del testo
Il problema chiede di calcolare il M.C.D. tra due numeri interi a e b.
Usiamo una variabile mcd intera per il risultato. Supponiamo di saper
calcolare i divisori di un numero, di saper individuare se un numero
è comune a due insiemi e di saper calcolare il massimo di un insieme
di numeri. I dati espliciti sono sufficienti ed il problema è solubile.
La verifica del procedimento si effettua constatando che mcd è
effettivamente M.C.D.(a, b).
M. Malatesta 2-Proprietà degli algoritmi-17
8
26/09/2013
4
M.C.D. tra due interi
ATTIVITA’: scrivere la tabella delle variabili di I/O
Dati
INPUT
OUTPUT
Nome
a
b
mcd
Tipo
Intero
Intero
Intero
Significato
primo numero
secondo numero
M.C.D.(a, b)
ATTIVITA’: scrivere il procedimento risolutivo
Procedimento risolutivo:
Immetti il valore di a e di b: calcola i divisori di a e ponili in un insieme
DA; calcola i divisori di b e ponili in un insieme DB. Esegui
l’intersezione di DA con DB nell’insieme DAB. Calcola il valore
massimo mcd dell’insieme DAB ed emettilo all’esterno.
M. Malatesta 2-Proprietà degli algoritmi-17
9
26/09/2013
M.C.D. tra due interi
ATTIVITA’: scrivere il corrispondente algoritmo a passi
Algoritmo MCD
numerati (Fase 2)
Inizio
1: immetti il valore di a;
2: immetti il valore di b;
3: calcola i divisori di a e ponili in un insieme DA;
4: calcola i divisori di b e ponili in un insieme DB;
5: esegui l’intersezione di DA e DB che chiamiamo DAB;
Problema
che facciamo?
6: calcola il valore massimo mcd tra gli
elementi …
di PAB;
Niente paura … ci viene in
7: emetti il valore di mcd;
aiuto Euclide… parliamo di
Fine.
Sfortunatamente, nessun esecutore
nel suo
repertorio azioni come:
2300haanni
fa!!!
“calcola il valore massimo di un insieme …”
“poni in un insieme…”
qiindi l’algoritmo scritto non può essere eseguito.
M. Malatesta 2-Proprietà degli algoritmi-17
10
26/09/2013
5
M.C.D. tra due interi
Problema: si deve calcolare il massimo comun divisore tra due numeri
interi a e b (metodo della divisione di Euclide)
Osservazione:
L’algoritmo di divisione di Euclide che funziona come segue:
Es. a=18, b=12.
a
18
18
12
b
r
12
12
6
6
0
Note
18:12 resto 6
12:6 resto 0
B è l’MCD
11
26/09/2013
M. Malatesta 2-Proprietà degli algoritmi-17
M.C.D. tra due interi
Dati
INPUT
OUTPUT
Nome
a
b
mcd
Tipo
Intero
Intero
Intero
Significato
primo numero
secondo numero
M.C.D.(a, b)
ATTIVITA’: scrivere l’analisi del testo del
problema
Fase 1
Analisi del testo
Il problema chiede di calcolare il M.C.D. tra due numeri interi a e b.
Usiamo una variabile mcd intera per il risultato. Supponiamo di saper
calcolare il quoziente ed il resto di una divisione intera. I dati
espliciti sono sufficienti ed il problema è solubile. La verifica del
procedimento si effettua constatando che mcd è effettivamente
M.C.D.(a, b).
M. Malatesta 2-Proprietà degli algoritmi-17
12
26/09/2013
6
M.C.D. tra due interi
ATTIVITA’: scrivere il procedimento risolutivo
Procedimento risolutivo
Immetti il valore di a e di b. Esegui ripetutamente il calcolo del resto r della
divisione tra a e b ed ogni volta che si effettua la divisione, assegna b ad a
e r a b. Il procedimento di divisione termina quando r risulta uguale a 0. In
questo caso, assegna b ad mcd ed emetti mcd.
M. Malatesta 2-Proprietà degli algoritmi-17
13
26/09/2013
M.C.D. tra due interi
ATTIVITA’: scrivere il corrispondente algoritmo a passi
numerati (Fase 2)
Algoritmo MCD
Il gruppo di istruzioni 3-5-6-7 viene eseguito
Inizio
ciclicamente, fino al verificarsi della
1: immetti il valore di a;
condizione espressa dal controllo presente al
passo 4. Un ciclo è anche detto loop.
2: immetti il valore di b;
3: assegna ad r il resto della divisione tra a e b;
4: r = 0 ? Se SI vai al passo 8;
5: assegna b ad a;
L’istruzione di assegnazione consente di porre in una
6: assegna r a b;
variabile, il valore di una qualunque espressione. Si
indica con il simbolo “=“
7: vai al passo 3;
8: assegna b ad mcd;
9: emetti il valore di mcd;
Fine.
Salto incondizionato
M. Malatesta 2-Proprietà degli algoritmi-17
14
26/09/2013
7
M.C.D. tra due interi
Algoritmo MCD
Inizio
1: immetti il valore di a;
2: immetti il valore di b;
Il simbolo % indica il resto della
3: r = a % b;
divisione tra gli operandi che si
4: r = 0 ? Se SI vai al passo 8;
trovano ai suoi lati
5: a = b;
6: b = r;
Tutti gli esecutori sanno
Assegnazioni
7: vai al passo 3;
svolgere le operazioni
8: mcd = b;
indicate, per cui
9: emetti il valore di mcd;
l’algoritmo scritto può essere
eseguito!
Fine.
M. Malatesta 2-Proprietà degli algoritmi-17
15
26/09/2013
M.C.D. tra due interi
La verifica della correttezza dell’algoritmo viene fatta con la tabella di
traccia
r
Passo
a
b
mcd
Nella tabella di traccia si
1
12
assegnano alle variabili di
2
10
input i valori inizali e si svolge,
3
2
passo passo, l’algoritmo. Come
4
10
si vede, al passo 8, si ottiene
r=0; il corrispondente valore di
5
2
b rappresenta il mcd.
6
0
7
2
M. Malatesta 2-Proprietà degli algoritmi-17
16
26/09/2013
8
Azioni elementari
Nell’esempio del massimo comun divisore, abbiamo visto che il
repertorio è diventato:
ridotto, perché formato da poche azioni operative (immetti, emetti,
calcola resto)
semplice perché le istruzioni operative svolgono compiti elementari
M. Malatesta 2-Proprietà degli algoritmi-17
17
26/09/2013
Azioni elementari
Riducendo al minimo le capacità
dell’esecutore, esso riconosce le seguenti
azioni elementari:
istruzioni operative quali:
– immetti
– emetti
– assegna il valore di un’espressione
ad una variabile
controllo che consentono un:
– salto condizionato: Se...vai …
– salto incondizionato: vai…
M. Malatesta 2-Proprietà degli algoritmi-17
18
26/09/2013
9
Azioni elementari
M. Malatesta 2-Proprietà degli algoritmi-17
19
26/09/2013
Proprietà degli algoritmi
Rispetto alla descrizione in linguaggio naturale, un algoritmo risulta:
basato su un ridotto e semplice repertorio di istruzioni elementari
(operative e di controllo)
indipendente dal risolutore e suo modo di esprimersi
privo delle ambiguità tipiche del linguaggio naturale
Siamo perciò in grado di stabilire le proprietà cui devono soddisfare gli
algoritmi.
M. Malatesta 2-Proprietà degli algoritmi-17
20
26/09/2013
10
Proprietà degli algoritmi
- Generalità
Il processo risolutivo rappresentato dall’algoritmo deve essere in grado di
trattare non soltanto il problema da cui è nato, ma tutti i problemi che si
risolvono nello stesso modo e che ovviamente variano soltanto per i valori
degli input.
I problemi che hanno lo stesso procedimento risolutivo si
dice che appartengono alla stessa classe di problemi.
Pertanto l’algoritmo deve essere generale
M. Malatesta 2-Proprietà degli algoritmi-17
21
26/09/2013
Proprietà degli algoritmi
- Operatività discreta
Come abbiamo detto il processo risolutivo deve essere sequenziale nel tempo.
Una istruzione non può iniziare prima che la precedente sia terminata.
Poiché in un algoritmo può essere eseguita una sola istruzione
alla volta, si dice che esso opera in modo discreto.
M. Malatesta 2-Proprietà degli algoritmi-17
22
26/09/2013
11
Proprietà degli algoritmi
- Finitezza della descrizione
Le parole Inizio e Fine indicano che la descrizione del processo risolutivo di un
problema (algoritmo) deve avere una origine ed un termine.
I passi elementari che compongono un algoritmo devono
essere in numero finito. L’algoritmo deve cioè essere
finito nella sua descrizione.
M. Malatesta 2-Proprietà degli algoritmi-17
23
26/09/2013
Proprietà degli algoritmi
- Finitezza della esecuzione
L’inizio e la fine della descrizione di un algoritmo devono corrispondere anche
all’inizio e alla fine della sua esecuzione. Non è accettabile un algoritmo che
non termini la sua esecuzione.
Poiché l’esecuzione di un algoritmo deve avvenire dopo
un tempo finito rispetto al suo inizio, si dice che
l’algoritmo deve essere finito nella esecuzione
M. Malatesta 2-Proprietà degli algoritmi-17
24
26/09/2013
12
Proprietà degli algoritmi
- Non ambiguità
Ogni istruzione dell’algoritmo deve corrispondere ad una ben precisa
operazione del repertorio di istruzioni dell’esecutore. Non sono ammesse
nell’algoritmo istruzioni che l’esecutore non sia in grado di svolgere.
Poiché le istruzioni presenti nell’algoritmo devono avere
una interpretazione univoca da parte dell’esecutore, si
dice che l’algoritmo deve essere non ambiguo.
M. Malatesta 2-Proprietà degli algoritmi-17
25
26/09/2013
Proprietà degli algoritmi
- Effettività
Ogni istruzione dell’algoritmo deve far evolvere il processo risolutivo verso i
risultati voluti. Non sono ammesse istruzioni che non producano avanzamento
del processo risolutivo. In altre parole, nella tabella di traccia ogni passo prevede
il cambiamento di valore di una variabile
Poiché le istruzioni presenti nell’algoritmo devono di fatto
far evolvere il processo e quindi produrre un effetto
(calcolare i risultati) si dice che l’algoritmo deve essere
effettivo
M. Malatesta 2-Proprietà degli algoritmi-17
26
26/09/2013
13
Proprietà degli algoritmi
- Sequenzialità
Le operazioni previste dall’algoritmo devono essere eseguite una dopo l’altra
nell’ordine in cui compaiono
Poiché le istruzioni presenti nell’algoritmo devono di fatto
essere eseguite nell’ordine strettamente consecutivo, si
dice che l’algoritmo deve essere sequenziale
27
26/09/2013
M. Malatesta 2-Proprietà degli algoritmi-17
Concetto matematico di algoritmo
Dati in
ingresso (P)
Dati in uscita
(A)
Un algoritmo esprime un legame tra due insiemi
(insieme dei dati in input e insieme dei dati in output) e
pertanto esso corrisponde al concetto matematico di
funzione.
Se non è possibile individuare una funzione che leghi
logicamente l’input e l’output di un problema, il
problema non è solubile e non esiste alcun algoritmo in
grado di risolverlo.
M. Malatesta 2-Proprietà degli algoritmi-17
28
26/09/2013
14
Le variabili
Quando si scrive un algoritmo può essere necessario utilizzare delle variabili.
Ogni variabile è identificata da un:
Nome, scelto dal programmatore in modo che ricordi il suo significato
Scopo, indica la finalità della variabile (ciò che indichiamo con
“Significato” nella tabella delle variabili).
Tipo, indica il tipo di dato cioè se si tratta di una variabile di tipo Intero,
Reale, Logico, Carattere o Stringa (sequenza di caratteri)
Contenuto, rappresenta il valore registrato nella variabile
M. Malatesta 2-Proprietà degli algoritmi-17
29
26/09/2013
Argomenti
M.C.D. tra due interi
Azioni elementari
Area del quadrato
Minimo fra tre valori
Proprietà degli algoritmi
–
–
–
–
–
–
–
Generalità
Operatività discreta
Finitezza della descrizione
Finitezza della esecuzione
Non ambiguità
Effettività
Sequenzialità
Concetto matematico di algoritmo
Le variabili
M. Malatesta 2-Proprietà degli algoritmi-17
30
26/09/2013
15
Altre fonti di informazione
P.Gallo, F.Salerno – Informatica Generale 1, ed. Minerva Italica
G.Callegarin – Corso di Informatica 1, ed. CEDAM
M. Pellerey-Informatica: fondamenti culturali e tecnologici, ed. SEI
M. Malatesta 2-Proprietà degli algoritmi-17
31
26/09/2013
16