INFORMATICA E LABORATORIO DI PROGRAMMAZIONE

Docenti: 
Crediti: 
9
Sede: 
PARMA
Anno accademico di offerta: 
2021/2022
Responsabile della didattica: 
Settore scientifico disciplinare: 
SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI (ING-INF/05)
Semestre dell'insegnamento: 
Primo Semestre
Anno di corso: 
1
Lingua di insegnamento: 

ITALIANO

Obiettivi formativi

L’obiettivo del corso è fornire allo studente la capacità di comprendere i principi dell'informatica e della programmazione usando come linguaggio di riferimento il C e in particolare:
* Rappresentazione dei dati
* Concetto di algoritmo
* Architettura base dei sistemi di elaborazione
* Paradigma di programmazione procedurale
* Introduzione all'ingegneria del software

Le capacità di applicare le conoscenze elencate riguardano lo sviluppo del cosiddetto "pensiero computazionale":
* Scomposizione di problemi complessi
* Soluzione di problemi tramite approccio Top-Down
* Sintassi e semantica del linguaggio C

Prerequisiti

Nessuna propedeuticità. Si suppone comunque che lo studente conosca le basi dell'uso del computer e di Internet - l'equivalente dei moduli 1, 2, 3 e 7 del Syllabus ECDL (European Computer Driving Licence).

Contenuti dell'insegnamento

1. Introduzione alla programmazione
2 algoritmi
3 architettura base del calcolatore
4 linguaggi di programmazione
5 rappresentazione dei numeri in informatica
6 il C
7 le variabili
8 controllo di flusso
9 espressioni
10 array e allocazione dinamica della memoria
11 funzioni
12 l' I/O

Programma esteso

1. Introduzione alla programmazione

2 algoritmi
2.1 concetto di algoritmo
2.2 significato di programma
2.3 approccio al problem solving
2.4 pseudocodice e diagrammi di flusso
2.5 approcci top-down e bottom-up

3 architettura base del calcolatore
3.1 funzioni architettura
3.2 architettura di von Neumann

4 linguaggi di programmazione
4.1 livello di linguaggio
4.2 linguaggi macchina e assembly
4.3 linguaggi ad alto livello
4.4 categorie di linguaggi

5 rappresentazione dei numeri in informatica
5.1 la memoria
5.2 sistemi di rappresentazione
5.2 formato binario e conversioni
5.3 formato esadecimale
5.4 il segno nei numeri, complemento ad 1 e 2
5.6 numeri a virgola fissa e mobile

6 il C
6.1 perche' il C?
6.2 lo standard
6.3 fasi di compilazione
6.4 introduzione agli elementi base del linguaggio

7 le variabili
7.1 albero dei tipi di dato in C
7.2 definizione ed assegnamento variabili
7.3 intervallo valori variabili scalari
7.5 conversioni esplicite e automatiche
7.6 visibilita' e durata
7.7 i tipi compositi

8 controllo di flusso
8.1 significato del controllo di flusso
8.2 Jacopini Boehm
8.3 valutazione di condizioni
8.4 i cicli in C
8.5 nesting

9 espressioni
9.1 operatori del C
9.2 espressioni
9.3 precedenza e associativita'

10 array e allocazione dinamica della memoria
10.1 dichiarazione e utilizzo
10.2 array multidimensionali
10.3 i puntatori
10.4 aritmetica dei puntatori
10.5 allocazione dinamica della memoria
10.6 stack & heap
10.7 errori tipici dell'uso dei puntatori e allocazione dinamica della memoria

11 funzioni
11.1 motivazioni
11.2 definizione e uso funzioni
11.3 funzioni predefinite
11.4 passaggio argomenti per valore e indirizzo
11.5 la ricorsione e relativa efficienza

12 l' I/O
12.1 input e output in C
12.2 I/O da console, principali funzioni
12.3 i file
12.4 I/O su file ASCII
12.5 I/O su file binari

Bibliografia

Darnell - Margolis, Manuale di Programmazione in C
in alternativa un qualunque manuale di rieferimento per il linguaggio C

Metodi didattici

Lezioni in aula, con l'ausilio di slide rese disponibili in anticipo agli studenti. Soluzione guidata di esercizi in aula. Esercizi di programmazione in laboratorio.

Le esercitazioni in laboratorio sono centrali per il corso. Gli esercizi proposti vertono sugli stessi argomenti generali delle lezioni in aula. L'obiettivo è di introdurre i principi della programmazione orientata agli oggetti, guidando lo studente alla soluzione di problemi con un livello di complessità crescente.

Modalità verifica apprendimento

Progetto al calcolatore in C in due ore in laboratorio