Dark Binary Converter
Quando facevo pagine ASP per lavoro mi tocco' imparare un po' di VB.
Tanto quanto basta x fare 2 cassate (c'ho la "z" sifula...), tra cui
il Dark Binary che ora vi illustro. Per utilizzarlo dovete farvi una form con 2 textfield e un button: Bottone -> il button numTxt -> il textfield dove si inserisce il numero da convertire resTxt -> il textfield dove visualizzare il risultato Il simpatico programmillo converte numeri decimali in binario. Veramente un programmone... lo so! Ma lo metto lo stesso perche' trovo interessante la funzione Sub Calcola(n) in quanto fa uso della ricorsione, che per i coders alle prime armi puo' essere un passaggio un po' ostico... |
'variabile
in cui verra' scritto il risultato 'funzione
che calcola il log in base 2 del numero passato
'funzione
che indica se il numero passato e' una potenza di 2 Static
Function LogInt(X) 'la funzione Calcola() e' il cuore del proggo. Grazie alla ricorsione scompongo il numero passato in potenze di 2. Ad esempio: il numero inserito dall'utente e' 45. il proggo chiama Calcola(45), la funzione Calcola() trova la maggiore potenza di 2 minore o uguale a 45, che e' 32, ovvero 2^5. Fa la differenza tra 45 e 32 e trova 13. A questo punto si controlla se 13 sia uguale a 0 oppure no. Se 13 fosse uguale a 0 signigicherebbe che 32 e' il numero inserito dall'utente e il numero inserito, in binario, sarebbe 10^5. Ma 13 non e' uguale a 0, quindi storiamo 10^5 in una variable e richiamiamo Calcola() passandogli 13. E siamo al secondo giro. La maggiore potenza di 2 minore o oguale a 13 e' 8, cioe' 2^3. 13 - 8 = 5. Alla variabile storata prima, che vale 10^5, aggiungiungiamo 2^3. Ovvero: 10^5 + 10^3 = 101000 e sovrascriviamo la variabile col nuovo risultato. Richiamiamo Calcola() passandogli 5... e si ricomincia!! Ovviamente Calcola(5) e' il terzo passaggio, in quanto io ho spiegato i primi due giri. Cmq, per dovere di cronaca, il numero finale, ovvero 45 espresso in binario, e' 101101 ! Sub
Calcola(n As Double)
'-->>-->>-->>
Tutto inizia qui!! <<--<<--<<-- 'controllo
se il numero immesso e' un numero |