Newsgroup: it.comp.java
Titolo: [newbie in java]: quando while e quando for?

        salve a tutti voi.
sarei interessato a capire meglio quando sia più utile usare un ciclo while
o un for in un programma... sul manuale Java2 che sto utilizzando viene
appunto sottolineata l'importanza di non scrivere cicli FOR inutili.
Personalmente non capisco bene quale sia la grossa differenza, visto che
comunque entrambi i comandi eseguono ciclicamente un gruppo di istruzioni se
una data condizione è verificata.
qualcuno sa darmi qualche delucidazione in merito?
grazie davvero tante e buona giornata.
Bd

 qualcuno sa darmi qualche delucidazione in merito?
solitamente il for si utilizza quando si sa a priori il *numero* delle 
iterazioni da effettuare, il while altrimenti.....
Kali

 iterazioni da effettuare, il while altrimenti.....
Grazie tante!
Bd

while esegue un ciclo finchè una condizione non viene soddisfatta.
Questo vuol dire che potrebbe non essere verificata mai e quindi rimanere in
ciclo all'infinito.
Questo caso è tipico nel meto run() di un Thread.
Difatti si mette in esso un ciclo infinito per far rimanere sempre attivo
quel Thread.
es:
 while(true)    //Ciclo infinito
{
}
while(campoNome.getText().trim().equal(""))  // Esempio un pò a cacchio ma
che fa capire.
{
}
Il ciclo for esegue delle operazioni tante volte quante sono possibili.
Essenzialmente è un contatore, che specifica il numero di volte che deve
essere fatto quel ciclo.
While permette di eseguire un ciclo in base ad un test e non dipende da
un'indice.
es:
for(int idx=0; idx<100; id++) // esegue questo ciclo 100 volte
{
}

  |
|  Delete WORLD from address, to send |
+-------------------------------------+

 }
allo stesso modo posso fare
int idx=0;
while (idx < 100)
{
    /* while body */
    idx++
}
Quindi come vedi è solo una questione di stile, in pratica entrambi 
posso essere scambiati, ma non per ottenere un programma "stiloso"
Kali

 ha scritto nel messaggio
news:a1f0us$6bro$1...@stargate1.inet.it...


Hai ragione, non conoscevo queste caratteristiche di Java.
Del ciclo while usato a mo di for era ovvio e spesso lo vedo utilizzare.
Ma ignoravo l'uso del for in questa maniera e ignoravo la sintassi che hai
spiegato nella tua reply.
Personalmente preferisco tirare fuori dal for le chiamate a funzioni perchč
a mio avviso rendono il ciclo meno performante.
Cosě come non amo pensare ad un ciclo for come se fosse una while.
Anche perchč questi costrutti sono tipici anche di altri linguaggi ma non
credo che altri linguaggi adottino queste caratteristiche, quindi prefirisco
spiegarli in base alle spiegazioni che i vecchi libri di Informatica danno.
Mi piacerebbe una tua idea sul fatto di insegnare ai principianti (io per
primo), prima quelle che sono le basi che l'informatica insegna su un
determinato argomento e poi come queste sono riapplicate nei vari linguaggi.
Ciao e grazie del chiarimento.

 del codice e di stile.
Non capisco allora perché nel JAVA2 - edito da Apogeo di Horstmann pag 235
ci sia scritto:
"Un ciclo for è un'espressione idiomatica che individua un ciclo while di
forma particolare. Si attiva un contatore che lavora dall'inizio alla fine,
segnando incrementi costanti [CUT] Il compilatore non può impedirvi di
scrivere cicli for stupidi. Questi cicli funzionano ma sono indubbiamente
scadenti. Per le iterazioni che non si adattano alla struttura del for usate
un ciclo while".
Iterazioni che non si adattano... boh?! Mi pare di capire che quindi ci
siano determinate e precise condizioni nelle quali  il ciclo for si debba
usare e in altre no! O forse sono io che sbaglio? E' davvero solo una
questione di "stile"?
Bd

 ha scritto nel
messaggio news:a1f8gr$qh9no$1...@ID-71294.news.dfncis.de...


 due espressioni).
beh la discussione puo' nascere dal fatto: perchè
il for è un while particolare
e non
il while è un for particolare
?
Penso che la risposta è una sola: i libri di Apogeo fanno acqua da tutte 
le parti (o magari puo' essere un'imprecisione di traduzione, altra cosa 
di cui sono pieni i libri Apogeo)
Kali

 dimostrare che con il for fai tutto quello che fanno gli altri cicli.
Mille grazie, sei stato davvero molto esplicativo.
Una cosa allora ti chiedo: in questa riga che hai scritto:
for(;!trovato;)
vuol dire che non esiste la condizione di partenza ma il ciclo si ripete
fino a quando trovato non diventa true giusto? te lo chiedo perché una
sintassi del genere non mi era ancora capitata di vederla! :)
Bd

 > Non guardare cosa fanno i cicli (è un esempio stupido). E' solo per


 ha scritto nel messaggio
news:3C3B3029...@email.com...


 Ho dato fondo a tutti i miei ricordi universitari...di più ninzo' :-)
io concordo pienamente. rimane il fatto che l'affermazione fatta dal 
libro di Apogeo è parzialmente errata (o se vuoi incompleta).... avrebbe 
dovuto spiegare cio' che hai detto te qua sopra....
Kali