Le Costanti: differenze tra le versioni

Da Gambas-it.org - Wikipedia.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
Nessun oggetto della modifica
 
(15 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Se un valore è utilizzato in modo ripetuto all'interno dell'intero programma senza mai subire variazioni, è opportuno sostituirlo con un nome simbolico, definendo all'inizio del programma un identificatore di costante mediante la parola chiave '''Const'''.
Se un valore è utilizzato in modo ripetuto all'interno dell'intero programma senza mai subire variazioni, è opportuno sostituirlo con un nome ''simbolico'', definendo all'inizio del programma un identificatore di "''Costante'' " <SUP>&#091;[[#Note|Nota 1]]&#093;</sup> mediante la parola chiave '''Const'''.


Il nome attribuito alla ''Costante'' può contenere caratteri alfabetici (solitamente per convenzione in maiuscolo) e numerici posti nelle modalità accettate da Gambas.
===Dichiarazione della Costante simbolica===
La dichiarazione di una ''Costante'' simbolica avviene al di fuori delle routine e coincide con la sua inizializzazione.


Ovviamente il valore assegnato all'inizio alla ''Costante'', <SPAN style="text-decoration:underline">non può essere variato</span> nel corso del programma.
Può essere dichiarata come "Privata" o "Pubblica".  


Essendo poste al di fuori delle routine, le ''Costanti'' hanno la qualità di essere ''globali'' <SUP>&#091;[[#Note|Nota 1]]&#093;</sup>. Inoltre, esse possono essere ''Pubbliche'' o ''Private''.
La ''Costante'' è identificata con un nome ''simbolico'' che può essere costituito da caratteri alfabetici (solitamente per convenzione in maiuscolo) e numerici posti nelle modalità accettate da Gambas. <SUP>&#091;[[#Note|Nota 2]]&#093;</sup>
 
La dichiarazione termina con la definizione del tipo di dato a cui il valore della ''Costante'' appartiene e con l'assegnazione di un valore coerente con il tipo di dato dichiarato.
 
Pertanto la sintassi è:
[Private][Public] '''Const''' NOME_DELLA_COSTANTE As Tipo_di_dato = valore
Essendo poste al di fuori delle routine, le ''Costanti'' hanno la qualità di essere ''globali'' <SUP>&#091;[[#Note|Nota 3]]&#093;</sup>.


Esempio:
Esempio:
  Private <Font color=#B22222>'''Const'''</font> NOME_DELLA_COSTANTE As Integer = 4   <Font color=gray>' ''all'interno del programma si potrà usare il nome ''NOME_DELLA_COSTANTE'' al posto del numero 4''</font>
  Private <Font color=#B22222><B>Const</b></font> NOME_DELLA_COSTANTE As Integer = 4
<Font color=gray>' ''Ora, quindi, all'interno del programma si potrà usare l'identificatore '''''NOME_DELLA_COSTANTE''''' al posto del numero 4''</font>
   
   
   
   
Riga 15: Riga 23:
   Dim a As Integer
   Dim a As Integer
   
   
  a = 5 * NOME_DELLA_COSTANTE
  a = 5 * NOME_DELLA_COSTANTE
 
  Print a
  Print a
   
   
  End
  End
In console sarà mostrato coerentemente il risultato: 20
In console sarà mostrato coerentemente il risultato: 20


Ovviamente il valore, assegnato all'inizio alla ''Costante'', <SPAN style="text-decoration:underline"><B>non</b> può essere variato</span> nel corso del programma.
NOME_DELLA_COSTANTE = valore  <FONT Color=#B22222><B>ERRORE !</b></font>


==Particolarità dell'uso della Costante in Gambas==
==Particolarità dell'uso della Costante in Gambas==
Va sottolineato che alle ''Costanti'' non è possibile associare una variabile, una funzione o un'operazione.
Alle ''Costanti'' <SPAN Style="text-decoration:underline">in taluni casi</span> è possibile associare una variabile, una funzione o un'operazione. <B><SUP>&#091;[[#Note|Nota 4]]&#093;</sup></b>
<BR>Il valore della ''Costante'' deve essere definito in fase di dichiarazione e non deve puntare a nessuna cosa al di fuori della dichiarazione stessa.
 
Il valore della ''Costante'' deve essere definito in fase di dichiarazione e non deve puntare a nessuna cosa al di fuori della dichiarazione stessa.
<BR>Pertanto, ad esempio:
<BR>Pertanto, ad esempio:
  Public '''Const''' NOME_COSTANTE As Integer = 1            <FONT Color=darkgreen>Corretto</font>
  Public '''Const''' NOME_COSTANTE As Integer = 1            <FONT Color=darkgreen>Corretto</font>
  Private '''Const''' NOME_COSTANTE As String = "aBc"        <FONT Color=darkgreen>Corretto</font>
  Private '''Const''' NOME_COSTANTE As String = "aBc"        <FONT Color=darkgreen>Corretto</font>
  Private '''Const''' NOME_COSTANTE As String = "\x0F"        <FONT Color=darkgreen>Corretto</font>
  Private '''Const''' NOME_COSTANTE As String = "\x0F"        <FONT Color=darkgreen>Corretto</font>
Private '''Const''' NOME_COSTANTE As Integer = 2108 * 1969  <FONT Color=darkgreen>Corretto</font>
  Public '''Const''' NOME_COSTANTE As Long = CLong(1234)              <FONT Color=#B22222>ERRATO !</font>
  Public '''Const''' NOME_COSTANTE As Long = CLong(1234)              <FONT Color=#B22222>ERRATO !</font>
  Private '''Const''' NOME_COSTANTE As Boolean = (Not nome_variabile)  <FONT Color=#B22222>ERRATO !</font>
  Private '''Const''' NOME_COSTANTE As Boolean = (Not nome_variabile)  <FONT Color=#B22222>ERRATO !</font>
Private '''Const''' NOME_COSTANTE As Integer = 2108 * 1969          <FONT Color=#B22222>ERRATO !</font>
La ''Costante'' in Gambas consente di sostituire la funzione Chr() con i caratteri "''escape''" attualmente implementati ed attivi, come i seguenti:
La ''Costante'' in Gambas consente di sostituire la funzione Chr() con i caratteri "''escape''" attualmente implementati ed attivi.
<BR>Esempio:
  <TABLE>
  <TABLE>
  <TR><TD><FONT Color=red><B>Carattere ''escape''</b></font></td><TD>|</td><TD><B>Equivalente ASCII</b></td></tr>
  <TR><TD><FONT Color=red><B>Carattere ''escape''</b></font></td><TD>|</td><TD><B>Equivalente ASCII</b></td></tr>
  <TR><TD><FONT Color=red><B>\t</b></font></td><TD>|</td><TD><B>Chr(9)</b></td></tr>
  <TR><TD><FONT Color=red><B>\t</b></font></td><TD>|</td><TD><B>Chr(9)</b></td></tr>
  <TR><TD><FONT Color=red><B>\n</b></font></td><TD>|</td><TD><B>Chr(10)</b></td></tr> <TR><TD><FONT Color=red><B>\t</b></font></td><TD>|</td><TD><B>Chr(9)</b></td></tr>
  <TR><TD><FONT Color=red><B>\n</b></font></td><TD>|</td><TD><B>Chr(10)</b></td></tr>
  <TR><TD><FONT Color=red><B>\r</b></font></td><TD>|</td><TD><B>Chr(13)</b></td></tr>
  <TR><TD><FONT Color=red><B>\r</b></font></td><TD>|</td><TD><B>Chr(13)</b></td></tr>
  </table>
  </table>
Così, avremo ad esempio:
Private '''Const''' NOME_COSTANTE As String = "<FONT Color=#B22222>\n</font>"
==Uso delle Costanti dei tipi a virgola mobile con i numeri interi: Float esplicito==
Quando si usa una Costante di un tipo a virgola mobile con numeri interi, aggiungere sempre "'''.0'''" per forzare il tipo Single o Float, altrimenti, Gambas lo interpreta come ''Integer'' e le divisioni possono dare risultato 0 (troncamento).
Quindi faremo ad esempio
Private Const costante As Float = 123456'''.0'''  <Font color=gray>' ''<-- corretto: Float esplicito''</font>






=Note=
=Note=
[1] ''Globale'': ha effetto in tutta la classe e in tutte le funzioni contenute nella ''stessa'' classe.
[1] Dicesi '''''Costante''''' una grandezza il cui valore si mantiene inalterato.
 
[2] E' possibile utilizzare, come identificatore di Costante, il nome di una parola chiave, di una funzione oppure di un numero, purché tale nome - normalmente inutilizzabile - sia posto all'interno di due parentesi graffe.
<BR> Vedere la seguente pagina: [[Usare_come_identificatore_di_variabile_il_nome_di_una_parola_chiave_o_di_una_funzione_ovvero_un_carattere_non_consentito|Usare come identificatore di variabile il nome di una parola chiave o di una funzione ovvero un carattere non consentito]]
 
[3] Riguardo ai valori assegnabili alle Costanti si veda anche la pagina relativa alle [[Espressioni_costanti|Espressioni costanti]].
 
[4] ''Globale'': ha effetto in tutta la classe e in tutte le funzioni contenute nella ''stessa'' classe.





Versione attuale delle 11:23, 24 lug 2025

Se un valore è utilizzato in modo ripetuto all'interno dell'intero programma senza mai subire variazioni, è opportuno sostituirlo con un nome simbolico, definendo all'inizio del programma un identificatore di "Costante " [Nota 1] mediante la parola chiave Const.

Dichiarazione della Costante simbolica

La dichiarazione di una Costante simbolica avviene al di fuori delle routine e coincide con la sua inizializzazione.

Può essere dichiarata come "Privata" o "Pubblica".

La Costante è identificata con un nome simbolico che può essere costituito da caratteri alfabetici (solitamente per convenzione in maiuscolo) e numerici posti nelle modalità accettate da Gambas. [Nota 2]

La dichiarazione termina con la definizione del tipo di dato a cui il valore della Costante appartiene e con l'assegnazione di un valore coerente con il tipo di dato dichiarato.

Pertanto la sintassi è:

[Private][Public] Const NOME_DELLA_COSTANTE As Tipo_di_dato = valore

Essendo poste al di fuori delle routine, le Costanti hanno la qualità di essere globali [Nota 3].

Esempio:

Private Const NOME_DELLA_COSTANTE As Integer = 4
' Ora, quindi, all'interno del programma si potrà usare l'identificatore NOME_DELLA_COSTANTE al posto del numero 4


Public Sub Form_Open()

 Dim a As Integer

 a = 5 * NOME_DELLA_COSTANTE
 
 Print a

End

In console sarà mostrato coerentemente il risultato: 20

Ovviamente il valore, assegnato all'inizio alla Costante, non può essere variato nel corso del programma.

NOME_DELLA_COSTANTE = valore   ERRORE !

Particolarità dell'uso della Costante in Gambas

Alle Costanti in taluni casi è possibile associare una variabile, una funzione o un'operazione. [Nota 4]

Il valore della Costante deve essere definito in fase di dichiarazione e non deve puntare a nessuna cosa al di fuori della dichiarazione stessa.
Pertanto, ad esempio:

Public Const NOME_COSTANTE As Integer = 1             Corretto
Private Const NOME_COSTANTE As String = "aBc"         Corretto
Private Const NOME_COSTANTE As String = "\x0F"        Corretto
Private Const NOME_COSTANTE As Integer = 2108 * 1969  Corretto
Public Const NOME_COSTANTE As Long = CLong(1234)               ERRATO !
Private Const NOME_COSTANTE As Boolean = (Not nome_variabile)  ERRATO !

La Costante in Gambas consente di sostituire la funzione Chr() con i caratteri "escape" attualmente implementati ed attivi, come i seguenti:

Carattere escape|Equivalente ASCII
\t|Chr(9)
\n|Chr(10)
\r|Chr(13)

Così, avremo ad esempio:

Private Const NOME_COSTANTE As String = "\n"


Uso delle Costanti dei tipi a virgola mobile con i numeri interi: Float esplicito

Quando si usa una Costante di un tipo a virgola mobile con numeri interi, aggiungere sempre ".0" per forzare il tipo Single o Float, altrimenti, Gambas lo interpreta come Integer e le divisioni possono dare risultato 0 (troncamento). Quindi faremo ad esempio

Private Const costante As Float = 123456.0   ' <-- corretto: Float esplicito


Note

[1] Dicesi Costante una grandezza il cui valore si mantiene inalterato.

[2] E' possibile utilizzare, come identificatore di Costante, il nome di una parola chiave, di una funzione oppure di un numero, purché tale nome - normalmente inutilizzabile - sia posto all'interno di due parentesi graffe.
Vedere la seguente pagina: Usare come identificatore di variabile il nome di una parola chiave o di una funzione ovvero un carattere non consentito

[3] Riguardo ai valori assegnabili alle Costanti si veda anche la pagina relativa alle Espressioni costanti.

[4] Globale: ha effetto in tutta la classe e in tutte le funzioni contenute nella stessa classe.


Riferimenti