FONDAMENTI DI INFORMATICA + LABORATORIO DI PROGRAMMAZIONE
cod. 1002526

Anno accademico 2023/24
1° anno di corso - Primo semestre
Docente
Massimo BERTOZZI
Settore scientifico disciplinare
Sistemi di elaborazione delle informazioni (ING-INF/05)
Ambito
A scelta dello studente
Tipologia attività formativa
A scelta dello studente
72 ore
di attività frontali
9 crediti
sede:
insegnamento
in 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 espressioni in C
8. controllo di flusso
9 Tipi di dato in C
10 gli Array
11 Allocazione dinamica della memoria e puntatori
12 le stringhe in C
13 le funzioni
14 I/O in C
15 dati compositi
16 puntatori a funzione

Programma esteso

1. Introduzione alla programmazione

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


3 architettura base del calcolatore
- storia ed evoluzione delle architetture di calcolo
- principali elementi di una CPU
- architettura di von Neumann



4 linguaggi di programmazione
- livello di linguaggio
- linguaggi macchina e assembly
- linguaggi ad alto livello
- interpretazione e compilazione

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

6 il C
- perche' il C?
- lo standard
- fasi di compilazione
- introduzione agli elementi base del linguaggio

7. le espressioni in C
- Operatori & Operandi
- Tipologie
- Espressioni
- Valutazione
- Precedenza & Associatività
- Effetti collaterali

8. controllo di flusso
- Teorema Jacopini Böhm
- Sequenza
- Selezione
- if()
- switch()-case
- Iterazioni
- while()
- do-while()
- for(;;)

9 Tipi di dato in C
- Definizione variabile
- Tipi di dato in C
- Dati scalari
- Virgola mobile
- Interi
- Combinazione differenti tipi di dato
- Conversioni
- Campo di visibilità delle variabili

10 gli Array
- Array monodimensionali
- Definizione
- Uso
- Inizializzazione
- Errori
- Array multidimensionali

11 Allocazione dinamica della memoria e puntatori
- Limite array
- Variable Length Array
- I puntatori
- Il tipo void
- Funzioni di gestione memoria
- Errori Comuni

12 le stringhe in C
- Definizione stringhe
- Memorizzazione
- I/O
- La libreria string.h
- Principali operazioni
- Array di stringhe

13 le funzioni
- Modularità
- Le funzioni predefinite
- La libreria standard del C
- Definire una funzione
- Tipo restituito
- Parametri Formali
- Passaggio dei dati
- I prototipi
- La Ricorsione

14 I/O in C
- gli stream
- concetto di file
- principali operazioni
- definizione
- associare uno stream
- lettura/scrittura e altre operazioni
- chiusura
- file testuali e binari
- I/O della console

15 dati compositi
- motivazione dati compositi
- il costrutto struct
- definizione
- uso
- accesso elementi
- padding
- accenno a unione ed enum

16 puntatori a funzione
- indirizzo di una funzione
- definizione e uso puntatori a funzione
- callback ed esempi
- qsort()
- bsearch()

Bibliografia

K.N. King, C Programming: A Modern Approach (2nd Edition), W W Norton & Co
Bellini Guidi, Linguaggio C, Mc Graw Hill
B.W. Kernighan e D. Ritchie, The C Programming Language: ANSI C Version, Pearson College
Darnell Margolis, C manuale di programmazione, Mc Graw Hill
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, 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

Altre informazioni

- - -

Obiettivi agenda 2030 per lo sviluppo sostenibile

- - -

Referenti e contatti

Numero verde

800 904 084

Segreteria studenti

E. segreteria.ingarc@unipr.it

Servizio per la qualità della didattica

Manager della didattica: 
Lucia Orlandini
T.+39 0521 906542
E. servizio disti.didattica@unipr.it
E. del manager lucia.orlandini@unipr.it

 

Presidente del corso di studio

Francesco Zammori
E. francesco.zammori@unipr.it

Delegato orientamento in ingresso

Giovanni Romagnoli
E. giovanni.romagnoli@unipr.it

Delegato orientamento in uscita

Giovanni Romagnoli
E. giovanni.romagnoli@unipr.it

Docenti tutor

Giovanni Romagnoli
E. giovanni.romagnoli@unipr.it

Delegati Erasmus

Roberto Montanari
E. roberto.montanari@unipr.it
Fabrizio Moroni
E. fabrizio.moroni@unipr.it
Adrian Hugh Alexander Lutey
E. adrianhughalexander.lutey@unipr.it

Responsabile assicurazione qualità

Francesco Zammori
E. francesco.zammori@unipr.it

Studenti tutor