INFORMATICA
Algoritmi come formalizzazione
della risoluzione di un problema
di Roberta Molinari
Algoritmi come formalizzazione della risoluzione di un problema
Algoritmo
Origine del termine
Al-Khwarizmi: nato nel 780 circa a Baghdad . È un
importante matematico Arabo.
Autore dell' al-Kitāb al-mukhtaṣar fī ḥisāb al-ǧabr wa almuqābala, il primo libro che tratta soluzioni
sistematiche di equazioni lineari e di secondo grado.
Viene considerato pertanto il padre dell’algebra.
Il libro Algoritmi de numero Indorum, traduzione latina
di uno dei suoi più importanti studi sul sistema di
numerazione indiano, introdusse la notazione
posizionale e il numero zero nel mondo occidentale
nel XII secolo.
La parola algoritmo derivano da Algoritmi, la
latinizzazione del suo nome da parte del matematico
Leonardo Fibonacci
2
Algoritmi come formalizzazione della risoluzione di un problema
Cos’è un algoritmo
Sequenza finita di passi comprensibili da un
esecutore (che può anche essere una
macchina) che descrive come risolvere una
data classe di problemi utilizzando dati
iniziali e pervenendo a dei risultati finali
Esempi:
• Le istruzioni per registrare i programmi con il
videoregistratore
• Calcolare il denominatore comune di frazioni
3
Algoritmi come formalizzazione della risoluzione di un problema
Esempi
Il problema dei secchi
Si hanno due secchi con capacità rispettivamente di 3 e 4 litri.
Determinare le operazioni necessarie per far si che il primo secchio
(da 3 litri) sia riempito con 2 litri.
Possiamo agire sui due secchi attraverso le seguenti operazioni :
- riempire completamente un secchio
- svuotarlo completamente
- travasare una certa quantità di liquido da un secchio all’altro
4L
3L
4
Algoritmi come formalizzazione della risoluzione di un problema
Esempi
Prestito libri in biblioteca
 La biblioteca contiene un certo numero di scaffali;
 Ogni scaffale contiene un certo numero di libri che
non vengono spostati quando un libro è estratto;
 La biblioteca è dotata di schedario.
 Le schede sono poste in ordine alfabetico per autore:
a parità di primo autore per secondo e così via. A
parità di autori le schede sono in ordine per titolo
5
Algoritmi come formalizzazione della risoluzione di un problema
Esempi
Prestito libri in biblioteca: soluzione
1. Si cerca la scheda del libro nello schedario;
1. Trovata questa, si segnino su un foglietto numero di
scaffale e posizione del libro;
1. Si ricerca lo scaffale indicato;
1. Individuato lo scaffale si accede alla posizione del
libro, lo si preleva e, se richiesto, si scrive sulla
scheda data del prestito e nome di chi prende in
prestito
6
Algoritmi come formalizzazione della risoluzione di un problema
Esempi
Prestito libri in biblioteca: soluzione
Il passo 1, a sua volta, può essere esploso nella
seguente sottoprocedura:
1.1 Si esamini la prima scheda dello schedario;
1.2 Se nome dell’autore e titolo coincidono con quello
ricercato, la ricerca è conclusa: altrimenti si passi
alla scheda successiva;
1.3 Si proceda di scheda in scheda fino a trovare la
scheda cercata; se vengono esaurite le schede, la
ricerca è conclusa in modo infruttuoso (il libro
cercato non è nella biblioteca).
7
Algoritmi come formalizzazione della risoluzione di un problema
L’esecutore
Un esecutore è caratterizzato da tre elementi:
1. L’insieme delle operazioni che può compiere
1. L’insieme delle istruzioni che capisce (sintassi del
linguaggio)
1. Come sono associate le operazioni alle istruzioni
che riconosce (semantica del linguaggio) es. come
associare le istruzioni contenute nell’algoritmo alle operazioni
che sa eseguire
8
Algoritmi come formalizzazione della risoluzione di un problema
Rappresentazione degli algoritmi
Se l’esecutore è un essere umano per
rappresentare gli algoritmi si utilizza:
• Linguaggio sintetico e intuitivo
• Codifica in linguaggi informali o semi-formali
Se l’esecutore è una macchina si utilizza:
• Linguaggio preciso (non ambiguo) ed
eseguibile
• Codifica in linguaggi comprensibili dagli
esecutori automatici
• gli algoritmi diventano programmi
9
Algoritmi come formalizzazione della risoluzione di un problema
L’algoritmo
Definizione
Un algoritmo è una sequenza di passi
elementari per la risoluzione di un problema…
Dati in
ingresso
Algoritmo
Risultati
in uscita
… è una serie di azioni (istruzioni) da eseguire
sui dati iniziali del problema per ottenere i
dati finali.
10
Algoritmi come formalizzazione della risoluzione di un problema
L’algoritmo
Caratteristiche
Un algoritmo deve essere:
✔ comprensibile (per l’esecutore)
✔ non ambiguo (interpretabile in modo univoco)
✔ finito (deve terminare in un tempo finito)
✔ generale (deve risolvere tutti i problemi della
stessa categoria)
✔ dettagliato (ogni passo deve corrispondere
un’istruzione elementare per l’esecutore)
✔ deterministico (a partire dagli stessi dati deve
produrre gli stessi risultati)
✔ completo (considerare tutti i possibili casi)
✔ osservabile nei risultati
11
Algoritmi come formalizzazione della risoluzione di un problema
L’algoritmo
I dati
I dati sono gli oggetti su cui opera l’algoritmo.
Si definiscono in termini di:
✔ Nome: identificatore (a cui fare riferimento)
✔ Tipo: insieme dei possibili valori che possono
essere assunti (caratteri, numero, data,…)
✔ Valore: valore attualmente assunto
12
Algoritmi come formalizzazione della risoluzione di un problema
I dati
classificazione
Possiamo distinguere:
• le costanti (il loro valore non si modifica)
• le variabili (il loro valore si può modificare)
In base all’utilizzo si distinguono le variabili di:
• Input: si forniscono all’esecutore dell’algoritmo
• Lavoro:
servono
all’esecutore
per
l’elaborazione, non sono né di input né di
output
• Output: sono usate dall’esecutore per fornire i
risultati
13
Algoritmi come formalizzazione della risoluzione di un problema
Metodo di risoluzione dei
problemi
 Lettura del testo del problema (cosa
si vuole risolvere)
 Analisi del problema
