Linguaggi e Traduttori D.U.
(Sede di Mantova)
http://digilander.iol.it/salvis
http://ssalvi.supereva.it/
http://www.stefano-salvi.org/
http://www.salvi.mn.it/stefano/

Docente Stefano Salvi

Anno Accademico 2000 2001

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 delle eccezioni
  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 7 giorni prima dell'appello il sorgente di un programma originale in C++ di circa 400 righe ed i sorgenti di un applet java originale di circa 100 righe, da discutere durante l'orale.
La stampa dei sorgenti dovrà essere portata all'esame dal candidato

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

stefano.salvi@inwind.it o s.salvi@libero.it

Prima prova in itinere (Compitino)

La prima prova in itinere, riservata agli studenti che frequentano le lezioni, si terrà Giovedì 14 Dicembre 2000 dalle 16 alle 18 nel laboratorio di Informatica 2 (primo piano).
La prova consisterà nella scrittura di un breve programma in C++, utilizzando il sistema operativo Linux. Svolgendosi l'esame sulle macchine, si potranno utilizzare le slide e gli esempi visti durante il corso.

Orario delle Lezioni

Variazioni di orario

Dato che il giovedì pomeriggio non sono disponibili ne il laboratorio ne il videoproiettore, le lezioni restano spostate come segue:

Calendario Degli Esami

>>>Nota sugli esami<<<

L'esame consiste in un'interrogazione sulla teoria dei linguaggi e dei compilatori ed in una discussione di due elaborati, uno in C++ ed uno in Java, presentati una settimana prima della data dell'appello, secondo le consuete modalità.

Per agevolare gli studenti dell'A.A 1999/2000 e 2000/2001 che tuttora non si sono presentati all'esame, si dà la possibilità di sostenere un esame teorico, costituito da domande sulla parte di teoria dei linguaggi e dei compilatori e da alcune domande sulla sintassi e programmazione in C++ e Java, senza presentare elaborati.

Gli studenti che sceglieranno questa seconda forma di esame non potranno ambire ad un voto superiore a 24/30.


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