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

4.1 Informatica1 Uni Fe L.P

on

  • 2,042 views

 

Statistics

Views

Total Views
2,042
Views on SlideShare
2,042
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 4.1 Informatica1 Uni Fe L.P Document Transcript

  • 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
  • …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
  • …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
  • …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
  • …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
  • …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
  • …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
  • …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
  • …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
  • …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
  • …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
  • …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
  • …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
  • …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
  • …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
  • …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
  • …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
  • 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
  • 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
  • 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
  • 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