Stampa dei valori positivi di una funzione

Sia data una funzione da interi a interi, per esempio x*x-10*x+2. Si scriva un programma Java che stampi i soli valori positivi che la funzione assume in un certo intervallo, per esempio da -100 a +100.

Il problema si può riformulare cosí: per ogni valore di x da -100 a +100, se la funzione assume valore positivo, si stampi il valore. In termini di programmazione, è quindi necessario un ciclo in cui x va da -100 a +100; in ogni passo, si controlla se il valore della funzione è positivo oppure no, stampando eventualmente il valore. Il programma SoloPositivi.java risolve il problema in questo modo.

/*
  Stampa i valori positivi che una funzione assume
  in un certo intervallo.
*/

class SoloPositivi {
  public static void main(String[] args) {
    int x,f;

    for(x=-100; x<=100; x=x+1) {
      f=x*x-10*x+2;
      if( f>=0 ) {
        System.out.println("Per x="+x+" la funzione vale "+f);
      }
    }
  }
}

L'unica cosa nuova di questo programma rispetto a quelli precedenti è che all'interno del ciclo, oltre a istruzioni semplici, compare anche una istruzione condizionale. In effetti, all'interno di un ciclo possono apparire istruzioni qualsiasi, incluse istruzioni condizionali, e anche altri cicli (questo risulta utile sulle matrici, che si vedranno più avanti). Lo stesso vale anche per le istruzioni condizionali: all'interno si possono mettere altre istruzioni condizionali, e anche dei cicli.

Se invece di stampare i soli valori positivi si fossero voluti stampare solo i valori pari, il programma sarebbe stato identico, con la sola variante che la condizione diventava f%2==0, come nel programma SoloPari.java.

/*
  Stampa i valori pari che una funzione assume
  in un certo intervallo.
*/

class SoloPari {
  public static void main(String[] args) {
    int x,f;

    for(x=-100; x<=100; x=x+1) {
      f=x*x-10*x+2;
      if( f%2==0 ) {
        System.out.println("Per x="+x+" la funzione vale "+f);
      }
    }
  }
}

Infatti, f%2 è il resto della divisione per due, ed è quindi zero se f è pari.