Corso IN110 Algoritmi e Strutture Dati

Le lezioni

Diario delle lezioni dell'anno accademico 2025/2026

Le lezioni del corso IN110 Algoritmi e Strutture Dati si tengono nel primo semestre (settembre 2025 - gennaio 2026) con il seguente orario:

Nelle prime tre settimane del corso si terranno lezioni a cura del prof. Marco Liverani in aula M1 anche negli orari del tutorato e delle esercitazioni. Sarà comunicato successivamente l'avvio effettivo delle attività di tutorato e delle esercitazioni.

Di seguito si riporta una sintesi degli argomenti trattati nel corso delle lezioni in aula e delle esercitazioni di laboratorio.

Lezione n. 1 - lunedì 22 settembre 2025
  • Presentazione del corso: argomenti che tratteremo, orario delle lezioni, orario delle esercitazioni, orario di ricevimento, modalità di esame (scarica il documento: “Presentazione del corso di Informatica 1”Scarica il documento in formato PDF).
  • Introduzione alla progettazione di algoritmi: un approccio intuitivo mediante alcuni esempi elementari.
Lezione n. 2 - martedì 23 settembre 2025
  • Esecutore e algoritmi: problema e istanza di un problema, caratteristiche dell'esecutore, compiti del progettista degli algoritmi, capacità del calcolatore/esecutore; algoritmi; esempi di pseudo-codifica di algoritmi per la soluzione di problemi elementari (primi k multipli di n, sommatoria dei primi n naturali, fattoriale di un numero naturale, verifica dell'ordinamento crescente di una sequenza di numeri). Linguaggi imperativi, istruzioni fondamentali di in linguaggio imperativo.
Lezione n. 3 - giovedì 25 settembre 2025
  • Algoritmi, diagrammi di flusso, programmazione strutturata: linguaggi imperativi, istruzioni fondamentali di un linguaggio imperativo, rappresentazione di algoritmi mediante diagrammi di flusso, strutture algoritmiche di tipo sequenziale, iterativa, condizionale; regole della programmazione strutturata, cenni sul Teorema Fondamentale della Programmazione Strutturata di Giuseppe Jacopini e Corrado Böhm; esempi: media aritmetica di un insieme di n numeri, ricerca del massimo fra 2, 3 e n numeri, verifica dell'ordinamento di una sequenza, verifica della divisibilità di un numero naturale (scarica il documento: “Algoritmi e diagrammi di flusso”Scarica il documento in formato PDF).
Lezione n. 4 - venerdì 26 settembre 2025
  • Algoritmi, diagrammi di flusso, programmazione strutturata: esercizi per la pseudo-codifica di un algoritmo e la rappresentazione di un diagramma di flusso per la risoluzione dei seguenti problemi: divisibilità di un numero naturale per un altro, calcolo del quoziente e del resto nella divisione di due numeri naturali, verifica della primalità di un numero naturale, minimo comune multiplo tra due numeri naturali; un algoritmo sbagliato per il calcolo della radice quadrata di un numero naturale.
  • Cenni sulla calcolabilità: alcuni problemi non risolubili per via algoritmica: esempi basati sulla congettura di Goldbach e la congettura di Collatz / Ulam.
Lezione n. 5 - lunedì 29 settembre 2025
  • La Macchina di Turing: definizione della MdT come modello di calcolo astratto; esempio di MdT per il calcolo del successore di un numero naturale espresso in base 2; funzioni, macchine di Turing, algoritmi, calcolabilità delle funzioni elementari, composizione di funzioni e ricorsione come operazioni che preservano la calcolabilità; codifica di una macchina di Turing e del suo input come numeri naturali.
  • Calcolabilità e modelli di calcolo: problemi calcolabili e non calcolabili, alcuni esempi; modelli di calcolo astratti: la macchina di Turing.
Lezione n. 6 - martedì 30 settembre 2025
  • Calcolabilità e modelli di calcolo: il modello di Von Neumann; cenni sul problema della fermata, cenni sulla Tesi di Church-Turing (scarica il documento: “Appunti sui modelli di calcolo”Scarica il documento in formato PDF).
  • Linguaggi di programmazione: classificazion dei linguaggi in base al paradigma di programmazione, alcuni esempi. Linguaggi di programmazione di basso livello e di alto livello, linguaggio macchina; processo di traduzione del codice da linguaggio di programmazione di alto livello (codice sorgente) a linguaggio macchina (codice binario eseguibile), esecuzione del programma (scarica il documento: “Appunti sui linguaggi di programmazione”Scarica il documento in formato PDF).
  • Rappresentazione delle informazioni: codifica decimale e binaria di numeri interi positivi; struttura della memoria, bit, byte; rappresentazione di numeri interi “grandi”, mediante parole ottenute concatenando più byte.
Lezione n. 7 - giovedì 2 ottobre 2025
  • Rappresentazione delle informazioni:, rappresentazione di numeri interi relativi, rappresentazione di numeri razionali (floating point), rappresentazione di caratteri alfanumerici (scarica il documento: “Appunti sulla rappresentazione delle informazioni in memoria”Scarica il documento in formato PDF).
  • Introduzione al linguaggio C: struttura e sintassi generale di un programma C, direttive del precompilatore per l'inclusione di librerie, la funzione main, dichiarazione di variabili, tipi di dato, la funzione printf, la funzione scanf.
  • Struttura di controllo condizionale: la struttura di controllo condizionale if... else..., esempi.
  • Operatori di confronto: operatori di confronto, espressioni logiche, connettori logici and, or, not, valutazione di espressioni booleane, esempi.
Lezione n. 8 - venerdì 3 ottobre 2025
  • Strutture di controllo iterative: le istruzioni while, do-while e for; esempi.
  • Operatori aritmetici: operatori aritmetici, anche in forma compatta (++, -- in forma prefissa e postfissa; gli operatori di assegnazione +=, -=, *= e /=). L'operazione di cast. L'operatore modulo “%” per il calcolo del resto nella divisione tra interi.

Università degli Studi Roma Tre - Dipartimento di Matematica e Fisica - Corso di laurea in Matematica - Corso IN110 Algoritmi e Strutture Dati

Author: Marco Liverani - Last modified: Friday October 03, 2025 - URI: http://193.204.165.209/users/liverani/IN110/lezioni.shtml