| Nome |
Cognome |
Matricola |
| Soluzione esame 10/01/2025 | ||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Domanda | Risposta | |||||||||||||||||||||||||||||||||||||||||
| 1 |
L'interfaccia grafica di un programma Java contiene un singolo pulsante, alla pressione del quale viene stampata (con una semplice println) la stringa "ok". Dire quante e quali classi sono necessarie, quanti e quali metodi, e quale metodo di quale classe contiene l'istruzione di stampa. |
Il programma deve contenere almeno due classi, una per disegnare l'interfaccia e una per gestire gli eventi. La prima contiene il metodo main(), la seconda il metodo actionPerformed(). L'istruzione di stampa va nella seconda. |
||||||||||||||||||||||||||||||||||||||||
| 2 |
Scrivere la tabella di verità di un circuito che realizza la seguente funzione: vale uno se un numero compreso fra zero e sette è divisibile per tre. |
Il primo passo è rappresentare il dato di input, che è un numero compreso fra zero e sette. Servono quindi tre bit di ingresso, indicati per esempio con a, b, e c. L'uscita è un singolo bit. L'uscita u vale 1 quando i tre ingressi rappresentano i valori 0, 3 oppure 6. Questi valori in binario sono a=0, b=0, c=0 per zero, a=0, b=1, c=1 per tre e a=1, b=1, c=0 per sei. In tutti gli altri casi l'uscita vale zero.
|
||||||||||||||||||||||||||||||||||||||||
| 3 |
Mostrare le tre rappresentazioni del seguente grafo: insieme di archi, insiemi di successori, matrice di adiacenza.
|
|
||||||||||||||||||||||||||||||||||||||||
| 4 |
Scrivere l'espressione regolare che accetta tutte e sole le stringhe di caratteri a,b,c che contengono in prima e in ultima posizione un carattere uguale, e che non contengono nessuna a in nessuna altra posizione. |
Le stringhe accettate sono solo quelle che iniziano e finiscono con a, quella che iniziano e finiscono con b e quelle che iniziano e finiscono con c. I caratteri in mezzo sono tutti tranne a. a[^a]*a|b[^a]*b|c[^a]*c |
||||||||||||||||||||||||||||||||||||||||
| 5 |
Spiegare la differenza fra problemi indecidibili e intrattabili. Fornire un esempio di problema indecidibile ma trattabile e di uno decidibile ma intrattabile, oppure dire perchè non esiste. |
I problemi indecidibili sono quelli che non solo risolubili da nessun algoritmo. Quelli intrattabili non sono risolubili da un algoritmo che impiega tempo polinomiale. Non esiste quindi nessun problema indecidibile che sia trattabile, perche' sarebbe un problema che al tempo stesso ha un algoritmo risolutivo che impiega tempo polinomiale ma non ha nessun algoritmo risolutivo. Al contrario, esistono numerosi problemi che hanno algoritmi risolutivi ma nessuno di questi impiega tempo polinomiale. Un esempio è il problema dei ciottoli, quello di verificare l'esistenza di una strategia vincente. Questo problema è infatti risolubile, ma solo da algoritmi che impiegano tempo esponenziale e quindi non polinomiale. |
||||||||||||||||||||||||||||||||||||||||
NOTA: risposte prive di esauriente motivazione (es. i passaggi delle operazioni numeriche) verranno considerate nulle.