06 Algoritmo, Esecutore
06 Algoritmo, Esecutore
F O N DA M E N T I
D I I N F O R M AT I C A
E B A S I D I DAT I
I N G EG N E R I A
GESTIONALE
PROF. ROBERTO GENNA
A.A. 2024-2025
ALGORITMO
…E L’ I N F O R M AT I C A
1
10/03/2025
L’INFORMATICA
ELABORAZIONE
DELL’INFORMAZIONE
• Per poter «operare» sull’informazione, come primo passo, occorre
definire una CODIFICA dell’informazione stessa.
E poi?
2
10/03/2025
ELABORAZIONE =
TRASFORMAZIONE
• Il concetto astratto di elaborazione è quello di “trasformazione
di dati”:
Y = F(X)
– X dati iniziali,
– Y dati finali,
– F è una qualche (regola o funzione di) trasformazione (nel senso
più generico possibile).
3
10/03/2025
IL TERMINE ALGORITMO
COS’È UN ALGORITMO?
Intuitivamente:
• Un algoritmo è una sequenza finita di passi che
porta in tempo finito alla risoluzione di una classe
di problemi
– o, più in generale, alla realizzazione di un compito
• Risolvere un problema significa individuare un
(procedimento che permetta di arrivare al)
risultato atteso partendo dai dati iniziali
• Risolvere una classe di problemi significa
individuare il risultato qualsiasi siano i dati iniziali
(appartenenti al tipo…)
4
10/03/2025
FORMULAZIONE DI UN
PROBLEMA
• Processo di formulazione di un problema:
– Individuazione dei dati in ingresso
– Individuazione dei risultati desiderati
RISOLVERE UN PROBLEMA
IN MODO GENERALE
• Talvolta si parla di problema intendendo «classe di problemi»; in
questo caso, per evitare confusione, il singolo caso (individuato dal
valore dei dati in ingresso) è detto istanza del problema
ESEMPIO:
• Problema P: dato un numero naturale n calcolare la somma dei primi
n numeri naturali
• Istanza di P: risolvere P per n = 12 (ovvero calcolare la somma dei
primi 12 numeri naturali)
10
5
10/03/2025
COS’È UN ALGORITMO?
RICORDA:
• Un algoritmo è una sequenza finita di passi che porta in tempo finito alla
risoluzione di una classe di problemi
– Sequenza = successione ordinata è importante l’ordine in cui sono eseguiti i
passi
– Un passo: operazione elementare ben definita
– combinazioni di passi realizzano operazioni articolate, che consentono di
risolvere il problema
– finitezza: il problema deve essere risolto in un numero finito di passi; ovvero
non può richiedere infiniti passi.
11
COS’È UN ALGORITMO?
12
6
10/03/2025
13
14
7
10/03/2025
ESEMPIO: L’IMPASTO
DELLA PIZZA (RICETTA)
• Dati iniziali:
– Ingredienti: farina, acqua, sale, lievito
• Procedimento:
Azioni
– “In una ciotola versare l'acqua, il sale, una piccola quantità di ordinate
farina (circa il 10%) ed infine il lievito.
– Cominciare a girare con un mestolo (con l'impastatrice utilizzare
la velocità più bassa) fino a quando il lievito si sarà sciolto,
– successivamente versare gradualmente la farina, e impastare
sempre con il mestolo in modo che questa venga assorbita
completamente dall'acqua.
– Continuare fino a quando la farina non è conclusa e
completamente assorbita.[...]”
15
ALGORITMO: DEFINIZIONE
– Un algoritmo è un procedimento effettivo di
calcolo esplicito, descrivibile mediante un
numero finito di regole non ambigue (cioè
interpretabili in modo univoco) che, partendo
da un insieme di dati iniziali (input), conduce
al risultato dopo un numero finito di
operazioni (cioè di applicazioni delle regole),
cioè produce un insieme di valori finali
(output).
16
8
10/03/2025
ALGORITMO: DEFINIZIONE
PAROLE CHIAVE
• Procedimento (o procedura): è un processo, un qualcosa
che avviene nel tempo..
• Effettivo: qualcosa che avviene realmente, che è stato
realizzato, si è avuto un suo soddisfacimento.
• Procedimento di calcolo: la serie di operazioni (istruzioni)
da eseguire per raggiungere il completamento (termine)
del calcolo.
• Operazione: Azione specificata dall’applicazione di
un’opportuna regola
17
PROPRIETÀ DI UN
ALGORITMO
• Correttezza
– perviene alla soluzione del problema dato, senza difettare di alcun passo
fondamentale
• Un algoritmo si dice corretto se, per ogni istanza di input, si ferma
con l’output corretto
• Efficienza
– perviene alla soluzione nel modo migliore possibile, usando la minima
quantità di risorse (compatibilmente con la sua correttezza)
– Esempi tipici di risorse: tempo (di esecuzione), spazio (di memoria), …
• Finitezza
– il numero totale di azioni da eseguire, per ogni insieme di dati di
ingresso, deve essere finito
18
9
10/03/2025
PROPRIETÀ DI UN
ALGORITMO
• Eseguibilità
– ogni azione deve essere eseguibile dall’esecutore in un tempo finito
• Non-ambiguità
– ogni azione deve essere univocamente interpretabile dall'esecutore
• Determinismo
– Un algoritmo eseguito più volte e da diversi esecutori, a parità di
premesse, deve giungere a medesimi risultati
• Generalità o Universalità
– Un algoritmo, compatibilmente con i vincoli espressi dal problema, si
occupa della risoluzione di famiglie di problemi
19
ESEMPIO
Trovare la radice quadrata del numero reale x.
20
10
10/03/2025
ESEMPIO
Trovare la radice quadrata positiva, con precisione alla quarta cifra
decimale, del numero reale x.
21
UNA (POSSIBILE)
SOLUZIONE ERRATA!
Problema: Radice quadrata di X
1. INPUT: Scegli un numero Y
2. Calcola Y2
3. Se |X - Y2|< 5*10-4 allora OUTPUT: Y
4. altrimenti vai al passo 1
22
11
10/03/2025
UN’ALTRA (POSSIBILE)
SOLUZIONE
Problema: Radice quadrata di X
1. Y=1
2. Calcola Y2
3. Se |X - Y2|< 5*10-4 allora OUTPUT: Y
4. altrimenti sostituisci Y con (X/Y +Y)/2
5. vai al passo 2
23
ESEMPIO
24
12
10/03/2025
L’ESECUTORE
25
L’ESECUTORE
• La nozione di algoritmo presuppone l’esistenza di un “ente”
capace di risolvere in modo automatico il problema
– detto ESECUTORE
26
13
10/03/2025
L’ESECUTORE
I requisiti fondamentali:
• l'algoritmo deve essere formulato in un linguaggio
perfettamente comprensibile all'esecutore
(perfettamente = in maniera non ambigua)
• le azioni presenti nell'algoritmo devono essere interpretate
inequivocabilmente dall'esecutore
(inequivocabilmente = unica interpretazione possibile)
ESECUTORE
una macchina astratta capace di eseguire le azioni specificate
dall’algoritmo
27
ESECUTORE E ALGORITMO
Introdotto il concetto di esecutore, possiamo riconsiderare il concetto
di algoritmo intuitivamente:
Un algoritmo è una sequenza finita di passi (o azioni elementari
ben determinate), tutti interpretabili ed eseguibili da un esecutore,
passi che portano alla risoluzione automatica di un problema
(inteso come classe di problemi)
Nota: il fatto che i passi portano alla risoluzione implica che la
soluzione viene raggiunta in tempo finito
Metodo Risolutivo
(algoritmo)
ESECUTORE
DATI RISULTATO
28
14
10/03/2025
ALGORITMO E
PROGRAMMA
• Algoritmo
– descrizione della soluzione di un problema scritta in modo da poter essere
eseguita da un esecutore (eventualmente diverso dall’autore
dell’algoritmo)
– sequenza di passi (istruzioni) che operano su dati.
• Programma
– algoritmo scritto in modo da poter essere eseguito da un calcolatore
(esecutore automatico)
– Il programma è un algoritmo codificato in un linguaggio di
programmazione
29
ALGORITMO E
PROGRAMMA
• Ogni elaboratore (esecutore automatico) è una macchina in grado di
eseguire azioni elementari su oggetti detti DATI.
– Azioni elementari: es. confrontare due numeri, eseguire semplici
operazioni aritmetiche, ecc.
• L’elaborazione delle azioni (passi) è richiesta all’elaboratore tramite
comandi elementari chiamati ISTRUZIONI espresse attraverso un
opportuno formalismo: il LINGUAGGIO di PROGRAMMAZIONE.
30
15
10/03/2025
ALGORITMO E PROGRAMMA:
PROBLEM SOLVING
Passi per la risoluzione di un problema:
individuazione di un procedimento risolutivo
scomposizione del procedimento in un insieme ordinato di azioni
ALGORITMO
rappresentazione dei dati e dell’algoritmo attraverso un formalismo
comprensibile dal calcolatore LINGUAGGIO DI PROGRAMMAZIONE
metodo linguaggio
risolutivo di programmazione
31
ESEMPIO DI PROBLEMA
32
16
10/03/2025
ESEMPIO DI ALGORITMO
• Trovare il massimo fra tre numeri:
• Dati: tre numeri A, B e C
Se A > B
se A > C il massimo è A
altrimenti il massimo è C
Se B > A
se B > C il massimo è B
altrimenti il massimo è C
SOLUZIONE ERRATA!
33
ESEMPIO DI ALGORITMO
• Trovare il massimo fra tre numeri diversi:
• Dati: tre numeri A, B e C
Se A > B
se A > C il massimo è A
altrimenti il massimo è C
Se B > A
se B > C il massimo è B
altrimenti il massimo è C
34
17
10/03/2025
OSSERVAZIONI
• L’algoritmo fa riferimento a dati (o
informazioni) di ingresso e a dati (o
informazioni) di uscita
35
OSSERVAZIONI
• Nel calcolo possono essere utilizzati altri
dati già presenti nella formulazione
dell’algoritmo (costanti) o già noti
all’esecutore
Si consideri ad esempio il problema (traccia o specifica):
Calcolare l’area di un cerchio, noto il raggio.
36
18
10/03/2025
RICAPITOLANDO…
37
LA PROGRAMMAZIONE
• Una volta tradotto un algoritmo in programma, bisogna eseguire quest'ultimo
per ottenere i risultati desiderati dall'elaborazione
• L’esecutore deve comprendere il linguaggio in cui è stato scritto il
programma.
• Oltre ai dati in ingresso, occorrono risorse di uso generale
– Nella ricetta della pizza, ad esempio occorre il tavolo per stendere la pasta.
– Nella somma col pallottoliere, occorrono i pioli (righe), i dischi (palline), …
(…e le risorse non sono infinite!)
• Quando un esecutore avvia l’esecuzione di un programma, si parla di
processo.
• La differenza tra programma e processo è cruciale: il programma descrive un
procedimento, il processo è l'attuazione di tale procedimento che richiede
un esecutore che effettua le azioni previste, usa le risorse necessarie, sfrutta
i dati di ingresso necessari.
38
19
10/03/2025
DIAGRAMMA RIASSUNTIVO
Linguaggio:
Sequenza statica metodo per descrivere
un algoritmo
Algoritmo:
sequenza di passi
per la realizzazione
di un compito Esecutore:
Sequenza dinamica entità che comprende
il linguaggio ed
esegue i passi
39
20