Fondamenti di informatica
Numero di crediti ECTS: 12
SSD di riferimento: INF/01
Docente: S. Perri
Prerequisiti  
 
Nessuno.
Obiettivi
Obiettivo primario del corso è quello di fornire un'adeguata conoscenza dei principi fondamentali della programmazione e degli algoritmi. Lo studente acquisirà anche una buona padronanza di un concreto strumento per la programmazione dei calcolatori elettronici: il Linguaggio C++. Viene trattata la programmazione strutturata in C++ e viene introdotta la programmazione orientata agli oggetti, che sarà oggetto di un corso successivo. Il corso prevede un'ampia attività di laboratorio, in cui lo studente familiarizzerà con ambienti di programmazione C++.
Programma
- Rappresentazione dell’informazione - Rappresentazione di numeri naturali; Cenni di aritmetica binaria; Rappresentazione di informazione non numerica (caratteri, immagini, ecc.).
 
- Calcolo proposizionale.
- Architettura del calcolatore  - Processore, memoria centrale, memoria di massa, memoria cache, periferiche.
 
- Algoritmi  - Definizione di algoritmo; Risoluzione algoritmica dei problemi.
 
- Linguaggi di Programmazione  - Definizione informale di un linguaggio di programmazione, Linguaggi a basso e ad alto livello, Interpreti e Compilatori, Diagrammi di flusso e pseudo-codice, Ambienti integrati di programmazione, Gli ambienti visuali.
 
- Programmazione in C++ - Primi Passi  - Struttura di un programma; La funzione main; Librerie e namespace; Operazioni di ingresso/uscita: la libreria iostream; Concetto di variabile; Inizializzazione e assegnamento; Costanti; Espressioni aritmetiche e booleane; Priorità degli operatori.
 
- Ambienti di sviluppo  - Compilatore, linker e debugger; Definizione dello spazio di lavoro e di un progetto; L'Editor; Compilazione, esecuzione e debugging di un programma.
 
- Tipi Primitivi  - Tipi interi, tipi reali, tipo char, tipo bool; Conversioni di tipo e operazioni di cast.
 
- Strutture di Controllo  - Istruzioni semplici e composte, definizione di blocco di istruzioni, visibilità delle variabili; L'istruzione IF; L'istruzione WHILE; L'istruzione FOR; L'istruzione DO-WHILE; L'istruzione SWITCH; L’istruzione BREAK; Istruzioni innestate.
 
- Funzioni  - Dichiarazione; Parametri formali e valore di ritorno; Passaggio per valore e passaggio per riferimento; Concetto di ricorsione; Funzioni ricorsive; Cenni all’overloading delle funzioni.
 
- Array   - Dichiarazione, inizializzazione, manipolazione e passaggio come parametri a funzioni; Array multidimensionali.
 
- Puntatori e riferimenti   - Riferimento e indirizzamento indiretto; Puntatori; Array e puntatori; Array di puntatori e puntatori ad array; Allocazione dinamica della memoria; Array dinamici.
 
- Array di caratteri e stringhe - Concetti fondamentali; Funzioni di libreria.
 
- Introduzione alla Programmazione Orientata Agli Oggetti
Bibliografia 
 
- Harvey M. Deitel, Paul J. Deitel, "C++ Fondamenti di programmazione" - APOGEO
- Stanley B. Lippman, Josée Lajoie, Barbara E. Moo, "C++-primer" - Pearson
Tipologia di attività didattiche
Lezioni, esercitazioni in aula, esercitazioni guidate in laboratorio.
Metodi di valutazione
Prova di Laboratorio e Prova scritta.