|
Página 1 de 1
|
Autor |
Mensaje |
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Problema Con Constantes
Buenas!.
Tengo definida varias constantes, algunas de ellas depende de otras a su vez.
Por ejemplo:
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"
|
#1 Miercoles, 21 Diciembre 2016, 19:24 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
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
|
#2 Miercoles, 21 Diciembre 2016, 20:06 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
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"
|
#3 Miercoles, 21 Diciembre 2016, 22:46 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Problema Con Constantes
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
|
#4 Jueves, 22 Diciembre 2016, 00:08 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
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
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"
|
#5 Jueves, 22 Diciembre 2016, 10:23 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Problema Con Constantes
el ejemplo no funciona por la falta de: .h
Sì, perdona, probablemente fue un problema con tag de HTML.
Ahora está bien.
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 !
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
|
#6 Jueves, 22 Diciembre 2016, 15:47 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
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"
|
#7 Jueves, 22 Diciembre 2016, 20:14 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 1
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 0 invitados Usuarios registrados conectados: Ninguno
|
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
|
|
|
|
|