Newsgroup: it.comp.lang.visual-basic
Titolo: [?] (Do While Not) e non (Do Until)

[Curiosità]
Perchè viene usato quasi sempre Do While Not al posto di Do Until?
C'è una differenza?
Grazie

C'è una differenza?
Mah, personalmente preferisco l' uso di Do Until,
perche' con Do While Not mi sembra di ragionare al contrario,
ma credo che sia da lasciare al gusto personale.
ciao, hal

C'è
una differenza?
Ora che mi ci fai pensare...non lo so in base a che si
sceglie uno o l' altro ciclo, fatto stà che è la stessa cosa. Io per
esempio credo di usare più Do While Not, ma credo che poi dipenda quello
che devi fare anche se...ripeto, che io sappia non c'è differenza nell'
usare uno o l' altro. Magari chi ha svulippato il vb si è dovertito un po,
ha fatto due cicli simili (il segreto rimarrà nella tompa del
porgrammatore) come del resto ci sono due sintassi per scrivere una if,
perchè? Te lo sei mai chiesto? :))
--------------------------------
Inviato via 
http://usenet.iol.it
 


quali sarebbero queste 2 sintassi ?? io conosco solo
if (condizione) then
    corpo
end if

 esempio credo di usare più Do While Not, ma credo che poi dipenda quello
[...]

end if
E quello che sonosci te non vuol dire che č
solo quello che c'č!! Esiste anche IIF, f1 per credere :))
Saluti...


codice altrimenti sì
Uhm, credo che intendesse Do While Not ... Loop vs Do Until ... Loop
piuttosto che mettere il controllo all' inizio o alla fine del ciclo.
Diversamente appoggio pienamente la tua considerazione.
ciao, hal
p.s. e io rispondo "sotto" ;-)

 >if (condizione)
[...]

 proprio nel blocco di codice altrimenti sě
Non e' questione di While o Until ma di dove si posiziona la
clausola.
Prova:
Do While False
        Debug.Print "Pippo"
Loop
e
Do Until True
        Debug.Print "Pippo"
Loop
nessuno dei due cicli viene eseguito.
Prova:
Do
        Debug.Print "Pippo"
Loop While False
e
Do
        Debug.Print "Pippo"
Loop Until True
entrambi eseguono il ciclo (almeno) una volta.
Ciao.

 solo quello che c'č!! Esiste anche IIF, f1 per credere :))
ma iif non č equivalente  a if !!
cioč le due istruzioni non fanno la stessa cosa ....
ciao

 p.s. e io rispondo "sotto" ;-)
Il mondo è bello perchè è vario :))
ciao
alfonso

Come ho scritto più su, mi sono confuso con il C, o forse con il clipper,
boh!
Troppi linguaggi :))
vabbè sarà meglio che vada a dormire, perdo colpi !
Ciao
Alfonso
H.P.L. <u...@vaila.ble> wrote in message
B_507.3049$hp3.1...@news.infostrada.it...
[...]


alfonso
^___^

 a proprosito di c: l' iif e' parente dell' operatore ? ?
Identico spiccicato (Condizione?Vero:Falso).
sarà nostalgia, ma la sintassi del C ha tutta un'altra eleganza...
Ciao
alfonso


sarà nostalgia, ma la sintassi del C ha tutta un'altra eleganza...
Be', con .net c'e' speranza che un po' di gente passi da vb a c# :)


si e no, nel senso che IIF fa "quasi" lo stesso lavoro;
il quasi dipende dal fatto che, considerando l'espressione
IIf(a <> 0, b / a, b)
che in C/C++ andrebbe scritta più o meno come
(a != 0) ? b / a : b
in C/C++ tutto funzionerebbe a meraviglia, mentre in VB, in caso di (a = 0)
si otterrebbe un bellissimo (?) runtime error, division by zero;
il fatto è che l'operatore ternario del C/C++ valuta solo la parte di
espressione relativa alla condizione verificata, mentre la funzione IIF
(perchè di funzione si tratta) del VB valuta comunque tutte le espressioni;
per chiarire le idee, il sorgente della funzione IIF dovrebbe assomigliare
molto al seguente
Public Function IIF(condizione As Boolean, trueExp As Variant, falseExp As
Variant) As Variant
    If (condizione) Then
        IIF = trueExp
    Else
        IIF = falseExp
    End If
End Function
è quindi chiaro che, in fase di chiamata della funzione, tutte le
espressioni fornite vengono valutate;
ciao

verificare da solo la differenza di
funzionamento... :)
Forse abbiamo seguito due post diversi ;))


Il mondo č bello perchč č vario :))
Il mondo č bello perchč
questo abbiamo e questo ci tenimo :)) Per quanto mi riguarda ancora nessuno
č mei venuto a bussare alla mia porta per dirmi...wč bello, vivi in un
mondo che fa schifo, dai un occhio in questo catalogo dei migliori mondi
scelti per per, se proprio non trovi niente allora fai un salto nel mio,
che ci sono ragazze che te la danno senza chiedergliela, non seevono soldi
per fare/avere quello che vuoi, non esiste il concetto del lavoro e sei
sempre bello :)) A parte i testimoni di geova...nessuno č mai venuto!!
PS: nulla contro i testimoni, ognuno ha le sue idee.



