Programmazione 1
AA 2020-2021

Pagina Moodle del corso

Docente: Marco Roveri
Esercitatori:

  • Stefano Berlato

  • Giovanni De Toni

Syllabus

Obiettivi formativi

L'obiettivo del corso è l'apprendimento dei fondamenti della programmazione imperativa. Come linguaggio verrà usato (un sottoinsieme stretto del) C++, visto prettamente come linguaggio di programmazione imperativo.

In questo corso non verranno analizzati aspetti di programmazione Object-Oriented (in quanto argomento di altro corso specifico).

Gli studenti sperimenteranno direttamente in laboratorio tutti i concetti e le competenze acquisiti a lezione.

Prerequisiti

Sono richieste le seguenti conoscenze e competenze di base:

  • nozioni di base di matematica

  • padronanza della lingua italiana scritta

  • discrete capacità logiche/analitiche

Importante: non è richiesta alcuna conoscenza informatica pregressa

Contenuti e Programma del corso

Gli argomenti principali affrontati nel corso saranno i seguenti:

  • Sviluppo di un programma

  • I/O standard

  • Variabili e costanti

  • Tipi (interi, booleani, reali, caratteri)

  • Istruzioni elementari

  • Istruzioni strutturate (sequenze, condizioni, cicli)

  • Puntatori e Riferimenti, Algebra dei puntatori

  • Funzioni e passaggi di parametri

  • Funzioni ricorsive

  • Array, array ordinati, array multidimensionali

  • Stringhe e trattamento di testi

  • I/O su files (argc & argv)

  • Organizzazione di un programma su più file

  • Struct

  • Allocazione dinamica di memoria

  • Strutture dati fondamentali (liste, stack, code)

  • Alberi binari

  • Grafi

Metodi didattici

Le lezioni saranno supportate da slide proiettate via computer, ed integrate da spiegazioni alla lavagna (quando possibile) o con opportuno strumenti didattici. Inoltre, verranno usati (proiettati, analizzati, compilati, eseguiti, modificati) un gran numero di programmi di esempio per illustrare tipici scenari di uso e di errore.

In laboratorio verranno assegnati alcuni compiti di programmazione che gli studenti dovranno realizzare individualmente al terminale.

Gli studenti dovranno acquisire le conoscenze di base e la capacità di analizzare e decomporre un problema e di scrivere un programma che lo risolva.

Le lezioni verranno erogate in modalità blended secondo le indicazioni dell'Università. Il professore si riserva il diritto di passare da modalità blended a completa modalità on-line se le condizioni lo richiederanno per salvaguardare la salute sia degli studenti, che del personale coinvolto.

Metodo di accertamento

L'esame consiste in una prova pratica scritta di programmazione di due ore al terminale svolta in laboratorio, in ambiente Linux Ubuntu.

Agli studenti saranno assegnati 3 esercizi di media difficoltà, più un quarto esercizio opzionale molto difficile (solo su richiesta).

A ciascuno dei primi tre esercizi è attribuito un punteggio, in modo tale che il corretto svolgimento di tutti e tre gli esercizi comporterà un voto di 30/30.

Il quarto esercizio, che verrà valutato solo in caso di valutazione 30/30 degli altri tre, comporterà il voto di 30/30 con lode se svolto correttamente.

E' ammesso l'uso di editor, compilatore e debugger.

Non è ammesso l'uso di alcun testo o strumento di acquisizione di informazioni o comunicazione con l'esterno.

Non sono previste prove in itinere.

Testi di riferimento

Il materiale di riferimento consiste nei seguenti elementi.

  1. Appunti delle lezioni.

  2. Handouts/slides "Corso Programmazione 1" (disponibile sul sito del corso)

  3. Esempi di programmi e Materiale didattico aggiuntivo (disponibile sul sito del corso)

  4. Libro di testo suggerito (alternativi):

  5. Riferimento per il linguaggio C++ (facoltativo):

Esercitazioni