Conoscenza degli elementi fondamentali dei linguaggi di programmazione C, Pascal e Python, degli algoritmi più comuni per i problemi di ordinamento, ricerca e gestione delle strutture dati e delle tecniche di programmazione utili a implementare programmi e risolvere problemi concreti con particolare riferimento a quelli di natura matematica.
Prerequisiti
Conoscenze logico-matematiche di base.
Metodi didattici
Lezioni frontali e attività di laboratorio.
Verifica Apprendimento
Prova scritta/pratica in laboratorio al fine di verificare la capacità di problem solving di semplici problemi di programmazione di tipo scientifico ed esame orale per verificare il grado di conoscenza della materia raggiunto, la proprietà di linguaggio rispetto agli argomenti e la capacità espositiva.
Testi
• Introduzione a Python, Tony Gaddis, casa editrice Pearson• Concetti di Informatica e fondamenti di Python, Cay Horstmann, Rance D. Necaise, Maggioli Editore – Apogeo• Programmare in C, Stephen G. Kochan, casa editrice Pearson• Introduzione alla programmazione con Python, John V. Guttag, casa editrice Egea
Contenuti
La scienza dell’informazione. Sistemi di codifica. Celle e registri di memoria. Il codice ASCII. Hardware. Software e firmware. Programmazione. Algoritmi. Diagrammi di flusso e pseudocodice. Diagrammi di flusso strutturati. Il Teorema di Böhm-Jacopini. Programmazione strutturata. Architettura di un elaboratore. Il modello di von Neumann. Storia degli elaboratori. Classificazione dei computer e loro evoluzione. Storia dei sistemi operativi e loro evoluzione. Storia del web. Storia e classificazione dei linguaggi di programmazione. Il linguaggio C. Classificazione delle applicazioni. Struttura di un programma in C. Variabili. Tipi di dato. Conversioni e typecasting. Istruzioni di input/output. Espressioni matematiche ed operatori aritmetici in C. Il costrutto sequenza in C. Il costrutto selezione in C. Operatori logico-relazioni. Il costrutto iterazione in C. Tipi di dati strutturati in C. Array, matrici e strutture. La gestione delle stringhe in C. Le funzioni in C. Parametri formali e attuali. Passaggio per valore e per riferimento. Gestione dei puntatori. Allocazione dinamica. Liste semplicemente concatenate. La gestione dei file in C. Principali algoritmi e strutture dati. I sistemi di numerazione. Rappresentazione posizionale. I sistemi binario, ottale ed esadecimale. Conversioni da e verso il sistema decimale. Aritmetica binaria. Overflow. Rappresentazione dei numeri interi in binario puro. La codifica modulo e segno. La codifica complemento a due. Operazioni aritmetiche col complemento a due. Overflow col complemento a due. La rappresentazione dei numeri reali. Rappresentazione in virgola fissa e in virgola mobile. Rappresentazioni standard dei floating point (IEEE 754 SP ed IEEE 754 DP) e relativo intervallo dei valori. Underflow. Limiti della rappresentazione floating point e relativi esempi. Il linguaggio Pascal. Struttura di un programma Pascal/Delphi. Applicazioni di tipo console. Cenni sul linguaggio Pascal. Il linguaggio Python. Struttura di un programma Python. Sintassi e indentamento. Variabili e costanti. Istruzioni di input/output. Tipi di dato in Python. Il costrutto iterazione in Python. Tipi di dati strutturati in Python. Array e matrici. Gli array dinamici e gli open array. Le funzioni in Python Parametri formali e attuali. Passaggio per valore e per riferimento. Funzioni con parametri opzionali. Variabili globali e locali. La ricorsione. Le librerie di Python. Gli insiemi in Python. Liste e dizionari. La gestione dei file in Python.