Newsgroup: it.comp.lang.visual-basic
Titolo: [?] IF Intelligente in VB ??

In altri linguaggi (C, Java, credo anche Delphi) la condizione IF è
"intelligente", cioè si ferma nella valutazione delle condizioni non appena
verifica che una delle condizioni inserite soddisfa i criteri.
IN VB NO! (almeno credo)
Mi spiego meglio con un esempio:
Supponiamo di avere un oggetto recordset X e di voler verificare se è valido
e se contiene dei dati per continuare l'elaborazione:
IF (X Is Nothing)  OR (X.State <> adStateOpen) OR (X.recordCount = 0) Then
    Exit sub
ELSE
    ElaboraRecord......
END IF
Nel caso che X sia Nothing VB va in errore, perchè verifica TUTTE le
condizioni, e non si può verificare lo stato e il recordcount di un oggetto
che è Nothing.
Sarà una stupidata, ma in questo modo devo fare ben 3 IF annidate per
verificare questa condizione.
Ovviamente mi sono fatto una Function che verifica tutte queste condizioni e
che restituisce true o false.
Ma VB proprio non la sa fare questa cosa ?
Scusate la lungaggine.
Ciao a tutti.

 "intelligente", cioč si ferma nella valutazione delle condizioni non


 Scusate la lungaggine.
Da te accettiamo questo ed altro.
--
Ciao.
Maurizio
--------
?SPQR(C)
 X
--------

 wrote:
Toh, un omonimo... wow!
Scusa, ma siccome non ne conosco tanti di omonimo, mi fa sempre piacere vederne uno...
Ciao e Buon Lavoro!!!!
Moreno
#sirri#@#morenosoft#.com
(togliete "#" dall'indirizzo)
Moreno Sirri VB Site - 
http://www.morenosoft.com/MSVBSite/
---------------------------------------------------------------------------
Le risposte alle tue domande le trovi sul Sito Comune di questo NewsGroup:
 
http://www.murialdo.it/it_lang_vb
---------------------------------------------------------------------------

 Scusa, ma siccome non ne conosco tanti di omonimo, mi fa sempre piacere
vederne uno...
Allora ho cappellato a fargli tanto di cappello come fossi tu!?
Ellamaro'!... Dov'ero con la testa?
Lo prendo come un investimento!...
--
Ciao :-)


Lo prendo come un investimento!...
No, sennò ti ritirano la patente!!! ;-)
Ciao,



Hai ragione.
Me questo č niente rispetto alla grandissima ca....ta dell'istruzione IIF
che la rende quasi inutilizzabile.
Prova ad eseguire
print iif(a<>0,10/a,0)
Prima a=1 e poi con a=0 e guarda che succede di bello.
Ciao
Marco

criteri. 
"full boolean eval". Un'opzione di ottimizzazione che VB č troppo gnucco 
per avere
situazione orribile da cui si esce con una soluzione peggiore ancora:
If (X Is Nothing) Then
    	GoTo Trouble
ElseIf (X.State <> adStateOpen) Or (X.recordCount = 0) Then 
Trouble:
    	'problema - veditela tu
Else
    	'tutto ok
End If

 Ma VB proprio non la sa fare questa cosa ?
Come ti ho dimostrato anche il VB lo sa fare ;-)
Princi, 
princ...@programmer.net
---------------------------------------------------------------------
"Tutti sanno che una cosa è impossibile da realizzare,
finché arriva uno sprovveduto che non lo sa e la inventa." A.E.

Ops! mi è scappato un false...
versione corretta:
select case true
    case x is Nothing, x.state <> adstateopen, x.recordcount = 0
        exit sub
    case else
        elaborarecord....
end select


 appena
[...]

 ha scritto nel messaggio
news:9ahc6v$cau$1...@news.mclink.it...


 wrote in message
news:9ahc6v$cau$1...@news.mclink.it...


 function piuttosto lenta)....
[...]

Notizie fresche fresche !
http://news.cnet.com/news/0-1003-200-5508500.html
Ciao
Alfonso

 c'è tra un case ed un if (100 a 1) ?
Ciao,
le pecche di realizzare il costrutto tramite la Select sono molto più gravi
del puro tempo di esecuzione: prima tra tutte la poca chiarezza del codice
ed il rischio di commettere errori. Comunque molto spesso il tempo di
esecuzione del costrutto è irrilevante se confrontato con il tempo di
valutazione delle condizioni. Inoltre il Select Case è degradante se
confrontato con un solo costrutto IF, ma se prendiamo in cosiderazione
l'esigenza di avere più IF nidificati il Select risulta addirittura più
veloce.
Prove effettuate con tre condizioni *sempre* valutabili inserite in un loop
che cicla 1.000.000 di volte:
IF unico:
Valutazione di tutte le condizioni: 2.8s
IF nidificati:
Valutazione della prima condizione: 0.7s
Valutazione della prima e della seconda condizione: 2.2s
Valutazione di tutte le condizioni: 3.8s
SELECT:
Valutazione della prima condizione: 0.9s
Valutazione della prima e della seconda condizione: 2.0s
Valutazione di tutte le condizioni: 3.2s
e più le condizioni sono pesanti da valutare più le "distanze" in termini di
tempo giocano a favore del select.
--
Princi, 
princ...@programmer.net
----------------------------------------------------------------------


 lunga routine assembler...
bhe non proprio, in linguaggio macchina esistono i salti condizionali
sui flag che sono un bel po' differenti da 
if espressione_di_50_caratteri_con_tanti_operatori then .....
e anche il piu' semplice degli if vinene sempre risolto in una serie di
ustuzioni prepatorie
d'altro canto strutture case ad alta dendita' posono essre essere
risolte dal compilatore in un jump indiretto su di una tabella con
prestazioni enormemente migliori rispetto ad in lunga sequenza di if ...
elseif ... else .
lo shortcut di alcuni linguaggi ( maca tutti :-) ) e' si una
ottimizzazione ma e' anche una relativa complicazione del compilatore
che deve trattare le espessioni condizionali in maniera molto
differente.
aggiungo inoltre che puo' generare dei problemi subdoli quando la
valutazionedelle condizioni  presentano degli effetti collaterali (
chiamata a funzioni che hanno uno stato ).

Scusa, ma la prova l'hai fatta con un exe o con il runtime ?
[...]


In Pascal potevi anche decidere se eseguire full boolean evaluation o no.

 Scusa, ma la prova l'hai fatta con un exe o con il runtime ?
exe (nel runtime è tutto più lento ma le proporzioni non cambiano)
se vuoi proseguire lo scambio è meglio continuare in privato.


Curiosità: hai provato con iif ?
Se iif si comporta in modo corretto puoi usare questa sintassi (nel caso di
più di 2 possibilità puoi nidificarlo).

 Bè, per dirla in due parole, in assembler un if è un 
jump, cioè


 ha scritto 
  nel messaggio 
news:9ai1mq$26qq$1...@stargate1.inet.it
...


Perdonatemi il post HTML... Era necessario per 
  renderlo leggibile, con il solo testo non era comprensibile.


 


[...]