Risultati da 1 a 5 di 5

Discussione: Esempio ciclo for

  1. #1
    syrmos è offline Nuovo Iscritto
    Data Registrazione
    Feb 2012
    Messaggi
    3

    Esempio ciclo for

    Innanzitutto salve a tutti del forum.
    Sono con qualche settimana di java sulle quindi abbiate pazienza se vi tedierò con domande piu k banali...
    Più cerco di entrar nello specifico studiando riga x riga la sintassi del codice e piu mi sembra di capirci ancora meno di quando ho cominciato...mah..
    Comunque veniamo alla mia domanda: riguarda il ciclo for su un esempio k ho trovato su questo sito

    class ProvaFor2 {
    public static void main(String args[]) {
    for (int i=0, j=2; i<10; i++, j++) {
    System.out.println("i=" + i + " e j=" + j);
    }
    }
    }

    La domanda è molto banale ma se ho assegno 2 variabili xkè ho un solo valore come limite massimo?

  2. #2
    Slyfer è offline Utente del Forum
    Data Registrazione
    Dec 2010
    Messaggi
    12
    Citazione Originariamente Scritto da syrmos Visualizza Messaggio
    La domanda è molto banale ma se ho assegno 2 variabili xkè ho un solo valore come limite massimo?
    Ciao, benvenuto sul forum.

    La domanda che hai fatto non ha una risposta specifica, ma dipende dal contesto.

    Ci possono essere casi in cui hai due varibili da incrementare ma l'uscita del for dipende da solo una delle due: es ho una lista di N e una di N + X, con X > 0 e voglio stampare i primi N elementi delle liste usando j e i ma ovviamente non posso avere j maggiore di N.

    Ci sono casi invece in cui voglio stampare N elementi di due liste, ma non so se la seconda lista ha più elementi della prima, quindi mi serve una condizione di uscita più complessa:

    for(i = 0, j = 0; i < N && j < M; j++,i++){
    ...................
    }

    dove N e M sono le dimensioni delle liste.

    Cmq in generale è molto difficile nella pratica avere bisogno di due variabili da incrementare (almeno io non le ho mai usate), perchè puoi fare le stesse cose con una sola.

    Spero di esserti stato di aiuto.

  3. #3
    syrmos è offline Nuovo Iscritto
    Data Registrazione
    Feb 2012
    Messaggi
    3
    Innanzitutto grazie x la risposta..
    il problema però k essendo troppo fresco di java quando nell'esempio mi parli di liste purtroppo non le ho ancora affrontate,quindi provo a spiegarti alla mia maniera se ho capito:

    es ho una lista di N e una di N + X, con X > 0 e voglio stampare i primi N elementi delle liste usando j e i ma ovviamente non posso avere j maggiore di N.
    Quindi avrei potuto scrivere:
    for (int i=0,J=0; i>n;i--,J--)

    Riguardo invece all'esempio che ti avevo proposto:
    Codice:
    class ProvaFor2 {
    public static void main(String args[]) {
    for (int i=0, j=2; i<10; i++, j++) {
    System.out.println("i=" + i + " e j=" + j);
    }
    }
    }
    La variabile "i" si confronta con il suo limite massimo (i<10) e se è vera "i" viene incrementato (e quindi stampato).
    La variabile "j" invece con quale limite massimo si confronta dato che non è specificato?Presumo che il confronto avvenga con l'unico limite presente cioè "i<10", ma se così fosse non dovrebbe stampare solo 8 numeri visto che la variabile è inizializzata a due:
    J=2
    2<10
    j++
    j=3
    3<10
    j++
    ..
    j=11
    11<10???
    j++??

  4. #4
    Slyfer è offline Utente del Forum
    Data Registrazione
    Dec 2010
    Messaggi
    12
    Citazione Originariamente Scritto da syrmos Visualizza Messaggio
    for (int i=0,J=0; i>n;i--,J--)
    le istruzioni del for non vengono mai eseguite perchè se n > 0 e i parte da 0 non entri nel for.

    Per

    Citazione Originariamente Scritto da syrmos Visualizza Messaggio
    class ProvaFor2 {
    public static void main(String args[]) {
    for (int i=0, j=2; i<10; i++, j++) {
    System.out.println("i=" + i + " e j=" + j);
    }
    }
    }

    mi sa che non ti è chiaro come funziona il for....

    Ci sono tre set di istruzioni separate da ; e sono

    inizializzazione; condizione di uscita; azioni eseguite al termine del ciclo

    quindi per il caso in questione

    inizializzazione
    i = 0;
    j = 2;

    giro 1
    check uscita 0 < 10 -> si
    eseguo istrizioni del for (in questo caso stampa)
    i = 1;
    j = 3;

    giro 2
    check uscita 1 < 10 -> si
    eseguo istrizioni del for (in questo caso stampa)
    i = 2;
    j = 4;
    ............

    giro 10
    check uscita 9 < 10 -> si
    eseguo istrizioni del for (in questo caso stampa)
    i = 10;
    j = 12;

    giro 11
    check uscita 10 < 10 -> no
    uscita

    Prova ad eseguirlo, se non ho fatto errori dovrebbe essere così

  5. #5
    syrmos è offline Nuovo Iscritto
    Data Registrazione
    Feb 2012
    Messaggi
    3
    Quindi se non capito male nel ciclo for posso avere:
    diversi parametri di inizializzazione;
    una sola condizione di uscita a cui fanno riferimento i diversi parametri di inizializzazione;
    diverse azioni eseguite al termine del ciclo quante sono i parametri iniziali.

    Ho provato ad aggiungere un altro valore (nel mio caso "c") e funziona

    Codice:
    class conta {
    public static void main(String args[]) {
    for (int i=0, j=2, c=4; i<10; i++, j++,c++) {
    System.out.println("i=" + i + "j=" + j +"c=" + c );
    }
    }
    }
    Chiaramente la condizione di uscita (sempre nel mio caso) è indifferente da chi viene inizializzata (se "i" "j" o "c").

    Grazie

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •