Top Banner
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…
21

4.1 Informatica1 Uni Fe L.P

Jun 26, 2015

Download

Education

Luigi Puzone
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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