
// Passaggio parametri

public class Esempio07 {
	static int x;
	
	// Nota: ho usato il nome x per l'argomento.
	// Questo mi "adombra"/"nasconde" la definizione della variabile di sopra
	static void procedura1(int x) {
		System.out.println("procedura1: " + x);
	}
	
	// Questa procedura tenta di modificare il suo argomento
	static void procedura2(int y) {
		y--; // Decremento y
		System.out.println("procedura2: " + y);
	}
	
	static void procedura3(int y) {
		// Posso chiamare altre procedure
		System.out.println("procedura3: inizio");
		procedura1(y);
		procedura1(y);
		System.out.println("procedura3: fine");
	}
	
	
	public static void main(String[] args) {
		x = 10;
		
		procedura1(5); // Stampa 5, non 10
		
		procedura2(x); // Del tutto equivalente a procedura2(10) 
					   // Stampa 9, ma x rimane uguale a 10
		System.out.println("main: x=" + x); // Stampa 10
		
		// Il meccanismo di sopra si chiama "passaggio per valore"
		// Quando passo x, passo solo il valore di x. Anche se la procedura
		// modifica la sua variabile argomento, questo non ha effetto
		// su altre variabili.
		
		procedura3(7);
	}

}
