Autore Topic: Formulinux  (Letto 40701 volte)

Offline Michy9393

  • Gran Maestro dei Gamberi
  • *****
  • Post: 570
  • Ubuntu: Linux for Human Beings
    • Mostra profilo
Re: Formulinux
« Risposta #45 il: 19 Marzo 2013, 23:33:39 »
Mi è appena venuta in mente una cosina da aggiungere. Ci stò già lavorando, ti piacerà. ;)
vai :D
Io credo di aver corretto le cose che mi avete detto comunque se vuoi aspetto che mi mandi quello che stai facendo :)

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re: Formulinux
« Risposta #46 il: 19 Marzo 2013, 23:48:18 »
Ti conviene postare la versione corretta così possiamo vederla, perchè se aspetti me... :D :D
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline Michy9393

  • Gran Maestro dei Gamberi
  • *****
  • Post: 570
  • Ubuntu: Linux for Human Beings
    • Mostra profilo
Re: Formulinux
« Risposta #47 il: 19 Marzo 2013, 23:54:04 »
Ti conviene postare la versione corretta così possiamo vederla, perchè se aspetti me... :D :D
ok metto tutto in ordine e procedo :) a metterla qui!

Offline Michy9393

  • Gran Maestro dei Gamberi
  • *****
  • Post: 570
  • Ubuntu: Linux for Human Beings
    • Mostra profilo
Re: Formulinux
« Risposta #48 il: 20 Marzo 2013, 00:36:16 »
Ecco qui! Grazie per avermi fatto accorgere dei madornali errori di distrazione che avevo fatto! Grazie a tutti!

Formulinux 0.0.6 Alpha tutta per voi!
Per qualsiasi cosa eccomi!

« Ultima modifica: 20 Marzo 2013, 00:38:25 da Michy9393 »

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re: Formulinux
« Risposta #49 il: 20 Marzo 2013, 19:04:45 »
Nel frattempo puoi aggiungere questa semplicissima funzione per calcolare il fattoriale di un numero:

Codice: [Seleziona]
Public Function Fattoriale (Numero As Byte) As Long
Dim Risultato As Long = 1
Dim i As Byte
If Numero > 20 Then
   Message.info("Il numero calcolato\n è troppo grande.\n Mi spiace.")
   Risultato = 0
   Return Risultato
Endif
For i = 2 To Numero
   Risultato *= i
Next
Return Risultato
End

Purtroppo può arrivare al massimo fino a 20, oltre si va in overflow. Bisognerebbe trovare la maniera di calcolare e scrivere numeri più grossi.
Fà parte di quello che sto scrivendo. ;)
« Ultima modifica: 20 Marzo 2013, 19:41:15 da Top Fuel »
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: Formulinux
« Risposta #50 il: 21 Marzo 2013, 00:50:58 »
Purtroppo può arrivare al massimo fino a 20, oltre si va in overflow. Bisognerebbe trovare la maniera di calcolare e scrivere numeri più grossi.

Hai dichiarato:
Codice: [Seleziona]
Dim Risultato As Long = 1   
cioè, hai voluto utilizzare esclusivamente un tipo di dati numerico intero. Ciò non permette a Gambas di sfruttare la notazione scientifica.
I numeri interi di tipo Long possonon infatti getsire valori compresi fra "-9.223.372.036.854.775.808" e "+9.223.372.036.854.775.807". Per potere superare tale limite devi utilizzare il seguente metodo:
Codice: [Seleziona]
Dim Risultato As Float = 1 
Così facendo,se poni numero=40, il risultato finale sarà
Citazione
8,1591528324789E+47
:ciao:
:ciao:

Offline Michy9393

  • Gran Maestro dei Gamberi
  • *****
  • Post: 570
  • Ubuntu: Linux for Human Beings
    • Mostra profilo
Re: Formulinux
« Risposta #51 il: 21 Marzo 2013, 11:12:11 »
Stupendo :) Sto aggiungendo tutto e correggendo delle cose! Se continuiamo così MicroZozz ci vorrà comprare per fermare questo progetto! :rotfl:

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re: Formulinux
« Risposta #52 il: 21 Marzo 2013, 14:41:21 »
Codice: [Seleziona]
Dim Risultato As Float = 1 
Così facendo,se poni numero=40, il risultato finale sarà
Citazione
8,1591528324789E+47
:ciao:

Lo so, ma andrebbero perse parecchie cifre. Se ti serve il numero esatto come fai? :-\
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: Formulinux
« Risposta #53 il: 21 Marzo 2013, 15:28:49 »
Lo so, ma andrebbero perse parecchie cifre. Se ti serve il numero esatto come fai? :-\

Io avrei approntato un piccolo artificio per ottenere il valore corrispondente alla notazione scientifica necessitata dal fatto che Gambas, e non solo Gambas, non riesce a gestire più di 8 byte (64 bit) per i valori numerici. D'altronde anche le comunissime calcolatrici, di fronte ad un numero troppo grande o troppo piccolo forniscono automaticamente un risultato in notazione scientifica.

Il codice che ne è venuto fuori e che ho già provato é naturalmente un esempio da modificare adeguatamente in funzione del lavoro di acquisizione e restituzione dati:
Codice: gambas [Seleziona]
Public Sub Form_Open()
Dim Risultato As Float = 1
Dim i As Byte
Dim iCiclo As Integer
Dim imoltiplica As Integer

