Newsgroup: it.comp.lang.visual-basic
Titolo: ?] Do..loop o for..next

Che differenza c'e' fra i due .... velocita'? spazio di memoria? o che altro
ciao joe


la terza, ovvero il modo di usarli e gli scopi per cui esistono
in linea di massima do...loop lo devi usare nei casi in cui non conosci a
priori il numero di volte che devi eseguire un ciclo, oppure quando hai
più condizioni (situazione che rimanda al punto precedente) di uscita dal
ciclo
nel caso del for...next sai fin dall'inizio quante volte questo ciclo sarà
eseguito
e quindi lo dovresti usare in questi casi

 che altro ciao joe
Beh in primo luogo dire che uno ti fa un ciclo N volte punto e basta (FOR)
l'altro finchè non si avvera una determinata condizione quindi...
(DO...LOOP)
Alex

 sarà eseguito
exit for? Incremento del contatore all'interno della routine? :-)


non dare suggerimenti di cui poi ti faranno pentire ;-))
nel post ho volutamente tralasciato la possibilità
di interrompere il ciclo con exit for o di alterarne l'esecuzione
con incrementi/decrementi del contatore perchè,
secondo me, non riguradano le modalità d'uso standard del for next,
poi si sa che più o meno tutto è possibile e che for next e do loop sono
interscambiabili
-- 
bye BlackMagic
ICQ# 85485468

 sono interscambiabili
Io avrei detto il numero "massimo" di cicli è noto... non il numero di
clicli che verranno effettuati: se ad esempio il mio è un ciclo di ricerca
su n valori (n noto) mi permetterai di uscire dal loop una volta trovato
l'elemento no? Non ci vedo nulla di non standard...
hth


hai di nuovo perfettamente ragione, dato che il linguaggio
supporta le istruzioni di exit non c'è niente di non standard,
ma scrivendo la risposta hai usato "uscire dal loop" e non dal
"for" ;-)
 quello che volevo dire è che se hai delle condizioni
di uscita "variabili" è più consono e naturale l'uso del do...loop,
oppure, meglio ancora, io per comodità uso il do...loop quando
so che da un ciclo posso uscire in qualsiasi momento e
il for...next quando so che quel ciclo lo devo eseguire n volte
e non devo controllare altri valori oltre l'indice

 e non devo controllare altri valori oltre l'indice
Per questioni di performance è meglio utilizzare un for ogni qualvolta il
numero massimo di iterazioni è noto: faccio un esempio: select da un
database, una volta noto il recordcount è moooooolto più veloce un ciclo for
i=1 to recordcount rispetto a un do while not .EOF dato che nel caso di un
for c'è un confronto tra numeri mentre nel caso di unn .EOF... beh...
insomma c'è di mezzo qualche strato di software in più ;-)
hth

Allora...
Il ciclo for viene utilizzato soltanto per eseguire N cicli.
Il ciclo Do..Loop serve per eseguire almeno una volta o piů il ciclo, se la
condizione č vicina al Loop, e zero o piů volte se la condizione č vicina al
Do. Tieni presente che il test della condizione in Do...Loop viene
effettuata ad ogni iterazione ciclica, mentre nel ciclo For...next questo
non avviene.
Potrebbe essere piu veloce il For...Next ma non č detto.
--------------------------------
Inviato via 
http://usenet.libero.it


mi pare che alla fine stiamo convergendo verso la stessa soluzione,
ovvero preferire for...next quando conosci il numero di iterazioni
e il do...loop negli altri casi
poi, personalmente, cerco di evitare di usare istruzioni
come exit for e nei casi in cui sò che può succedere di terminare
il ciclo con un exit uso il do...loop
per le performance, se non mi sbaglio, un exit for viene visto
come un salto incondizionato e se è così ti perdi le funzioni di prediction
del processore, hai lo svuotamento della cache ecc...


 e il do...loop negli altri casi
No... lo scenario sopra descritto prevedeva un exit for... pensa ad esempio
ad una ricerca su recordset (si lo so si può fare con una select, è per
semplificare)...


in questo caso te avresti usato un for...next + exit for
io avrei usato un do...loop
poi con i recordset non sempre hai la recordcount a disposizione ;-))

 poi con i recordset non sempre hai la recordcount a disposizione ;-))
select count? ;-)