Questo tipo di problema si può risolvere anche senza usare le procedure. Per esempio, per stampare il valore della prima espressione, si potrebbe fare:
int c;
c=a-b;
if( c>=0 ) {
System.out.println(c);
}
else {
System.out.println("Valore negativo");
}
Questo andrebbe poi ripetuto anche per le altre espressioni da
valutare. Il programma completo contiene quindi quattro volte
la intera istruzione condizionale, esattamente identica. Si
tratta quindi di una situazione in cui una sequenza di istruzioni
si ripete più volte in un programma, per cui conviene
``mettere a fattor comune'' e usare una procedura.In questo caso, la procedura dovrebbe ricevere un valore intero (il valore di una delle espressioni); questo valore viene stampato oppure no a seconda se è positivo oppure no. Dal momento che la procedura riceve un valore intero, occorre specificare un nome di variabile intero in cui il dato che il programma manda viene memorizzato. L'inizio della procedura quindi è:
static void stampa(int e)Si è scelto il nome stampa per questa procedura. Le istruzioni associate devono stampare il valore memorizzato in e, ma soltanto se è positivo. In caso contrario, si stampa Valore negativo. La procedura completa è quindi come segue:
static void stampa(int e) {
if( e>=0 ) {
System.out.println(e);
}
else {
System.out.println("Valore negativo");
}
}
Per poter eseguire le istruzioni della procedura è necessario
che all'interno del programma principale ci siano delle chiamate
di procedura, ossia delle istruzioni stampa(...). Fra
parentesi ci va il valore che il programma manda alla procedura.
È possibile mettere tra parentesi un numero intero
(per esempio 12), una variabile (per esempio a), o anche
una espressione. Nel nostro caso, dato che vogliamo stampare il
valore di una espressione come a-b possiamo semplicemente
scrivere stampa(a-b). Questo equivale a calcolare il
valore della espressione a-b, mettere il risultato nella
variabile e locale della procedura stampa, ed
eseguire le istruzioni della procedura. Questo è esattamente
quello che serve (calcolare il valore della espressione e
stamparlo se positivo).La stessa cosa va fatta per le altre espressioni da stampare. Il programma completo StampaSePositivo.java è riportato qui sotto.
/*
Stampa il valore di alcune espressioni, ma solo
se e' positivo.
*/
class StampaSePositivo {
static void stampa(int e) {
if( e>=0 ) {
System.out.println(e);
}
else {
System.out.println("Valore negativo");
}
}
public static void main(String[] args) {
int a=12, b=4;
stampa(a-b);
stampa(a-b*b);
stampa(-a/b);
stampa(a/b);
}
}