Nessun titolo diapositiva - Dipartimento di Informatica

annuncio pubblicitario
ALGORITMI e PROGRAMMI
Programmazione: Lavoro che si fa per costruire sequenze di
istruzioni (operazioni) adatte a svolgere un dato calcolo
INPUT: x,y,z
INPUT: dati iniziali
AZIONI
OUTPUT:
esempio:
risultato
Somma x ed y
Somma z al risultato
OUTPUT: x+y+z
Algoritmo: Sequenza di azioni per svolgere il calcolo
Programma: Algoritmo espresso in notazione formale
(linguaggio di programmazione)
Creazione programma:
Fase 1 = algoritmo
Fase 2 = implementazione in dato linguaggio (C)
Vedremo:
Elementi di base per semplici algoritmi e programmi
ALGORITMI
Tecniche algoritmiche permettono di risolvere problemi
• Trasmissione dati in Internet
•
come si gestisce in pratica il flusso di dati nella rete?
• Ricerca nel WEB
• come fa Google a trovare le informazioni nel WEB?
• Bioinformatica
• come il DNA determina le nostre caratteristiche?
• Processi economici
• come si gestiscono le aste on-line su Ebay?
• come si effettua la compravendita di azioni su Internet?
• Organizzazione di risorse e servizi
• come si schedulano i voli delle aerolinee?
• come si assegnano le frequenze nelle celle delle reti cellulari?
Il termine Algoritmo deriva dal matematico Arabo
al-Khwarizmı (c. 780-850), autore del testo
Al-jabrw’al-muqabâla
(da cui anche il termine Algebra)
Algoritmi di tipo numerico furono studiati da matematici babilonesi ed
indiani più di di 3000 anni fa.
Algoritmi in uso fino a tempi recenti furono studiati dai matematici
greci nel 500 a.C.
Esempio: Algoritmo di Euclide per il Massimo Comun Divisore
Esempio: Algoritmi geometrici (calcolo di tangenti, sezioni di angoli, ...)
Algoritmo: procedura computazionale che
• prende certi valori in input (ingresso) e
• produce i valori richiesti in output (uscita)
Un esempio
si prepara ad un’uscita galante...
Va in profumeria, ma vuole risparmiare …
Come identificare il profumo più economico?
0. Prendi la prima bottiglia,
1. Vai alla prossima bottiglia nello scaffale
2. Confronta il prezzo sulla bottiglia nello scaffale con quello in mano
3. Se e’ minore scambia la bottiglia in mano con quella sullo scaffale
4. Se ci sono bottiglie non controllare, allora ripeti da 1.
5. Se le bottiglie sono finite, la bottiglia più economica è quella in mano
Algoritmo: procedura computazionale che
• prende certi valori in input (ingresso) e
• produce i valori richiesti in output (uscita)
_______________
Problema: determina il profumo più economico
Input: profumi con relativi costi
Output: profumo di costo minimo
Algoritmo:
0.
1.
2.
3.
4.
5.
Prendi la prima bottiglia,
Vai alla prossima bottiglia nello scaffale
Confronta il prezzo sulla bottiglia nello scaffale con quello in mano
Se è minore scambia la bottiglia in mano con quella sullo scaffale
Se ci sono bottiglie non controllare, allora ripeti da 1.
Se le bottiglie sono finite, la bottiglia più economica è quella in mano
Procedura computazionale per ottenere la relazione costi/costo minimo
Riassumendo
Un’algoritmo è una serie di operazion non
ambigue ed efficientemente computabili,
che una volta eseguite producono un
risultato in un tempo finito
Se possiamo specificare un algoritmo allora
possiamo automatizzare la soluzione
Definire il problema
• Eliminare le ambiguità nella formulazione del problema
• Individuare il risultato che si vuole ottenere, gli
obiettivi da raggiungere
• Evidenziare
– le regole da rispettare
– i vincoli interni ed esterni
– i dati espliciti ed impliciti
• Eliminare i dettagli inutili ed ambigui
Relazione tra Realtà e Modello
Ricerca della
soluzione
Costruzione
modello
Mondo Reale
Modello
re
tf
ft
12
13
tt
14
15
F=m×a
Interpretazione
della soluzione
Scegliere astrazione: definire un
Insieme di dati che rappresentano
la realta’ (modello di dati)
Risolvere problema
Scegliere rappresentazione della
informazione (struttura dati)
Algoritmo e programma
Es. Archivio impiegati contiene insieme di dati rilevanti
(astrazione) su ogni impiegato
Rilevanti: Nome, stipendio, mansione
Non rilevanti: altezza, peso, colore occhi, colore capelli
Algoritmo
Un algoritmo è una sequenza finita di passi elementari che
descrive come risolvere in un tempo finito un problema
Un esempio
Come identificare il profumo più economico?
0. Prendi la prima bottiglia,
1. Vai alla prossima bottiglia nello scaffale
2. Confronta il prezzo sulla bottiglia nello scaffale con quello in mano
3. Se è minore scambia la bottiglia in mano con quella sullo scaffale
4. Se ci sono bottiglie non controllare, allora ripeti da 1.
5. Se le bottiglie sono finite, la bottiglia più economica è quella in mano
• E’ un algoritmo?
• La soluzione è corretta?
• Quanto tempo prende?
Algoritmo
Un algoritmo è una sequenza finita di passi elementari che
descrive come risolvere in un tempo finito un problema
Altri esempi di algoritmi:
• Istruzioni di montaggio
• Preparazione del caffè
• Prelievo bancomat
• Preparazione di un ricetta
• Calcolo del massimo comun divisore tra due interi
Algoritmo
Dati iniziali
ALGORITMO
Dati finali (soluzione)
Algoritmo: sequenza di azioni elementari
che consenta di trasformare i dati iniziali nei risultati finali
attraverso un numero finito di passi, elementari e non
ambigui.
Note:
• Insieme di dati iniziali ben definito
• Sequenza di passi può essere eseguita da un opportuno
esecutore (es. calcolatore).
Algoritmo
Dati iniziali
ALGORITMO
Dati finali (soluzione)
Proprietà fondamentali di un Algoritmo
• Correttezza; produce sempre una soluzione
• Efficienza: L’algoritmo perviene alla soluzione del
problema usando la minor quantità possibile di risorse
fisiche, quali tempo di esecuzione, memoria, ….
Algoritmo
Dati iniziali
ALGORITMO
Dati finali (soluzione)
Ricapitolando, un algoritmo deve essere:
• applicabile a qualsiasi insieme di dati di ingresso
appartenenti al dominio di definizione dell’algoritmo
• costituito da operazioni appartenenti ad un determinato
• insieme di operazioni fondamentali
• costituito da regole non ambigue, cioè interpretabili in
modo univoco qualunque sia l’esecutore (persona o
“macchina”) che le legge
Un esempio
Come identificare il profumo più economico?
0. Prendi la prima bottiglia,
1. Vai alla prossima bottiglia nello scaffale
2. Confronta il prezzo sulla bottiglia nello scaffale con quello in mano
3. Se è minore scambia la bottiglia in mano con quella sullo scaffale
4. Se ci sono bottiglie non controllare, allora ripeti da 1.
5. Se le bottiglie sono finite, la bottiglia più economica è quella in mano
• Dati ingresso?
• Operazioni?
• Esecutore?
Algoritmo
Esempio: prendere l’automobile
1. Aprire l’auto
2. Aprire la portiera
3. Sedersi al posto di guida
4. Schiacciare la frizione
5. Avviare il motore
6. Inserire la prima marcia
7. Rilasciare “delicatamente” la frizione per partire
I passi sono eseguiti in sequenza
l'ordine delle istruzioni è essenziale per la correttezza
Esempio: Biblioteca
I libri sono disposti sugli scaffali
•La posizione di ogni libro è fissa ed è individuata da due coordinate:
-Scaffale(i.e. numero dello scaffale)
-Posizione nello scaffale
•La biblioteca è dotata di uno schedario (ordinato per autore/i e titolo).
Ogni scheda contiene, nell’ordine:
-cognome e nome dell’autore
-titolo del libro
-data di pubblicazione
-numero dello scaffale in cui si trova
-posizione attribuita al libro nello scaffale.
Esempio: Biblioteca
Esempio di scheda
Autore/i:Sciuto, DonatellaBuonanno, GiacomoMari, Luca
Titolo:Introduzione ai Sistemi Informatici,
III Edizione, 2005
Scaffale:22
Posizione:11
Esempio: Biblioteca
Formulazione dell’algoritmo
1.Decidi il libro da richiedere
2.Preleva il libro richiesto
Raffinamenti successivi : se un passo non è direttamente comprensibile
ed eseguibile dall’esecutore (operazione semplice),
occorre dettagliarlo a sua volta mediante un ulteriore algoritmo.
Esempio: Biblioteca
Un algoritmo per il prelievo
1.Decidi il libro da richiedere
2.Cerca la scheda del libro richiesto
3.Segnati numero scaffale e posizione
4.Cerca lo scaffale indicato
5.Accedi alla posizione indicata e preleva il libro
6.Scrivi i tuoi dati sulla "scheda prestito"
Esempio: Biblioteca
Il sotto-algoritmo di ricerca
1.Prendi la prima scheda.
2.Esamina se titolo e autore/i sono quelli cercati.
In caso positivo la ricerca termina con successo,
altrimenti passa alla scheda successiva e ripeti.
3.Se esaurisci le schede il libro cercato non esiste.
Esempio: Biblioteca
Un algoritmo per il prelievo
1.Decidi il libro da richiedere
2.Cerca la scheda del libro richiesto come segue:
2.1. Prendi la prima scheda.
2.2. Esamina se titolo e autore/i sono quelli cercati.
In caso positivo la ricerca termina con successo,
altrimenti passa alla scheda successiva e ripeti.
2.3. Se esaurisci le schede il libro cercato non esiste.
3.Segnati numero scaffale e posizione
4.Cerca lo scaffale indicato
5.Accedi alla posizione indicata e preleva il libro
6.Scrivi i tuoi dati sulla "scheda prestito"
Scarica