Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
I.1 Algoritmi
Elisabetta Ronchieri
Università di Ferrara
Dipartimento di Economia e Management
Insegnamento di Informatica
Ottobre 9, 2015
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Argomenti
1
Introduzione
2
Rappresentazione
Linguaggi grafici
Linguaggio naturale
Pseudocodice
3
Algoritmi notevoli
Algoritmi di ricerca
Algoritmi di ordinamento
4
Possibili domande d’esame
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Definizione formale
Un algoritmo è un insieme ordinato di passi che
descrivono i dati che devono essere utilizzati e
determinano la sequenza di azioni elementari che
devono essere svolte per risolvere un problema (una
classe di problemi).
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Cosa risolve l’algoritmo
Un algoritmo descrive il metodo
risolutivo di un problema
identificati i dati da usare;
definito le azioni da
intraprendere;
stabilito il risultato.
La risoluzione del problema è
applicabile ad una classe di
problemi riconducibile al
problema iniziale:
la preparazione di un sugo è un
esempio di problema
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Esempi di problemi
Impostazione del ciclo di lavaggio di una lavastoviglie.
Origami.
Prelevamento di contanti dal Bancomat.
Calcolo del massimo comun divisore.
Preparazione dei cantucci toscani.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Chi esegue l’algoritmo
La sequenza di passi può
essere intrapresa da un
esecutore.
Esempi di esecutore sono:
il calcolatore o
l’elaboratore;
il cervello umano.
L’esecutore automatizza la
risoluzione del problema.
Elisabetta Ronchieri
Figura scaricata da
Dreamstime.com
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Proprietà principali dell’algoritmo
Non ambiguo
Le azioni devono essere univocamente interpretabili
dall’esecutore.
Eseguibile
Ogni azione deve essere eseguibile da parte dell’esecutore.
Finito
Per ogni input l’esecuzione dell’algoritmo deve terminare in un
tempo finito.
Corretto
Se è finito, non ambiguo ed eseguibile.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Altre proprietà
Deterministico
Le azioni presenti in un algoritmo devono essere definite senza
ambiguità.
Terminabile
L’esecutore deve terminare in tempo finito per ogni insieme di
valori in ingresso.
Realizzabile in pratica
L’esecutore deve essere in grado di eseguire l’algoritmo con le
risorse a sua disposizione (informazioni + tecnologia).
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Altre proprietà
Generale
Un algoritmo, compatibilmente con i vincoli espressi dal
problema, si occupa della risoluzione di classi di problemi.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Esempi di algoritmi non corretti
Algoritmo con output diversi e input uguali ⇒ ambiguo
Algoritmo con azioni complesse ⇒ non eseguibile
Algoritmo con operazioni cicliche ⇒ non finito
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Esempio di algoritmi ambigui
Problema: pagare un bollettino di conto corrente postale.
Sequenza di azioni:
Andare ad un
ufficio postale;
Compilare il
bollettino di conto
corrente postale;
Effettuare il
pagamento.
Sequenza di azioni:
Andare all’ufficio postale più
vicino;
Compilare il bollettino;
Assicurarsi di avere la cifra da
pagare;
Effettuare il pagamento.
Algoritmo ambiguo:
Algoritmo ancora ambiguo.
quale ufficio? ho
abbastanza soldi?
Cosa manca per renderlo non ambiguo?
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Esempio di algoritmi ambigui
Problema: cottura degli spaghetti.
Nota: algoritmo puramente sequenziale, le operazioni vengono
eseguite in un unico ordine preciso.
Sequenza di azioni:
Sequenza di azioni:
Mettere l’acqua sul
fuoco;
Attendere l’ebollizione;
Mettere il sale;
Buttare gli spaghetti;
Attendere x minuti;
Scolare la pasta.
Mettere l’acqua sul
fuoco;
Mettere il sale;
Attendere l’ebollizione;
Buttare gli spaghetti;
Attendere x minuti;
Scolare la pasta.
Cosa manca per renderlo non ambiguo?
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Cosa serve per definire un algoritmo
Condurre l’analisi del problema.
Individuare i possibili ingressi.
Determinare le uscite.
Definire completamente e dettagliatamente la sequenza
dei passi che portano alla soluzione del problema.
Scomporre la soluzione in piccoli passi.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Possibile algoritmo
Problema: determinare se il collegamento ad internet del
computer funziona.
Dati in ingresso: computer
Sequenza di azioni:
1 Accendi il computer;
2 Se il collegamento ad internet funziona, allora lascia
stare e spegni il computer;
3 Altrimenti se lo hai toccato, allora sei nei guai;
3.1 Se qualcuno lo sa, allora sei proprio nei guai;
3.1.1 Rimarrai nei guai finchè non troverai una scusa
decente, per poi spegnere il computer;
3.2 Altrimenti fai finta di niente e spegni il computer;
4 Altrimenti se non lo hai toccato, allora lascia perdere e
spegni il computer.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Cosa si può dire?
Usati i dati in ingresso.
Descritta la sequenza di passi da svolgere per risolvere il
problema.
Usate:
azioni elementari
azioni composte condizionali
azioni ripetitive o composte iterative
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Tipi di azioni
Azioni elementari
Quelle che l’esecutore è in grado di compiere direttamente.
Azioni composte condizionali
- Se < condizione > allora azioniA altrimenti azioniB
in cui è possibile specificare se si devono compiere azioni
differenti a seconda che la condizione sia vera (azioniA ) o falsa
(azioniB ).
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Tipi di azioni
Azioni ripetitive
- finchè < condizione > ripeti azioniC
in cui le azioniC vengono ripetute fintantochè la condizione è
vera, e si termina la ripetizione appena la condizione diventa
falsa.
- ripeti azioniC finchè < condizione >
in cui le azioniC vengono ripetute fintantochè la condizione è
falsa, e si termina la ripetizione appena la condizione diventa
vera.
In assenza di condizione di terminazione l’azione ripetitiva è
detta loop o ciclo infinito.
In presenza di condizione di terminazione l’azione ripetitiva è
detta ciclo finito.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Rappresentazione dell’algoritmo
Linguaggi grafici
Linguaggi testuali
Le azioni sono descritte in modo:
astratto usando linguaggio naturalea ;
costrutti vicini a quelli del linguaggio di programmazione.
a
come fatto negli esempi precedenti
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Componente fondamentale
Primitiva:
elimina ambiguità;
si compone di:
1
2
sintassi che si riferisce alla rappresentazione simbolica;
semantica che determina il significato.
Per esempio il simbolo ← significa assegnamento di valori a
nomi descrittivi.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Diagramma di flusso
È una rappresentazione grafica di un algoritmo.
Descrive le azioni da eseguire e l’ordine di esecuzione.
È un insieme di blocchi collegati da frecce direzionali.
I blocchi rappresentano le operazioni (azioni) dell’algoritmo.
Le frecce direzionali indicano il flusso di esecuzione della
sequenza di operazioni.
I blocchi sono espressi da simboli.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Significato dei simboli
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Regole di utilizzo
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Blocchi composti
Usano blocchi di inizio (Start) e fine (End).
Usano blocchi di azione, condizionali e di ingresso/uscita
(input/output).
Sono relativi:
alla sequenza di azioni;
all’azione composta condizionale;
all’azione composta iterativa.
Hanno 1 solo arco in ingresso e 1 solo arco in uscita.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Sequenza di azioni
Ogni azione deve essere eseguita una di seguito all’altra.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Azione composta condizionale
Se l’istruzione è vera esegui le azioni di un ramo, altrimenti
esegui quelle dell’altro ramo.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Esempio di algoritmo con azione composta cond.
Problema: dati due numeri N1 e N2 determinare il maggiore.
Rappresentazione parziale del problema.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Azione composta iterativa
Un’azione viene ripetuta o iterata.
Si esce dalla ripetizione quando la condizione è vera.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Esempio di algoritmo con ciclo d’attesa
Problema: calcolare il Massimo Comun Divisore (MCD) tra i
numeri V 1 e V 2.
1 Prendi i valori in
ingresso V 1, V 2.
2 Se V 1 < V 2 allora
scambiali.
3 Metti in R il resto tra V 1
e V 2.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Esempio di algoritmo con ciclo d’attesa
Problema: calcolare il Massimo Comun Divisore (MCD) tra i
numeri V 1 e V 2.
4 Ripeti finchè R <> 0:
5 Metti in V 1 il
contenuto di V 2.
6 Metti in V 2 il
contenuto di R.
7 Metti in R il resto tra
V 1 e V 2.
8 Fine ripeti.
9 Mostra MCD pari a V 2.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Esempio di algoritmo con ciclo infinito
Problema: determinare il numero del contatore i.
NOTA: In questa soluzione sono presenti almeno due errori.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Caratteristiche
Vantaggi:
Grafici;
Adatti a comunicare il contenuto dell’algoritmo all’uomo;
Adatti a rappresentare processi sequenziali;
Immediatamente visualizzabili;
Poco ambigui;
Convertibili in altre rappresentazioni.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Diagramma di flusso strutturato
Il diagramma di flusso si dice strutturato se presenta
solo costrutti sequenziali, condizionali e di ripetizione.
Presenta le azioni in modo ordinato.
Facilita il passaggio dalla rappresentazione grafica al
programma.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Caratteristiche
Svantaggi:
Spesso non entrano in una pagina;
Difficili da seguire e modificare;
Non sempre strutturati;
Lontani dai linguaggi dei calcolatori;
Possono rivelarsi errati in fase di programmazione.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Come si verifica un algoritmo
Tramite una prova logica della correttezza della linea
operativa tracciata:
utilizzando dati campione;
calcolando i risultati;
controllando i risultati.
Procedimento valido per tutte le rappresentazioni
dell’algoritmo.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Esempio di verifica di un algoritmo
Problema: somma di due numeri N1 e N2.
Dati iniziali: N1 è 12, N2 è 35.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Esempio di verifica di un algoritmo
Problema: somma di due numeri N1 e N2.
Dati iniziali: N1 è 12, N2 è 35.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Esempio di verifica di un algoritmo
Problema: somma di due numeri N1 e N2.
Dati iniziali: N1 è 12, N2 è 35.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Esempio di verifica di un algoritmo
Problema: somma di due numeri N1 e N2.
Dati iniziali: N1 è 12, N2 è 35.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Esempio di verifica di un algoritmo
Problema: somma di due numeri N1 e N2.
Dati iniziali: N1 è 12, N2 è 35.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Esempio di verifica di un algoritmo
Problema: somma di due numeri N1 e N2.
Dati iniziali: N1 è 12, N2 è 35.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Come si progetta un algoritmo
Dato un problema: determinare il massimo tra due numeri
N1 e N2.
Suddividere il problema in azioni:
1 Leggi il primo numero e mettilo nella cella N1.
2 Leggi il secondo numero e mettilo nella cella N2.
3 Se il numero contenuto nella cella N1 > o uguale al
numero contenuto nella cella N2:
4 Metti nella cella max il contenuto di N1.
5 Altrimenti metti nella cella max il contenuto di N2.
6 Restituisci il valore di max.
Realizzare il diagramma di flusso.
Verificare l’algoritmo.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Esempio di problema da risolvere
Problema: risolvere l’equazione lineare ax + b = 0
nell’incognita x.
x = − ba
Azioni dell’algoritmo:
Leggi i valori a e b.
Calcola −b.
Dividi quello che hai ottenuto per a e chiama x il risultato.
Stampa x.
NOTA: Introdurre nella sequenza di azioni il controllo sul valore
a.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Esempio di problema da risolvere
Problema: stabilire se una parola P viene alfabeticamente
prima della parola Q.
Dati iniziali: P uguale a pulcino, Q uguale a quadrifoglio.
Azioni dell’algoritmo:
1 Leggi i valori P e Q.
2 Ripeti quanto segue fino a quando hai trovato le prime
lettere diverse:
3 Se la prima lettera di P < della prima lettera Q:
4 Allora scrivi vero ed esci.
5 Altrimenti se la prima lettera di P > della prima lettera di Q:
6 Allora scrivi falso.
7 Altrimenti le lettere sono uguali.
8 Togli da P e Q la prima lettera.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Esempio di problema da risolvere
Problema: calcolare il massimo di un insieme di numeri naturali
di nome A.
Dati iniziali: A contiene i seguenti numeri 2, 10, 4, 25, 1.
Azioni dell’algoritmo:
1 Scegli un elemento come massimo provvisorio detto max
2 Per ogni elemento i-esimo dell’insieme A:
3 se i > max eleggi i come nuovo massimo provvisorio
4 il risultato sarà max
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Linguaggio naturale
È una rappresentazione letterale di un algoritmo.
Usa frasi rigorose anzichè simboli grafici.
Sfrutta tre tipi di operazioni:
1
2
3
ingresso e uscita (dati e risultati del problema);
assegnamento (P = A con il significato assegna il nome
logico P al valore A);
controllo (modificano la sequenza dell’esecuzione).
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Caratteristiche
Vantaggi:
Intuitività.
Facilità di scrittura.
Svantaggi:
Ambiguità.
Ridondanza.
Scarso rigore.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Esempio di notazione lineare
Problema: calcolare il prodotto di due numeri interi positivi A e
B.
NOTA: l’esecutore conosce solo le operazioni di somma,
sottrazione e confronto tra numeri.
1 Leggi A e B.
2 P = A.
3 se B è uguale a 1 allora vai all’istruzione 7.
4 P = P + A.
5 B = B − 1.
6 vai all’istruzione 3
7 scrivi P.
8 fine
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Pseudocodice
È una rappresentazione descrittiva del linguaggio formale
(per esempio del linguaggio di programmazione R).
Usa parole chiave scritte in maiuscolo o grassetto.
Usa operatori quali ←, +, Usa la indentazione, ossia il rientro dei gruppi di azioni
riferite a cicli o a strutture a scelta.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Caratteristiche
Vantaggi:
Conciso;
Coerente.
Svantaggi:
Può dipendere dal linguaggio di destinazione finale.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Simbolo di assegnamento
Sintassi
nome ← espressione
Semantica - assegnare a nome il valore di espressione:
nome identifica il nome descrittivo
espressione identifica il valore che viene associato al nome
Esempio:
a ← 2 (2 è assegnato ad a)
b ← 2 + a (il risultato della somma è assegnato a b)
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Costrutto condizionale
Sintassi
if (condizione) then (blocco1 ) else (blocco2 )
if, then e else sono parole chiave.
Semantica - eseguire blocco1 o blocco2 a seconda dell’esito
della condizione.
blocco1 identifica la sequenza delle azioni da eseguire se la
condizione è vera
blocco2 identifica la sequenza delle azioni da eseguire se la
condizione è falsa
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Esempi di uso del costrutto if
if (a > 1) then (write ’Maggiore di 1’)
else (write ’Minore di 1’)
write è una parola chiave che indica operazione di scrittura.
if (a > 1) then
if (b != 0) then (c = a)
else (c = b)
Il costrutto può avere al suo interno altri costrutti if
if (a > 1) then (write ’Maggiore di 1’)
Ramo else non è obbligatorio.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Costrutto iterativo
Sintassi
while (condizione) do (blocco1 )
while e do sono parole chiave.
Semantica - eseguire blocco1 fino a quando la condizione è
verificata.
blocco1 identifica la sequenza delle azioni da eseguire se la
condizione è vera
La condizione è verificata prima di ogni iterazione.
L’iterazione si ferma quando la condizione non è più vera.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Esempio di uso del costrutto while
a <- 10
while (a > 1) do
(
a <- a - 1
write ’a’
)
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Costrutto iterativo
Sintassi
repeat
(blocco1 )
until (condizione)
repeat e until sono parole chiave.
Semantica - eseguire blocco1 fino a quando la condizione è
falsa.
blocco1 identifica la sequenza delle azioni da eseguire se la
condizione è falsa
La condizione è verificata dopo ogni iterazione.
L’iterazione si ferma quando la condizione è vera.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Esempio di uso del costrutto repeat
b <- 5
a <- 1
until
(a <- a + 1)
repeat (a > b)
write ’a, b’
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Costrutto iterativo
Sintassi
for (condizione) do (blocco1 )
for e do sono parole chiave.
Semantica - eseguire blocco1 fino a quando la condizione è
vera.
blocco1 identifica la sequenza delle azioni da eseguire se la
condizione è vera
La condizione è verificata prima di ogni iterazione.
L’iterazione si ferma quando la condizione è falsa.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Condizione nel costrutto for
La condizione può essere del tipo indicato di seguito:
variabile ← espressione1 to espressione2
La condizione è il valore di una variabile.
La variabile ha valore:
iniziale indicato da espressione1
finale indicato da espressione2
Ad ogni iterazione viene incrementato di 1 il valore della
variabile fino a quando quest’ultima non raggiunge il valore
finale indicato da espressione2
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Esempio di uso del costrutto for
s <- 0
for (i <- 1 to 10) do
(s <- s + i)
write s
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Altre strutture
Sintassi
procedure nome(variabile1 , variabile2 , ...)
(blocco)
Semantica - eseguire altri algoritmi identificati da nome
le diverse variabili (variabili1 , variabili2 , ...) rappresentano i dati
in ingresso all’algoritmo
il blocco è la sequenza di istruzioni da eseguire ad ogni
invocazione della procedura.
sqrt e mod sono esempi di procedure.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Linguaggi grafici
Linguaggio naturale
Pseudocodice
Altre strutture
Sintassi
A[i] con i da 1 a N.
Semantica - esprimere il vettore A di N elementi
i indica la posizione dell’elemento all’interno del vettore
A[i] indica il valore dell’elemento nella posizione i-esima
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Algoritmi di ricerca
Algoritmi di ordinamento
Problema della efficienza
Un problema può essere risolto da più algoritmi.
Ciascun algoritmo può presentare prestazioni differenti.
La complessità computazionale indica il tempo (o la
quantità di memoria) necessario per l’esecuzione di un
certo algoritmo.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Algoritmi di ricerca
Algoritmi di ordinamento
Categorie
Algoritmi di ricerca:
verificano la presenza di un valore in un insieme di dati.
Algoritmi di ordinamento:
scansionano i valori all’interno di un insieme in modo crescente
o decrescente.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Algoritmi di ricerca
Algoritmi di ordinamento
Algoritmo di ricerca
Ha come scopo quello di trovare un elemento avente
determinate caratteristiche all’interno di un insieme di dati.
L’insieme può essere ordinato o non ordinato.
L’insieme può essere ordinato in modo crescente o
decrescente.
La ricerca può essere binaria o sequenziale.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Algoritmi di ricerca
Algoritmi di ordinamento
Ricerca sequenziale o completa
Consiste nella scansione sequenziale degli elementi di un
insieme dal primo all’ultimo.
Si interrompe quando:
il valore cercato è stato trovato;
non vi sono più elementi da cercare;
oppure quando siamo sicuri che il valore non possa essere
presente.
Ha il vantaggio di poter essere applicata anche ad insiemi
di dati non ordinati.
Durante la ricerca, si effettuano confronti tra il valore da
ricercare e gli elementi dell’insieme.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Algoritmi di ricerca
Algoritmi di ordinamento
Ricerca sequenziale o completa
Problema: cercare il valore x in un insieme di interi di nome V
avente N elementi.
La procedura, che effettua la ricerca, può restituire:
l’indice dell’elemento dell’insieme con valore x;
o -1 in caso di valore non trovato.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Algoritmi di ricerca
Algoritmi di ordinamento
Ricerca binaria o logaritmica
È simile al metodo usato per trovare una parola nel
dizionario.
Può essere applicata solo ad insiemi di dati ordinati.
Si presta ad una definizione ricorsiva.
Ad ogni chiamata della procedura, si verifica se l’elemento
ricercato si trova al centro dell’intervallo:
in tal caso la funzione termina con successo.
In caso contrario, si modifica l’intervallo di ricerca e si
effettua una nuova chiamata della procedura.
Nel caso in cui l’intervallo di ricerca sia nullo, la ricorsione
termina con insuccesso.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Algoritmi di ricerca
Algoritmi di ordinamento
Ricerca binaria o logaritmica
Sia N l’insieme degli elementi da esaminare, e k l’elemento da
ricercare.
Si prende l’elemento centrale avente valore k 1 e posizione
M = N2 .
Se k = k 1 , abbiamo finito e trovato l’elemento che stiamo
cercando;
Se k < k 1 , l’elemento cercato è nella prima metà
dell’insieme, su cui si ripete la ricerca partendo dall’inizio
ma considerando i primi N2 − 1 elementi;
Se k > k 1 , l’elemento cercato è nella seconda metà
dell’insieme, su cui si ripete la ricerca partendo dall’inizio
ma considerando gli elementi da N2 + 1 fino alla fine.
Se tutti gli elementi sono stati scartati, la ricerca termina
indicando che il valore non è stato trovato.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Algoritmi di ricerca
Algoritmi di ordinamento
Ricerca binaria o logaritmica
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Algoritmi di ricerca
Algoritmi di ordinamento
Confronto tra i due algoritmi di ricerca
L’efficienza di un algoritmo si misura in base al numero di
confronti effettuati che dipende da N, ossia la lunghezza
dell’insieme.
In generale interessa il caso medio.
Algoritmo
Caso
peggiore
Caso
medio
Caso
migliore
Di Ricerca Sequenziale
(RS)
Di Ricerca Binaria (RB)
N
N
2
1
log2 (N)
log2 (N) 1
Caso medio con N = 1000.
Efficienza: 500 con RS, 10 con RB.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Algoritmi di ricerca
Algoritmi di ordinamento
Algoritmo di ordinamento
Si basa su operazioni di scambio e confronto.
Può essere necessario scandire più volte gli elementi
dell’insieme.
Può seguire una delle seguenti classi:
Stupid Sort;
Selection Sort;
Bubble Sort;
Insertion Sort;
Shell Sort;
Quick Sort;
Merge Sort.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Algoritmi di ricerca
Algoritmi di ordinamento
Stupid Sort
È particolarmente inefficiente.
Consiste nel mischiare gli elementi dell’insieme, come si
può fare con un mazzo di carte.
Controlla se è ordinato e, se non lo è, ricomincia da capo.
È probabilistico.
Arriva quasi sicuramente ad una conclusione per il
teorema della scimmia instancabile:
ad ogni tentativo c’è una probabilità di ottenere
l’ordinamento giusto;
dato un numero illimitato di tentativi, infine dovrebbe avere
successo.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Algoritmi di ricerca
Algoritmi di ordinamento
Teorema della scimmia instancabile
Il teorema della scimmia instancabile o teorema delle
scimmie infinite afferma che una scimmia che prema a
caso i tasti di una tastiera per un tempo infinitamente
lungo quasi certamente riuscirà a comporre qualsiasi
opera letteraria conservata nella Biblioteca Nazionale
di Francia [Borel].
Il termine scimmia è una metafora per una macchina
teorica che produce una sequenza casuale di lettere
ad infinito.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Algoritmi di ricerca
Algoritmi di ordinamento
Bobo Sort
Variante meno efficace dello Stupid Sort.
Consiste nel controllare se l’insieme è ordinato.
Se non lo è, prende due elementi casualmente e li
scambia (indipendentemente dal fatto che lo scambio aiuti
l’ordinamento o meno).
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Algoritmi di ricerca
Algoritmi di ordinamento
Selection Sort
È un algoritmo semplice e di selezione.
Effettua più scansioni dell’insieme.
Al termine della prima scansione, il
primo elemento dell’insieme contiene il
valore minore.
Tra i rimanenti N − 1 elementi,
l’algoritmo ricerca l’elemento minore e
lo scambia con il secondo.
Ad ogni scansione viene scambiato un
elemento dell’insieme nella posizione
dell’elemento più grande considerato.
Si procede fino allo scambio degli ultimi
due elementi.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Algoritmi di ricerca
Algoritmi di ordinamento
Bubble Sort
È un algoritmo semplice e di
scambio.
Effettua la scansione dell’insieme
elemento per elemento.
Scambia i valori dei due elementi
consecutivi o adiacenti, quando il
primo è maggiore del secondo.
Al termine della prima scansione,
il primo elemento dell’insieme
contiene il valore minore.
L’algoritmo prosegue ordinando
la parte successiva dell’insieme.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Algoritmi di ricerca
Algoritmi di ordinamento
Bubble Sort
L’insieme risulta ordinato dopo
aver effettuato N − 1 scansioni.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Algoritmi di ricerca
Algoritmi di ordinamento
Bubble Sort
Al termine della prima scansione, in genere l’insieme non
risulta ordinato.
È necessario procedere ad una nuova scansione e alla
conseguente serie di eventuali scambi tra i valori di due
elementi consecutivi.
La ripetizione degli scambi tra elementi adiacenti fa salire
verso l’alto gli elementi più grandi o più piccoli in base
all’ordine con cui viene fatto l’ordinamento.
È detto bubblesort (ordinamento a bolle) per analogia con
le bolle d’aria nell’acqua che, essendo leggere, tendono a
spostarsi verso l’alto.
Risulta poco efficiente quando ci sono molti elementi
disordinati.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Algoritmi di ricerca
Algoritmi di ordinamento
Insertion Sort
È un algoritmo
particolarmente semplice.
È un algoritmo di
inserimento.
Ordina i primi due elementi
dell’insieme.
Inserisce il terzo elemento
nella posizione corretta
rispetto ai primi due.
Continua con la procedura
fino all’inserimento di tutti
gli elementi, e quindi
all’ordinamento.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Algoritmi di ricerca
Algoritmi di ordinamento
Insertion Sort
Rispetto al Selection Sort o Bubble Sort, il numero di
confronti che effettua è legato all’ordinamento iniziale
dell’insieme.
Nei casi peggiori, non è migliore del Bubble Sort e del
Selection Sort.
Nei casi medi, è meno lento.
Se l’insieme è ordinato, i confronti saranno N − 1 con N
numero di elementi dell’insieme.
Altrimenti sono dell’ordine di N 2 .
Garantisce un numero basso di confronti, ma effettua un
numero elevato di spostamenti.
Ha senso usarlo per insiemi quasi ordinati.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Algoritmi di ricerca
Algoritmi di ordinamento
Shell Sort
È un algoritmo abbastanza
evoluto.
È un algoritmo di inserimento.
Ordina cercando di ridurre gli
inserimenti.
Confronta tutti gli elementi che si
trovano ad una distanza d,
scambiandoli se non sono
ordinati.
Riduce di volta in volta il valore di
d.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Algoritmi di ricerca
Algoritmi di ordinamento
Shell Sort
Quando d = 1, gli elementi sono
adiacenti e l’algoritmo si
interrompe.
Esempio:
su N = 6, d = 3 alla prima
iterazione.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Algoritmi di ricerca
Algoritmi di ordinamento
Shell Sort
Non è facile valutare il valore ottimale d.
In genere:
si ordina l’insieme con una spaziatura grande;
si riduce la spaziatura durante l’iterazione;
si riordina l’insieme.
Shell Sort è migliore del Bubble Sort, Insertion Sort e
Selection Sort.
Ha la peculiarità di scambiare velocemente gli elementi.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Algoritmi di ricerca
Algoritmi di ordinamento
Quick Sort
È un algoritmo evoluto.
È un algoritmo di scambio e ricorsivo.
L’idea:
dato un insieme di N elementi, si divide in due sottoinsiemi
di N2 elementi ciascuno, che si ordinano separatamente;
riunendo le due sottoparti già ordinate, si dimezza il tempo
di calcolo;
l’insieme iniziale può essere suddiviso in un numero di
elementi inferiore a N2 per dimezzare ulteriormente il tempo
di calcolo.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Algoritmi di ricerca
Algoritmi di ordinamento
Quick Sort
Suddivide l’insieme in due sezioni e identifica un pivot
nell’insieme.
Gli elementi > o = al pivot vanno in una parte, mentre
quelli minori nell’altra.
Itera il procedimento per ognuna delle sezioni rimanenti
fino ad avere l’insieme ordinato con nuovo pivot.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Algoritmi di ricerca
Algoritmi di ordinamento
Quick Sort
Caso migliore:
Il pivot divide l’insieme in due parti uguali ad ogni passo.
Caso peggiore:
Il pivot divide l’insieme degli elementi in due parti: una
composta da un solo elemento e l’altra dagli N − 1 restanti.
Caso medio:
Tutti gli elementi possono essere presi come pivot con
probabilità N1 .
La generica suddivisione i, N − i avviene con probabilità
.
Elisabetta Ronchieri
I Concetti Base
1
N.
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Algoritmi di ricerca
Algoritmi di ordinamento
Merge Sort
È un algoritmo evoluto.
È un algoritmo ricorsivo.
Sfrutta il concetto di
fusione di insiemi ordinati.
Divide l’insieme in due
parti che ordina
ricorsivamente.
Unisce le sequenze
ordinate risultanti.
Si esce dalla ricorsione
quando gli insiemi hanno
una dimensione pari a 1.
Elisabetta Ronchieri
Provenienza della figura:
http://www.jefclaes.be/
2011/07/
merge-sorting-in-javascript_
1458.html
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Algoritmi di ricerca
Algoritmi di ordinamento
Confronto tra algoritmi di ordinamento
Algoritmi con soluzioni sempre più sofisticate hanno
complessità computazionale sempre più bassa.
Complessità computazionale è basata sul numero di operazioni
elementari necessarie ad effettuare l’ordinamento.
Algoritmo
Caso
peggiore
Caso medio
Caso migliore
Insertion Sort
Bubble Sort
Selection Sort
Quick Sort
Merge Sort
N2
N2
N2
N2
N · log2 (N)
N · log2 (N)
N · log2 (n)
N
N
N2
N · log2 (N)
N · log2 (N)
Algoritmo Quick Sort usa circa 2 · N · ln(N) in media per
ordinare un insieme di N elementi distinti.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Possibili domande d’esame
1 In quale algoritmo di ordinamento deve essere settata la
distanza d.
(a)
(b)
(c)
(d)
(e)
Shell Sort
Quick Sort
Merge Sort
Bubble Sort
Insertion Sort
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Possibili domande d’esame
2 Letti due numeri N positivo e M negativo, cosa codifica il
seguente frammento di pseudocodice?
read N, M
P <- 0
while (M < 0) do (
P <- P + N
M <- M + 1)
If (M < 0) then (write P)
else (write -P)
(a)
(b)
(c)
(d)
(e)
la somma di due numeri N e M positivi;
la sottrazione di due numeri N e M negativi;
il valore di N;
il prodotto di due numeri N e M con M negativo;
il prodotto di due numeri N e M con M positivo.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Possibili domande d’esame
3 Che cosa viene visualizzato in uscita dal frammento di
pseudocodice?
A <- -2
B <- -2
C <- sqrt(-A * -B)
if (C < 0) then (write A)
else (write C)
(a)
(b)
(c)
(d)
(e)
-4
4
-2
2
Errore
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Possibili domande d’esame
4 Indicare le proprietà di un algoritmo.
(a)
(b)
(c)
(d)
(e)
Ambiguità;
Non terminabilità;
Non realizzabilità;
Non eseguibilità;
Correttezza.
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Possibili domande d’esame
5 Che cosa viene visualizzato in uscita dal frammento di
pseudocodice?
procedure mean(a,b,c)
(
write (a + b + c)/3
)
read a, b, c
mean(2,3,10)
(a)
(b)
(c)
(d)
(e)
10
8
3
5
Errore
Elisabetta Ronchieri
I Concetti Base
Introduzione
Rappresentazione
Algoritmi notevoli
Possibili domande d’esame
Per ulteriori letture
Èmil Borel, Le Hazard, Alcan (1914), Paris.
Elisabetta Ronchieri
I Concetti Base