giova95 (Normal User)
Rookie
Messaggi: 29
Iscritto: 23/12/2011
|
(ho creato una discussione e non una domanda perchè credo che in questo caso ci sia bisogno di opinioni e non di risposte..)
Giorno
Il mio dubbio lo presento sotto questa forma perchè si è presentato così a me... ma è estendibile a molte altre occasioni.
Stavo facendo un programmino che comprendeva la ricerca del massimo e del minimo.
La parte di codice "incriminata" è questa:
Codice sorgente - presumibilmente VB.NET |
Private Sub BtnMaxMin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnMaxMin.Click N = CInt(TxtN.Text) If i = 0 Then max = N min = N End If If N > max Then max = N ElseIf N < min Then min = N End If i += 1 End Sub
|
Come vedete a ogni click del bottone leggo N e verifico se sia più basso del minimo o più alto del massimo e funziona a meraviglia ovviamente xD
Il mio dubbio è sul passaggio
Codice sorgente - presumibilmente C# / VB.NET |
If i = 0 Then
max = N
min = N
End If
|
So che è esatto e funziona, ma in questo modo a ogni click del bottone il programma deve verificare se i è o no uguale a 0 ed è uno spreco di tempo...
In un programma come questo ovviamente non fa la differenza ma in ogni caso.. possibile che non ci sia il modo per evitare questo "spreco"?
Mi era venuto in mente il fatto di poter creare un evento... ma non ho mai lavorato sulla creazione di eventi... forse questo è il momento buono per iniziare
Gradirei delucidazioni Ultima modifica effettuata da giova95 il 29/12/2011 alle 9:39 |
|
GrG (Member)
Guru^2
Messaggi: 3430
Iscritto: 21/08/2007
|
1) Hai sbagliato sezione, il tuo codice è di vb.net, qui si parla di vb6
2) Il codice è corretto, anche all'università ci hanno insegnato che questo è il codice più corretto.
Un altro metodo è quello di dare alla variabile max il minimo numero intero rappresentabile, mentre alla variabile min il massimo numero intero rappresentabile (ora non ricordo bene qual'era, basta cercare su internet ma dovrebbe essere qualcosa del tipo 2 elevato a 32, questo per lo meno in java ma dovrebbe essere la stessa cosa per vb)
Se N sarà dunque maggiore del minimo numero rappresentabile automaticamente:
max = N
Ma questo equivale esattamente all'inizializzazione della variabile del tuo codice.
Stessa cosa per min.
Comunque questo secondo metodo è sconsigliato, quindi in sostanza il codice che usi tu è quello corretto
|
|
giova95 (Normal User)
Rookie
Messaggi: 29
Iscritto: 23/12/2011
|
grazie per la precisazione, me lo ricorderò... intanto chi di dovere sposti la discussione così evitiamo di mettere in subbuglio il tutto
si lo so... anche a me è stato detto che questo è il metodo migliore.. però boh, pensavo che si potesse creare un evento o qualcosa del genere che assegnasse a Min e Max il primo valore di N, senza verificare tutte le volte se è "la prima volta"
Grazie
Intanto se qualcuno ha qualche idea dica pure che io ascolto volentieri
|
|
gigisoft (Member)
Guru
Messaggi: 696
Iscritto: 11/10/2008
|
Salve,
al di la del linguaggio la soluzione e' semplice, a patto di essere sicuri di avere almeno un click, basta inizializzare max al piu' piccolo numero rappresentabile e min al piu' grande escrivere:
Codice sorgente - presumibilmente VB.NET |
Private Sub BtnMaxMin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnMaxMin.Click N = CInt(TxtN.Text) If N > max Then max = N End If If N < min Then min = N End If i += 1 End Sub
|
senza l'elseif, infatti cosi' facendo, al primo click le condizioni risulteranno Per forza tutte e due vere, eseguendo il codice:
Codice sorgente - presumibilmente Plain Text |
Negli altri click, delle condizioni, ne sara' vera al piu' una.
Saluti. Ultima modifica effettuata da gigisoft il 29/12/2011 alle 13:07 |
|
giova95 (Normal User)
Rookie
Messaggi: 29
Iscritto: 23/12/2011
|
ok, grazie
|
|