Dim $Risultato As String
Dim $Segno As String
Dim $StriMia As String
  For iCiclo = 0 To 1
    If iCiclo = 1 Then
      Risultato = 2.34 * 1 / 100000000000
    Else
      For i = 2 To 40
        Risultato *= i
      Next
    Endif
    $Risultato = CFloat(Risultato)
    Print "Risultato ='" & Risultato & "'"
    i = InStr($Risultato, "E")
    If i <> 0 Then
        $StriMia = Right($Risultato, Len($Risultato) - (i))
        imoltiplica = Int(Val(Right($StriMia, Len($StriMia) - 1)))
        $Segno = Left($StriMia)
        $Risultato = Left($Risultato, i - 1)
        $Risultato = Replace($Risultato, ".", "")
        If $Segno = "-" Then
            $StriMia = String$(10, "0")
            $Risultato = "0." & $StriMia & "234"
        Else
          Print String$(imoltiplica - Len($Risultato), "0")
          $StriMia = String$(imoltiplica - Len($Risultato), "0")
          $Risultato = Left($Risultato) & "." & Right($Risultato, Len($Risultato) - 1) & $StriMia
        Endif
        Print "$Risultato ='" & $Risultato & "'"
    Endif   
  Next
Me.Close
End


Il risultato prodotto in laboratorio è:
Citazione
Risultato ='8.1591528324789E+47'
000000000000000000000000000000000
$Risultato ='8.1591528324789000000000000000000000000000000000'
Risultato ='2.34E-11'
$Risultato ='0.0000000000234'

Se dovesse essere soddisfacente potrebbe essere trasformato in una classe  da download.
 :ciao:
:ciao:

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re: Formulinux
« Risposta #54 il: 21 Marzo 2013, 15:50:00 »
Interessante. ;)
Ma quello che mi piacerebbe sapere è come fanno certe applicazioni matematiche a darti tutte le cifre fino all'ultima.
Io ho una vecchissima applicazione matematica DOS che si chiama Derive e riesce a fare i calcoli anche con numeri enormi. Se si riuscisse a implementare una cosa del genere anche sotto Gambas sarebbe una bella bomba.
Se ci riusciva una vecchissima applicazione a 16 bit figuriamoci cosa può fare una a 64 bit...
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline Michy9393

  • Gran Maestro dei Gamberi
  • *****
  • Post: 570
  • Ubuntu: Linux for Human Beings
    • Mostra profilo
Re: Formulinux
« Risposta #55 il: 23 Marzo 2013, 00:21:32 »
Formulinux sta crescendo :)

Offline pastrank

  • Maestro Gambero
  • ****
  • Post: 266
    • Mostra profilo
Re: Formulinux
« Risposta #56 il: 23 Marzo 2013, 11:31:23 »
Interessante. ;)
Ma quello che mi piacerebbe sapere è come fanno certe applicazioni matematiche a darti tutte le cifre fino all'ultima.

Probabilmente usano librerie esterne particolari, prova per esempio a guardare questa: http://gmplib.org/
Non so se questa e' la lib piu' adatta al tuo caso, ne se ci sono problemi a usarla in Gambas, c'era anche qualcuno con Gambas che le aveva usate, queste librerie, ma gambe di cane se mi ricordo chi e quando, io non le ho mai adoperate.

Offline 9bit

  • Grande Gambero
  • ***
  • Post: 191
    • Mostra profilo
Re: Formulinux
« Risposta #57 il: 24 Marzo 2013, 19:09:17 »
Citazione
Ottimo programma, molto utile complimenti   :2birre:
Grazie :) è anche merito tuo! Tu hai dato una gran bella svolta al progetto...grazie alla tavola periodica!

Citazione
Però ho notato che chiudendo il Form principale il programma non
si chiude, ma sembra che venga nascosto.

Altra cosa, nei Form secondari se clicco sulla "X" invece di "Home"
si nasconde tutto....sarebbe meglio in ogni caso ritornare alla Form "Home" principale,
oppure aggiungere un bottone "chiudi tutto".
Sai come potrei risolvere questi due problemi?Consigli?

Citazione
Nel frattempo il testing del convertitore sta andando per le lunghe perchè ci sono degli errori di logica e delle mancanze inaspettate che sto cercando di correggere.
Tranquillo Top Fuel, prenditi tutto il tempo che vuoi! :) il tuo valutatore sarà una grande novità per Formulinux! Devi farlo bene!

Scusami se ti rispondo solo adesso  :)
Ma noto che ti hanno dato la soluzione due delle colonne del Forum, io non avrei potuto aiutarti.

Offline 9bit

  • Grande Gambero
  • ***
  • Post: 191
    • Mostra profilo
Re: Formulinux
« Risposta #58 il: 24 Marzo 2013, 19:11:01 »
Formulinux sta crescendo :)
Bene!  :)
Sto finendo un proggettino che ti può essere utile da inserire in Formulinux  :coder:

Offline Michy9393

  • Gran Maestro dei Gamberi
  • *****
  • Post: 570
  • Ubuntu: Linux for Human Beings
    • Mostra profilo
Re: Formulinux
« Risposta #59 il: 25 Marzo 2013, 01:32:03 »
Citazione
cusami se ti rispondo solo adesso  Sorriso
Ma noto che ti hanno dato la soluzione due delle colonne del Forum, io non avrei potuto aiutarti.
Ma che tranquillo :) anzi ringrazio tutti per la mano che mi state dando!

Citazione
Bene!  Sorriso
Sto finendo un proggettino che ti può essere utile da inserire in Formulinux  coder
Sono proprio curioso! :)