INFORMATICA E LABORATORIO

Anno accademico 2023/2024 - Docente: Marco RUSSO

Risultati di apprendimento attesi

Gli obiettivi specifici di questo corso sono:

  • Insegnare i principi basilari della programmazione strutturata attraverso il linguaggio C.
  • Comprendere tutti i vari passaggi che permettono di transitare dal problema da risolvere o dal fenomeno da analizzare (e/o simulare) alla sua implementazione via software.
  • Acquisire la capacità di individuare tra più soluzioni quella più soddisfacente in termini di velocità/memoria.
  • Acquisire capacità di analizzare correttamente dati sperimentali.

Inoltre, in riferimento ai cosiddetti Descrittori di Dublino, questo corso contribuisce a acquisire le
seguenti competenze trasversali:

Conoscenza e capacità di comprensione (knowledge and understanding):

L'obiettivo primario del corso è individuato nell’acquisizione da parte degli studenti della “filosofia” della programmazione strutturata, oltre che nella conoscenza dettagliata della sintassi e della semantica del linguaggio di programmazione C. Il corso rivolge una particolare attenzione allo sviluppo di codice ben scritto e ben strutturato.

Capacità di applicare conoscenza e comprensione (applying knowledge and understanding),

Si intende fornire agli studenti le seguenti abilità:

  1. Tradurre in codice problemi da risolvere o i fenomeni da simulare;

  2. Progettare, descrivere ed implementare programmi in C;

  3. Saper usare gli strumenti di base per la programmazione;

  4. Comprendere ed analizzare codice C  anche in termini di efficienza;

Autonomia di giudizio (making judgements).

Attraverso l'esame di numerosi esempi di codice e una consistente componente pratica che prevede lo svolgimento di esercizi all'elaboratore, il discente sarà in grado, sia in forma autonoma che in forma cooperativa, di analizzare problemi e progettare ed implementare le relative soluzioni software.

Abilità comunicative (communication skills).

lo studente acquisirà le necessarie abilità comunicative e di appropriatezza espressiva nell'impiego del linguaggio verbale tecnico nell'ambito della programmazione degli elaboratori.

Capacità di apprendimento (learning skills).

Il corso intende fornire al discente le necessarie metodologie teoriche e pratiche da mettere in campo in contesti di ricerca e professionali con particolare attenzione all'ambito fisico.

Modalità di svolgimento dell'insegnamento

Lezioni Frontali ed esercitazioni pratiche. 

Qualora l'insegnamento venisse impartito in modalità mista o a distanza potranno essere introdotte le necessarie variazioni rispetto a quanto dichiarato, al fine di rispettare il programma previsto e riportato nel syllabus.

Prerequisiti richiesti

Nessuno in particolare

Frequenza lezioni

La frequenza è di norma obbligatoria.

Contenuti del corso

  • Il concetto di algoritmo
  • Il concetto di programmazione
  • Cenni sui linguaggi di programmazione
  • Differenza tra interpreti e compilatori
  • L'organizzazione della memoria in un sistema di elaborazione
  • Panoramica sul linguaggio C
  • Il concetto di variabile
  • L'operatore sizeof
  • Files di intestazione
  • Fasi della compilazione
  • Errori e warning
  • Tipo di dati base del C e loro modificatori
  • Costanti
  • Enumerazioni
  • I/O di un programma
  • Espressioni e funzioni matematiche
  • Conversioni di tipo
  • Overflow e underflow
  • Operatori di assegnamento
  • Operatori unari funzioni matematiche
  • Valori casuali
  • Esecuzione condizionale: IF
  • Operatori logici
  • Esecuzione condizionale: SWITCH
  • Esecuzione iterativa: WHILE, FOR e DO-WHILE
  • Vettori e matrici
  • I caratteri e le stringhe
  • Il concetto di indentazione del codice
  • Operatore virgola
  • Operatore ternario
  • Discussione sull'endianess
  • La funzione system
  • Operatori bitwise
  • File di testo e file binari
  • I puntatori
  • Distinzioni tra puntatori e vettori
  • Aritmetica dei puntatori
  • Funzioni sui blocchi di byte
  • Le funzioni in C.
  • Prototipo
  • Variabili locali
  • Parametri e valore restituito
  • Parametri attuali e formali
  • Passaggio dei parametri esplicito ed implicito
  • La ricorsione
  • Strutture dati
  • L'operatore typedef
  • Introduzione al preprocessore C
  • Allocazione dinamica della memoria

