Corsi di laurea triennale in
 INFORMATICA, INFORMATICA PER LA COMUNICAZIONE DIGITALE, INFORMATICA MUSICALE

Laboratorio del corso di Programmazione

Insegnamento fondamentale del primo anno per i corsi di Laurea triennale in
Informatica, Informatica per la Comunicazione Digitale, Informatica Musicale

Turno A (in presenza)

Cognomi A - L

Anno accademico 2020/21

Docente: Anna Morpurgo - Tutor: Francesca Ragusa


AVVISI

HowTo e strumenti


Modalità d'esame


OBIETTIVI E PROGRAMMA E DEL CORSO

Il corso di Programmazione si compone di due moduli, svolti in parallelo: Programmazione teoria (Prof. Boldi) e Laboratorio di programmazione.
Questa è la pagina del Laboratorio di programmazione del turno A.
Il Laboratorio non richiede alcuna conoscenza specifica pregressa e rivisita gli argomenti trattati a teoria (concetti di programmazione imperativa e aspetti del linguaggio di programmazione proposto - Golang) attraverso esercizi volti a consolidare i concetti e a sviluppare la capacità di analizzare un problema, identificare e rappresentare i dati necessari per risolverlo, progettare una procedura risolutiva, implementarla e testarla. Per gli argomenti trattati e gli esercizi proposti si veda la sezione qui sotto (Materiale didattico).

MATERIALE DIDATTICO E BIBLIOGRAFIA

Libro di testo di riferimento

Argomenti trattati

