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

Turni A+B

Cognomi A - Cap / Caq - D

Anno accademico 2021/22

Docenti: Anna Morpurgo Andrea Trentini - Tutor: Leonardo Albani / Francesco Tomaselli


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
7/10/21
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 ..; interfaccia a linea di comando (la shell bash - prompt e comandi essenziali). Slide presentazione corso e esame
esercizi sulla shell (bash)
appunti sulla lezione
shell bash online
questionario (da compilare anche da parte di chi non ha seguito questa lezione)
14/10/21
1. Avvio alla programmazione in Go.
Variabili e costanti, assegnamento, assegnamento multiplo, blank identifier. 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). Uso della libreria standard. Uso dei test.
Esercizi: caricare i sorgenti (file .go) sul sito di upload https://upload.di.unimi.it/ corso: LABORATORIO DI PROGRAMMAZIONE - ED 1 - AA 2021/2022 - TURNI A+B (MORPURGO, TRENTINI), sessione: Lab01-operatori-aritmetici.
Slide
Esercizi
file per testare operazioni.go
Soluzioni (guardatele e confontatele con le vostre, cercando di capire le differenze)
21/10/21
2. Il costrutto di selezione if.
Il costrutto if: sintassi; operatori di confronto (==, !=, >, >=, ...); operatori booleani (!, &&, ||). Visibilità delle variabili. Schemi per la selezione.
Esercizi: caricare i sorgenti (file .go) sul sito di upload https://upload.di.unimi.it/, sessione: Lab02-if.
Sunto errori di compilazione Lab01
Slide sulla selezione (if)
Esercizi
file per testare due esercizi
Soluzioni (guardatele e confontatele con le vostre, cercando di capire le differenze)
28/10/21
3. Il costrutto di iterazione.
Tracciatura. For ternario, unario, zerario. Break e continue. Problemi di base ricorrenti (ripetizione, somma, conteggio, min/max, ricerca lineare, elaborazione di valori adiacenti).
Esercizi: caricare i sorgenti (file .go) sul sito di upload https://upload.di.unimi.it/, sessione: Lab03-for.
Slide
Risolvere in ordine: 1, 2, 3.
1. Esercizi di scrittura per tipo di for
2. Esercizi di analisi di codice
3. Esercizi di scrittura e problemi sul for
file per i test
Note sui problemi di base ricorrenti
Soluzioni 1. Esercizi - Soluzioni 2. Esercizi (guardatele e confontatele con le vostre, cercando di capire le differenze)
4/11/21
4. Caratteri, stringhe, for-range, cicli annidati.
Byte e rune, operazioni con caratteri. Il tipo string. Il for range. Cicli annidati. Composizione di soluzioni.
Esercizi: caricare i sorgenti (file .go) sul sito di upload https://upload.di.unimi.it/, sessione: Lab04.
Slide
Esercizio svolto in classe
Esercizi di scrittura e comprensione
Soluzioni (dopo aver svolto gli esercizi, guardatele e confontatele con le vostre, cercando di capire le differenze)
11/11/21
5. Switch e funzioni.
Selezione multiaria: il costrutto switch. Funzioni. I pacchetti unicode, strconv e strings. 1. Es su switch e funzioni
2. Es su composizione di soluzioni
File per i test (testa_funzioni, giorni_mese, briscola)
18/11/21
6. Puntatori, strutture, array.
Puntatori, uso (&), dichiarazione (*Tipo), deferenziazione (*nomeVar). Strutture. Funzioni con puntatori come parametri. Array. Array per contare. Rimandi sulle risposte del Lab 05
1. Esercizi di introduzione a puntatori, struct, array e funzioni con puntatori
2. Esercizi su puntatori, struct, array e funzioni con puntatori
File per i test (array, timer, carte, conta_cifre)
3. Progetti
25/11/21
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. Nota (da leggere)
Slide su gestione dell'input, conteggio, individuazione di errori, composizione
1. Esercizi di introduzione a mappe e slice
Risposte del modulo Google su mappe e slice
2. Esercizi su slice e mappe
3. Progetti su slice (implementazione della stuttura di dati pila -stack- e suo uso)
02/12/21
8. Ricorsione.
Ricorsione: caso base, caso ricorsivo e relazione di ricorrenza. Esempi e implementazione di funzioni ricorsive. Slice come parametri e cosa può succedere con la append
1. Esercizi di introduzione alla ricorsione
2. Esercizi sulla ricorsione
09/12/21
9. I/O e libreria standard.
16/12/21
10. I/O con file.
13/01/22
11. Ripasso e progettazione.

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í 7/10/21
Aula: Aula Gamma, 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 2021.

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