Analisi dei dati (quali dati
si vogliono usare, quali
sono gli obiettivi da raggiungere) (input, output, di lavoro)
Sviluppo dell'algoritmo
(definire le istruzioni
che operano sui dati in modo tale che a partire dai dati
iniziali otteniamo i dati finali)
 Test (per verificare correttezza)
 Individuazione applicazioni (possibili
estensioni, generalizzazioni)
14
Algoritmi come formalizzazione della risoluzione di un problema
Metodo di risoluzione dei
problemi
L’algoritmo
Analisi del
problema
(obiettivi)
Stesura
dell’algoritmo
Test
F
Corretto?
V
Utilizzo
15
Algoritmi come formalizzazione della risoluzione di un problema
Diagrammi di flusso
Tipi di istruzioni
Istruzione di assegnamento:
assegnamento
x= y+1
Alla variabile x viene assegnato il valore dell’espressione di destra
(per es. se y vale 4 x varrà 5).
4
Y
4+1
X
5
È anche possibile scrivere
x=x+1
5+1
X
in cui a x è assegnato il suo successivo (è corretto sintatticamente,
ma mi devo assicurare che x abbia un valore iniziale).
16
Algoritmi come formalizzazione della risoluzione di un problema
Diagrammi di flusso
Tipi di istruzioni
Istruzione di Input
permette di assegnare dei valori alle variabili di input.
X
Istruzione di Output
permette di assegnare dei valori alle variabili di output e
di presentarle come risultato.
“Il risultato è” & Y
17
Algoritmi come formalizzazione della risoluzione di un problema
Diagrammi di flusso
Tipi di istruzioni
Istruzione condizionale o di selezione
permette di variare la sequenzialità dell’algoritmo al
verificarsi di certe condizioni
V
Istruz
THEN
IF cond
F
V
Istruz
THEN
F
IF cond
Istruz
ELSE
18
Algoritmi come formalizzazione della risoluzione di un problema
Esercizi
 Supponendo di dover risolvere il problema: dalla stazione
di Cuneo devo recarmi all’Albergo Principe, individuare i
dati di input, quelli di output ed eventuali variabili di lavoro.
 Realizzare l’algoritmo che letto il prezzo unitario di un
prodotto e la quantità calcoli l’importo complessivo.
 Individuare quale problema risolve il seguente algoritmo:
inizio
leggi x
a:=2*x
b:=x*x
c:=a+b
scrivi c
fine
19
Algoritmi come formalizzazione della risoluzione di un problema
Esercizi
✔ Un ragazzo ha deciso che se alla televisione
questa sera viene trasmessa una partita di calcio,
resterà a casa a guardarla altrimenti andrà al
cinema. Realizzarne l’algoritmo.
✔ Realizzare l’algoritmo che ricevute in input due
variabili ne scambi il contenuto e ne mostra il
valore finale (per es. se A=10 e B=2 dovrò poi
avere in A 2 e in B 10)
✔ Realizzare l’algoritmo che letti due numeri diversi
li visualizzi in ordine crescente.
✔ Realizzare l’algoritmo che letti 2 numeri
restituisca il maggiore o mi dica che sono uguali.
20