Linguaggio C e C++. 1971 inizio sviluppo linguaggio C Nato per scrivere implementazioni efficaci di...
-
Upload
salvatrice-battaglia -
Category
Documents
-
view
214 -
download
1
Transcript of Linguaggio C e C++. 1971 inizio sviluppo linguaggio C Nato per scrivere implementazioni efficaci di...
![Page 1: Linguaggio C e C++. 1971 inizio sviluppo linguaggio C Nato per scrivere implementazioni efficaci di UNIX sui nuovi processori e che fosse: –Semplice da.](https://reader035.fdocumenti.com/reader035/viewer/2022070312/5542eb4a497959361e8b5404/html5/thumbnails/1.jpg)
Linguaggio C e C++
![Page 2: Linguaggio C e C++. 1971 inizio sviluppo linguaggio C Nato per scrivere implementazioni efficaci di UNIX sui nuovi processori e che fosse: –Semplice da.](https://reader035.fdocumenti.com/reader035/viewer/2022070312/5542eb4a497959361e8b5404/html5/thumbnails/2.jpg)
• 1971 inizio sviluppo linguaggio C
• Nato per scrivere implementazioni efficaci di UNIX sui nuovi processori e che fosse:– Semplice da usare – Espressivo e flessibile– Sufficientemente compatto in modo da
occupare poca memoria
![Page 3: Linguaggio C e C++. 1971 inizio sviluppo linguaggio C Nato per scrivere implementazioni efficaci di UNIX sui nuovi processori e che fosse: –Semplice da.](https://reader035.fdocumenti.com/reader035/viewer/2022070312/5542eb4a497959361e8b5404/html5/thumbnails/3.jpg)
Caratteristiche del C• Permette di gestire in modo semplice i
dispositivo hardware
• Permette di implementare algoritmi anche complessi in modo relativamente semplice
• Permette la scrittura di un codice compatto ed efficiente
![Page 4: Linguaggio C e C++. 1971 inizio sviluppo linguaggio C Nato per scrivere implementazioni efficaci di UNIX sui nuovi processori e che fosse: –Semplice da.](https://reader035.fdocumenti.com/reader035/viewer/2022070312/5542eb4a497959361e8b5404/html5/thumbnails/4.jpg)
Nasce il C++• Anni ’80 nasce il C++ per aggiungere qualcosa di
nuovo al linguaggio C
• C e C++ hanno la stessa sintassi
• Il C++ nasce per rendere più semplice la scrittura di grandi software pensati per sistemi di simulazione.
• La principale e fondamentale differenza del C++ rispetto al C consiste nell’implementazione del PARADIGMA A OGGETTI.
![Page 5: Linguaggio C e C++. 1971 inizio sviluppo linguaggio C Nato per scrivere implementazioni efficaci di UNIX sui nuovi processori e che fosse: –Semplice da.](https://reader035.fdocumenti.com/reader035/viewer/2022070312/5542eb4a497959361e8b5404/html5/thumbnails/5.jpg)
Classificazione dei linguaggi• Classificazione per livello
– Linguaggi di basso livello– Linguaggi di alto livello
• Classificazione per paradigma (approccio alla soluzione del problema)
– Di tipo dichiarativo– Di tipo imperativo
• Classificazione per formato di codice– Linguaggi compilati– Linguaggi interpretati– Linguaggi semicompilati
![Page 6: Linguaggio C e C++. 1971 inizio sviluppo linguaggio C Nato per scrivere implementazioni efficaci di UNIX sui nuovi processori e che fosse: –Semplice da.](https://reader035.fdocumenti.com/reader035/viewer/2022070312/5542eb4a497959361e8b5404/html5/thumbnails/6.jpg)
Linguaggi di alto livello(FORTRAN PASCAL)
• Si occupano di problemi non legati alla macchina
• La gestione dell’hardware è demandata alle librerie di sistema quindi al programmatore non è consentita la personalizzazione totale
• I programmi sono portabili (tramite il compilatore)
![Page 7: Linguaggio C e C++. 1971 inizio sviluppo linguaggio C Nato per scrivere implementazioni efficaci di UNIX sui nuovi processori e che fosse: –Semplice da.](https://reader035.fdocumenti.com/reader035/viewer/2022070312/5542eb4a497959361e8b5404/html5/thumbnails/7.jpg)
Linguaggi di basso livello(assembler)
• Permettono di dialogare in maniera diretta con il microprocessore e con l’ardware (vantaggio)
• Ha applicazione in sviluppo di driver (vantaggio)
• Il programmatore deve conoscere le caratteristiche dell’hardware (svantaggio)
• È una programmazione complessa (svantaggio)
• I programmi non sono portabili
![Page 8: Linguaggio C e C++. 1971 inizio sviluppo linguaggio C Nato per scrivere implementazioni efficaci di UNIX sui nuovi processori e che fosse: –Semplice da.](https://reader035.fdocumenti.com/reader035/viewer/2022070312/5542eb4a497959361e8b5404/html5/thumbnails/8.jpg)
Di tipo imperativo
• Linguaggi a procedure: consiste nel suddividere l’algoritmo da eseguire in diversi sottoalgoritmi detti procedure o funzioni, tali procedure possono essere suddivise in sottoprocedure ecc.. (processo TOP-DOWN)
• Linguaggi ad oggetti: tende a raggruppare procedure e i dati da essere trattati in ambienti chiusi detti oggetti
![Page 9: Linguaggio C e C++. 1971 inizio sviluppo linguaggio C Nato per scrivere implementazioni efficaci di UNIX sui nuovi processori e che fosse: –Semplice da.](https://reader035.fdocumenti.com/reader035/viewer/2022070312/5542eb4a497959361e8b5404/html5/thumbnails/9.jpg)
Di tipo dichiarativo
• Inizio anni ‘6o
• Il linguaggio che adotta un paradigma di programmazione dichiarativo si occupa di definire CHE COSA deve essere fatto, senza occuparsi del come demandandolo all’implementazione del linguaggio
![Page 10: Linguaggio C e C++. 1971 inizio sviluppo linguaggio C Nato per scrivere implementazioni efficaci di UNIX sui nuovi processori e che fosse: –Semplice da.](https://reader035.fdocumenti.com/reader035/viewer/2022070312/5542eb4a497959361e8b5404/html5/thumbnails/10.jpg)
Linguaggi compilati• Prevedono un ciclo di vita del tipo:
scrittura, compilazione (tramite compilatore), traduzione permanente in linguaggio macchina
• Produce programmi più veloci
• Il programma compilato non dà la possibilità di leggere il sorgente
• I programmi compilati non sono portabili
![Page 11: Linguaggio C e C++. 1971 inizio sviluppo linguaggio C Nato per scrivere implementazioni efficaci di UNIX sui nuovi processori e che fosse: –Semplice da.](https://reader035.fdocumenti.com/reader035/viewer/2022070312/5542eb4a497959361e8b5404/html5/thumbnails/11.jpg)
Linguaggi interpretati
• Non sono tradotti in linguaggio macchina ma sono letti, durante l’esecuzione, da un particolare programma detto interprete che li traduce simultaneamente in linguaggio macchina
• Un linguaggio interpretato è più lento
• Il sorgente è leggibile
![Page 12: Linguaggio C e C++. 1971 inizio sviluppo linguaggio C Nato per scrivere implementazioni efficaci di UNIX sui nuovi processori e che fosse: –Semplice da.](https://reader035.fdocumenti.com/reader035/viewer/2022070312/5542eb4a497959361e8b5404/html5/thumbnails/12.jpg)
Linguaggi semicompilati (java)
• Prima avviene una pre-compilazione portabile
• Quando viene lanciato viene tradotto completamente in linguaggio macchina
• Il pre-compilato non è facilmente leggibile quindi abbastanza sicuro
![Page 13: Linguaggio C e C++. 1971 inizio sviluppo linguaggio C Nato per scrivere implementazioni efficaci di UNIX sui nuovi processori e che fosse: –Semplice da.](https://reader035.fdocumenti.com/reader035/viewer/2022070312/5542eb4a497959361e8b5404/html5/thumbnails/13.jpg)
Classificazione dei linguaggi C e C++
• Non è né di alto né di basso livello è di livello intermedio
• È un linguaggio a paradigma imperativo
• È un linguaggio complilato
C
• Non è né di alto né di basso livello è di livello intermedio
• È un linguaggio a paradigma imperativo e aggiunge la possibilità di gestioni coerenti con il paradigma ad oggetti quindi è ibrido
• È un linguaggio complilato
C++
![Page 14: Linguaggio C e C++. 1971 inizio sviluppo linguaggio C Nato per scrivere implementazioni efficaci di UNIX sui nuovi processori e che fosse: –Semplice da.](https://reader035.fdocumenti.com/reader035/viewer/2022070312/5542eb4a497959361e8b5404/html5/thumbnails/14.jpg)
Le fasi della programmazioneCodice su carta
Codice sorgente
Codice oggetto
Codice eseguibile
editor
compilatore
linker
run
risultati
Librerie esterne
Errori di run-time
Errori compile-time
![Page 15: Linguaggio C e C++. 1971 inizio sviluppo linguaggio C Nato per scrivere implementazioni efficaci di UNIX sui nuovi processori e che fosse: –Semplice da.](https://reader035.fdocumenti.com/reader035/viewer/2022070312/5542eb4a497959361e8b5404/html5/thumbnails/15.jpg)
Errori di COMPILE-TIME• Lessicali:se il compilatore non riconosce un simbolo (es. una
variabile che inizia con un numero, scrittura errata di una parola riservata come while…)
• Semantici:ad es. una variabile non dichiarata o la presenza di una variabile dichiarata ma mai utilizzata. Gli errori come quest’ultimo viene indicato come un worning (avvertimento)
• Sintattici: quando non vengono rispettate le regole sintattiche proprie del linguaggio
Se capita di commettere uno dei precedenti errori si torna in fase di editing e si eliminano gli errori che di solito vengono segnalati dal compilatore
![Page 16: Linguaggio C e C++. 1971 inizio sviluppo linguaggio C Nato per scrivere implementazioni efficaci di UNIX sui nuovi processori e che fosse: –Semplice da.](https://reader035.fdocumenti.com/reader035/viewer/2022070312/5542eb4a497959361e8b5404/html5/thumbnails/16.jpg)
Run
• Possiamo eseguire il programma e, se non ci sono errori di RUN-TIME ottengo i risultati voluti
![Page 17: Linguaggio C e C++. 1971 inizio sviluppo linguaggio C Nato per scrivere implementazioni efficaci di UNIX sui nuovi processori e che fosse: –Semplice da.](https://reader035.fdocumenti.com/reader035/viewer/2022070312/5542eb4a497959361e8b5404/html5/thumbnails/17.jpg)
linker
• Il passo successivo coinvolge il linker che ha il compito di collegare il codice oggetto con altri codici oggetto creati in precedenza (librerie esterne)
• il linker produce un file eseguibile .EXE
![Page 18: Linguaggio C e C++. 1971 inizio sviluppo linguaggio C Nato per scrivere implementazioni efficaci di UNIX sui nuovi processori e che fosse: –Semplice da.](https://reader035.fdocumenti.com/reader035/viewer/2022070312/5542eb4a497959361e8b5404/html5/thumbnails/18.jpg)
Programma o Codice oggetto
• Il programma sorgente viene compilato e, se non ci sono errori di COMPILE-TIME, tradotto in programma oggetto o codice oggetto dal COMPILATORE
![Page 19: Linguaggio C e C++. 1971 inizio sviluppo linguaggio C Nato per scrivere implementazioni efficaci di UNIX sui nuovi processori e che fosse: –Semplice da.](https://reader035.fdocumenti.com/reader035/viewer/2022070312/5542eb4a497959361e8b5404/html5/thumbnails/19.jpg)
Errori di RUN-TIME
• Risultati diversi da quelli previsti: questo errore può derivare da errata visualizzazione di dati ma anche da errori di logica
• Over flow, under flow, divisione per zero: è causato da calcoli che hanno un risultato che non può essere memorizzato perché al di fuori del range dei valori ammessi, oppure perché il denominatore di una frazione assume valore zero
• Loop infinito:quando si verifica questo errore il programma non termina l’esecuzione perché esegue infinite volte il nucleo di un ciclo.
![Page 20: Linguaggio C e C++. 1971 inizio sviluppo linguaggio C Nato per scrivere implementazioni efficaci di UNIX sui nuovi processori e che fosse: –Semplice da.](https://reader035.fdocumenti.com/reader035/viewer/2022070312/5542eb4a497959361e8b5404/html5/thumbnails/20.jpg)
Codice sorgente
• Attraverso un editor si digita, usando un apposito linguaggio di programmazione, (codifica) si salva in una memoria di massa e prende il nome di programma sorgente o codice sorgente
![Page 21: Linguaggio C e C++. 1971 inizio sviluppo linguaggio C Nato per scrivere implementazioni efficaci di UNIX sui nuovi processori e che fosse: –Semplice da.](https://reader035.fdocumenti.com/reader035/viewer/2022070312/5542eb4a497959361e8b5404/html5/thumbnails/21.jpg)
Codice su carta
• Progettazione dell’algoritmo risolutore del problema di partenza
• Scrittura del codice su carta
• Verifica del funzionamento mediante simulazione (testing)