Newsgroup: it.comp.lang.visual-basic
Titolo: Domanda da profano (nessuno si offenda)

Salve! premetto che sono un profano totale!
Scusate la domanda, ma l'istruzione IF-THEN non è ridondante rispetto
a quella CASE?
Voglio dire, non basterebbe una delle due (magari la seconda che
sembra un poco piu' coincisa)? e l'altra perchè esiste?
Ciao e grazie!
Lorenzo Baldi
E-Mail: 
lorn...@mv.ats.it
ICQ UIN: 4165096
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
              BALDI DO IT!
////////////////////////////////////////////

sembra un poco piu' coincisa)? e l'altra perchè esiste?
Supponiamo che tu abbia una variabile "colore" e ti interessa sapere SE il suo valore è "Nero" e di
conseguenza fare certe operazioni:
IF Colore = "Nero" THEN
	'Faccio quello che devo fare
ELSE
	'Non è nero, può essere di qualsiasi colore ma non mi interessa
END IF
Ma supponiamo invece ti interessa sapere PROPRIO il colore e fare operazioni diverse a seconda del
colore:
IF COlore = "Nero" THEN
	'E' nero...
ELSEIF Colore = "Giallo" THEN
	'E' giallo...
ELSEIF COlore = "Blu" THEN
	'E' blu...
ELSE
	'Non è di un colore che mi interessa...
END IF
CErto, questo caso è piuttosto macchinoso ed è per questo motivo che si ricorre alla struttura
SELECT...CASE:
SELECT Colore
	Case "Nero": 'E' nero...
	CAse "Giallo": 'E? giallo...
	Case "Blu": 'E' blu...
	CAse ELse: 'Non è un colore che mi interessa...
END SELECT
MA allo stesso modo non avrebbe avuto senso scrivere:
SELECT CASE Colore
	Case "NEro": 'E' nero
	Case ELse: 'non è nero
END SELECT
Per questo è decisamente più comodo un IF:...
Ciao,
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
---------------------------------------------------------------------------

...


Piu' coincisa? Non direi... non sempre per lo meno.
Select Case bCondition
    Case True: DoTrue
    Case False: DoFalse
End Select
'sembra piu' coincisa di:
If (bCondition) Then
    DoTrue
Else
    DoFalse
End If
'ma se la scriviamo:
If (bCondition) Then DoTrue Else DoFalse
'direi proprio di no...  ;-)
I costrutti If..Then e Select Case tendenzialmente vengono utilizzati per
risolvere problemi differenti.
In genere si usa un If..Then (semplice, senza ElseIf) quando si testa una
condizione binaria (true o false), si usa Select Case se la condizione ha
piu' di 2 possibili risultati.
Da questo ne deriva chiaramente che Select Case puo' sempre essere
utilizzato come sostituto di If..Then.
Considerando quindi il dominio di problemi comune ad entrambi i costrutti
(condizione binaria), i problemi sono:
1) e' piu' leggibile If..Then o Select Case?
2) come vengono tradotti i due costrutti in linguaggio macchina?
Per la 1) personalmente preferisco If..Then,
per la 2) dipende dal compilatore ed in molti casi anche dagli algoritmi di
ottimizzazione del compilatore stesso. Il codice macchina risultante
potrebbe teoricamente essere identico, ma spesso quello prodotto
dall'If..Then e' piu' compatto e veloce (non ho fatto prove, mi baso su quel
poco che mi ricordo di assembly 80x86 prodotto da compilatori C).
Il caso di If..ElseIf...Then e' un po' diverso.
Qui probabilmente le posizioni si ribaltano e conviene usare Select Case.
Personalmente se ho 1 o massimo 2 ElseIf uso il costrutto If, se le
condizioni sono in numero maggiore la leggibilita' dell'If..Then viene
compromessa e preferisco quindi usare il Select Case.
HTH

 Si tratta di decidere, caso per caso, quale delle due è più
adatta. Tuttavia ritengo che non esista nessuna situazione che
non possa essere trattata adeguatamente utilizzando
ripetutamente una sola delle due.
--
Ciao.
Maurizio

 Voglio dire, non basterebbe una delle due (magari la seconda
che sembra un poco piu' coincisa)? e l'altra perchč esiste?
Il BASIC ha ormai una lunga storia alle spalle e strada
facendo si e` trasformato mantenendo pero` le sue strutture
fondamentali, sia per facilitarne l'apprendimento a chi
provenisse dagli altri "dialetti" sia per mantenere una
compatibilita` il piu` elevata possibile con gli stessi.
Il Visual Basic e` un po' la summa di tutte queste
trasformazioni. E` nato in un'epoca in cui da molte parti si
era gia` decretata prematuramente la morte del BASIC,
nonostante moltissime applicazioni gestionali per mini e
microelaboratori, sulla fine degli anni Ottanta, fossero
scritte proprio in quel linguaggio.
Il BASIC, nato in ambiente universitario (una semplificazione
del FORTRAN?), e` stato scavalcato dal PASCAL proprio nell'uso
didattico. Con PASCAL si sono affermate e consolidate le idee
relative alla programmazione strutturata che, in un primo
momento, sono state trasferite nella programmazione in BASIC
con forzature che obbligavano i programmatori ad una sorta di
autodisciplina nella stesura del codice, mentre in un secondo
momento i costrutti tipici di PASCAL sono stati incorporati
nello stesso BASIC. Passaggio questo che e` avvenuto,
grossomodo, negli anni Settanta e si e` definitivamente
affermato nei primissimi Ottanta.
Per queste ragioni, che ho esposto un po' frettolosamente ed
approssimativamente, e me ne scuso, in Visual Basic
"sopravvivono" elementi sintattici "archeologici" che in rari
casi diventano pero` indispensabili, come il GoTo in "On
Error...".
Non e` il caso di "If Then Else End If" che, indipendentemente
da considerazioni riguardo le prestazioni, che non ho
verificato, permette una scrittura piu` concisa rispetto a
"Select Case", anche se praticamente sempre intercambiabili
nell'uso tranne quando vuoi/devi usare "Like" o "TypeOf".
Se non sbaglio;-)
--
Ciao.
Maurizio

 Voglio dire, non basterebbe una delle due (magari la seconda che


 wrote in message
8l3tdf$krv$1...@nslave2.tin.it...


 poter essere gestita. ;-)
Perche' con l'if-then sarebbe stata piu' breve? ^__^
--
Fibia "Sakamoto" FBI
URL: 
www.geocities.com/fibiafbi
E-Mail: 
fibi...@hotmail.com
ICQ UIN 63586057
Membro #25 delle BT Sez. Sud
Fan #1 di Maison Ikkoku
Amante di Yagami e Kozue
Socio onorario del club per la produzione degli orsi Ciro
Fondatore del club per la protezione dell'orso Coccolino
Fondatore del club per la sterminazione di Windtears ^__^
Acerrimo nemico di SaintJust ^__^
       ,-~-.
      < ^ ; ~,
       (_  _,    "Piyo"
        J~~>