PDA

View Full Version : [Vb]Megliorare Funzione


Kleidemos
13-12-2002, 20:49
Come posso migliorare sto cod?

Public Function Addiziona(n As Integer, m As Integer) As Integer
Dim ris As Long
ris = n + m
Addiziona = ris
End Function

Public Function Sottrai(r As Integer, l As Integer) As Integer
Dim risul As Long
ris = r - l
Sottrai = risul
End Function

Public Function Moltiplica(n As Integer, m As Integer) As Integer
Dim ris As Long
ris = n * m
Moltiplica = ris
End Function

Public Function Dividi(n As Integer, m As Integer) As Integer
Dim ris As Long
ris = n / m
Dividi = ris
End Function

Private Sub diviso_Click()
res.Text = Dividi(primo.Text, secondo.Text)
End Sub


Private Sub meno_Click()
res.Text = Sottrai(primo.Text, secondo.Text)
End Sub

Private Sub per_Click()
res.Text = Moltiplica(primo.Text, secondo.Text)
End Sub

Private Sub plus_Click()
res.Text = Addiziona(primo.Text, secondo.Text)
End Sub

Private Sub info_Click()
Dim info
info = MsgBox("Programma by Kleidemos", vbInformation, "Abuot....")
End Sub

Kleidemos
14-12-2002, 05:51
ap :muro:

Kleidemos
14-12-2002, 13:58
ora il cod è cosi:

Public Function Addiziona(n As Integer, m As Integer) As Integer
Dim ris As Long
ris = n + m
Addiziona = ris
End Function

Public Function Sottrai(r As Integer, l As Integer) As Integer
Dim risul As Long
ris = r - l
Sottrai = risul
End Function

Public Function Moltiplica(n As Integer, m As Integer) As Integer
Dim ris As Long
ris = n * m
Moltiplica = ris
End Function

Public Function Dividi(n As Integer, m As Integer) As Integer
Dim ris As Long
ris = n / m
Dividi = ris
End Function

Private Sub Chiudi_Click()
Unload Princ
End Sub

Private Sub diviso_Click()
res.Text = Dividi(primo.Text, secondo.Text)
End Sub

Private Sub infos_Click()
Dim info
info = MsgBox("Programma by Kleidemos", vbInformation, "Abuot....")
End Sub

Private Sub meno_Click()
res.Text = Sottrai(primo.Text, secondo.Text)
End Sub

Private Sub per_Click()
res.Text = Moltiplica(primo.Text, secondo.Text)
End Sub

Private Sub plus_Click()
res.Text = Addiziona(primo.Text, secondo.Text)
End Sub


e il ris è cosi!
Come potre migliorare il prog?

Einstein
14-12-2002, 14:01
' La somma di due integer può essere superiore a 32768,
' quindi è meglio restituire un long
Public Function Addiziona(n As Integer, m As Integer) As Long
Addiziona = n+m
End Function

' Non è necessario restituire un long, ma per coerenza... :D
Public Function Sottrai(r As Integer, l As Integer) As Long
Sottrai = r-l
End Function

' Stesso discorso fatto per la somma....
Public Function Moltiplica(n As Integer, m As Integer) As Long
Moltiplica = n*m
End Function

' Così puoi restituire anche risultati con decimali
Public Function Dividi(n As Integer, m As Integer) As Single
Dividi = n/m
End Function


Ciao

Kleidemos
14-12-2002, 14:02
tnk!
E per la grafika?
Cosi è decente?

Einstein
14-12-2002, 17:05
La grafica è sempre molto personale... :)
Così potrebbe già andare bene, al limite potresti sostituire gli operatori matematici e l'uguale (le caption sui pulsanti)con delle immagini.

Kleidemos
14-12-2002, 17:09
Originally posted by "Einstein"

La grafica è sempre molto personale... :)
Così potrebbe già andare bene, al limite potresti sostituire gli operatori matematici e l'uguale (le caption sui pulsanti)con delle immagini.

come si fa??????
:(

Kleidemos
14-12-2002, 17:10
P.S: ho aggihnto un cotrollo sulla validità dei numeri con IsNumber()............altre aggiunte?

Einstein
14-12-2002, 17:31
Dovresti trovare qualche immagine in giro e poi, nelle proprietà di ciascun pulsante, dai il path dell'immagine corrispondente.
Ah, le funzioni di calcolo, se vengono definite nel modulo di quella form, mettile Private e non Public.

Kleidemos
14-12-2002, 17:34
Originally posted by "Einstein"


Ah, le funzioni di calcolo, se vengono definite nel modulo di quella form, mettile Private e non Public.


Why?

Einstein
15-12-2002, 11:43
Perché non è necessario renderle visibili ad altri moduli.

Kleidemos
15-12-2002, 11:52
Originally posted by "Einstein"

Perché non è necessario renderle visibili ad altri moduli.


ma è un fattore di chiarezza del cod o di sicurezza?

harbinger
16-12-2002, 07:12
Questo codice non brillerà per eleganza ma è molto più compatto:

Private Sub diviso_Click()
res.Value = primo.Value / secondo.Value
End Sub

Private Sub meno_Click()
res.Value = primo.Value - secondo.Value
End Sub

Private Sub per_Click()
res.Value = primo.Value * secondo.Value
End Sub

Private Sub plus_Click()
res.Value = 1 * primo.Value + secondo.Value
End Sub

Private Sub info_Click()
Dim info As Integer
info = MsgBox("Programma by Kleidemos", vbInformation, "About....")
End Sub


Ho eliminato le funzioni da richiamare perchè, secondo me, sono inutili, in quanto difficilmente devi usarle in altre parti del programma.


C'è qualche esperto che mi sa dire se il codice che ho appena postato è più o meno veloce nell'esecuzione di uno in cui vengono richiamate delle funzioni (sia che queste siano indicate nel form o in un modulo)?

Ciao! :)