Condivido pienamente hal! :-)
Ciao

 Troppi linguaggi :))
Aggiungo, troppi linguaggi con sintassi "simile", e questo porta
ovviamente confusione.
Ciao.

si otterrebbe un bellissimo (?) runtime error, division by zero;
azz... ecco dov' era la fregatura :(
grazie, 
hal

 ma credo che sia da lasciare al gusto personale.
Veramente č l'until (in tutti i linguaggi) che ti costringe a ragionare al
contrario :)
Infatti in delphi quando sono costretto a usare l'untile faccio sempre
until not (condizionedelwhile)
Ciao

until not (condizionedelwhile)
Vista cosi', in effetti, ti darei ragione.
Penso che l' inghippo stia nel variabile che controlla il ciclo.
Nei loop sui file si puo' leggere il valore di EOF (o BOF se si torna
indietro) che e' un concetto "negativo" (fuori dai limiti),
mentre in altre situazioni (come solitamente e' il ciclo For)
il ciclo viene eseguito finche' e' vera una certa condizione.
Ripensandoci, uso (e, penso, non solo io) il Do Until ... Loop 
solo nei cicli sui file
( e i recordset ) perche' il controllo e' generalmente su EOF.
Altrimenti:
Do While miaVar > 0
      ' ....
Loop
Ok, mi hai convinto ;-)
Until ragiona al contrario, ma, a parte questo,
penso che il suo uso non comporti sostanziali differenze
da While.
ciao, hal

"Angelo Perugini"

Dubito che sia come hai detto.
"do until..." opera un confronto...e decide.
"do while not..." opera un'operazione logica, un confronto...e decide.
Secondo te, quale istruzione risulta più 'leggera'?
nonsonostatoio


Be', con .NET c'e' speranza che un po' di gente passi da VB a Delphi...
Buttare via tutto per buttare via tutto, meglio scegliere qualcuno un po'
piu' affidabile di M$. tanto piu' che Delphi 6/Kylix e' compatibile con
linux  a prescindere dai desideri di M$ (ovvero anche se non installi il
".NET Framework", che magari domani Bill si alzacol mal di stomaco e cambia
tutto di nuovo)...
Ciaotutti,
Asterix


... non rompessero con puntualita' i foglioni la domenica mattina mentre uno
sta dormendo beato :P
Ciaotutti,
Asterix

 wrote in message
news:9ht9t6$acn$1...@pegasus.tiscalinet.it...

Sicuramente l'until e' piu' leggero, essendo progettato apposta per i
confronti negativi, ma dato che noi siamo esseri umani (e soprattutto siamo
italiani) ci aspettiamo di pensare a QUANDO NON nei termini di QUANDO NON
(while not), non nei termini di NONQUANDO (until)...
Per un inglese la differenza puo' essere naturale, per un italiano e'
parecchio piu' difficile...
La differenza tra while e untilci ho messo mesi a farmela entrare in testa,
le prime volte scrivevo
while true
    stop
wend
stop
per ricordarmi se while lavorasse su vero o falso...
Ciaotutti,
Asterix

sta dormendo beato :P
Vero, ma, se sei sveglio ed hai un' oretta da perdere, sono un vero spasso :-P
un hal che sta studiando da VBI

 wrote in message
9ht9t6$acn$1...@pegasus.tiscalinet.it...

Non ho detto! Mi sono chiesto "pechè", e le risposte sono state molte! :-)
Grazie

> IIf A > B, strMaggiore = "A", strMaggiore
Puoi anche scrivere:
   strMaggiore = IIf(A > B, "A", "B")
e non lo puoi fare direttamente con una IF.
Comunque differenze pratiche non ci sono, cosi' come tra WHILE e UNTIL.
Credo che essenzialmente siano state implementate per una miglior
leggibilita' del codice.
Se ci pensi bene anche il FOR e' superfluo, si puo' fare un DO con una
variabile contatore. Pero' rende il codice piu' chiaro.

Secondo te, quale istruzione risulta più 'leggera'?
Sono assolutamente identici perche' in assembly esiste l'istruzione di
salto sia su risultato true che su risultato false, dunque non cambia
una virgola. Anziche' usare una JE, il compilatore usera' una JNE.
Anche perche' do while not *prima* fa un confronto, *poi* fa
l'operazione logica e decide. L'operazione logica viene inclusa nella
decisione, come dicevo qui sopra.
Saluti.
-- 
      Gianni "bugbarbeq" Rondinini, 25, RA, 242, 152
  VBR - Vero Birro Romagnolo®, diffidate dalle imitazioni!
 Opel/ECC Calibrezio EVO-VI --- Kawasaki "Gas Gas" ZZ-R 1100
 ICQ# 36893168 - IRCNet: bugbarbeq, @ on #linux-it & #NetBSD
   On contrary of popular belief, Unix *IS* user friendly:
    it just appears to be selective who it is friend with


Il ciclo for usa per il confronto di limite una variabile temporanea
inaccessibile al programmatore, il che lo rende piu' semplice e piu' sicuro
di un ciclo DO o di un IF... GOTO.
Ciaotutti,
Asterix