Programmazione [Sezione B] (2004/2005)

Corso a esaurimento

Codice insegnamento
4S00016
Crediti
12
Altri corsi di studio in cui è offerto
Altri corsi di studio in cui è offerto
L'insegnamento è organizzato come segue:
Modulo Crediti Settore disciplinare Periodo Docenti
Teoria 8 INF/01-INFORMATICA 1° Q - 1° anno, 2° Q Ugo Solitro
Laboratorio 4 INF/01-INFORMATICA 1° Q - 1° anno, 2° Q Nicola Drago

Obiettivi formativi

Modulo: Laboratorio
-------
Apprendere la programmazione java per la risoluzione al calcolatore di piccoli problemi.
Acquisire autonomia, nella stesura di un programma JAVA al calcolatore, e nell'utilizzo degli strumenti di sviluppo (compilatore, JVM, etc.).


Modulo: Teoria
-------
Il corso tratta i principi e la pratica della programmazione imperativa e le nozioni fondamentali della programmazione a oggetti.
Scopo del corso è consentire allo studente di costruire e comprendere programmi di piccole e medie dimensioni, individuare errori e valutare la correttezza degli algoritmi rispetto alle loro specifiche.

Alla conclusione del corso lo studente deve inoltre poter affrontare l'apprendimento di altri linguaggi di programmazione imperativi e di approfondire la conoscenza della programmazione a oggetti.

Programma

Modulo: Laboratorio
-------
* Le basi:
o L'editor, la stesura di un programma.
o Il compilatore e la Java Virtual Machine
o Le librerie di JAVA.
* La programmazione:
o Le variabili, le costanti.
o L'input e l'output (tastiera e video)
o La selezione, l'iterazione.
o Il "main", metodi, il passaggio dei parametri.
o Il modificatore "static"
o I vettori e le funzioni di libreria.
o I file.
* La programmazione ad oggetti
o Il concetto di oggetto, le classi e i metodi.
o I modificatori "public" e "private".
o L'overloading.
o Il modificatore "abstract".
o Il Binding dinamico.
o Le interfacce.
o Le eccezioni.



Modulo: Teoria
-------
Prerequisiti.
I contenuti degli insegnamenti di Informatica di base e di Matematica di base

Programmazione Imperativa.
Introduzione. Cenni storici. Le origini. Problemi. Descrizione rigorosa dei problemi. Le specifiche. Macchine astratte. Definizione matematica di una macchina semplificata. Algoritmi. Descrizione rigorosa delle soluzioni. Nozione di algoritmo come ``programma'' eseguibile da un particolare esecutore. Tesi di Church.

Il linguaggio di programmazione. Macchina astratta, interprete e compilatore. Variabili, espressioni e tipi. Identificatori, variabili, espressioni. Tipi di dati base: interi, reali, booleani, caratteri. Definizione di ambiente e di stato. Dichiarazione di variabili e loro valutazione. Comandi. Nozione di comando. Assegnamento: sintassi e valutazione. Comandi strutturati: sequenza, blocco, condizionale e iterazione. Valutazione dei comandi. Tipi di dati strutturati. Strutture dati a dimensione prefissata (vettori, array, record) e non (sequenze, file, ...): caratteristiche generali, tecniche di accesso, criteri per l'uso. Puntatori. Nozione di puntatore; aritmetica dei puntatori. Sottoprogrammi. Nozione di sottoprogramma; procedure e funzioni. Parametri formali e attuali; passaggio per valore e per riferimento. Stack di ambienti. Variabili locali; visibilità, tempo di vita.

Tipi di Dati Astratti. I tipi di dati come strutture algebriche e relazionali. I tipi di dati strutturati rivisitati. Esempi. Ricorsione Induzione matematica: numeri naturali e insiemi induttivamente generati. Definizioni per ricorsione strutturale. Soluzione ricorsiva di problemi. Programmazione ricorsiva: ruolo dello stack e valutazione di sotto-programmi ricorsivi. Tipi di Dati Astratti e Ricorsione. Tipi di dati ricorsivi: liste, pile, alberi, alberi binari. Algoritmi ricorsivi; eliminazione della ricorsione.
Programmazione a Oggetti.
Introduzione. Il punto di vista ``a oggetti'': un diverso stile di programmazione. Classi, oggetti, messaggi. Definizioni, entitàdi istanza e di classe. Ereditarietà e Polimorfismo. Sotto-classi e sovra-classi, relazioni fra le classi. Nozione di polimorfismo in generale e nel linguaggio JAVA. Classi astratte e Interfacce. Nozioni di classe astratta e di interfaccia: somiglianze, differenze, utilità.
Il corso viene svolto in 64 ore di lezioni ed esercitazioni in aula distribuite in due periodi.

Modalità d'esame

Modulo: Laboratorio
-------
Scritto, orale, pratico a discrezione del docente, da concordare durante il corso.


Modulo: Teoria
-------
Prove scritte.
L'esame finale dell'insegnamento di Programmazione consiste in colloquio orale; per essere ammessi al colloquio è necessario superare le prove scritte e/o pratiche appositamente predisposte nelle date che verranno rese note nel calendario degli esami.
Prove di ammissione parziali si potranno svolgere al termine del I e del II periodo di lezione.
Le prove di ammissione possono esentare in tutto o in parte dalla prova orale.
Colloquio e Valutazione.

Nel giorno fissato per le prove orali lo studente prende visione delle prove effettuate e discute, quando necessario, gli elaborati.
Se il candidato ha conseguito in ogni parte più del 50% del punteggio (cioè almeno 15 punti su trenta) la valutazione delle prove scritte è ottenuta calcolando la media pesata dei punteggi ottenuti nella parte di teoria (peso 2/3) e in quella di laboratorio (peso 1/3).

La valutazione finale è fissata nel colloquio orale.
Avvertenza importante!

Le prove di teoria e di laboratorio sono parte del medesimo esame e debbono obbligatoriamente essere sostenute all'interno dello stesso Appello

Testi di riferimento
Autore Titolo Casa editrice Anno ISBN Note
Stefano Mizzaro Introduzione alla programmazione con il linguaggio Java (Edizione 2) Franco Angeli 2000 8846416961 Il testo di riferimento verrà integrato con note in formato elettronico messe a disposizione nell'area dedicata all'insegnamento.