Stampa dei valori di una funzione

Si vogliono stampare su schermo i valori di una funzione a numeri interi. Sia x2+10x-2 questa funzione: vogliamo stampare i valori che assume per tutti i valori interi da -50 a +100. Un programma Java per fare questo potrebbe essere fatto in questo modo: si definiscono due variabili x e f, poi si assegna x=-50, si calcola f e si stampa. Poi si ripete per x=-49, ecc:

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

    x=-50;
    f=x*x+10*x-2;
    System.out.println("f vale "+f);

    x=-49;
    f=x*x+10*x-2;
    System.out.println("f vale "+f);

    ...

    x=100;
    f=x*x+10*x-2;
    System.out.println("f vale "+f);
  }
}

Come è facile immaginare, il programma completo (senza i puntini ...) è piuttosto lungo: Valori.java è composto di 458 linee di testo. È chiaramente impensabile usare programmi di questo genere per risolvere il problema. Se si pensa che potrebbero verificarsi casi in cui si vuole la stampa di valori da -1000 a +2000, risulta evidente che occorre qualche meccanismo che permetta di dire all'interprete che certe istruzioni vanno ripetute più volte.

Il programma si semplifica notevolmente grazie ai cicli for. Quello che si richiede è il calcolo della funzione, e la sua stampa, per valori di x crescenti, in cui si parte dal valore -50 e si arriva al valore 100. Le due istruzioni che vanno ripetute sono in questo caso:

   f=x*x+10*x-2;
   System.out.println("f vale "+f);

Queste due istruzioni vanno ripetute una prima volta con x=-50, poi x=-49, poi x=-48, eccetera, fino a x=100. Il programma ValoriFor.java contiene un ciclo for al cui interno ci sono queste due istruzioni.

/*
  Stampa i valori di una funzione in un intervallo
*/

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

    for(x=-50; x<=100; x=x+1) {
      f=x*x+10*x-2;
      System.out.println("f vale "+f);
    }
  }
}

Per esercizio, si può verificare che scrivendo le istruzioni del ciclo in modo esplicito si ottiene esattamente il programma di prima.