Nome
                       
Cognome
                       
Matricola
          
Soluzione esame 01/07/2024
DomandaRisposta
1

Scrivere un semplice programma Java che apre una finestra con un pulsante. Quando si preme il pulsante, viene stampata la scritta "Premuto!"

import javax.swing.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

class Ascoltatore implements ActionListener {
	@Override
	public void actionPerformed(ActionEvent e) {
		System.out.println("Premuto!");
	}
}

public class Pulsante {
	public static void main(String[] args) {
		JFrame finestra;
		JButton premuto;
		Ascoltatore ascolta = new Ascoltatore();

		finestra = new JFrame();
		premuto = new JButton("premere");
		finestra.add(premuto);
		premuto.addActionListener(ascolta);

		finestra.pack();
		finestra.setVisible(true);
	}
}
2

Convertire il numero 12.52 in binario, virgola fissa con quattro bit dopo la virgola.

Conversione della parte intera per divisioni successive:

12 / 2 = 6 resto 0
 6 / 2 = 3 resto 0
 3 / 2 = 1 resto 1
 1 / 2 = 0 resto 1

Quindi 12 convertito in binario è 1100

Conversione della parte frazionaria per moltiplicazioni successive:

.52 * 2 = 1.04 parte intera 1
.04 * 2 = 0.08 parte intera 0
.08 * 2 = 0.16 parte intera 0
.16 * 2 = 0.32 parte intera 0

La parte frazionaria è quindi .1000 se limitata a quattro bit, come richiesto.

Il numero 12.52 è quindi 1100.1000 in binario con quattro bit frazionari.

3

Mostrare un esempio di grafo che contiene sette archi, e due sottografi indotti da quattro nodi ciascuno, il primo con cinque archi e il secondo con tre.

[indotto-03.fig]

In rosso e in verde sono segnati i due sottografi indotti.

4

Scrivere l'espressione regolare che collima con le stringhe costituite solo dei caratteri abcd e che contengono una sequenza di esattamente tre a consecutive. La sequenza potrebbe trovarsi anche all'inizio o alla fine della stringa, oltre che nel mezzo. La stringa può contenere anche altre sequenze di a consecutive, ma almeno una deve essere di lunghezza tre e non di più.

L'espressione regolare aaa collima con tutte le sequenze di tre a, anche seguite o precedute da altre a. La domanda richiede che questo non succeda, e quindi il carattere prima o dopo non deve essere una a.

L'espressione regolare [bcd]aaa[bcd] collima con le stringhe di tre a consecutive precedute e seguite da una lettera diversa da a. Non collima però con le sequenze di tre a che si trovano all'inizio o alla fine. E nemmeno con le sequenze di tre a che non sono precedute né seguite da altri caratteri. Per queste occorre fare tre casi a parte.

^aaa$|^aaa[bcd]|[bcd]aaa[bcd]|[bcd]aaa$

5

Dire cos'è la notazione O-grande, a cosa serve e perchè è definita in quel modo.

La notazione O-grande misura il costo asintotico dei programmi: non il numero di operazioni eseguito, ma come questo numero aumenta rispetto alla grandezza dei dati di input.

Un programma ha costo O(f(n)) se

  • il suo tempo di esecuzione è t(n)
    dove n è la grandezza dell'input
  • esistono due costanti a e b tali che:
    t(n) < a×f(n)+b

È definita in questo modo per trascurare le componenti di minore entità e lasciare solo la parte di costo che cresce di più all'aumentare di n.

NOTA: risposte prive di esauriente motivazione (es. i passaggi delle operazioni numeriche) verranno considerate nulle.