Rappresentazione dell’informazione Grammatiche context-free Principali concetti della programmazione procedurale e orientata agli oggetti Proprietà invarianti di cicli e prove induttive Il paradigma della programmazione dichiarativa: i termini, i sistemi di riscrittura e l'uso della ricorsione-La semantica operazionale dei linguaggi di programmazione-Compilatori e interpreti-Il linguaggio Java. Tipi primitivi. Controllo del flusso. Metodi. Programmazione object oriented Informazioni strutturate.
A.V. Aho, J.D. Ullman - Fondamenti di Informatica, Zanichelli.
Pierluigi Crescenzi - Gocce di Java, Franco Angeli.
Stefano Mizzaro - Introduzione alla Programmazione con il Linguaggio Java, Franco Angeli.
Obiettivi Formativi
Conoscenze: Il corso intende fornire le basi metodologiche e le relative conoscenze dei paradigmi di programmazione imperativo (procedurale), di quello dichiarativo (equazioni ricorsive) e di quello orientato agli oggetti (definizione e utilizzazione del linguaggio Java).
Competenze acquisite Le competenze attese per lo studente sono quelle di analizzare e schematizzare un problema, costruirne una soluzione servendosi degli strumenti dei vari tipi di programmazione e saperne provare la correttezza usando proprietà invarianti di cicli e prove induttive.
Capacità acquisite (al termine del corso): Gli studenti saranno in grado di implementare algoritmi per diversi tipi di problemi utilizzando opportuni linguaggi di programmazione, in particolare Java.
Prerequisiti
nessuno
Metodi Didattici
Numero di ore relative alle attività in aula: 80
Numero di ore relative ad attività di laboratorio (lezioni in laboratorio): 24
Altre Informazioni
Prof. Gianni Aguzzi
Martedi' ore 14 - 16 oppure su appuntamento telefonando allo 055 4237447 o inviando un messaggio a aguzzi@dsi.unifi.it
presso il Dipartimento di Sistemi e Informatica Viale Morgagni 65
Prof. Elena Barcucci
Giovedi' ore 14.30 - 16.30 oppure su appuntamento telefonando allo 055 4237443 o inviando un messaggio a barcucci@dsi.unifi.it
presso il Dipartimento di Sistemi e InformaticaViale Morgagni 65
Modalità di verifica apprendimento
Scritta e pratica
Programma del corso
Contenuti del corso (programma dettagliato): Prima parte. Fondamenti e teoria della programmazione.Linguaggi formali, grammatiche context-free, loro correttezza e completezza, rappresentazione dell'informazione. Il paradigma della programmazione imperativa: il linguaggio alla Von Neumann JVN: assegnazione, I/O, controlli, iterazione, variabili semplici e matriciali, sottoprogrammi funzione e procedura.Esempi di algoritmi su vettori. Proprietà invarianti di cicli e prove induttive. Il paradigma della programmazione dichiarativa: i termini e i sistemi di riscrittura, uso della ricorsione. Il concetto di lista e sue manipolazioni.La semantica operazionale dei linguaggi di programmazione: definizione della semantica operazionale del linguaggio JVN.Seconda parte. Programmazione in Linguaggio Java e LaboratorioIntroduzione alla programmazione: componenti di un sistema di calcolo, algoritmi e programmi, linguaggi ad alto livello, compilatori e interpreti, l'approccio Java.Tipi di dato primitivi: tipi di dato, variabili e operatori, assegnamento di valori, conversione di tipo.Controllo del flusso: selezione, ripetizione.Programmazione procedurale: metodi, programmi, ricorsione. Programmazione orientata agli oggetti: classi, oggetti, incapsulamento, overloading, ereditarietà.Informazioni strutturate: stringhe, array.