Problemi, Algoritmi e Programmi Introduzione

Transcript

Problemi, Algoritmi e Programmi Introduzione
MASTER Information Technology Excellence Road (I.T.E.R.)
Problemi, Algoritmi e Programmi
Maurizio Palesi
Salvatore Serrano
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
1
Introduzione
n Problema da risolvere
èCome trovare la stazione
èCome cucinare l’anatra all’arancia?
n Procedimento per risolvere il problema
èLa strada più breve per la stazione
èUna ricetta per l’anatra all’arancia
n Agente di calcolo
èIl turista
èIl cuoco
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
2
1
Problem Solving
n Uno degli scopi fondamentali dell’informatica è
èLa risoluzione di problemi
n Problema:
èCompito che si vuole fare risolvere automaticamente al
calcolatore
Agente
Agente di
di
calcolo
calcolo
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
3
Problem Solving (continuo…)
n I problemi che siamo interessati a risolvere sono di
natura molto varia
èTrovare il maggiore tra due numeri
èDato un elenco di nomi e numeri di telefono trovare il
numero di una certa persona
èDati a e b risolvere l’equazione ax+b=0
èStabilire se una parola precede alfabeticamente un’altra
èPrenotare aerei, treni, hotel, …
èOrdinare un elenco di nomi
è…
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
4
2
Problem Solving (continuo…)
Presentare i
risultati
Acquisire i dati
Input
Input
Elaborazione
Elaborazione
Output
Output
5
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
Esempio: Somma
n1,
n1, n2
n2
Totale
Totale
==
n1
+
n1 +n2
n2
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
Totale
Totale
6
3
Attività per Risolvere un Problema
n Comprendere il problema
n Definire il procedimento risolutivo (algoritmo)
n Implementare l’algoritmo in un linguaggio di
programmazione
n Prova
n Documentazione
n Manutenzione
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
7
Comprendere il Problema
n Focalizzare gli obiettivi
n Evidenziare
èLe regole
èI dati espliciti ed impliciti
n Eliminare i dettagli inutili ed ambigui
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
8
4
Attività per Risolvere un Problema
n Comprendere il problema
n Definire il procedimento risolutivo (algoritmo)
n Implementare l’algoritmo in un linguaggio di
programmazione
n Prova
n Documentazione
n Manutenzione
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
9
Algoritmo
Descrizione
Descrizione rigorosa
rigorosa delle
delle azioni
azioni da
da
compiere
compiere per
per risolvere
risolvere un
un problema
problema
di
di qualsiasi
qualsiasi genere
genere
n Esempi
èLa strada più breve per la stazione
èUna ricetta per l’anatra all’arancia
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
10
5
Descrizione Rigorosa
n L’indicazione “prendi la seconda traversa a destra
e poi la prima a sinistra ” può essere espressa in
forma rigorosa così:
1.
2.
3.
4.
5.
6.
7.
8.
C’e’ una strada a destra? Se sì, va al punto 3.
Vai avanti fino ad un incrocio; vai al punto 1.
Vai avanti fino ad un incrocio
C’è una strada a destra? Se no, vai al punto 3.
Svolta a destra
Vai avanti fino ad un incrocio
C’è una strada a sinistra? Se no, vai al punto 6.
Svolta a sinistra
5
8
3
11
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
Esempio: l’Area di una Campana
r=b/2
h2
b
h1
B
Area della campana =
A1 + A2 + A3
A3 = 1/2πr2
A1 = (B + b)×h1/2
A2 = b×h2
Sottoproblema 3
Sottoproblema 2
Sottoproblema 1
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
12
6
Esempio: Gestione di una Biblioteca
n Libri esposti sugli scaffali
n La posizione di ogni libro è fissa ed individuata da
due coordinate
èNumero dello scaffale
èPosizione nello scaffale
n La biblioteca è dotata di uno schedario (ordinato per
autore. Ogni scheda contiene
èCognome e nome dell’autore
èTitolo del libro
èNumero dello scaffale
èPosizione nello scaffale
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
13
Esempio di scheda
Autore: Manzoni
Titolo: I promessi Sposi
Scaffale: 33
Posizione: 13
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
14
7
Problema
Trovare un libro!
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
15
Formulazione dell’Algoritmo
n Cerca la scheda del libro nello schedario
n Segnati numero scaffale e posizione
n Cerca lo scaffale indicato
n Accedi alla posizione indicata e preleva il libro
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
16
8
Primo sotto -algoritmo di Ricerca
n Prendi la prima scheda dello schedario
n Se titolo e autore sono quelli cercati, la ricerca
termina con successo altrimenti passa alla scheda
successiva
n Continua di scheda in scheda finchè non trovi
quella cercata. Se vengono esaurite le schede, il
libro cercato non esiste. Devi cercare il libro in
un’altra biblioteca.
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
17
Secondo sotto -algoritmo di Ricerca
n Esamina la scheda centrale dello schedario
n Se la scheda centrale corrisponde al libro cercato
allora la ricerca termina
n In caso contrario procedi allo stesso modo nella
metà superiore o inferiore dello schedario a
seconda che il libro cercato segua o preceda quello
indicato sulla scheda
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
18
9
Qualità degli Algoritmi
n Correttezza
èL’algoritmo permette effettivamente di risolvere il
problema
n Efficienza
èL’esecutore dell’algoritmo richiede un numero limitato di
risorse
èUn algoritmo è tanto più efficiente quanto meno risorse
richiede per la sua esecuzione. Una risorsa importante è
il tempo di esecuzione
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
19
Esempio: Gestione Biblioteca
n Entrambi gli algoritmi sono corretti
n Il secondo algoritmo è più efficiente del primo
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
20
10
Attività per Risolvere un Problema
n Comprendere il problema
n Definire il procedimento risolutivo (algoritmo)
n Implementare l’algoritmo in un linguaggio di
programmazione
n Prova
n Documentazione
n Manutenzione
21
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
Implementazione di un Algoritmo
n L’algoritmo deve essere codificato in un linguaggio
Linguaggi
Linguaggi naturali
Usati dagli uomini per
comunicare
u Complessi
u Ambigui
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
Linguaggi artificiali
Usati in informatica
(linguaggi di
programmazione)
22
11
Alcuni Linguaggi di Programmazione
n Fortran (metà degli anni ‘50)
èFormula Translator
n Cobol (metà degli anni ‘50)
èCommon Business-Oriented Language
n Pascal (inizio degli anni ‘70)
èDal matematico francese Blaise Pascal primo ad ideare
una macchina calcolatrice (la Pascalina)
n C (inizi degli anni ‘70)
n Prolog (inizi degli anni ‘70)
èProgramming in Logic
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
23
Il Linguaggio C
n Il linguaggio C è stato sviluppato intorno al 1972,
nei Bell Laboratories AT&T americani, da Dennis
Ritchie
n E’ nato come linguaggio di sviluppo del Sistema
Operativo Unix
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
24
12
Sintassi e Semantica
Linguaggio
Sintassi
Insieme delle regole che
consentono di scrivere
correttamente le frasi di un
linguaggio
Livello
Forma corretta
Sintattico Sono andato a scuola
Semantico Il gatto è un animale
Semantica
Disciplina che studia il
significato delle parole e
delle frasi
Forma non corretta
Ho andato a scuola
L’albero è un animale
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
25
Programma
“Testo (cioè sequenza di istruzioni) scritto in
accordo alla sintassi e semantica di un
linguaggio di programmazione”
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
26
13
Linguaggio Macchina
n Un calcolatore non è in grado di eseguire
direttamente programmi scritti in linguaggi ad alto
livello
n Un calcolatore è in grado di eseguire direttamente
solo programmi scritti nel proprio linguaggio
macchina
100101001010
010101001011
101010010101
101010100101
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
27
Linguaggio macchina (cont.)
n Il linguaggio macchina è:
èLinguaggio di programmazione comprensibile
direttamente dal calcolatore
èMolto elementare e primitivo: sequenza di cifre binarie.
Ad esempio una possibile istruzione potrebbe essere:
11101011110100101010010101001010
per identificare un’operazione di somma tra operandi
contenuti nel primo e nel terzo registro e che pone il
risultato nel dodicesimo registro
èE’ difficile da comprendere per un essere umano
èSpecifico per un calcolatore
ü Calcolatori differenti supportano linguaggi macchina differenti
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
28
14
Traduzione
n Per rendere un programma (scritto in un linguaggio
ad alto livello) eseguibile sul calcolatore occorre
tradurre il programma in un programma
equivalente scritto nel linguaggio macchina del
calcolatore
n La traduzione può avvenire in due modi
èCompilazione
èInterpretazione
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
29
Compilazione
n Un programma scritto in un linguaggio ad alto livello viene
trasformato in un programma scritto in linguaggio macchina
e poi può essere eseguito più volte senza dover tradurre
nuovamente il programma
Programma scritto
in linguaggio C
Compilatore
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
100101001010
010101001011
101010010101
101010100101
30
15
Interpretazione
n Traduzione riga per riga
èCiscuna istruzione del programma scritto in un linguaggio
di programmazione ad alto livello viene trasformata in
istruzioni del linguaggio macchina ed eseguita
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
31
Compilazione ed Interpretazione
n La compilazione è assimilabile al processo di
traduzione, da una lingua ad un’altra, di un libro
n L’interpretazione è assimilabile al processo di
traduzione simultanea
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
32
16
Compilazione vs. Interpretazione
n Compilazione
èVantaggi
ü Creazione di programmi eseguibili
ü Velocità di esecuzione del programma
èSvantaggi
ü Portabilità del codice su altre piattaforme
n Interpretazione
èVantaggi
ü Portabilità del codice
èSvantaggi
ü Lenta esecuzione
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
33
Attività per Risolvere un Problema
n Comprendere il problema
n Definire il procedimento risolutivo (algoritmo)
n Implementare l’algoritmo in un linguaggio di
programmazione
n Prova
n Documentazione
n Manutenzione
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
34
17
Prova
compilazione
Compilatore
Compilatore
Inserimento e
correzione
Errori di
sintassi
esecuzione
Sistema
Sistemadi
di
esecuzione
esecuzione
Risultati ed
errori in
esecuzione
verifica
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
35
Attività per Risolvere un Problema
n Comprendere il problema
n Definire il procedimento risolutivo (algoritmo)
n Implementare l’algoritmo in un linguaggio di
programmazione
n Prova
n Documentazione
n Manutenzione
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
36
18
Documentazione
n Scrivere un manuale d’uso che accompagni il
programma
n Questo manuale deve essere scritto facendo uso
della terminologia tipica del problema e non in
gergo computeristico
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
37
Attività per Risolvere un Problema
n Comprendere il problema
n Definire il procedimento risolutivo (algoritmo)
n Implementare l’algoritmo in un linguaggio di
programmazione
n Prova
n Documentazione
n Manutenzione
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
38
19
Manutenzione
n Non esistono parti del programma soggette ad
usura!
n Manutenzione del programma =
èModificarlo
èAggiornarlo
èEstenderlo
èRenderlo più veloce
è...
39
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
Riepilogo
Problema
Algoritmo
Programma
n Problema
èCompito che si vuole fare risolvere automaticamente al
calcolatore
n Algoritmo
èDescrizione rigorosa delle azioni da compiere per
risolvere il problema
n Programma
èSequenza di istruzioni in un linguaggio di
programmazione. Scopo del programma: fornire al
calcolatore le capacità per risolvere un dato problema
Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano
40
20