Gas perfetto per la 4E e compito per venerdì 31 marzo 2017

Progetto Eclipse: GasPerfetto.zip

Per casa: realizzare un progetto che simuli il lancio di un proiettile in un campo gravitazionale. Deve essere presente a sinistra un pannello in cui poter scegliere le coordinate iniziali x0, y0, la velocità iniziale v0 e l’angolo di lancio. Premendo il testo Vai deve partire la simulazione e terminare automaticamente quando il proiettile tocca terra. È richiesto l’utilizzo del doppio buffering per evitare lo sfarfallio nell’animazione come visto a scuola nell’esempio GasPerfetto.

Vettori per la 1ª A

1) Una carovana in un deserto si sposta 150 km in direzione Nord 15° Ovest. Quindi compie un secondo spostamento di 100 km esattamente verso Nord ed infine un ultimo spostamento di 80 km in direzione Nord 25° Est. Calcola le componenti cartesiane dei 3 spostamento e lo spostamento totale. Calcola anche il modulo dello spostamento totale e la sua inclinazione in ° rispetto alla direzione Nord.

2) Due forze rispettivamente di 10 N e 15 N sono applicate nello stesso punto. Formano tra loro un angolo di 20°. Calcola la forza risultatante in componenti cartesiane e in modulo, collocando il primo vettore nella direzione positiva dell’asse X.

Effetti della non sincronizzazione nei Thread

Realizzare una classe ContoCorrente e due sottoclassi di Thread: BancomatA e BancomatB, che accedono allo stesso conto corrente. Simulare la situazione seguente: A e B prelevano quasi contemporaneamente dallo stesso conto corrente e non essendoci la sincronizzazione attivata riescono a prelevare una cifra superiore a quella disponibile sul conto.

Senza la sincronizzazione
Richiesto un prelievo da € 800.0
Richiesto un prelievo da € 750.0
Prelevato l’importo di € 750.0
Prelevato l’importo di € 800.0
Il saldo corrente è ora di € 200.0
Il saldo corrente è ora di € -550.0

Con la sincronizzazione
Richiesto un prelievo da € 800.0
Prelevato l’importo di € 800.0
Il saldo corrente è ora di € 200.0
Richiesto un prelievo da € 750.0
Non è possibile prelevare: il saldo è di € 200.0

Progetto Eclipse: ContoCorrente.zip

Scritta scorrevole (esempio sull’utilizzo di synchronized)

ScrittaScorrevole.java

public class ScrittaScorrevole {

	public static void main(String[] args) {
		new NegozioChiuso("21 agosto 2017").start();
		new NegozioAperto("22 agosto 2017").start();
	}
}

NegozioAperto.java

public class NegozioAperto extends Thread {

	private String data;

	public NegozioAperto(String data) {
		this.data = data;
	}

	@Override
	public void run() {
		Messaggio.scrive("Il negozio aprirà il " + data);
	}
}

NegozioChiuso.java

public class NegozioChiuso extends Thread {

	private String data;

	public NegozioChiuso(String data) {
		this.data = data;
	}

	@Override
	public void run() {
		Messaggio.scrive("Il negozio resterà chiuso fino al " + data);
	}
}

Messaggio.java

public class Messaggio {
	
	public static synchronized void scrive(String s) {
		for (int i=0; i<s.length(); i++) {
			System.out.print(s.charAt(i));
			try {
				Thread.sleep(100);
			} catch (InterruptedException e) {
			}
		}
		System.out.println();
	}
}

Space Invaders


Ritagliare e ridimensionare le 3 immagini dei mostricciattoli del gioco Space Invaders e creare 3 sottoclassi di JLabel con nomi JAlien1, …2, …3. Collocare i vari alieni su varie file all’interno di una sottoclasse di JPanel chiamato JSpace con sfondo nero. Ogni alieno deve avere un movimento autonomo: 1 – deve scendere zigzagando a caso verso destra e verso sinistra, 2 – deve muoversi verso il basso ad intervalli di tempo casuali compresi fra 1 e 10 secondi, 3 – deve spostarsi sempre verso il basso e a destra ad intervalli regolari.