Linguaggi e Traduttori D.U.
(Sede di Mantova)

Docente Stefano Salvi

Note introduttive

Il corso parte da una breve esposizione degli elementi base della teoria dei linguaggi formali, introducendo anche tecniche di programmazione dei compilatori ed il loro ruolo all'interno di un moderno sistema di calcolo.

Si passa poi a trattare brevemente il modello di programmazione ad oggetti e i linguaggi che lo utilizzano.

Si trattano in particolare le caratteristiche di un moderno linguaggio ad oggetti, utilizzando il C++ come banco di prova.

Il corso comprende anche una parte dedicata alla programmazione di rete, introducendo il linguaggio Java nella programmazione di applet.

Programma del corso

  1. Cenni di teoria dei linguaggi formali e tecnica dei compilatori
    1. I linguaggi formali ed i linguaggi regolari
    2. L'analisi sintattica e la sua implementazione
    3. L'analisi semantica, i tipi e le classi di immagazzinamento (storage class)
    4. Compilatori ed interpreti, la generazione del codice, l'ottimizzazione
    5. L'ambiente di sviluppo e di esecuzione, le librerie ed il linking
  2. Richiami dei concetti di programmazione imperativa
    1. Le strutture di controllo dei linguaggi imperativi e la strutturazione del codice
    2. Lo scoping delle variabili e delle funzioni, le funzioni ricorsive
  3. Introduzione al paradigma ad oggetti ed esempi di linguaggi
    1. Il concetto di oggetto, le proprietà ed i messaggi/metodi, classi ed oggetti
    2. L'ereditarietà, l'ereditarietà multipla
    3. Le funzioni e le classi virtuali, il polimorfismo
    4. Esempi di interfacce e linguaggi ad oggetti
  4. Il linguaggio C++
    1. Differenze sintattiche tra C e C++
    2. Definizione di classe, costruttori, distruttori, ereditarietà
    3. Le regole di visibilità e le classi di memorizzazione per gli oggetti
    4. Creazione, eliminazione, vita ed uso di un'istanza
    5. Sovraccarico degli operatori
    6. Classi modello (template)
    7. Alcune classi standard dell'ambiente
    8. Gestione degli errori
  5. Il linguaggio Java
    1. I presupposti di Java e la JVM, la programmazione in rete
    2. Le classi e gli oggetti in Java
    3. La classe applet, i pacchetti
    4. Le interfacce
    5. Cenni su AWT (Abstract Windowing Toolkit)
    6. Il Multithreading

L'esame consiste in un colloquio nel quale si discuteranno due lavori presentati dai candidati e verranno poste domande sugli argomenti trattati dal corso

Per sostenere l'esame occorre consegnare almeno 15 giorni prima dell'appello il sorgente di un programma originale in C++ di circa 1000 righe ed i sorgenti di un applet java originale di circa 500 righe, da discutere durante l'orale.

Per consegnare gli elaborati (sorgenti c++, sorgenti Java, compressi in un unico file ZIP) da discurtere all'esame, per indicare errori di battitura o incongruenze nelle slide o per porre domande utilizzare la casella di posta salvis@mail.omeganet.it

Gli esami si terranno:
  1. Mercoledi 16 Febbraio 2000 - ore 14,30
  2. Mercoledi 1 Marzo 2000 - ore 14,30
  3. Venerdi 28 Aprile 2000 - ore 9,00
  4. Lunedi 26 Giugno 2000 - ore 9,00
  5. Lunedi 3 Luglio 2000 - ore 9,00
  6. Lunedi 4 Settembre 2000 - ore 9,00
  7. Lunedi 11 Settembre 2000 - ore 9,00


Testi consigliati

D'Antona O., Damiani E.: Ambienti esecutivi e di sviluppo dei linguaggi di programmazione, Addison-Wesley Masson, Milano 1992

Stroustrup B.: Il linguaggio C++ (seconda edizione), ed. it. Addison-Wesley Masson, Milano 1993

Tim Ritchey: Usare Java, Jackson Libri, Milano 1996

Tesi di consultazione

Kernigham B, Ritchie D.: Il linguaggio C (seconda edizione), ed. it. Gruppo Editoriale Jakson, Milano 1992

R. Conte: Il mondo degli oggetti: Programmazione in C++, Edizioni Progetto, Padova 1996

M. Campione, K. Walrath The Java Tutorial Second Edition: Object-Oriented Programming for the Internet (Java Series), Addison-Wesley, 1998

The Java Tutorial in Internet: http://java.sun.com/docs/books/tutorial/index.html
- si può anche scaricare per consultazione in locale alla pagina http://java.sun.com/docs/books/tutorial/information/download.html