Gambas-it

Gambas3 => Programmazione => Topic aperto da: vuott - 17 Settembre 2014, 23:46:28

Titolo: Funzione senza parametri riceve un valore senza uso di variabile globale e altro
Inserito da: vuott - 17 Settembre 2014, 23:46:28
Mi sono domandato se sia possibile passare un valore ad una Funzione, priva di parametri e posta in un unico Modulo principale (progetto a riga di comando), senza potersi servire di:
* variabili globali;
* altri Moduli o Classi create dall'utente;
* qualsiasi file esterno;
* funzioni esterne;
* comandi o programmi con Shell o Exec.

Insomma, tutto in locale.
E' dura con queste premesse, eh ?!

A me, per tentare di risolvere il dilemma, è venuto in mente di provare ad utilizzare in Gambas un Puntatore alla Funzione, ed ho scritto questo:
Codice: gambas [Seleziona]
Public Sub Main()

  Dim p As Pointer
  Dim st As Stream
  Dim i As Integer
  
' Creiamo un Puntatore alla Funzione:
   p = Calculus
  
' Scriviamo nel Puntatore un valore mediante i "Memory Stream":
   st = Memory p For Write
   Write #st, 9 As Integer
   st.Close
  
' Invochiamo la Funzione:
  i = Calculus()
  
  Print "Valore ritornato: "; i

End



Private Function Calculus() As Integer
  
  Dim pC As Pointer

' Puntiamo nuovamente alla Funzione:
   pC = Calculus
  
' Dereferenziamo il Puntatore (le variabili "p" e "pC" contengono il medesimo indirizzo di memoria: quello della Funzione)
' e facciamo una qualsiasi operazione:
   Return Int@(pC) * 100
  
End



Avete altre soluzioni e suggerimenti ?
Titolo: Re: Funzione senza parametri riceve un valore senza uso di variabile globale e altro
Inserito da: giob1642 - 20 Settembre 2014, 11:47:44
Sembra una forzatura voler fa fare a gambas cose specifiche del C.
Tuttavia una simile routine potrebbe essere usata per stabilire quali variabili dichiarate siano state effettivamente usate.
 Ciò permetterebbe un programmare più pulito.
giorgio
Titolo: Re: Funzione senza parametri riceve un valore senza uso di variabile globale e altro
Inserito da: vuott - 20 Settembre 2014, 13:53:57
Sembra una forzatura voler fa fare a gambas cose specifiche del C.
Ho semplicemente testato le possibilità di Gambas utilizzando esclusivamente funzioni appartenenti alle risorse di Gambas sulla base di principi di informatica generali (come ad esmepio appunto i Puntatori).  :-\
Io credo che non esistano funzionalità specifiche di un linguaggio. Può sembrare così con Gambas, poiché questo è un linguaggio ancora giovane, e molte funzionalità non sono inserite (ed in alcuni casi probabilmente non si può o vuole). E comunque anche in Gambas accade che vengono aggiunte nuove risorse, nuove funzionalità. Da dove provengono ?
E' appena il caso di aggiungere che lo stesso Gambas possiede la funzione Extern (http://www.gambas-it.org/wiki/index.php?title=Extern:_richiamare_funzioni_esterne_a_Gambas) che consente di richiamare e gestire funzioni di librerie esterne scritte in C che non appatengono a Gambas, ma sono "cose specifiche" dell'API di quella data libreria esterna. ....del resto da dove credete provengano i vari componenti gb.etcetera di Gambas ? A tal proposito, permettetemi di citare il mio maestro, D.B.: " Un linguaggio non serve a niente se non può chiamare altre librerie. "
Titolo: Re: Funzione senza parametri riceve un valore senza uso di variabile globale e altro
Inserito da: giob1642 - 20 Settembre 2014, 15:45:43
Sperimentare aiuta a crescere e mi spiace che hai mal interpretato il mio dire.
Se c'è una cosa che lo distingue dal C è l'immediatezza, la semplicità d'uso e come dici la facilità con cui è possibile interfacciarsi con altri linguaggi ed usare librerie altrui.
Non credo che sia interessante complicare queste eccezionali capacità introducendo i puntatori; Vero è però che quanto proponi può essere interessante per individuare le variabili dichiarate e poi non utilizzate.
con stima
giorgio
Titolo: Re: Funzione senza parametri riceve un valore senza uso di variabile globale e altro
Inserito da: vuott - 21 Settembre 2014, 13:36:23
.... può essere interessante per individuare le variabili dichiarate e poi non utilizzate.
Per fare questo è più facile e già sufficiente cliccare su: "Progetto" --> "Compila Tutto" nell'IDE.
Titolo: Re: Funzione senza parametri riceve un valore senza uso di variabile globale e altro
Inserito da: giob1642 - 21 Settembre 2014, 18:59:52
Ho provato quanto dici ossia "Progetto" --> "Alt +F7" , non mi pare che funzioni.
giorgio
Titolo: Re: Funzione senza parametri riceve un valore senza uso di variabile globale e altro
Inserito da: vuott - 21 Settembre 2014, 22:45:13
Alquanto strano.

L'avviso compare in basso nel settore "Warnings" della Console dell'IDE (vedi immagine allegata).
Titolo: Re: Funzione senza parametri riceve un valore senza uso di variabile globale e altro
Inserito da: giob1642 - 22 Settembre 2014, 10:30:07
Uso gambas 3.
Come vedi dalla schermata allegata non mi compare warnigs; mi compare un warnig sulle qt che non riesco ad eliminare (a dire il vero non ho approfondito il problema).
Questa discussione mi fa pensare che che vi sono molti dettagli ( non veri e propi errori) che potrebbero migliorare la vita del programmatore e di cui varrebbe la pena discutere.

Titolo: Re: Funzione senza parametri riceve un valore senza uso di variabile globale e altro
Inserito da: vuott - 22 Settembre 2014, 11:35:22
Come vedi dalla schermata allegata non mi compare warnigs;
Non so cosa dire. E' strano, però, che non ti compare, cliccando sulle voci "Progetto" --> "Compila Tutto", quell'avviso.   :-\
Titolo: Re: Funzione senza parametri riceve un valore senza uso di variabile globale e altro
Inserito da: giob1642 - 22 Settembre 2014, 11:48:17
no non compae, forse bisogna cambiare qualcosa nelle preferenze o nei componenti usati, ma non riesco ad individuare cosa.
giorgio
Titolo: Re: Funzione senza parametri riceve un valore senza uso di variabile globale e altro
Inserito da: vuott - 22 Settembre 2014, 11:58:38
Non so. Se mi trasmetti in privato, però, tutte le informazioni relative alla tua versione di Gambas ed al sistema, potrei - se non lo puoi fare tu - porre la domanda sulla Mailing List ufficiale.
Titolo: Re: Funzione senza parametri riceve un valore senza uso di variabile globale e altro
Inserito da: giob1642 - 22 Settembre 2014, 12:28:22
Mi piace molto questa collaborazione dammi un paio di giorni per esplicitari il problema, anzi ne approfitto per farti notare alcune anomalie o dettagli che sarebbero a mio avviso da migliorare.
giorgio

Titolo: Re: Funzione senza parametri riceve un valore senza uso di variabile globale e altro
Inserito da: vuott - 22 Settembre 2014, 12:41:56
Non qui, però. Apri delle discussioni specifiche.
Titolo: Re: Funzione senza parametri riceve un valore senza uso di variabile globale e altro
Inserito da: sotema - 24 Settembre 2014, 17:18:12
Progetto-->Proprietà-->Opzioni-->Activate Warnings = Si