|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: May 2003
Città: udine
Messaggi: 1625
|
aiuto su cicli annidati for [JAVA]
chi mi spiega bene come funziona questo programma?
for (int r = 1; r <= n; r++) { // r e' la riga for (int c = 1; c <= r; c++) // c e' la colonna System.out.print("*"); System.out.println(); |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Feb 2003
Città: fra casa e lavoro
Messaggi: 1061
|
assumendo che al fondo ci sia una parentesi graffa, disegna un triangolo rettangolo con i cateti di lato n
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: May 2003
Città: udine
Messaggi: 1625
|
si lo so
ma nn capisco come funziona.... |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Feb 2003
Città: fra casa e lavoro
Messaggi: 1061
|
come non capisci?
primo for: è un semplice ciclo che parte da 1 arriva fino ad n; è un ciclo sulle righe che verranno stampate secondo for: viene eseguito ad ogni loop sul primo for; parte da 1 e arriva fino al valore di r; stampa c=r asterischi; al termine del for si fa una println per andare a capo... sinceramente non vedo nulla di strano é_è |
|
|
|
|
|
#5 | |
|
Bannato
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
|
Re: aiuto su cicli annidati for [JAVA]
Quote:
Il secondo ciclo (interno al primo) incrementa "c" di 1 finchè c non diventa uguale a "r". L'alternativa alla spiegazione di ri è quello che con fatica mi accingo a fare Supponiamo di far "girare" quel pezzo di codice con "n = 5": Codice:
1° passaggio (del primo ciclo "for") r=1: (ciclo "esterno") r(1) <= n (5) -> vero, esegue il blocco del ciclo "esterno" che a sua volta contiene un altro ciclo: c=1: (ciclo "interno", 1° passaggio) c (1) <= r (1) -> vero, esegue il blocco del ciclo "interno" il ciclo interno stampa ->"*" c=2: (sempre ciclo "interno", 2° passaggio) c(2) <= r(1) -> falso, il ciclo interno si ferma, il "controllo" passa la ciclo esterno. il ciclo esterno stampa->"nuova linea" 2° passaggio( del primo ciclo); r=2: (esterno) r(2) <= n(5) -> vero, esegue il blocco del ciclo esterno... c=1: (interno, 1° passaggio) c(1) <= r(2) -> vero, esegue il "suo" blocco: il ciclo interno stampa ->"*" c=2: (interno, 2° passaggio) c(2) <= r(2) -> vero, esegue il blocco: il ciclo interno stampa ->"*" c=3: (interno, 3° passaggio) c(3) <= r(2) -> falso, il ciclo interno si ferma... il ciclo esterno stampa ->"nuova linea" 3° passaggio (sempre del primo ciclo for) r=3: (esterno) r(3) <= n(5) -> vero, esegue il blocco del ciclo "esterno", che contiene il ciclo interno c=1: (interno, 1° passaggio) c(1) <= r(3) -> vero, allora.... il ciclo interno stampa ->"*" c=2: (interno, 2° passaggio) c(2) <=r(3) -> vero... "*" c=3: (interno, 3°) c(3) <= r(3) -> vero... "*" c=4: (interno 4°) c(4) <= r(3) -> falso...esce dal ciclo interno il ciclo esterno stampa ->"nuova linea" 4° passaggio, ciclo for esterno: r=4: (esterno) r(4) <= n(5) vero... c=1: (interno, 1°) c(1) <= r(4) -> vero... "*" c=2: (interno, 2°) c(2) <= r(4) -> vero... "*" c=3: (interno, 3°) c(3) <= r(4) -> vero... "*" c=4: (interno, 4°) c(4) <= r(4) -> vero... "*" c=5: (interno, 5°) c(5) <= r(4) -> falso!...fine ciclo interno. il ciclo esterno stampa ->"nuova linea" 5° passaggio del ciclo for esterno: r=5: r(5) <= n(5) -> vero... c=1 (interno, 1°) c(1) <= r(5) vero... "*" c=2 (interno, 2°) c(2) <= r(5) vero... "*" c=3 (interno, 3°) c(3) <= r(5) vero... "*" c=4 (interno, 4°) c(4) <= r(5) vero... "*" c=5 (interno, 5°) c(5) <= r(5), vero... "*" c=6 (interno, 6°) c(6) <= r(5), falso!...esce dal ciclo interno... il ciclo esterno stampa ->"nuova linea" 6° passaggio del ciclo esterno: r=6: r(6) <= n(5) falso!, il ciclo esterno non esegue il suo blocco (e quindi non esegue il ciclo interno) e la faccenda finisce. Il risultato a video è: * ** *** **** ***** Ultima modifica di PGI : 21-11-2003 alle 02:13. |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: May 2003
Città: udine
Messaggi: 1625
|
grazie! adesso ho capito benissimo!
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:27.


















