4.1 Informatica1    Uni Fe  L.P
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

4.1 Informatica1 Uni Fe L.P

on

  • 2,069 views

 

Statistics

Views

Total Views
2,069
Views on SlideShare
2,069
Embed Views
0

Actions

Likes
0
Downloads
35
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

4.1 Informatica1 Uni Fe L.P Document Transcript

  • 1. Informatica 1 4 Programmazione e Sviluppo del software ing. Luigi Puzone Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi Software… Software, l’insieme di programmi che consentono alla macchina di funzionare e svolgono le funzioni richieste dall’utente Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 2 1
  • 2. …Software dati + informazioni istruzioni Schema concettuale del processo elaborativo Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 3 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 Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 4 2
  • 3. …Linguaggi di programmazione… Generazioni dei linguaggi di programmazione (Informatica di base 3ed. – Curtin D.P. et al – McGrawHill) Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 5 …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; Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 6 3
  • 4. …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; Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 7 …Linguaggi di programmazione dalla 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 Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 8 4
  • 5. …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. Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 9 …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 Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 10 5
  • 6. …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. Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 11 …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) Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 12 6
  • 7. …Linguaggi di programmazione… …Linguaggi Assemblativi (Seconda generazione)… (Informatica di base 3ed. – Curtin D.P. et al – McGrawHill) Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 13 …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. Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 14 7
  • 8. …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; Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 15 …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à. Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 16 8
  • 9. …Linguaggi di programmazione… Alcuni Linguaggi Procedurali (Informatica di base 3ed. – Curtin D.P. et al – McGrawHill) Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 17 …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. Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 18 9
  • 10. …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 Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 19 …Linguaggi di programmazione… Linguaggi Procedurali: Compilatori… (Informatica di base 3ed. – Curtin D.P. et al – McGrawHill) Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 20 10
  • 11. …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. Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 21 …Linguaggi di programmazione… Linguaggi Procedurali: Interpreti… (Informatica di base 3ed. – Curtin D.P. et al – McGrawHill) Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 22 11
  • 12. …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. Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 23 …Linguaggi di programmazione… Linguaggi Procedurali: Differenza fra Compilatori e Interpreti Differenza fra Compilatori e Interpreti (Informatica di base 3ed. – Curtin D.P. et al – McGrawHill) • 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. Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 24 12
  • 13. …Linguaggi di programmazione… La traduzione dei programmi (Informatica di base 3ed. – Curtin D.P. et al – McGrawHill) Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 25 …Linguaggi di programmazione… Linguaggi Procedurali: Pseudocodici… (Informatica di base 3ed. – Curtin D.P. et al – McGrawHill) Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 26 13
  • 14. …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. Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 27 …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 Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 28 14
  • 15. …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 Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 29 …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; Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 30 15
  • 16. …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. Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 31 …Linguaggi di programmazione… …Linguaggi Procedurali: Java… F. Allimant - The Java Tutorial: A practical guide for programmers –Sun Microsistems Inc. – May 2001 Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 32 16
  • 17. …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. Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 33 Fasi di Sviluppo del Software (Informatica di base 3ed. – Curtin D.P. et al – McGrawHill) Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 34 17
  • 18. Fasi del Ciclo di Vita Definizione 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. Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 35 Fasi del Ciclo di Vita Progettazione… Seconda fase • Sulla base del problema da risolvere si definisce il programma in termini di: – tecnologie coinvolte – linguaggio di programmazione da utilizzare Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 36 18
  • 19. Fasi del Ciclo di Vita …Progettazione… Strumenti di progettazione: •Diagrammi di flusso •Pseudolinguaggi Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 37 Fasi del Ciclo di Vita …Progettazione (Informatica di base 3ed. – Curtin D.P. et al – McGrawHill) Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 38 19
  • 20. Fasi del Ciclo di Vita Codifica del programma Terza Fase: • La scrittura del programma nel linguaggio di programmazione prescelto Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 39 Fasi del Ciclo di Vita Verifica del programma Quarta fase: • La verifica che il programma realizzato funzioni correttamente: fase di verifica (testing) Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 40 20
  • 21. Fasi del Ciclo di Vita Documentazione del programma Quinta fase: • La documentazione del programma ossia la realizzazione di un manuale d’uso. Luigi Puzone ® Informatica 1 – Università di Ferrara – A.A. 2008-2009 Modulo 4.1: Programmazione e sviluppo dei sistemi 41 21