Corso di laurea triennale in
 INFORMATICA

Laboratorio del corso di Programmazione

Insegnamento fondamentale del primo anno per il Corso di Laurea triennale in Informatica

Turno A

Corso di Laurea triennale in Informatica - Cognomi A - E

Anno accademico 2016/17

Docente: A. Morpurgo - Tutor: Pierlauro Sciarelli


AVVISI

Accesso alle macchine del laboratorio di via Comelico

Per poter utilizzare le macchine del laboratorio SILab di via Comelico in cui si svolgono le lezioni di laboratorio è necessario registrarsi presso le due postazioni chiosco posizionate all'esterno del gabbiotto di vetro tra le aule Sigma e Tau con le proprie credenziali di Ateneo (nome.cognome@studenti.unimi.it e password).
Chi avesse problemi, passi in sala macchine con la tessera universitaria o altro documento che attesti l'iscrizione e chieda di Giuseppe Pignataro per farsi registrare da lui.

HowTo e strumenti

Strumenti per ricreare su un pc Windows un ambiene Linux analogo a quello del laboratorio:

Modalità d'esame


PROGRAMMA DEL CORSO

Obiettivi

Obiettivo del corso è avviare lo studente alla programmazione. Il linguaggio adottato è Java e il corso si svolge in laboratorio con l'utilizzo del JDK in ambiente GNU/Linux. Il corso si propone, attraverso lo sviluppo di semplici applicazioni basate sull'utilizzo e la combinazione di classi già esistenti e l'implementazione di classi e gerarchie di classi, di mettere gli studenti in grado di realizzare semplici applicazioni a partire da specifiche fornite.

Programma


MATERIALE DIDATTICO E BIBLIOGRAFIA

Libro di testo di riferimento

Software

