4.1 Informatica1 Uni Fe L.P

21
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 2 Luigi 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…

Transcript of 4.1 Informatica1 Uni Fe L.P

Page 1: 4.1 Informatica1    Uni Fe  L.P

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…

Page 2: 4.1 Informatica1    Uni Fe  L.P

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

Page 3: 4.1 Informatica1    Uni Fe  L.P

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;

Page 4: 4.1 Informatica1    Uni Fe  L.P

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

Page 5: 4.1 Informatica1    Uni Fe  L.P

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

Page 6: 4.1 Informatica1    Uni Fe  L.P

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)

Page 7: 4.1 Informatica1    Uni Fe  L.P

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.

Page 8: 4.1 Informatica1    Uni Fe  L.P

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à.

Page 9: 4.1 Informatica1    Uni Fe  L.P

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.

Page 10: 4.1 Informatica1    Uni Fe  L.P

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)

Page 11: 4.1 Informatica1    Uni Fe  L.P

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)

Page 12: 4.1 Informatica1    Uni Fe  L.P

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)

Page 13: 4.1 Informatica1    Uni Fe  L.P

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)

Page 14: 4.1 Informatica1    Uni Fe  L.P

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

Page 15: 4.1 Informatica1    Uni Fe  L.P

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;

Page 16: 4.1 Informatica1    Uni Fe  L.P

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

Page 17: 4.1 Informatica1    Uni Fe  L.P

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)

Page 18: 4.1 Informatica1    Uni Fe  L.P

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…

Page 19: 4.1 Informatica1    Uni Fe  L.P

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)

Page 20: 4.1 Informatica1    Uni Fe  L.P

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

Page 21: 4.1 Informatica1    Uni Fe  L.P

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