Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Problema Con Constantes
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Problema Con Constantes 
 
Buenas!.

Tengo definida varias constantes, algunas de ellas depende de otras a su vez.
Por ejemplo:

Const MARGEN As Integer = 5
Const NUMCELDAS As Integer = 10
Const NUMMARGENES As Integer = NUMCELDAS + 1
 


El error es "No coinciden los tipos".
¿ Puede existir dos posibilidades del motivo del error ?.

- En la misma constante se le asigna el valor de otra constante y una operación.
- En la misma constante se define una operación.
- Puede que espere un valor entero y no una constante ( que es un entero ).

Esto no ocurría en Visual Basic, creo. En Python no ocurre. En C no lo sé.
Esos valores no van a cambiar a lo largo de todo el programa.

¿ Algún motivo por el que tenga que usar una variable y no una constante ?.
¿ Qué falla en la definición ?.

Citar:

{ PUBLIC | PRIVATE } CONST Identificador AS TipoDato = Valor constante


Citar:

Los tipos de datos de las constantes pueden ser: Boolean, Integer, Long, Float o String.


Una constante es un tipo de dato que no varia. Eso es lo que hemos aprendido.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con Constantes 
 
Shell:
Citar:

Const NUMCELDAS As Integer = 10
Const NUMMARGENES As Integer = NUMCELDAS + 1

No tiene sentido...

Si NUMMARGENES depende de otra variable (aunque sea constante), no puede ser constante ya que depende de algo. Cualquier cambio en NUMCELDAS, revierte en un cambio de valor de NUMMARGENES, por lo tanto NUMMARGENES no es una constante

Citar:

Const NUMCELDAS As Integer = 10
Const NUMMARGENES As Integer = 11

 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con Constantes 
 
Julio:

Citar:

Si NUMMARGENES depende de otra variable (aunque sea constante), no puede ser constante ya que depende de algo. Cualquier cambio en NUMCELDAS, revierte en un cambio de valor de NUMMARGENES, por lo tanto NUMMARGENES no es una constante


Entendido, a pesar de todo son valores que no cambian a lo largo de todo el programa. No puedo fijar NUMMARGENES ya que depende de NUMCELDAS.
Son valores que se definen al principio del programa en el caso de que se quiera tener un NUMCELDAS mayor o menor.

Luego en el programa siempre se va tener en cuenta ese valor fijo.
No se puede operar en una constante. No seria una constante.  

Como vi que era algo que no iba a variar después de la creación de la constante, lo interpreté como constante, sin tener en cuenta la primera operación.

En gambas se nota más ya que el interprete se queja del tirón. Con el tipado fuerte.
Quizás en Python con PEP8 (la guía de estilo que pueden incorporar algunos editores, pueda detectar eso )...

Todo es cuestión de que sepa bien lo que esta haciendo el programador. Si no es por la consulta, no acabo de enterarme,
a pesar de saber lo que es una constante.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con Constantes 
 
Shell escribió: [Ver mensaje]
En C no lo sé.

En C es posible.

Vamos a probar este codigo:
#include <stdio.h>


int main() {

/* Al usar una Macro con la Directiva "#define"  */
       #define AAA  100
       #define BBB  AAA + 100

/* Al usar la palabra-llave "const"  */
        const int CCC = BBB + 100;
        const int DDD = CCC + 100;


/* ...a verlas */
        printf("BBB = %d\n", BBB);
        printf("CCC = %d\n", CCC);
        printf("DDD = %d\n", DDD);

        return (0);

}


En efecto, las Constantes "BBB", "CCC" y "DDD" no son modificadas, ya que la asignación de sus valores ocurre en fase de declaración de las Constantes.
 



 
última edición por vuott el Jueves, 22 Diciembre 2016, 15:47; editado 2 veces 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con Constantes 
 
Vuott:

Antes de nada aclarar, que como estoy un poco oxidado con C, el ejemplo no funciona por la falta de: .h

#include <stdio.h>
....
 


Citar:

ejemploconstantes.c:1:17: fatal error: stdio: No existe el archivo o el directorio
 #include <stdio>
                 ^
compilation terminated.




Citar:

En efecto, las Constantes "BBB", "CCC" y "DDD" no son modificadas, ya que la asignación de sus valores ocurre en fase de declaración de las Constantes.


A ver, esto no lo he entendido. A la hora de mostrar la salida parece que cambian.  
Se hace la operación y se le asigna el valor al identificador.

Citar:

BBB = 200
CCC = 300
DDD = 400


Lo que si parece es que gambas sea más exclusivo en el tipo de valores para las constantes que otros lenguajes.
Por cierto Vuott.

¿ Qué método te gusta más para definir las constantes en C ?.
Ya veo que se puede usar #define y const, me gusta más const, en define, no hace falta "=".
¿ Al usar #define, el compilador entiende "mágicamente" el tipo que es ?.  
Vaya. ejem, ejem..tipado dinámico. A que me sonara eso.  

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con Constantes 
 
Shell escribió: [Ver mensaje]
el ejemplo no funciona por la falta de: .h

Sì, perdona, probablemente fue un problema con tag de HTML.    
Ahora está bien.



Shell escribió: [Ver mensaje]
A la hora de mostrar la salida parece que cambian.

Mira mejor: las Constantes no cambian.
Por ejemplo BBB no está declarada como 100, sino 200 !  



Shell escribió: [Ver mensaje]
Al usar #define, el compilador entiende "mágicamente" el tipo que es ?

En general en C las Constantes puedon ser de tres tipos:
* decimales;
* caracteres
* coma flotante




El "C" es la hoz que corta la serpiente.    
 



 
última edición por vuott el Jueves, 22 Diciembre 2016, 16:03; editado 4 veces 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con Constantes 
 
Citar:

Mira mejor: las Constantes no cambian.
Por ejemplo BBB no está declarada como 100, sino 200 !


Vale, pero su valor constante depende de la declaración de otro valor almacenado en otra constante.
Que es lo que hablaba al principio de este mensaje.

Rompe en parte la idea que tenemos la idea de las constantes.

Citar:

El "C" es la hoz que corta la serpiente.


Que va, si C en parte es padre de Python.
El hijo salió mejor que el padre.  

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Constantes Shell General 2 Domingo, 01 Diciembre 2013, 19:25 Ver último mensaje
Shell
No hay nuevos mensajes Tipos De Datos. Constantes Shell General 3 Domingo, 31 May 2015, 19:37 Ver último mensaje
vuott
No hay nuevos mensajes Usar Constantes En Vez De Cadenas Shell General 5 Martes, 13 Diciembre 2016, 01:35 Ver último mensaje
tincho
No hay nuevos mensajes [SOLUCIONADO] Declaración De Constantes calcena General 2 Martes, 31 Julio 2018, 08:52 Ver último mensaje
Shell
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 0 invitados
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron