Guida aggiornata: settembre 2026 · a cura di Skooly · tutte le guide · altre domande di programmazione
Domande d'esame su variabili, tipi e controllo del flusso: le 12 che escono davvero, con le risposte
Su variabili, tipi e controllo del flusso il docente di solito vuole vedere se sai distinguere bene i concetti di base della programmazione: dichiarazione, inizializzazione, assegnamento, scope e durata di vita. Poi verifica se sai spiegare come i tipi influenzano le operazioni consentite, come funzionano le strutture di controllo e come si collegano a funzioni, parametri ed errori.
I termini che il prof si aspetta: variabile · identificatore · tipo di dato · tipizzazione statica · tipizzazione dinamica · scope · durata di vita · if/else · ciclo · funzione · parametro · compilazione · interpretazione · eccezione.
Le domande che escono all'esame
-
Che cos’è una variabile in un linguaggio di programmazione?
Una variabile è un nome associato a una posizione di memoria il cui contenuto può cambiare durante l’esecuzione. In pratica rappresenta un valore etichettato da un identificatore, con un tipo che ne vincola l’uso. Bisogna distinguere la variabile dal valore che contiene e dalla sua zona di visibilità.
Cosa vuole sentire: Vuole una definizione rigorosa, non solo l’idea intuitiva di “contenitore”. Errore tipico: Confondere la variabile con il valore oppure dire che è semplicemente “un dato”.
-
Qual è la differenza tra dichiarazione, definizione e inizializzazione?
La dichiarazione introduce il nome e il tipo di una variabile o di una funzione; la definizione allocare la risorsa concreta, quando il linguaggio distingue le due cose. L’inizializzazione è l’assegnamento del primo valore, che può avvenire al momento della definizione oppure successivamente. In molti linguaggi alcune di queste nozioni coincidono, ma concettualmente vanno tenute separate.
Cosa vuole sentire: Vuole che tu sappia distinguere i livelli concettuali anche se il linguaggio specifico li mescola. Errore tipico: Usare dichiarazione e inizializzazione come sinonimi senza precisare il contesto del linguaggio.
-
Che cos’è il tipo di dato e a cosa serve?
Il tipo di dato caratterizza l’insieme dei valori rappresentabili e le operazioni lecite su quei valori. Serve al compilatore o all’interprete per controllare correttezza, rappresentazione in memoria e compatibilità tra espressioni. In questo senso il tipo non è solo una proprietà del valore, ma anche una proprietà dell’uso che il programma ne fa.
Cosa vuole sentire: Vuole il legame tra semantica del dato, operazioni e controllo statico o dinamico. Errore tipico: Dire che il tipo serve solo a “sapere se è un intero o una stringa” senza spiegare il ruolo nei controlli.
-
Che differenza c’è tra tipizzazione statica e dinamica?
Con tipizzazione statica i tipi sono controllati prima dell’esecuzione, tipicamente in compilazione; con tipizzazione dinamica il controllo avviene durante l’esecuzione. Nel primo caso molti errori vengono intercettati prima di far partire il programma, nel secondo il sistema è più flessibile ma alcuni errori emergono solo a run-time. La distinzione è indipendente dal fatto che un linguaggio sia compilato o interpretato.
Cosa vuole sentire: Vuole che separi tipizzazione da modalità di esecuzione del programma. Errore tipico: Dire che statica significa compilato e dinamica significa interpretato, come se fossero sinonimi.
-
Cosa si intende per tipizzazione forte e debole?
La tipizzazione forte indica che il linguaggio impedisce in modo rigoroso operazioni non coerenti tra tipi diversi, riducendo coercizioni implicite pericolose. La tipizzazione debole, invece, consente conversioni automatiche più permissive, che possono nascondere errori. È un concetto meno netto di statico/dinamico e dipende molto dal linguaggio concreto e dalle sue regole.
Cosa vuole sentire: Vuole una definizione prudente e non semplificata all’eccesso. Errore tipico: Trattare forte/debole come sinonimi di statica/dinamica.
-
Che cos’è lo scope di una variabile?
Lo scope è la porzione di programma in cui un identificatore è visibile e utilizzabile. Può essere lessicale o statico, cioè determinato dalla struttura del codice, oppure più raramente dinamico a seconda del linguaggio. Lo scope va distinto dalla durata di vita, che riguarda per quanto tempo l’oggetto esiste in memoria.
Cosa vuole sentire: Vuole la distinzione corretta tra visibilità e lifetime. Errore tipico: Confondere scope con durata di vita o con il semplice blocco tra parentesi graffe.
-
Che differenza c’è tra variabili locali, globali e parametri?
Le variabili locali sono visibili solo all’interno del blocco o della funzione in cui sono dichiarate, le globali hanno visibilità più ampia, spesso per tutto il programma o il modulo. I parametri sono variabili locali della funzione che ricevono i valori passati in chiamata. Il docente si aspetta anche che tu dica che l’uso eccessivo di globali rende il codice meno modulare e più difficile da mantenere.
Cosa vuole sentire: Vuole che tu colleghi visibilità, modularità e qualità del codice. Errore tipico: Dire che i parametri sono una categoria separata dalle variabili locali.
-
Come funzionano selezione e iterazione nel controllo del flusso?
La selezione, come if/else o switch, sceglie quale ramo eseguire in base a una condizione. L’iterazione, con while, for o do-while, ripete un blocco finché vale una condizione o per un numero di passi definito. Sono i costrutti fondamentali per rendere un programma non puramente sequenziale.
Cosa vuole sentire: Vuole il significato operativo dei costrutti, non solo i nomi. Errore tipico: Descrivere i cicli solo come “ripetizioni” senza dire cosa ne determina l’arresto.
-
Che cos’è una funzione e perché è importante?
Una funzione è un’unità di programma che incapsula un comportamento, riceve eventuali argomenti e produce un risultato o un effetto laterale. È importante perché favorisce astrazione, riuso, modularità e testabilità. Inoltre introduce un nuovo contesto di esecuzione con le sue variabili locali e i suoi parametri.
Cosa vuole sentire: Vuole che tu sottolinei modularità e contesto di attivazione. Errore tipico: Ridurre la funzione a “un pezzo di codice che fa una cosa”.
-
Qual è la differenza tra passaggio per valore e passaggio per riferimento?
Nel passaggio per valore la funzione riceve una copia del valore dell’argomento, quindi modifiche al parametro non cambiano la variabile originale. Nel passaggio per riferimento, o con meccanismi equivalenti, la funzione può agire sull’oggetto originale e modificarlo direttamente. Bisogna però stare attento: alcuni linguaggi usano semantiche più sottili, come riferimenti a oggetti o passaggio per condivisione.
Cosa vuole sentire: Vuole che tu sappia spiegare gli effetti sulle variabili chiamanti. Errore tipico: Dire che tutti i linguaggi passano sempre per riferimento quando usano oggetti.
-
Che differenza c’è tra compilazione e interpretazione?
La compilazione traduce il programma in una forma eseguibile o intermedia prima dell’esecuzione, mentre l’interpretazione esegue il codice controllandolo durante il processo. In pratica molti linguaggi moderni combinano entrambe le tecniche, quindi la distinzione pura è spesso idealizzata. L’aspetto importante è capire quando avviene la traduzione e come questo influenza prestazioni e controllo degli errori.
Cosa vuole sentire: Vuole una distinzione concettuale, non una definizione rigidamente storica. Errore tipico: Pensare che compilato e interpretato siano due categorie totalmente separate e incompatibili.
-
Come si collegano tipi, controllo del flusso ed errori a run-time?
I tipi limitano le operazioni ammissibili e quindi riducono molti errori prima dell’esecuzione, ma non eliminano tutti i problemi. Il controllo del flusso può generare errori di logica, ad esempio cicli infiniti o rami non coperti, mentre a run-time emergono errori come divisione per zero o accesso non valido. La gestione degli errori, tramite eccezioni o meccanismi analoghi, serve proprio a intercettare e trattare questi casi in modo controllato.
Cosa vuole sentire: Vuole che tu sappia mettere insieme statico, dinamico e robustezza del programma. Errore tipico: Pensare che un buon sistema di tipi elimini qualsiasi errore possibile.
Le risposte vaghe che non passano
- «Una variabile è una cosa che contiene un dato.»
- Meglio: Una variabile è un identificatore associato a una locazione di memoria, con un tipo e una visibilità ben definiti.
- «La tipizzazione statica è quando il linguaggio è compilato, quella dinamica quando è interpretato.»
- Meglio: La tipizzazione statica o dinamica riguarda il momento del controllo dei tipi; compilazione e interpretazione riguardano invece il modo di tradurre o eseguire il programma e non coincidono necessariamente.
- «Il passaggio per riferimento serve a passare una copia più veloce.»
- Meglio: Nel passaggio per riferimento la funzione opera sull’oggetto originario o su un riferimento ad esso, mentre nel passaggio per valore riceve una copia del valore.
I collegamenti che fanno salire il voto
- Basi di dati — tipi di dato e vincoli di integrità. Ti aiuta a vedere che il concetto di tipo non è solo di programmazione, ma anche di modellazione e controllo della correttezza dei dati.
- Architettura degli elaboratori — rappresentazione in memoria delle variabili. Collega tipo astratto e implementazione concreta, soprattutto per interi, floating point e indirizzi.
- Algoritmi e strutture dati — ricorsione e complessità del controllo del flusso. Fa vedere come funzioni e cicli incidono sulla struttura dell’algoritmo e sullo spazio/tempo di esecuzione.
Come ti valuta la pagella su variabili, tipi e controllo del flusso
Un'interrogazione si valuta su quattro criteri. Ecco cosa fa la differenza in questo argomento:
| Criterio | Cosa fa la differenza qui |
|---|---|
| Conoscenza dei contenuti | Fa la differenza saper distinguere con precisione tipo, valore, variabile, scope, lifetime e passaggio dei parametri senza sovrapporli. |
| Correttezza espositiva e lessico specifico | Premia una risposta ordinata: definizione, distinzione, esempio essenziale e conseguenza pratica. |
| Capacità di analisi e collegamenti | Conta molto saper spiegare perché una scelta linguistica riduce o aumenta errori, modularità e leggibilità. |
| Autonomia nell'argomentare | Sale il voto se sai collegare i concetti a casi reali del linguaggio studiato, senza recitare solo definizioni isolate. |
Domande frequenti
- Da dove conviene partire quando ripasso questo argomento?
- Parti da variabile, tipo e scope, poi passa a selezione, cicli e funzioni. Se questi tre blocchi sono chiari, diventa molto più facile parlare di errori e di compilazione/interpretazione.
- Se ho poco tempo, cosa devo saper dire per non andare in crisi?
- Devi saper distinguere dichiarazione, inizializzazione e assegnamento, e spiegare bene statico/dinamico e valore/riferimento. Sono i punti su cui il docente fa spesso domande di precisione.
- Come posso collegarlo ad altri argomenti del corso?
- Puoi collegarlo alla modellazione dei dati, alla memoria e alla modularità del software. In generale, ogni volta che parli di tipi e variabili stai anche parlando di correttezza del programma.
Altre domande d'esame di programmazione
La complessità degli algoritmi · La programmazione a oggetti · La ricorsione · Le basi di dati e SQL · Le strutture dati · tutti gli argomenti di programmazione
Come si prepara un orale universitario: simulare l'esame orale · Skooly per l'università.
Le domande e le risposte modello di questa pagina sono generate con l'intelligenza artificiale a partire dal programma scolastico, passate da una verifica automatica dei fatti e riviste a campione dalla redazione di Skooly (AI Act, Art. 50). Hai trovato un errore? Scrivi a supporto@skooly.it e lo correggiamo.
