La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Programmazione Dr. Francesco Fabozzi Corso di Informatica.

Presentazioni simili


Presentazione sul tema: "Programmazione Dr. Francesco Fabozzi Corso di Informatica."— Transcript della presentazione:

1 Programmazione Dr. Francesco Fabozzi Corso di Informatica

2 2 Programmazione La programmazione rappresenta la seconda fase della risoluzione di un problema tramite un elaboratore –Consiste nella traduzione dellalgoritmo definito nella fase di analisi in una serie di istruzioni che possano essere eseguite dai circuiti elettronici dellelaboratore (programma) Il linguaggio di programmazione comprensibile dallhardware si chiama linguaggio macchina

3 3 Linguaggio macchina Strettamente legato allhardware dellelaboratore –Chi programma in linguaggio macchina deve conoscere lhardware della macchina che deve eseguire il programma Le istruzioni e i dati sono stringhe binarie –La scrittura, lettura e il mantenimento di un programma sono difficili –Operazioni anche semplici richiedono molte istruzioni elementari

4 4 Linguaggio macchina Esempio di istruzione in linguaggio macchina Istruzione LOAD Carica nel primo registro libero della CPU il numero 8 Rilevante sforzo da parte del programmatore anche per effettuare operazioni semplici!

5 5 Linguaggi simbolici I linguaggi simbolici si collocano a un livello immediatamente superiore al linguaggio macchina –Si parla di linguaggi a basso livello Codifica simbolica delle istruzioni anziché binaria –Ogni istruzione è identificata da una sigla –Una variabile può essere rappresentata da un nome

6 6 Linguaggi simbolici I linguaggi simbolici necessitano di un programma per tradurre le istruzioni in linguaggio macchina (programma assemblatore) –Questi linguaggi sono detti anche linguaggi assembler o assembly

7 7 Linguaggi simbolici Esempio di istruzione in linguaggio assembler MOV A 7 Scrivi 7 nella variabile A Il vantaggio di un linguaggio assembler su un linguaggio ad alto livello è la possibilità di ottimizzare il programma rispetto ai tempi di esecuzione

8 8 Linguaggi ad alto livello I linguaggi ad alto livello non sono legati alle componenti fisiche dellelaboratore –Sono più vicini al linguaggio naturale rispetto al linguaggio macchina Linguaggio macchina Assembler Linguaggi ad alto livello Linguaggio naturale precisione potenza espressiva + +

9 9 Linguaggi ad alto livello Ma rispetto al linguaggio naturale sono un linguaggio di programmazione ad alto livello è più formale e preciso –Caratterizzato da una rigida semantica, grammatica e sintassi Anche per i linguaggi ad alto livello sono necessari programmi per la traduzione di un programma in linguaggio macchina –Programmi compilatori e interpreti

10 10 Linguaggi ad alto livello Vantaggi –Portabilità: lo stesso programma può essere usato su diversi elaboratori –Leggibilità –Mantenibilità: più facile correggere ed evolvere il programma anche da parte di persone diverse dallautore originale Svantaggio –Minore efficienza: controllo limitato sulla modalità di traduzione del compilatore

11 11 Programmazione strutturata Approccio disciplinato alla programmazione nato negli anni 60 Obiettivi: realizzare programmi chiari, leggibili, facili da testare e modificare –Facilita il mantenimento del software Elementi basilari: –eliminazione dei salti –uso sistematico degli schemi di sequenza, selezione, iterazione

12 12 Linguaggi procedurali Una categoria di linguaggi di alto livello è quella dei linguaggi procedurali –Il programma viene diviso in diverse unità (procedure) ciascuna preposta allo svolgimento di una certa azione Una procedura può essere chiamata da unaltra e possono scambiarsi dati –Il programma appare come una sequenza di chiamate di procedure accompagnato da un conseguente flusso di dati

13 13 Linguaggi Object-Oriented Esistono anche linguaggi non procedurali Citiamo per la loro importanza i cosiddetti linguaggi orientati agli oggetti –Nel programma vengono definiti dei componenti software che modellizzano gli elementi del problema (oggetti) Vengono definite le loro proprietà e azioni insieme alla loro interfaccia-utente –Il programma appare come una serie di oggetti che sono creati alloccorrenza e ai quali si possono impartire comandi

14 14 Ambiente di sviluppo Per scrivere un programma abbiamo bisogno di altri programmi! Si dice ambiente di sviluppo linsieme dei programmi che sono di ausilio alla scrittura di programmi applicativi in un certo linguaggio di programmazione

