INFORMATICA E LABORATORIO

Anno accademico 2022/2023 - 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

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
  • Variabili di tipo static
  • La ricorsione
  • Strutture dati ed union
  • L'operatore typedef
  • Introduzione al preprocessore C
  • Allocazione dinamica della memoria
  • Puntatori a funzioni della memoria

Testi di riferimento

Qualsiasi testo sul C

Programmazione del corso

 ArgomentiRiferimenti testi
1TuttiQualsiasi testo in C 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.

Esempi di domande e/o esercizi frequenti

    http://superpippo.ct.infn.it/~marco/didattica