| | | corso | | | |
Programmazione I + Laboratorio di Informatica I B
(Corso di Laurea in Informatica (quinquennale))
Codice: | 4I053 | Crediti: | 18 | Semestre: | 1 | Sigla: | Pr1 | |
Docente
Fabio Gadducci
Tel. 0502212716Prerequisiti
nessuno
Obiettivi di apprendimento
Fornire i principi di base:
della sintassi dei linguaggi di programmazione,
della ricorsione e della programmazione funzionale,
della iterazione e della programmazione imperativa.
Descrizione
Programmazione I è un corso sui principi di base della
programmazione.
Vengono presentate la
sintassi e la semantica dei linguaggi di programmazione, in riferimento
a due diversi paradigmi, o stili, di programmazione: quello funzionale,
adottato da
linguaggi come Miranda, ML, LISP, e quello imperativo, adottato dalla
maggior parte
dei sistemi di programmazione commerciali, quali C/C++, Pascal, Java.
Vengono
trattati con particolare cura i meccanismi di base per la programmazione
nei due
paradigmi: la ricorsione e l'iterazione, insieme con alcuni
metodi per la verifica di correttezza e la semantica dei
programmi.
English Description
Programmazione I is a course on the foundations of programming. Syntax
and semantics
(meaning) of programs are presented, with reference to two major
programming paradigms, or styles: functional and imperative programming.
The former
is the style of languages such as Miranda, ML, or LISP; the latter is
the style of many
commercial standards, such as C/C++, Pascal, or Java. Basic programming
mechanisms
of both paradigms are studied, with emphasis on recursion and iteration,
together with elementary
methods for program semantics and verification.
Programma
- Elementi di sintassi dei linguaggi di programmazione (5 ore)
- Automi a stati finiti deterministici e non-deterministici
- Grammatiche libere da contesto.
- Principi di programmazione ricorsiva (25 ore)
- Costrutti base dei linguaggi funzionali: ML
- Semantica dei costrutti funzionali mediante riscritture
- Definizione di funzioni, pattern matching, tipi, cenni di
controllo e inferenza dei tipi
- Principi di induzione e dimostrazioni induttive di
proprietà
dei programmi ricorsivi
- Strutture dati ricorsive. Liste, alberi.
- Principi di programazione iterativa (20 ore)
- Costrutti di base dei linguaggi imperativi: espressioni,
dichiarazioni, comandi
- Il concetto di stato. Semantica operazionale dei programmi
come
sistemi di transizione
- Semantica formale dei programmi imperativi espressa in ML
- Astrazioni di controllo: procedure. Semantica del
passaggio
dei parametri per valore e per
riferimento
Ore lezione: | 75 | Ore esercitazione: | 45 | | | |
Bibliografia
Dispense fornite dai docenti (disponibili nel sito in formato
PostScript e pdf)
Elementi di Sintassi dei Linguaggi di Programmazione (D. Pedreschi)
Note di Programmazione Funzionale (G. Manco)
Note di Semantica Operazionale (R. Barbuti, P. Mancarella, C.
Montangero)
Materiale di consultazione
R. Bird, P. Wadler. Introduction to Functional Programming,
Prentice Hall, 1988
M. Hennessy. The semantics of programming languages: an elementary
introduction using structural
operational semantics. John Wiley and sons, 1990
Modalità di esame
Scritto e orale