15 15 Ambiente di sviluppo Un ambiente di sviluppo deve fornire: Editor: per la scrittura mediante tastiera del programma sorgente Programmi traduttori: per la traduzione in linguaggio macchina del programma sorgente –Interprete oppure compilatore Debugger: per la ricerca di errori (detti anche bachi o bug) –Analizza lesecuzione del programma verificando passo passo il risultato delle singole istruzioni

16 16 Programma interprete Cosa fa un programma interprete: –traduce ciascuna istruzione del programma sorgente in istruzioni macchina –la esegue –passa allistruzione successiva In caso di errore: –Si può correggere subito lerrore nel programma che potrà riprendere dal punto in cui si era interrotto Ma…

17 17 Programma interprete Ma… –In genere programmi complessi hanno istruzioni che si ripetono diverse volte –Questo significa che la traduzione in linguaggio macchina verrà ripetuta ogni volta I programmi interpreti sono poco efficienti per lesecuzione di programmi complessi

18 18 Compilatore Cosa fa un compilatore: –traduce lintero programma sorgente in un programma in codice macchina (programma oggetto) –Istruzioni ripetute sono tradotte una sola volta Esistono compilatori ottimizzati –Generano un codice macchina particolarmente efficiente per un migliore utilizzo delle risorse hardware Ma…

19 19 Compilatore Ma… –In caso di errore bisogna ricompilare il tutto e rigirare il programma dallinizio –I compilatori ottimizzati danno meno informazioni in caso di errore

20 20 Compilatore Per ovviare al problema di ricompilare tutto il programma in caso di errore, si divide il programma in moduli più piccoli da compilare separatamente –Ottengo un certo numero di programmi oggetto –I programmi oggetto contengono solo gli indirizzi di memoria relativi ma non quelli assoluti

21 21 Compilatore Si rende pertanto necessario un altro programma: programma assemblatore (Linker) Il linker trasforma i vari programmi oggetto in un unico programma eseguibile –Assegna gli indirizzi di memoria assoluti –Associa anche le librerie necessarie

22 22 Librerie Spesso programmi diversi richiedono di eseguire lo stesso tipo di operazioni –Ad esempio il calcolo della radice quadrata di un numero E utile incapsulare queste operazioni in programmi (o program unit) separati che possono essere linkate alla fine col programma principale (main program) E preferibile pre-compilare tutti questi programmi separatamente e raggruppare i programmi oggetto in collezioni (dette librerie) che vengono linkate alloccorrenza dal linker

23 23 Dai sorgenti alleseguibile Scrivo programmi con un editor programma sorgente programma oggetto (file.obj) programma eseguibile (file.exe) programma sorgente programma sorgente programma oggetto (file.obj) programma oggetto (file.obj) compilazione linking editing

24 24 Cenni storici Inizio anni 50 –Nascono i linguaggi simbolici 1956: nasce il FORTRAN (FORMula TRANslator) –Primo linguaggio ad alto livello –Per scopi scientifici ed ingegneristici 1960: nasce il COBOL (COmmon Business Oriented Language) –Semplice e versatile –Per applicazioni commerciali e gestionali

25 25 Cenni storici : proliferazione di numerosi linguaggi, tentativo di razionalizzare la definizione e le tecniche di implementazione dei linguaggi –Nasce lALGOL 60 (viene considerato il capostipite dei linguaggi moderni) Inizio anni 70: diffusione di linguaggi strettamente aderenti ai principi della programmazione strutturata

26 26 Cenni storici 1971: nasce il Pascal –Nasce in ambito scientifico, largo uso didattico –Uso coerente della programmazione strutturata 1974: nasce il C –Nasce in ambito scientifico –Struttura aderente ai principi della programmazione strutturata –Molto diffuso: programmi per la risoluzione di problemi molto complessi e per il software di base di sistemi

27 27 Cenni storici Anni 70: nasce il SIMULA 67 –Capostipite dei linguaggi Object-Oriented Dagli anni 80 a oggi: sviluppo di linguaggi non procedurali, affermazione dei linguaggi Object-Oriented – Versioni ad oggetti del C (C++) e del Pascal (TurboPascal 5.5) –VisualBasic, Java


Scaricare ppt "Programmazione Dr. Francesco Fabozzi Corso di Informatica."

Presentazioni simili


Annunci Google