LEZIONE ARGOMENTI TRATTATI DOCUMENTAZIONE / ESERCIZI
8/10/20
0. 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). Slide della lezione
Questionario 1
shell bash online
Appunti sulla shell bash
15/10/20
1. Avvio alla programmazione in Go.
Variabili e costanti, assegnamento, assegnamento multiplo, blank variable. I tipi int e float64 e i 5 operatori aritmetici (+, -, *, /, %). Conversioni. Lettura da standard input (fmt.Scan) e scrittura su standard output (fmt.Print e fmt.Println).
Proposte di lavoro: vedi esercizi e problemi nelle slide. Caricare i sorgenti (.go) sul sito di upload (2020 - LAB PROGRAMMAZIONE - GO - TURNO A (MORPURGO))
Slide della lezione con gli esercizi
Soluzioni
22/10/20
2. Il costrutto di selezione if.
Il costrutto if: sintassi; operatori di confronto (==, !=, >, >=, ...); operatori booleani (!, &&, ||). Visibilità delle variabili. Schemi per la selezione.
Proposte di lavoro: svolgere gli esercizi in Esercizi e caricare i sorgenti singolarmente (.go, non .zip o .rar) sul sito di upload (2020 - LAB PROGRAMMAZIONE - GO - TURNO A (MORPURGO) - Lab02 - bool e if)
Slide della lezione
Soluzioni
29/10/20
3. Il costrutto di iterazione.
For ternario, unario, zerario. Break e continue. Tracciatura. Problemi esemplari (somma, conteggio, min/max, ricerca lineare, elaborazione di valori adiacenti).
Proposte di lavoro: esercizi di analisi, tracciatura e comprensione - esercizi guidati - altri esercizi sul for. Caricare i sorgenti singolarmente (.go, non .zip o .rar) sul sito di upload (2020 - LAB PROGRAMMAZIONE - GO - TURNO A (MORPURGO) - Lab03 - for)
Slide della lezione
Soluzioni es guidati
Soluzioni altri es sul for
5/11/20
4. Caratteri, stringhe, for-range, cicli annidati.
Byte e rune, operazioni con caratteri. Il tipo string. Il for range. Cicli annidati.
Proposte di lavoro: esercizi su byte, rune, stringhe, for range e cicli annidati - Caricare i sorgenti singolarmente (.go, non .zip o .rar) sul sito di upload (2020 - LAB PROGRAMMAZIONE - GO - TURNO A (MORPURGO) - Lab04 - byte rune string for-range cicli annidati)
Slide della lezione
Link agli esercizi guidati
Soluzioni
12/11/20
5. Switch e funzioni.
Selezione multiaria: il costrutto switch. Funzioni. I pacchetti strconv e strings.
Proposte di lavoro: esercizi guidati su switch e funzioni. Caricare i sorgenti singolarmente (.go) sul sito di upload (LABORATORIO DI PROGRAMMAZIONE - ED 1 - AA 2020/2021 - TURNO UNICO (MORPURGO, TRENTINI) )
Soluzioni
19/11/20
6. Puntatori, strutture, array.
Puntatori, i significati di *. Strutture. Array. Array per contare. Funzioni con puntatori come parametri.
Proposte di lavoro: primi esercizi su puntatori, struc e array  -   altri esercizi su puntatori, struc e array  -   esercizi piú avanzati - Caricare i sorgenti singolarmente (.go) sul sito di upload (LABORATORIO DI PROGRAMMAZIONE - ED 1 - AA 2020/2021 - TURNO UNICO (MORPURGO, TRENTINI) )
Note lezione
Soluzioni
26/11/20
7. Slice e mappe.
Il tipo map. Mappe come dizionari, uso di mappe per problemi di conteggio. Slice, os.Args, operazioni su slice con append, copy e subslicing. Matrici.
Proposte di lavoro: esercizi su mappe e slice  -   esercizi piú avanzati
Caricare i sorgenti singolarmente (.go) sul sito di upload (LABORATORIO DI PROGRAMMAZIONE - ED 1 - AA 2020/2021 - TURNO UNICO (MORPURGO, TRENTINI) )
Note lezione
Soluzioni
03/12/20
8. Ricorsione.
Ricorsione: caso base, caso ricorsivo, relazione di ricorrenza. Esempi e implementazione di funzioni ricorsive.
Proposte di lavoro: esercizi guidati sulla ricorsione   -   altri esercizi sulla ricorsione
Caricare i sorgenti singolarmente (.go) sul sito di upload (LABORATORIO DI PROGRAMMAZIONE - ED 1 - AA 2020/2021 - TURNO UNICO (MORPURGO, TRENTINI) )
Note consegne 26/11
Note lezione
Soluzioni
Nota: l'output di ordinali.go è costituito da sole parentesi graffe, non devono apparire cifre
10/12/20
9. I/O e libreria standard.
Scanner di bufio, Scan e Text, funzioni per Split (ScanBytes, ScanRunes, ScanWords, ScanLines. Ricerca di soluzioni nei pacchetti e funzioni della libreria standard.
Proposte di lavoro: esercizi sull'uso della libreria standard   -   esercizi sull'I/O
Caricare i sorgenti singolarmente (.go) sul sito di upload (LABORATORIO DI PROGRAMMAZIONE - ED 1 - AA 2020/2021 - TURNO UNICO (MORPURGO, TRENTINI) )
Note consegne e lezione
Soluzioni
17/12/20
10. I/O con file.
Tipi di input: tastiera (standard input), linea di comando, file. Funzioni del package fmt. Scanner, Reader e funzioni del package bufio. Funzioni Fields e Split del package strings. Funzione ReadFile del package ioutil. Il metodo String().
Proposte di lavoro: esercizi su I/O e uso di file - Caricare i sorgenti singolarmente (.go) sul sito di upload (LABORATORIO DI PROGRAMMAZIONE - ED 1 - AA 2020/2021 - TURNO UNICO (MORPURGO, TRENTINI) )
Note lezione
Soluzioni
07/01/21
11. Ripasso e progettazione.
Progettazione di una soluzione, ripasso, domande, visione di esercizi (una specie di ricevimento per tutti).
Proposte di lavoro: esercizi
Note lezione
Registrazione della lezione(scusate le lunghe pause, per ora non l'ho editata)
14/01/21
12. Simulazione.
Proposte di lavoro: Simulazione di un appello d'esame (a distanza)

D'ora in avanti i programmi (i sorgenti .go) possono essere caricati sulla "Sessione permanente per tutti gli esercizi del corso", sul sito di upload (LABORATORIO DI PROGRAMMAZIONE - ED 1 - AA 2020/2021 - TURNO UNICO (MORPURGO, TRENTINI) )
Appello del 19/01/21 Osservazioni sugli errori più comuni fatti all'esame

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: Giovedí h 13:30-17:30, primo semestre. Il corso prevede almeno 48 ore di lezione.
Inizio lezioni: giovedí 8.10.20
Aula: Aule Gamma e Delta, Dipartimento di Informatica, Via Celoria 18
Ricevimento:




per appuntamento (email: morpurgo@di.unimi.it),
ufficio 5003, Dipartimento di Informatica (DI),
via Celoria 18 - 20133 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: Settembre 2020.

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