Testi di riferimento

Qualsiasi testo sul C

Programmazione del corso

 ArgomentiRiferimenti testi
1Il concetto di algoritmo. Il concetto di programmazione. Cenni sui linguaggi di programmazione. Differenza tra interpreti e compilatori. L'organizzazione della memoria in un sistema di elaborazione. Panoramica sul linguaggio CQualsiasi testo in C come ad esempio Kernighan e Ritchie "Principi di programmazione e manuale di riferimento" e anche appunti di lezione
2Il concetto di variabile.   L'operatore sizeof.Qualsiasi testo in C come ad esempio Kernighan e Ritchie "Principi di programmazione e manuale di riferimento" e anche appunti di lezione
3Files di intestazione. Fasi della compilazione. Errori e warningQualsiasi testo in C come ad esempio Kernighan e Ritchie "Principi di programmazione e manuale di riferimento" e anche appunti di lezione
4Tipo di dati base del C e loro modificatori. Costanti.  Enumerazioni. I/O di un programma.  Introduzione al preprocessore C.Qualsiasi testo in C come ad esempio Kernighan e Ritchie "Principi di programmazione e manuale di riferimento" e anche appunti di lezione
5Espressioni e funzioni matematiche. Conversioni di tipo Overflow e underflow. Operatori di assegnamento. Operatori unari funzioni matematiche.Qualsiasi testo in C come ad esempio Kernighan e Ritchie "Principi di programmazione e manuale di riferimento" e anche appunti di lezione
6 Valori casuali
7Esecuzione condizionale: IF  Operatori logici. Esecuzione condizionale:SWITCH. Esecuzione iterativa: WHILE, FOR e DO-WHILE. Operatore virgola. Operatore ternario.Qualsiasi testo in C come ad esempio Kernighan e Ritchie "Principi di programmazione e manuale di riferimento" e anche appunti di lezione
8Vettori e matrici. I caratteri e le stringhe. I puntatori. Distinzioni tra puntatori e vettori. Aritmetica dei puntatori. Funzioni sui blocchi di byte. Allocazione dinamica della memoriaQualsiasi testo in C come ad esempio Kernighan e Ritchie "Principi di programmazione e manuale di riferimento" e anche appunti di lezione
9Discussione sull'endianess. La funzione system. Operatori bitwise.Qualsiasi testo in C come ad esempio Kernighan e Ritchie "Principi di programmazione e manuale di riferimento" e anche appunti di lezione
10File di testo e file binariQualsiasi testo in C come ad esempio Kernighan e Ritchie "Principi di programmazione e manuale di riferimento" e anche appunti di lezione
11Le funzioni in C.    Prototipo. Variabili locali. Parametri e valore restituito. Parametri attuali e formali. Passaggio dei parametri esplicito ed implicitoQualsiasi testo in C come ad esempio Kernighan e Ritchie "Principi di programmazione e manuale di riferimento" e anche appunti di lezione
12 La ricorsione. Strutture dati. L'operatore typedefQualsiasi testo in C come ad esempio Kernighan e Ritchie "Principi di programmazione e manuale di riferimento" e anche appunti di lezione

Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

Prova pratica in C.

Di norma la prova dura 2 ore e 30 minuti e prevede lo svolgimento di un programma in C. Tutte le parti del programma possono essere oggetto della prova.

I punteggi di ogni componente della prova appaiono nel testo dell'esercizio stesso. Il punteggio minimo per conseguire l'esame e' di 18. Non e' previsto alcun orale.

La verifica dell’apprendimento potrà essere effettuata anche per via telematica, qualora le condizioni lo dovessero richiedere.

Informazioni per studenti con disabilità e/o DSA: a garanzia di pari opportunità e nel rispetto delle leggi vigenti, gli studenti interessati possono chiedere un colloquio personale in modo da programmare eventuali misure compensative e/o dispensative, in base agli obiettivi didattici ed alle specifiche esigenze. E' possibile rivolgersi anche al docente referente CInAP (Centro per l’integrazione Attiva e Partecipata - Servizi per le Disabilità e/o i DSA) del nostro Dipartimento.

Esempi di domande e/o esercizi frequenti

    Esempi sono presenti sia sull'apposito canale teams che su: http://superpippo.ct.infn.it/~marco/didattica.

    Tali esempi prevedono anche una accurata descrizione della valutazione.