Newsgroup: it.comp.lang.visual-basic
Titolo: funzione con ritorno di un risultato

Salve a tutti ...
premettendo che la domanda potrebbe sembrare banale, vorrei sapere come si
scrive una funzione che ritorna un risultato; faccio un esempio pratico,
così ci capiamo al volo: una piccola funzione per il calcolo dell'IVA al 20%
sub calcolaIVA(imponibile as double)
iva = imponibile * 0.2
end sub
Quello che vorrei è che se in un qualsiasi punto del programma chiamo la
funzione, essa restituisca un valore calcolato in base ai criteri della
funzione stessa, ossia:
sub qualcosa()
dim totaleft
dim imposta
dim prestazioni
....
prestazioni = 100
imposta = calcolaIVA(prestazioni)
totaleft = imposta + imponibile
...
end sub
Per il momento l'unica soluzione che ho trovato è quella di dichiarare la
variabile iva a livello di modulo e quando la funzione calcolaIVA, essa
inizializza la variabile che resta disponibile per il resto del programma.
Grazie per ogni aiuto


Function Qualcosa (par1, par2) as Double
End Function
Ciao, Vincenzo

 inizializza la variabile che resta disponibile per il resto del programma.
Argh!
/me muore....
Scherzo :-)
Dichiara la routine come Function invece che come Sub, ed in fondo alla
dichiarazione metti il tipo di dati risultati.
Poi in fondo alla funzione ritorna il risultato.
Seguendo il tuo esempio:
Function CalcolaIVA(dblImponibile as double, bytIva as byte) as double
    CalcolaIVA = dblImponibile * (bytIva / 100)
Ed Function
Nota a margine: quando l'elaborazione e' piu' complessa io tendo sempre a
dichiararmi una variabile temporanea per mantenerci il risultato parziale,
altri usano comunque il nome della funzione. Io preferisco non farlo perche'
secondo me incasina un po' il codice (visivamente).

Il 20/05/2004 18.23, VincePik@work scrisse:

???
Function Qualcosa (par1, par2) as Double
    qualcosa= ...
End Function
:-)
	maxx
-- 
NOSPAM: Rimuovere i trattini dallo username!
Cut hyphens from my username!

 Ti ringrazio molto.
Public Function FaiQualcosa() as long
    FaiQualcosa = QualcheCalcolo()
    FaiQualcosa = AltriCalcoli(FaiQualcosa , ....)
    FaiQualcosa = FaiQualcosa * 2
    etc...
    etc...
End Function
In questo modo di impostare il codice, il nome stesso della funzione viene
usato come variabile. A me, personalmente, non piace. Lo trovo
confusionario, non c'e' un punto definito in cui fai il ritorno vero e
proprio della funzione, e poi ogni volta che vedo qualcosa del genere mi
prendono attacchi di panico al pensiero che il compilatore si
incasini...preferisco usare questa forma:
Public Function FaiQualcosa() As Long
    Dim lngTemp As Long
    lngTemp = QualcheCalcolo()
    lngTemp = AltriCalcoli(lngTemp, ....)
    lngTemp = lngTemp * 2
    etc...
    etc...
    FaiQualcosa = lngTemp
End Function
Cmq, e' pura questione di gusti personali...

 ha scritto nel messaggio
news:c8ke53$v3q$1...@news.ngi.it...


 incasina il MIO di compilatore.......
Più che altro si perde in prestazioni (ma veramente in modo trascurabile)
per via dell'assegnazione in più, ma si guadagna in praticita: metti che
domani tu voglia rinominare
Function CalcolaIva(byval n as Doube) As Double
in
Function Iva(byval n as Doube) As Double
dovresti andare in tutta la funzione a cercarti il nome modificato.
Ciao
--
Math Parser : 
http://www.neodatatype.net
FlowChart   : 
http://www.neodatatype.net/dump/flowchart/dir.asp
Sito Comune : 
http://www.it-lang-vb.net

 Dim Fatture As Int32
Ok. Io prendo il tuo codice e trovo la variabile NumeroFatture.
Dimmi come faccio a capire al volo che NumeroFatture e' una tipo normale e
non un'oggetto, un intero e non un double, di 4 byte e non di so na sega io,
che visibilita' ha e giuro che vengo al meeting e ti pago il pranzo, il
viaggio e ti faccio tromba' la mi' segretaria.
.\/.

 identifica il tipo mi pare buona.... vedrò di adottarla pure io....
Premessa: non l'ho certo inventata io :-)
Sono una marea di anni che si programma in quel modo, almeno ad un certo
livello. Tra l'altro in giro ci sono anche tonnellate di documentazione
sulle abbreviazioni standardizzate per ogni singolo tipo ed oggetto.
(ed io sono pure un pessimo programmatore, visto che uso solo una parte di
quelle specifiche...prima o poi dovro' decidermi ad usarle tutte, ma mi fa'
fatica :-D )

 viaggio e ti faccio tromba' la mi' segretaria.
Queste regole non le ho mica inventate io, e tutto sommato sono d'accordo:
la mia professoressa di matematica dava le legnate sulle mani a chi diceva
che "gli oggetti in un insieme sono 10", perchè "il *numero* di oggetti in
un insieme è 10, gli oggetti sono {casa, radio, sedia...}".
Comunque
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/ht
ml/cpconavoidingtypenameconfusion.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/ht
ml/cpconparameternamingguidelines.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/ht
ml/cpconstaticfieldnamingguidelines.asp
e l'ultimo paragrafo di
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/ht
ml/cpconfieldusageguidelines.asp
Questo non risponderà completamente ai tui perchè, ma se la tua segretaria è
sempre disponibile... ;P


 sempre disponibile... ;P
Vedremo :-D

 .\/.
Guardo la dichiarazione?
Questo per me (e non solo per me, ovviamente) è un brutto modo di
scrivere il codice anche se in effetti è molto usato.
Ciao.
-- 
BSD is for UNIX lovers -- linux is for Windows haters.

 reinventare l'acqua calda, sono problemi loro, non miei.
La M$ non c'entra nulla, quelli di non usare la notazione ungherese sono
i dettami di "buona programmazione" che non vengono dalla M$ (che anzi
ha avuto la pessima idea di diffonderla) ma da ben altre persone...


Scusate ma qual'è questa nomenclatura ungherese?
-- 
Rivolterò il mondo per trovarlo, e anche se andasse in Indocina uno dei 
nostri starà nascosto in una ciotola di riso pronto a sparargli nel culo.
(Pulp Fiction)

"Darkbyte [Home]":
| Scusate ma qual'è questa nomenclatura ungherese?
www.guidapc.com/glossario/index.asp?lettera=n&glossario=Notazione-ungherese
-- 
52+36
Difendi anche tu la liberta` di scegliere il ricevitore satellitare.
Leggi i dettagli qui:
http://luckyluciano.altervista.org/lettera_garante.html
https://hi-cad.homelinux.org/ihstdm-faq/tiki-index.php?page=ListaDelleFaq