4.1 Informatica1 - UniFE- L Informatica1... · Luigi Puzone ® Informatica 1 – Università di...
Transcript of 4.1 Informatica1 - UniFE- L Informatica1... · Luigi Puzone ® Informatica 1 – Università di...
1
Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
Informatica 1
ing. Luigi Puzone
4
Programmazione e Sviluppo del software
2Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
Software,
l’insieme di programmi che
consentono alla macchina di
funzionare e svolgono le funzioni
richieste dall’utente
Software…
2
3Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
…Software
Schema concettuale del processo elaborativoSchema concettuale del processo elaborativo
datidati
istruzioniistruzioni
++++++++ informazioniinformazioni
4Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
Linguaggi di programmazione…
• I programmi vengono realizzati al fine di risolvere alcuni problemi pratici;
• Il linguaggio dell’elaboratore, definito anche come linguaggio macchina, è molto lontano dal linguaggio naturale;
• Il linguaggio di programmazione utilizza, invece, una serie di comandi compren-sibili al programmatore che devono poi essere tradotti in linguaggio macchina
3
5Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
…Linguaggi di programmazione…Generazioni dei linguaggi di programmazione
(Informatica di base 3ed. – Curtin D.P. et al – McGrawHill)
6Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
…Linguaggi di programmazione…Linguaggio Macchina (Prima generazione)
• Il linguaggio macchina è definito come
linguaggio di programmazione di prima
generazione;
• I primi programmi erano scritti direttamente in
linguaggio macchina;
• In un programma in linguaggio macchina le
istruzioni vengono scritte in modo da indicare
esattamente all’elaboratore la sequenza di
operazioni da effettuare sui dati, le istruzioni e
sui registri di memoria che li contengono;
4
7Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
…Linguaggi di programmazione…Linguaggio Macchina (Prima generazione)
• Nei programmi in linguaggio macchina sia
le istruzioni sia i dati sono scritti sotto
forma di stringhe di bit!
• I programmi in linguaggio macchina
variano il loro aspetto in funzione
dell’elaboratore sul quale dovranno
essere eseguiti;
8Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
…Linguaggi di programmazionedalla prima generazione alle successive
• Il linguaggio macchina viene anche
definito linguaggio di basso livello;
• I linguaggi di programmazione, come il
linguaggio umano, hanno una sintassi
ossia una grammatica;
• I linguaggi di programmazione sono anche
noti come linguaggi di alto livello
5
9Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
…Linguaggi di programmazione…Linguaggi Assemblativi (Seconda generazione)…
• Scrivere un programma in linguaggio
macchina comporta uno sforzo enorme da
parte del programmatore e, soprattutto,
vi è un’elevata probabilità di errori.
• Il primo passo per svincolarsi dal
linguaggio macchina è l’assembler o
linguaggio assemblativo.
10Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
…Linguaggi di programmazione……Linguaggi Assemblativi (Seconda generazione)…
• In assembler:
– A ciascuna istruzione numerica viene
assegnato un nome convenzionale
mnemonico
– A ciascuna posizione di memoria viene
assegnato un nome convenzionale
6
11Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
…Linguaggi di programmazione……Linguaggi Assemblativi (Seconda generazione)…
• Poiché l’assembler è diverso dal
linguaggio macchina è comunque
necessario un processo di traduzione
del programma assembler in una
sequenza di istruzioni in linguaggio
macchina.
12Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
…Linguaggi di programmazione……Linguaggi Assemblativi (Seconda generazione)…
• La “traduzione” avviene utilizzando
una tabella che indica le
corrispondenze fra ciascuna
istruzione nel codice sorgente
(assembler) e nelle corrispondenti
istruzioni nel cosiddetto codice
oggetto (linguaggio macchina)
7
13Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
…Linguaggi di programmazione……Linguaggi Assemblativi (Seconda generazione)…
(Informatica di base 3ed. – Curtin D.P. et al – McGrawHill)
14Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
…Linguaggi di programmazione……Linguaggi Assemblativi (Seconda generazione)
Ricapitolando:
• L’assembler è un linguaggio in cui le istruzioni, formate da brevi combinazioni di lettere e numeri, corrispondono ciascuna ad una singola azione eseguibile dalla macchina.
• La presenza di un numero maggiore di simboli, anche alfabetici, consente di esprimere un’operazione in una forma mnemonica, di più semplice utilizzo rispetto al linguaggio macchina.
• L’assembler è, comunque, un linguaggio molto vicino alla logica della macchina e ancora molto distante da quella dell’uomo. Per questo motivo viene usato solo quando bisogna utilizzare al meglio le potenzialità del calcolatore.
8
15Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
…Linguaggi di programmazione…Linguaggi Procedurali (terza generazione)…
• I linguaggi procedurali, o di alto livello,
nascono con i seguenti obiettivi:
– Offrire migliori possibilità di programma-
zione rispetto all’assembler o al linguaggio
macchina;
– Realizzare programmi che siano il più
possibile indipendenti dall’hardware;
– Permettere la realizzazione di programmi
modulari;
16Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
…Linguaggi di programmazione……Linguaggi Procedurali (terza generazione)…
• I linguaggi ad alto livello tentano di
avvicinarsi il più possibile al linguaggio e
alla logica umana.
• Sono costituiti da insiemi di simboli e di
parole chiave, termini mnemonici in
lingua inglese e da un insieme di regole
sintattiche molto rigide e definite in
modo da evitare ogni ambiguità.
9
17Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
…Linguaggi di programmazione…Alcuni Linguaggi Procedurali
(Informatica di base 3ed. – Curtin D.P. et al – McGrawHill)
18Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
…Linguaggi di programmazione…Linguaggi Procedurali: Traduttori…
• Un linguaggio di alto livello ha
bisogno di un traduttore che
traduca ciascuna istruzione in
sequenze di istruzioni in linguaggio
di basso livello.
10
19Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
…Linguaggi di programmazione……Linguaggi Procedurali: Traduttori
• I traduttori si occupano di analizzare il
programma in linguaggio procedurale e
di tradurlo in linguaggio macchina.
• Due tipi di traduttori
– Compilatori
– Interpreti
20Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
…Linguaggi di programmazione…Linguaggi Procedurali: Compilatori…
(Informatica di base 3ed. – Curtin D.P. et al – McGrawHill)
11
21Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
…Linguaggi di programmazione……Linguaggi Procedurali: Compilatori
I compilatori:
1. Analizzano il codice sorgente (cioè il
programma scritto nel linguaggio procedurale);
2. Effettuano la traduzione in codice oggetto;
3. Salvano il codice oggetto su una memoria di
massa.
L’elaboratore leggerà dalla memoria di
massa il codice oggetto eseguendolo.
22Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
…Linguaggi di programmazione…Linguaggi Procedurali: Interpreti…
(Informatica di base 3ed. – Curtin D.P. et al – McGrawHill)
12
23Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
…Linguaggi di programmazione……Linguaggi Procedurali: Interpreti
Gli interpreti:
1.analizzano il programma,
2. traducono “on the fly” ciascuna istruzione dal
linguaggio procedurale al linguaggio macchina
3. il sistema esegue il programma.
La traduzione avviene in modo progressivo
e l’interprete non salva il codice oggetto.
24Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
…Linguaggi di programmazione…Linguaggi Procedurali: Differenza fra Compilatori e Interpreti
Differenza fra Compilatori e Interpreti
• Il compilatore effettua la traduzione dal codice sorgente
in codice oggetto in modalità asincrona rispetto
all’esecuzione del programma.
• L’interprete effettua la traduzione dal codice sorgente in
linguaggio macchina in modalità sincrona rispetto all’ese-
cuzione del programma. L’interprete e il programma sono
entrambi presenti nella memoria dell’elaboratore.
(Informatica di base 3ed. – Curtin D.P. et al – McGrawHill)
13
25Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
…Linguaggi di programmazione…La traduzione dei programmi
(Informatica di base 3ed. – Curtin D.P. et al – McGrawHill)
26Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
…Linguaggi di programmazione…Linguaggi Procedurali: Pseudocodici…
(Informatica di base 3ed. – Curtin D.P. et al – McGrawHill)
14
27Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
…Linguaggi di programmazione……Linguaggi Procedurali: Pseudocodici…
L’interpretazione di un linguaggio proce-
durale ad alto livello può determinare, in
programmi piuttosto complessi, un rallen-
tamento eccessivo della macchina perché
la memoria dell’elaboratore viene ad esse-
re occupata contemporaneamente dal codi-
ce sorgente, dall’interprete e dal codice
oggetto.
28Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
…Linguaggi di programmazione…Linguaggi Procedurali: Pseudocodici…
Gli pseudocodici nascono anche per ovviare
al rallentamento per la presenza
contemporanea nella memoria
dell’elaboratore del codice sorgente,
dall’interprete e del codice oggetto
Esempio: Java
15
29Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
…Linguaggi di programmazione……Linguaggi Procedurali: Pseudocodici…
In un linguaggio di programmazione che fa uso di
pseudocodici la traduzione avviene in due fasi:
1.Il compilatore traduce il programma in uno
“pseudocodice intermedio” e lo salva;
2.Lo pseudocodice intermedio viene interpreta-
to da un interprete realizzato ad hoc per
l’elaboratore sul quale dovrà essere eseguito
30Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
…Linguaggi di programmazione……Linguaggi Procedurali: Pseudocodici
In questo modo il codice sorgente è
completamente hardware independent;
Lo pseudocodice intermedio è esso
stesso hardware independent;
L’interprete e il codice oggetto sono
hardware dependent;
16
31Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
…Linguaggi di programmazione…Linguaggi Procedurali: Java…
Il linguaggio di programmazione Java viene realizzato dalla
Sun Microsystems negli anni ’90 come parte di un progetto
di ricerca volto a sviluppare programmi per l’elettronica di
consumo (televisori, videoregistratori, telefoni, forni a
microonde…).
Gli obiettivi erano allora: programmi di piccole
dimensioni, velocità, efficienza e portabilità su una vasta
gamma di apparecchi.
32Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
…Linguaggi di programmazione……Linguaggi Procedurali: Java…
F. Allimant - The Java Tutorial: A practical guide for programmers –Sun Microsistems Inc. – May 2001
17
33Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
…Linguaggi di programmazione……Linguaggi Procedurali: Java
Il programma in linguaggio Java viene compilato
dando origine a un bytecode (lo pseudocodice Java);
Il bytecode è portabile ossia indipendente dalla
piattaforma;
Un interprete, realizzato ad hoc per la piattaforma su
cui sarà eseguito l’applicazione (o l’applet) Java,
legge il bytecode e ne permette l’esecuzione.
34Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
Fasi di Sviluppo del Software
(Informatica di base 3ed. – Curtin D.P. et al – McGrawHill)
18
35Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
Prima fase
• Definire il problema da risolvere e i cosiddetti
“confini dell’applicazione” ossia i dati che
dovrebbero essere elaborati e il risultato che
intendo avere dall’elaborazione.
Fasi del Ciclo di VitaDefinizione
36Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
Seconda fase
• Sulla base del problema da risolvere si definisce
il programma in termini di:
– tecnologie coinvolte
– linguaggio di programmazione da utilizzare
Fasi del Ciclo di VitaProgettazione…
19
37Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
Strumenti di progettazione:
•Diagrammi di flusso
•Pseudolinguaggi
Fasi del Ciclo di Vita…Progettazione…
38Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
Fasi del Ciclo di Vita…Progettazione
(Informatica di base 3ed. – Curtin D.P. et al – McGrawHill)
20
39Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
Terza Fase:
• La scrittura del programma nel linguaggio
di programmazione prescelto
Fasi del Ciclo di VitaCodifica del programma
40Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
Quarta fase:
• La verifica che il programma realizzato
funzioni correttamente: fase di verifica
(testing)
Fasi del Ciclo di VitaVerifica del programma
21
41Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi
Quinta fase:
• La documentazione del programma ossia
la realizzazione di un manuale d’uso.
Fasi del Ciclo di VitaDocumentazione del programma