Algoritmi

annuncio pubblicitario
Unità Didattica 1
Algoritmi
1
Analisi e Programmazione
• Insieme delle attività necessarie per la risoluzione dei problemi
per mezzo di un elaboratore: dalla formulazione del problema
alla predisposizione dell’elaboratore.
Analisi e Programmazione
Problema
Risultati
• Scopo dell’analisi è definire un algoritmo: elenco finito di
istruzioni necessarie per risolvere una classe di problemi; in
generale non può essere eseguito da un elaboratore;
• Scopo della programmazione è definire un programma. Un
programma è la descrizione comprensibile ed eseguibile di un
algoritmo da parte di un elaboratore
2
Algoritmi e Programmi
Problema
Analisi
Algoritmo
Programmazione
Programma
Diagramma
a blocchi
Linguaggio
programmativo
Risultati
3
Algoritmi
•
Un elenco di istruzioni è un algoritmo se sono
soddisfatte le seguenti proprietà:
1.
Finitezza: ogni istruzione deve essere eseguita in un
tempo finito e un numero finito di volte;
2.
Generalità: ogni algoritmo deve fornire la soluzione per i
problemi appartenenti ad una determinata classe.
3.
Non ambiguità: devono essere definiti in modo univoco
tutti i passi; devono essere evitati paradossi,
contraddizioni ed ambiguità.
4
Descrizione degli Algoritmi
•
Uso di un linguaggio generalizzato costituito da strutture
linguistiche prive di ambiguità e ridondanze;
•
Uso di proposizioni (espressioni) composte da due parti:
1.
2.
Descrizioni delle operazioni (istruzioni);
Descrizione dei dati su cui eseguire le istruzioni.
5
Dati e Istruzioni
•
Dati:
–
–
–
Costanti (valore invariabile all’interno dell’algoritmo);
Variabili scalari: <nome, valore>
Variabili vettoriali: <nome, insieme di valori>
(il valore delle variabili è indeterminato all’inizio di un algoritmo).
•
Istruzioni:
1. Istruzioni operative (producono risultati se eseguite);
2. Istruzioni di controllo (in funzione del verificarsi di
3.
condizioni determinano l’esecuzione
di alcune istruzioni piuttosto che di altre);
Istruzioni di salto (alterano l’ordine di esecuzione delle
istruzioni);
4. Istruzioni di inizio e fine;
5. Istruzioni di I/O (trasmissione dati o messaggi fra
l’ambiente esterno e l’algoritmo).
6
Proposizioni e predicati
• Come sono espresse le condizioni nelle istruzioni di
controllo?
– Le istruzioni di controllo verificano se una condizione è vera o falsa.
– Il controllo viene espresso per mezzo di predicati.
• Proposizione:
Costrutto del quale si può dire se è vero o falso.
• Predicato:
Una proposizione è un predicato se in essa appaiono delle
variabili e il valore di verità delle variabili determina il valore di verità
della proposizione.
I predicati si esprimono con operatori logici e relazionali.
- Predicati Semplici: predicati di un solo operatore (NOT) e una sola
variabile;
- Predicati Composti: predicati con operatori logici (AND, OR, NOT).
7
Tavole di Verità
• Tavole di Verità:
– descrivono i valori di verità dei predicati in funzione dei valori di
verità delle singole parti.
– Esprimono le modalità con cui operano gli operatori relazionali.
•
Esempi:
A
B
A and B
A
B
A or B
A
not A
0
0
0
0
0
0
0
1
0
1
0
0
1
1
1
0
1
0
0
1
0
1
1
1
1
1
1
1
8
Diagrammi a Blocchi
• Esempio di un linguaggio generalizzato per la
descrizione degli algoritmi;
• I blocchi contengono istruzioni elementari, la
forma del blocco indica il tipo di istruzioni;
Inizio
Lettura
Scrittura
V
Azioni
F
Controllo
Fine
9
Analisi Strutturata
•
•
Procedimento che permette di ottenere descrizioni di algoritmi
che siano facilmente documentabili e comprensibili;
Schemi di flusso:
– Schema di sequenza;
– Schema di selezione;
– Schema di iterazione:
Iterazione per vero
Inizializzazione
con controllo in testa
Iterazione
Condizione
di fine
ciclo
V
F
Iterazione per falso
con controllo in coda
Inizializzazione
Condizione
di fine
ciclo
F
V
Iterazione
10
Diagramma a Blocchi
Strutturati
• Uno schema di flusso è strutturato se i suoi blocchi
sono collegati con gli schemi di flusso precedenti;
• Un diagramma a blocco è strutturato se sono
strutturati tutti gli schemi di flusso che lo
compongono;
• In un diagramma a blocchi strutturato non compare
mai alcuna istruzione di salto;
11
Principio di Induzione
•
Sia Pn una proposizione di cui si può
dire se è vera o falsa
Hp) Sia P0 vera;
Supponendo Pn-1 vera, si dimostra che Pn è vera;
Ts) Pn è vera ∀n.
12
Algoritmi Ricorsivi
• Un algoritmo si dice ricorsivo quando è
definito nei termini di se stesso;
• È costituito da due parti:
1. Passo base
(stabilisce il risultato per valori precisi dei dati iniziali);
2. Passo di induzione
(risultato per n in funzione del risultato per n-1).
13
Esempi di algoritmi ricorsivi
• Potenza (definizione iterativa):
a b = a⋅ a ⋅ ........
⋅a
b volte
• Potenza (definizione ricorsiva):
b=0
1
a =
b −1
a
a
b≠0
⋅

b
14
Esempi di algoritmi ricorsivi
• Fattoriale (definizione iterativa):
n! = n ⋅ (n − 1) ⋅ ... ⋅ 1
• Fattoriale (definizione ricorsiva):
n=0
1
n! = 
n ⋅ (n − 1)! n ≠ 0
15
Diagramma di Flusso del
Fattoriale Ricorsivo
Inizio
V
n=0
F
fatt←n⋅(n−1)!
fatt ← 1
Fine
16
Sviluppo del Fattoriale
Ricorsivo
4! = 4 ⋅ 3!
4! = 4 ⋅ 3! = 4 ⋅ 6 = 24
3! = 3 ⋅ 2!
3! = 3 ⋅ 2! = 3 ⋅ 2 = 6
2! = 2 ⋅ 1!
2! = 2 ⋅ 1! = 2 ⋅ 1 = 2
1! = 1 ⋅ 0!
Passo base
1! = 1 ⋅ 0! = 1 ⋅ 1 = 1
0! = 1
17
Scarica