Da Problema a Programmazione
• Quale e’ il legame tra i linguaggi di
programmazione e i programmi (o software) ?
Linguaggi di
Programmazione
problema
algoritmo
programma
soluzione
Rapporto tra i tre concetti
Algoritmo
sequenza di passi che portano alla realizzazione di
un compito.
Programma
sequenza di istruzioni scritte in un opportuno
linguaggio comprensibile al calcolatore
Linguaggio di Programmazione
permette di codificare un algoritmo per renderlo
comprensibile al calcolatore.
Algoritmo
La definizione più o meno formale del
processo per la soluzione di un problema.
Esempi di algoritmi presenti nella vita
quotidiana:
 Montare mobili
 Ricercare un numero telefonico
 Riempire una valigia
Algoritmo::Origini
 Euclide (400 BC): per primo ha definito un algoritmo
per determinare il massimo comun divisore tra due numeri
interi positivi
 Questo termine deriva dal nome del matematico persiano
Abu Ja'far Mohammed ibn Mâsâ al-Khowârizmî (825 d.C.).
Esercitò la professione nella città di Baghdad, dove insegnava,
e introdusse nel mondo arabo i numeri indiani. La sua opera
"Il calcolo degli indiani" venne successivamente tradotta in
latino da un monaco europeo, con il titolo Liber algarismi - (Il
libro di al-Khwarizmi).
Algoritmo::Un esempio
Operazioni per svolgere la somma di due numeri
mediante il pallottoliere:
1) Si sposti una pallina dalla sinistra alla destra della prima riga e
se ne sposti una dalla destra alla sinistra della terza riga
2) Si ripeta l’operazione precedente finché non si è svuotata la
parte sinistra della prima riga
3) Si sposti una pallina dalla sinistra alla destra della seconda riga
e se ne sposti una dalla destra alla sinistra della terza riga
4) Si ripeta l’operazione precedente finché non si è svuotata la
parte sinistra della seconda riga.
5) Il numero di palline che si trova alla sinistra della terza riga al
termine delle operazioni è il risultato cercato
Algoritmo:: soluzione automatica
Il precedente algoritmo consiste nell’esecuzione
ripetuta di operazioni elementari:
- selezione di una riga
- spostamento di una pallina
- controllo se una riga sia vuota
Una volta costruito un esecutore meccanico delle
operazioni elementari potremo utilizzarlo per
risolvere qualsiasi problema la cui soluzione possa
essere descritta mediante un algoritmo che faccia
uso solo di tali operazioni
Algoritmo::Costruzione
Costruire un algoritmo equivale a:
- esaminare una specifica realtà (il problema)
- costruirne un’astrazione
- immaginare una rappresentazione più o meno
formale di tale astrazione
- scrivere un insieme di istruzioni che opportunamente
eseguite risolvano il problema
Algoritmo:: Rappresentazione
La pseudocodifica in un linguaggio il più
vicino possibile a quello naturale.
Esempio di pseudocodifica
Somma = 0;
Contatore = 0;
Leggi( valore_utente )
Finché valore_utente è vuoto
Ripeti
Somma = ( Somma + valore_utente )
….
Algoritmo:: Rappresentazione
Schema a blocchi
(Flow Chart)
Algoritmo::Istruzioni Ricorrenti
Istruzioni ricorrenti nella formulazione degli
algoritmi sono:
1. Istr. Sequenziali: tutte le azioni che devono essere
in successione
2. Istr. Condizionali: gestiscono possibilità di scelta fra
procedimenti alternativi (se allora altrimenti)
3. Istr. Ripetitive: quando un’azione o un gruppo di
azioni deve essere ripetuto un numero prestabilito
di volte o finché si verifichi un evento (ripeti per n
volte, ripeti finché)
Algoritmo:: Requisiti
• Deve terminare in un numero finito di passi
• Deve essere deterministico: un’unica
soluzione
• Deve essere accurato: risultato esatto con
errore minimo
• Deve essere efficiente: consumare
relativamente poco in tempo e spazio
Programma
1. Definiti gli algoritmi usati per risolvere il mio
problema.
2. Definito il linguaggio di programmazione
da usare.
Posso finalmente scrivere il mio programma.
Programma::Requisiti I
La codifica di un algoritmo nel linguaggio prescelto
deve rispettare alcuni vincoli affinché il programma
codificato rispetti alcuni requisiti essenziali:
• Corretto: deve risolvere effettivamente il problema per
cui è stato creato
• Affidabile: deve mantenere la sua correttezza nel
tempo
• Modificabile: deve essere facile modificarlo cosi da
poter adeguarsi a nuove esigenze dell’utente o dei
cambiamenti hw.
Programma::Requisiti II
• Comprensibile e leggibile: i non autori devono
poterlo comprendere
• Efficiente: deve ottimizzare le risorse di tempo
d’esecuzione e di memoria impegnata
• Portabile: deve essere eseguibile su diversi sistemi
Tutti questi requisiti fanno di un programma
un buon programma.
Linguaggi di programmazione
• Un linguaggio di programmazione è un linguaggio
definito da una sintassi precisa e la cui semantica è in
ultima analisi definita da regole di traduzione in
linguaggio macchina
• I linguaggi di programmazione hanno
– sintassi molto diverse
– sono semanticamente equivalenti
– hanno pragmatiche molto diverse
Scarica

teoria