#acl SUAGroup:read,write,admin,delete,revert All:read
== 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.