elenco   
        corso   

Programmazione I + Laboratorio di Informatica I A

(Corso di Laurea in Informatica (quinquennale))

Codice: 4I053Crediti: 18Semestre: 1Sigla: Pr1 

Docente

Roberto Barbuti   barbuti@di.unipi.it  Home Page di Roberto Barbuti  Stanza 334  Tel. 0502212747

Prerequisiti

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

  1. Elementi di sintassi dei linguaggi di programmazione (5 ore)
    • Automi a stati finiti deterministici e non-deterministici
    • Grammatiche libere da contesto.
  2. 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.
  3. 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: 75Ore 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

Ulteriore pagina web del corso: http://www.di.unipi.it/~paolo/programmazione1/programmazione1.html


home


email