FONDAMENTI DI INFORMATICA M - Z
Anno accademico 2025/2026 - Docente: LUCA LEONARDIRisultati di apprendimento attesi
Conoscenza e comprensione
Al completamento del corso, lo studente avrà acquisito: Conoscenze sulla rappresentazione dell’informazione nei calcolatori e sull’architettura dell’elaboratore; Comprensione del funzionamento di un elaboratore; Conoscenze sul software di base e sul sistema operativo; Comprensione degli algoritmi; Conoscenze sui linguaggi di programmazione e su compilatori e interpreti; Conoscenze sulle reti di calcolatori; Conoscenze sulla programmazione strutturata e sulla programmazione in linguaggio C.
Capacità di applicare conoscenza e comprensione.
Al termine del corso, lo studente sarà in grado di sviluppare programmi in linguaggio C per la risoluzione di problemi di calcolo in ambito ingegneristico o per la gestione di strutture dati complesse (magazzini, archivi, etc.). Saprà inoltre applicare le conoscenze acquisite alla scelta sia dei componenti HW e SW sia degli strumenti di sviluppo adeguati al problema da risolvere.
Autonomia di giudizio.
Al termine del corso, nello sviluppo di programmi lo studente sarà in grado di effettuare autonomamente le opportune scelte progettuali sulla base delle specifiche richieste. Tale capacità è affinata attraverso le esercitazioni svolte durante il corso e lo svolgimento di opportuni quesiti di programmazione in sede d'esame.
Abilità comunicative.
Al termine del corso, lo studente avrà acquisito padronanza della terminologia tecnica dell'informatica. Sarà in grado di discutere della struttura HW e SW degli elaboratori, delle reti e della programmazione strutturata sia con un pubblico specialista sia con un pubblico non specialista, illustrando in modo chiaro e inequivocabile le varie scelte progettuali effettuate per la risoluzione dei problemi.
Capacità di apprendimento.
Al termine del corso, lo studente sarà in grado di ampliare autonomamente le proprie conoscenze di informatica attraverso l’approfondimento dei testi di riferimento e la lettura di articoli su riviste specializzate. Potrà inoltre affinare le proprie skill di programmazione, anche in linguaggi diversi dal C, tramite la consultazione di tutorial, guide e manuali.
Modalità di svolgimento dell'insegnamento
Il corso si basa su lezioni frontali, che comprendono anche lo svolgimento di esercizi al calcolatore da parte dei docenti. Il corso prevede anche esercitazioni pratiche svolte dagli studenti. Tali esercitazioni vengono svolte anche nelle aule multimediali dell'Ateneo. Le modalità di svolgimento dell'insegnamento descritte permettono il raggiungimento degli obiettivi formativi prefissati, che includono l’acquisizione di conoscenze e la capacità di applicare la conoscenza.
Qualora l'insegnamento venisse impartito in modalità mista o a distanza potranno essere introdotte le necessarie variazioni rispetto a quanto dichiarato in precedenza, al fine di rispettare il programma previsto e riportato nel syllabus.
Prerequisiti richiesti
Frequenza lezioni
Contenuti del corso
Gli asterischi (*) indicano le competenze minime.
Rappresentazione dell'informazione
Sistemi di numerazione e algoritmi di conversione. Aritmetica intera e in virgola mobile. (*)
Struttura di un elaboratore (Ore lezione: 3, Ore esercitazione: 0)
La struttura di un elaboratore: memoria centrale, unità centrale, funzionamento elementare dell'elaboratore. (*)
Sistema Operativo (Ore lezione: 3, Ore esercitazione: 0)
Traduzione ed esecuzione di programmi. Ambiente di Programmazione. Compilatori vs. interpreti. Sistema Operativo. (*)
Algoritmi e Programmi (Ore lezione: 7, Ore esercitazione: 2)
Elaborazione automatica dell'informazione. Algoritmi e programmi. Linguaggi di programmazione. Progettazione di un programma. (*)
Reti di Calcolatori e Internet (Ore lezione: 2, Ore esercitazione: 0)
Reti di calcolatori. Reti locali. Reti geografiche. Internet e le più diffuse applicazioni di rete. (*)
Il linguaggio di programmazione "C" (Ore lezione: 15, Ore esercitazione: 23)
Sintassi e semantica. Controllo: Assegnazione. Strutture di controllo. Tipi di dato in C: tipi semplici (int, char, float, double) e strutturati (array e stringhe, strutture). Il tipo puntatore. Le funzioni. Campo d'azione degli identificatori. Dichiarazioni e campo d'azione degli identificatori. Variabili locali, globali e statiche. Tecniche di legame dei parametri. La ricorsione. I file: file di testo e file binari. Primitive di accesso ai file. (*)
Algoritmi di ordinamento (Ore lezione: 2, Ore esercitazione: 3)
Algoritmi di ordinamento e ricerca. Ricerca sequenziale e binaria. (*)
Allocazione dinamica della memoria (Ore lezione: 2, Ore esercitazione: 4)
(*)
Strutture dati (Ore lezione: 3, Ore esercitazione: 11)
Liste. (*)
Testi di riferimento
- A. Bellini, A. Guidi, "Linguaggio C - guida alla programmazione", dalla 4a Ed in poi (vanno bene le edizioni 4a, 5a, 6a), McGraw-Hill
- Dispense del docente. Il materiale didattico sarà fornito su Studium (https://studium.unict.it) nell'area dedicata al corso.
Programmazione del corso
| Argomenti | Riferimenti testi | |
|---|---|---|
| 1 | Rappresentazione dell'Informazione. Sistema numerico binario. Sistema esadecimale, sistema ottale. Conversione tra sistemi numerici. Rappresentazione dei numeri interi, reali. Codice ASCII. | - Dispense del docente.- Libro di testo: Appendice D. |
| 2 | Architettura e funzionamento elementare del calcolatore. Esecuzione delle istruzioni. Interrupt. Algebra di Boole. | - Dispense del docente.- Libro di testo: Capitolo 1. |
| 3 | Sistema operativo. Politiche di gestione della CPU, della memoria centrale e di massa. | - Dispense del docente.- Libro di testo: Capitolo 2. |
| 4 | Algoritmi e programmi. Linguaggi di Programmazione.• Traduzione ed esecuzione dei programmi • Linker • Notazione grafica per la rappresentazione degli algoritmi: Diagrammi di flusso. | - Dispense del docente.- Libro di testo: Capitoli 3 e 4. |
| 5 | Linguaggio C: Tipi di dato. Identificatori. Variabili. Classi di memorizzazione. Costanti. Operatori. Strutture di Controllo.Istruzioni di selezione, iterazione, salto,espressione, blocco. Preprocessore, include, define. | - Libro di testo: Capitoli 5,6,7,8,9,23. |
| 6 | •Array •Puntatori •Puntatori ad array •Stringhe •Strutture •Array di strutture • Lettura e scrittura di caratteri e stringhe •I/O formattato •File di testo • Allocazione dinamica della memoria •Puntatori a strutture. | - Libro di testo: Capitoli 10,13,14,16. |
| 7 | •Funzioni •Istruzione return • Passaggio di Parametri •Ricorsione •Variabili locali, regole di visibilità e tempo di vita. | - Libro di testo: Capitoli 11,15,17,19,20. |
| 8 | Algoritmi di ricerca e di ordinamento. | - Libro di testo: Capitolo 12. |
| 9 | Strutture dati lineari: Liste. | - Libro di testo: Capitolo 21. |
| 10 | Esercizi sugli argomenti trattati. | - Dispense del docente. |
Verifica dell'apprendimento
Modalità di verifica dell'apprendimento
Esempi di domande e/o esercizi frequenti
Verrà accertata la capacità di sviluppare programmi in linguaggio C per la gestione di strutture dati complesse tramite quesiti inerenti:
- Implementazione di menù a scelta multipla.
- Uso di funzioni e passaggio di parametri.
- Implementazione di array di struct.
- Implementazione di liste.
- Uso della ricorsione tramite esempi di funzioni ricorsive.
Le domande della sezione teorica potranno essere simili a, ma non limitate a, quelle sottoelencate:
- Qual è la differenza tra dato e informazione?
- Quali sono gli elementi fondamentali dell'architettura dei sistemi di elaborazione?
- Come si effettuano le conversioni di base tra i vari sistemi di numerazione (decimale, binario, esadecimale, ottale)
- Quali sono i componenti principali della CPU?
- Cosa sono gli interrupt?
- Cos'è un registro?
- A cosa serve il Program Counter?
- Cosa si intende per algoritmo.
- Che differenza c'è tra algoritmo e programma?
- Qual è la differenza tra Internet e il Web?
- Cos'è un protocollo di rete?
- Quali sono le principali differenze tra memoria centrale e memoria di massa?
- Descrivere la gerarchia di memoria.
- Cos'è un Sistema Operativo? Qual è il suo ruolo in un sistema di elaborazione?
- Cosa significa multiprogrammazione?
- Cos'è lo scheduler e qual è il suo compito?
- Cosa si intende per file system?
- Definire il concetto di processo.
- Qual è la differenza tra processo e programma?
- Descrivere il diagramma a stati di un processo.
- Cos'è il linguaggio Assembler?
- Differenza tra compilatori e interpreti.
- Cos'è e a che serve un diagramma di flusso?