Oppure

Loading
29/12/11 8:37
giova95
(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:

  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
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 29/12/11 8:39
aaa
29/12/11 10:07
GrG
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 :k:
aaa
29/12/11 10:15
giova95
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 :)
aaa
29/12/11 12:02
gigisoft
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:

    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:

max = N
min = N


Negli altri click, delle condizioni, ne sara' vera al piu' una.

Saluti.
Ultima modifica effettuata da gigisoft 29/12/11 12:07
aaa
29/12/11 12:27
giova95
ok, grazie :)
aaa