1 / 20

Il Software

Il Software. La proprietà fondamentale dei calcolatori e` il fatto di essere programmabile cioè in grado di svolgere compiti diversi a seconda delle istruzioni fornite dall’ utente mediante un programma cioè una sequenza di istruzioni eseguibili da un calcolatore.

genero
Download Presentation

Il Software

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Il Software La proprietà fondamentale dei calcolatori e` il fatto di essere programmabilecioè in grado di svolgere compiti diversi a seconda delle istruzioni fornite dall’ utente mediante un programma cioè una sequenza di istruzionieseguibili da un calcolatore. Per scrivere il programma occorre definire prima l’ algoritmo, cioè i dati e la sequenza di azioni elementari che devono essere svolti per risolvere il problema.

  2. ALGORITMI • Un algoritmo e` un insieme ordinato di passi che descrivono i dati che devono essere utilizzati e determinano la sequenza di azioni elementari che devono essere svolte per risolvere il problema. • Un algoritmo puo` essere descritto in modo grafico da un diagramma di flusso • Ogni azione dell’ algoritmo e` rappresentata da un blocco • Esistono convenzioni precise sulla forma dei blocchi • Le azioni all’interno dei blocchi possono essere specificate a diversi livelli di dettaglio

  3. START END AZIONE I/O Diagrammi di flusso T F CONDIZIONE VERA FALSA

  4. leggi x leggi y d <= x - y Algoritmi e diagrammi di flussomassimo di due numeri Dati x, y, d: variabili Algoritmo 1. Leggi il valore del primo numero e inseriscilo in x; 2. Leggi il valore del secondo numero e inseriscilo in y; 3. Calcola la differenza d tra x e y (d <= x - y) 4. Sed > 0 allora stampa il contenuto di x altrimenti stampa il contenuto di y 5. Fine START F T d > 0 ? Stampa y Stampa x END

  5. Il Software • Programmare nel linguaggio della macchina hardware e` difficile perché • l’utente dovrebbe conoscere l’organizzazione fisica dell'elaboratore e il suo linguaggio macchina; • ogni programma dovrebbe essere scritto utilizzando delle sequenze di bit ed ogni piccola differenza hardware comporterebbe una riscrittura del programma stesso.

  6. Il Software • Questo non è accettabile ed è necessario fornire all’utente un meccanismo per: • astrarre dall’organizzazione fisica della macchina; • usare nello stesso modo, o comunque in modo molto simile, macchine leggermente diverse dal punto di vista hardware o, al limite, macchine con hardware profondamente differente; • avere un semplice linguaggio di interazione con la macchina; • avere un linguaggio semplice e ad alto livello per programmare la macchina; • avere un insieme di programmi applicativi per svolgere diversi compiti

  7. Utente HW macchina virtuale Il Software • Nei moderni sistemi di elaborazione questi obiettivi vengono raggiunti grazie alla definizione di macchine virtualiche vengono realizzate al di sopra della macchina hardware reale

  8. Macchine Virtuali • Ogni macchina reale ha un suo linguaggio macchina L0 le cui istruzioni sono direttamente eseguibili dai circuiti elettronici (HW) • Al di sopra di questo linguaggio è possibile definire altri linguaggi Li e fornire delle regole per tradurne le istruzioni in opportune sequenze di istruzioni in linguaggio macchina • L’insieme di queste nuove istruzioni definisce una macchina virtuale in quanto non esiste fisicamente ma viene realizzata mediante il software • La macchina virtuale si preoccuperà della traduzionedelle istruzioni al livello Li nell'opportuna sequenza di istruzioni di livello Li-1 che realizza la stessa funzione

  9. Esempio: all’ insieme di istruzioni macchina L0 possiamo aggiungere la funzione MULT(op1, op2) che non e` realizzata dall’hardware, ma dall’ esecuzione del programma La macchina virtuale L1 è costituita da L0  {MULT} Usando le istruzioni di L1 è possibile costruire livelli sempre più sofisticati: L1  {ESP}

  10. Esempio: supponiamo che l'utente voglia stampare un file. A livello fisico questa operazione è complessa e richiede operazioni di trasferimento dati dal disco alla stampante (via memoria centrale) La macchina virtuale fornisce all'utente un semplice comando di stampa: > print file1 mediante il quale si può richiedere la stampa delle informazioni contenute nel file di nome file1

  11. La macchina virtuale deve innanzitutto verificare se si tratta di un comando valido • Poi tradurlo nell’opportuna sequenza di istruzioni a basso livello per la macchina fisica • Una volta eseguito il comando, la macchina virtuale si pone in attesa di un nuovo comando da parte dell'utente • Grazie a questo livello software si può astrarre dalle caratteristiche fisiche della macchinaSi può anche fare in modo che macchine differenti siano usabili in modo simile: si tratta, infatti, di costruire al di sopra delle diverse macchine fisiche la stessa macchina virtuale • Per ogni comando della macchina virtuale si dovranno però avere diversi programmi di traduzione, uno per ogni tipo di hardware

  12. Software di base • Strumenti per l’uso di linguaggi ad alto livello: • Interpreti e compilatori • Strumenti per l’esecuzione di programmi • Sistema operativo • Configurazione e accensione macchina • Gestione di informazione su memoria secondaria => FILE SYSTEM • Gestione delle risorse • Comunicazione tra utente e sistema

  13. Programma P in Assembler Programma P’ in linguaggio macchina M Traduttore assembler su macchina M Software di base: Linguaggi di Programmazione • Programmare in linguaggio macchina: • richiede conoscenza dell’hardware • produce programmi non portabili • Si può utilizzare il linguaggioassembler • linguaggio vicino al linguaggio macchina • usa mnemonici e simboli anziché codifiche e indirizzi • la traduzione da assembler a linguaggio macchina può essere fatta dal calcolatore, mediante un assemblatore

  14. Software di base:Linguaggi di Programmazione • Il linguaggioassemblerperò produce comunque programmi lunghi e non portabili • Per superare queste difficoltà` sono nati i linguaggi di programmazione ad alto livello • astraggono dalle caratteristiche hardware • sono facile da usare • sono portabili • pero` non producono programmi direttamente eseguibilie necessitano di unatraduzione

  15. Software di base:Linguaggi di Programmazione Un linguaggio di programmazione ad alto livello L definisce una macchina virtuale; per poter eseguire su una macchina fisica M un programma scritto nel linguaggio L occorre tradurlo nel linguaggio macchina di M Il meccanismo di traduzione permette di astrarre dalle caratteristiche fisiche della macchina hardware, per cui programmi scritti nello stesso linguaggio possono essere eseguiti su macchine diverse  Portabilita`

  16. Software di base:Linguaggi di Programmazione Esistono due diverse tecniche di traduzione per programmi scritti in linguaggio di alto livello: • Compilazione: il programma P scritto nel linguaggio L viene tradotto in un programma equivalente P’ scritto nel linguaggio macchina, che viene poi eseguito • Interpretazione: sulla macchina M viene mandato in esecuzione un programma interprete che per ogni istruzione del programma P genera la sequenza corrispondente di istruzioni macchina e le fa eseguire

  17. COMPILAZIONEes. PASCAL, C, FORTRAN, COBOL . . .

  18. INTERPRETAZIONEes. : LISP, PROLOG, BASIC . . .

  19. Software di base:Linguaggi di Programmazione Ogni linguaggio di programmazione fornisce un insieme di costrutti base per: • definire i dati su cui il programma opera • specificare le azioni elementari da eseguire sui dati • comporre istruzioni elementari in: • sequenze • blocchi condizionali • blocchi che devono essere ripetuti • interagire con l’utente per • l’acquisizione di dati (input) • la produzione di dati (output)

  20. Dati a, b: variabili Algoritmo 1. Leggi il valore del primo numero e inseriscilo in a; 2. Finche` ci sono numeri da esaminare ripeti: leggi il numero e inseriscilo in b a <= max(a,b) 5. Stampa a 6. Fine Programma Basic Function max as integer dim a as integer dim b as integer input a while not fine input b a = max(a, b) wend print a Algoritmi e programmimassimo di n numeri

More Related