Informatica Generale

Il corso

 

Obiettivi formativi specifici

Il corso introduce lo studente alla programmazione, utilizzando il linguaggio C, una delle scelte principali per chi scrive software in ambito scientifico. Le lezioni in aula saranno il più possibile integrate con le attività di laboratorio, per “toccare con mano” le principali soluzioni viste a lezione. Al termine del corso, lo studente avrà autonomia di giudizio (capacità di scegliere e poi codificare l’algoritmo più adatto per diversi problemi), sarà in grado di presentare e commentare dati e risultati di simulazioni, avrà la capacità di imparare ad utilizzare strumenti simili a quelli visti nel corso. Lo studente avrà così una visione completa su come progettare, strutturare ed implementare applicazioni che necessitano di un elevato utilizzo di risorse di calcolo.

The course introduces the student to the programming, by using the C language, one of the preferred choices of the programmers for scientific purposes. Frontal approach and laboratory experiences are strongly integrated, in order to better deal with the theoretical topics discussed in lecture room. At the end of the course the student should acquire enough autonomy (capability of choosing and codify the proper algorithm in each situation) to successfully deal with applications requiring huge computational resources

Prerequisiti

Familiarità con l’uso semplice del calcolatore: accensione/spegnimento, archiviazione di file, stampa, navigazione sul Web

Basic acquaintance with personal computers: switching on/off, file management, print, web surfing

Contenuti

Introduzione
——————
Descrizione delle idee di base e degli scopi del corso. Algoritmi e loro codifica. Metodi per l’analisi di problemi e codifica delle soluzioni. I diagrammi di flusso. Linguaggi di programmazione, interpreti, compilatori, linker.

Algebra Booleana
————————–
Definizione di variabile booleana e operatori booleani. Tabelle di verità e proprietà degli operatori. Alcuni teoremi.
Introduzione all’algebra booleana.

Il linguaggio di programmazione C
———————————————-
Costanti e variabili, tipi di dato primitivi, qualificatori, espressioni di assegnamento e condizionali, operatori, conversione dati. Stringhe di formato. Istruzioni di controllo

Vettori e Matrici
————————
Array ad una dimensione e a più dimensioni. Accesso agli elementi di un array. Esercizi sugli array. Stringhe come vettori di caratteri

Funzioni
—————-
Prototipi di funzioni, passaggio di parametri per valore e per indirizzo, concetto di puntatore, passaggio di array come parametro di funzione.

Programmazione ricorsiva
————————————
Introduzione alla programmazione ricorsiva. Torri di Hanoi. Esempi ragionati.

Allocazione Dinamica
——————————–
Puntatori, operatori di deferenziamento ed indirizzo, operazioni sui puntatori, aritmetica dei puntatori, relazione fra vettori e puntatori, allocazione e deallocazione dinamica della memoria.

Tipi Utente
——————-
Tipi definiti dall’utente (semplici e strutturati), il costruttore “struct”, uso di “typedef” e strutture, operazioni sulle strutture, accesso ai campi della struttura. Liste: creazione di una lista, operazioni sulle liste, liste e allocazione dinamica della memoria.

File
———-
Struttura dati FILE. Tipi di file, apertura e chiusura di file, funzioni di I/O per file di testo, operazioni su file binari.

Gestione di Progetti
—————————-
Creazione e gestione di progetti (.h e .c). Parametri di ingresso. Utilizzo di makefile.

Esercitazioni
———————
Il corso prevede esercitazioni sui seguenti argomenti: ambiente di sviluppo di programmi C (in ambiente Windows), progetto e realizzazione di programmi in linguaggio C, semplici esempi di calcolo numerico.

Introduction to the course: the algorithms and their codification (programs) – Introduction to the boolean logic and algebra – Introduction to C language: constants, variables, data types, assignment and conditional operators, data casting – Arrays – Functions – Recursive programming – Dynamic allocation – User defined data types – Files – Projects managing – Exercitations: C development environments, ideation and implementation of C programs, simple examples of numerical computation.

Testi di riferimento

Lucidi del corso e dispense a cura dei docenti saranno disponibili sul sito del corso. Il libro consigliato è: “Programmazione scientifica”, autori Luciano M. Barone, Giovanni Organtini, Enzo Marinari, Federico Ricci-Tersenghi, Ed. Pearson

Software e tools

È possibile scaricare presso il link inserito sotto l’ambiente di sviluppo Eclipse per svolgere gli esercizi
(scegliete la versione corretta per il vostro sistema operativo)
Eclipse download pages