Viene utilizzato Java Developer Kit (compilatore e macchina virtuale per Java), disponibile sul sito dedicato a Java della Sun.
In particolare, occorre scaricare:
  1. La versione 8 di JDK

    Argomenti trattati

    LEZIONE ARGOMENTI TRATTATI DOCUMENTAZIONE / ESERCIZI
    11.10.16
    1. Introduzione a GNU/Linux: file system e comandi di base. Esercizi.
    Presentazione del corso. Linux: il file system - struttura ad albero, root (/), indirizzi assoluti e relativi, home directory, directory corrente (.), directory ..; utenti e permessi (RWX); interfaccia a linea di comando (la shell bash - prompt e comandi essenziali). Un editor di testo per linux: gedit. Quiz e problemi.
    Proposta di lavoro a casa: ripassare i comandi della bash visti a lezione (pwd, ls, mkdir, cd, touch, cp, mv, rm, rmdir, cat, man, chmod, sort, grep, wc).
    Per chi vuole approfondire: Greppin' in the GNU World Lab di Google Code University; esercizio sui comandi della shell (e file siti.txt per fare l'esercizio).
    Greppin' in the GNU World Lab di Google Code University;
    18.10.16
    2. Avvio alla programmazione in Java.
    Il primo programma Java (AreaRettangolo): stesura, compilazine, esecuzione. Errori in compilazione e in esecuzione (ScontoErr.java). Lettura da standard input (con la classe Scanner) e scrittura su standard output (System.out.println()). Il tipo int e i 5 operatori aritmetici (+, -, *, /, %).
    Proposte di lavoro: Distributore di monete e esercizi per casa
     
    25.10.16
    3. Il costrutto di selezione if.
    Valori booleani; operatori di confronto (==, !=, >, >=, ...); operatori booleani (!, &&, ||, ...), tabelle di verità, precedenze, lazy evaluations; confronto di tipi riferimento (metodo equals). Documentazione. La classe String. Selezione - il costrutto if: if semplice, if ... else, if ... else if ..., if in cascata, if annidati.
    Proposte di lavoro: esercizi svolti in classe,   esercizi su if (in parte già visti in classe)
     
    8.11.16
    4. I costrutti di iterazione.
    I costrutti while, do-while, for. Controllo del numero di iterazioni (contatore, utente o sentinella). Problemi che richiedono cicli.
    Proposte di lavoro: Trovate qui gli esempi di codice analizzati a lezione, gli esercizi fatti in classe e altri esercizi da fare per settimana prossima. Fateli (o rifateli) tutti. Trovate altri esercizi sul libro di testo.
     
    15.11.16
    5. Metodi statici. Array.
    Definizione e invocazione di metodi statici; le classi involucro; la classe Math; gli array.
    Proposte di lavoro: Esercizi da finire a casa.
     
    22.11.16
    6. Ripasso di preparazione al compitino.
    Ripasso di: operatori aritmetici e aritmetica mista; la classe String e i suoi metodi; le strutture di controllo (selezione e iterazione); i metodi statici, gli array.
    Proposte di lavoro: Esercizi per il ripasso
     
    29.11.16
    7. Array.
    Array e cicli, esempi di uso di array.
    Proposte di lavoro: Esercizi sugli array e non
    soluzioni degli esercizi
    6.12.16
    8. Ricorsione.
    Ricorsione: caso/i base e caso/i ricorsivo/i. Struttura di un metodo ricorsivo.
    Proposte di lavoro: Esercizi sulla ricorsione
    soluzioni degli esercizi sulla ricorsione
    13.12.16
    9. Implementazione di classi.
    Introduzione all'implementazione di classi: i campi, l'implementazione di costruttori e metodi, l'uso di this, il collaudo.
    Proposte di lavoro: Esercizi sull'implementazione di classi
    soluzioni di esercizi sull'implementazione di classi e dei relativi tester
    20.12.16
    10. Applicazioni su piú classi.
    Override dei metodi equals e toString. Uso di ArrayList per attributi "contenitore" di una classe. Campi per stabilire relazioni. Realizzazione di un'applicazione su piú classi.
    Proposte di lavoro: Autostrade, auto e pedaggi
    soluzione di autostrade
    10.1.2017
    11. Ripasso di implementazione di classi.
    Implementazione di Stazione Meteo e realizzazione di un istogramma verticale.
    Proposte di lavoro: Altri esercizi
    soluzione di Stazione Meteo
    Nota: per generare la documentazione delle due classi lanciare il comando
    javadoc StazioneMeteo.java StazioneMeteoTester.java
    Aprire poi il file index.html per vederla
    soluzione di Numero Binario
    17.1.2017
    12. Lettura da file, uso di interfacce, array multidimensionali.
    Lettura da file con Scanner. Estrazione di parole da un testo con split o con Scanner. L'interfaccia Comparable. Array multidimensionali.
    Proposte di lavoro: Rileggere le Note, fare gli Esercizi
     
    24.1.2017
    Ripasso.
    Trovate qui (in fondo) altri esercizi
    Proposte di lavoro:
    soluzioni

    Nota I file in formato PostScript possono essere visualizzati utilizzando i programmi Ghostscript, Ghostview e GSview, i file in formato PDF possono essere visualizzati utilizzando Acrobat Reader.

    ORARI

    Orario delle lezioni: Martedí h 13:30-17:30, primo semestre. Il corso prevede almeno 48 ore di lezione.
    Inizio lezioni: martedí 11.10.16
    Aula: laboratorio sigma, SILab, via Comelico 39
    Ricevimento:




    per appuntamento (email: morpurgo@di.unimi.it),
    ufficio S201, Dipartimento di Informatica (DI),
    via Comelico 39/41 - 20135 Milano
    NOTA Quando si scrive a un docente, usare l'indirizzo di posta di ateneo (della forma nome.cognome@studenti.unimi.it).
    Indicare sempre il proprio nome e cognome e l'insegnamento (Laboratorio di programmazione).

    A cura di A. Morpurgo. Ultimo aggiornamento: Ottobre 2016.

    Copyright © 2009. Morpurgo. DI, Università degli Studi di Milano.