Anuncios Google

Constantes

Tutoriales de Programacionmx

Ya vimos lo que es una variable, pero no es lo único que hay para manipular datos, existen tambien las constantes, son similares, pero las últimas tienen la singular característica de ser "definitivas", inmutables. Este tutorial es sencillo, pero no podemos dejar por un lado el uso de #define.

Es cierto eso que dicen: "Una imagen dice más que mil palabras". Y para evitarme parrafadas, hice una pequeña tabla, explicando las diferencias principales entre una constante y una variable. Aquí va:

 

Diferencias Constantes y Variables

 

Ahora, ¿por qué no cambiar la frase anterior? "Un código fuente dice más que mil palabras". Con esto quiero que abras tu IDE, vamos a estudiar un poco de código.

/*Jugando con las constantes*/
 
#include <stdio.h>
 
#define agnos_en_un_lustro 5
 
#define agnos_en_una_decada 10
 
#define agnos_en_un_siglo agnos_en_una_decada*(agnos_en_un_lustro*2)
 
int main()
{
    printf("Un lustro tiene %i agnos.\n",agnos_en_un_lustro);
 
    printf("Una decada tiene %i agnos.\n",agnos_en_una_decada);
 
    printf("Un siglo tiene %i agnos.",agnos_en_un_siglo);
 
    getchar();
 
    return 0;
 
} 


Primero, como es una costumbre, llamamos a stdio.h.

Aquí viene la parte que nos interesa:


#define agnos_en_un_lustro 5

Esto es una constante, fíjate, que como expliqué en la tabla para decalarar una, tenemos que anteponer #define, dejamos un espacio, escribimos su nombre (fíjate que no contienes carcateres extraños, salvo _, y no tiene espacios), dejamos otro espacio y le asignamos un valor. A diferencia de las variables, aquí es indistinto el tipo de dato, no es necesario especificarlo; en el ejemplo estamos usando enteros (más adelante veremos más). En el ejemplo la constante se llama agnos_en_un_lustro, y almacena un 5.

Las constantes son datos que nunca cambian, esta es su principal característica, para enfatizar esto, usé unidades de tiempo como ejemplo, todos sabemos que una década tiene 10 años (Si en donde vives una década no son 10 años, no eres de la Tierra).

Repetimos esto con otras 2 variables:


#define agnos_en_una_decada 10
 
#define agnos_en_un_siglo agnos_en_una_decada*(agnos_en_un_lustro*2)

La siguiente constante es simple, se llama agnos_en_una_decada y almacena un 10.

La siguinete es más compleja, agudiza tu vista, te puedes confundir. Se llama agnos_en_un_siglo y almacena un 100, éste es el resultado de las operaciones ahí representadas, empezemos por los paréntesis: agnos_en_un_lustro almacena un 5, si lo multiplicamos por 2 obtendremos un 10, si ese 10, lo multiplicamos por agnos_en_una_decada, es decir por 10, el resultado será 100 (Un siglo).

Después, iniciamos main() e imprimimos todas las constantes:


int main()
{
    printf("Un lustro tiene %i agnos.\n",agnos_en_un_lustro);
 
    printf("Una decada tiene %i agnos.\n",agnos_en_una_decada);
 
    printf("Un siglo tiene %i agnos.",agnos_en_un_siglo);
 
    getchar();
 
    return 0;
 
 
}  


Tambien hacemos uso del % seguido de la i de interger. Eso es todo, nada complicado, el resultado será:


Constantes 1

Ahora veamos como es que pueden interactuar las variables y las constantes. Inicia un nuevo documento.


/*Mezclando Variables con Constantes*/
 
#include <stdio.h>
 
#define IVA 15
 
float precio, precioIva;
 
int main()
{
 
    precio = 100;
 
    precioIva = precio + ((precio * IVA)/100);
 
 
    printf("Mi auto costaba %f \"$imoleanos\" sin IVA en los 40s.\n", precio);
 
    printf("Mi auto costaba %f \"$imoleanos\" con IVA en los 40s\n", precioIva);
 
 
    precio = 50;
 
    precioIva = precio + ((precio * IVA)/100);
 
 
    printf("\nHoy, mi auto cuesta %f \"$imoleanos\" sin IVA.\n",precio);
 
    printf("Hoy, mi auto cuesta %f \"$imoleanos\" con IVA.\n", precioIva);
 
    getchar();
 
    return 0;
}


Como siempre, las direwctivas. En seguida, declaramos una constante: IVA, y almacena 15.


#define IVA 15

El IVA (Al menos en México) es el 15% del precio de un objeto, es por eso que vale 15. Sigamos analizando.


float precio, precioIva;

Ahora declaramos dos variables tipo Float: precio y precioIva.

Ahora vamos a asignar valores a las variables. La funcion main() ya fue declarada.


    precio = 100;
 
    precioIva = precio + ((precio * IVA)/100);


precio almacena un 100. precioIva, almacena precio más su 15% (IVA), fíjate que IVA es una constante, nunca cambia, y ya fue declarada.

Ahora imprimimos las variables:


    printf("Mi auto costaba %f \"$imoleanos\" sin IVA en los 40s.\n", precio);
 
    printf("Mi auto costaba %f \"$imoleanos\" con IVA en los 40s\n", precioIva);

Esto ya lo sabes. Nota que usamos %f ya que las variables on del tipo Float.

La siguiente parte, es la que me interesa del programa:


    precio = 50;
 
    precioIva = precio + ((precio * IVA)/100);


Aquí Variamos las variables, cosa que no podríamos hacer con una constante. Después las volvemos a imprimir:


    printf("\nHoy, mi auto cuesta %f \"$imoleanos\" sin IVA.\n",precio);
 
    printf("Hoy, mi auto cuesta %f \"$imoleanos\" con IVA.\n", precioIva);


El programa da un giro. El resultado derá:


Constantes 2

Y para finalizar, vamos a experimentar con texto. Abre un nuevo documento y escribe:


/*Aun más constantes... ¿Texto?*/
 
#include <stdio.h>
 
#define texto "HOLA"
 
int main()
{
    printf(texto);
 
    getchar();
 
    return 0;
 
}


Fíjate que la forma de declarar esta constante no varía, sólo que el valor se encuentra entre comillas "".

Después, cuando queremos imprimir al constante, sólo ponemos el nomre de la variable como argumento, sin comillas ni nada parecido.

El resultado será:


Constantes 3

Hasta aquí el tutorial de constantes, es muy simple comparado con los anteriores, pero, repito, las constantes son una parte importante, no podemos dejarlas pasar.

4.714285
Tu voto: Ninguno Votos totales: 4.7 (28 votos)

Anuncios Google

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de TALENT CRAZY

Problema

aqui dejo mi codigo: el problema me lo da en el primer printf

/* jugando con las constantes */
#include <stdio.h>
 
#define años_en_un_lustro 5
#define años_en_una_decada 10
#define años_en_un_siglo años_en_una_decada*(años_en_un_lustro*2)
 
int main()
{
    printf("Un lustro tiene %i años.\n", años_en_un_lustro);
 
    printf("Una decada tiene %i años.\n", años_en_una_decada);
 
    printf("Un siglo tiene %i años.", años_en_un_siglo);
 
    getchar() ;
 
    return 0;
}


Los comienzos son difíciles, pero cuando tu cuerpo supera su límite, la mente pide más. Recomiendo que se pasen todos por mi canal de youtube, en el cual pasarán un buen rato. Advierto que soy novato, asique por más razón pasense y dejen comentarios para que mejore. Mi canal se llama MrTalentCrazy

Imagen de Dioni0396

tu problema esta

en que despues de la coma, pulsas la barra espaciadora.

Imagen de TALENT CRAZY

no lo veo

en que lugar o línea?

Imagen de Dioni0396

en todos los printsfs

hacer "noseque no se tal %i", agnos...

el problema es cuando pulsas el espacio despues de la coma.

Imagen de TALENT CRAZY

¿así?

printf("Un lustro tiene %i años/n",años_...) ;

Imagen de Comandillos

Y

el getchar, es getchar();, no getchar() ; y otra cosa, no uses la Ñ en un programa, y menos declarando constantes.

Imagen de Dioni0396

Efectivamente

Ya que puede producir un error en pantalla, al igual que ¿ que no se puede usar.

Imagen de TALENT CRAZY

gracias

Es verdad, pero lo de "getchar();" , es preferible "getchar() ;". Al estar mas espandido, da sensacion de claridad. Por lo menos a mí.


Los comienzos son difíciles, pero cuando tu cuerpo supera su límite, la mente pide más. Recomiendo que se pasen todos por mi canal de youtube, en el cual pasarán un buen rato. Advierto que soy novato, asique por más razón pasense y dejen comentarios para que mejore. Mi canal se llama MrTalentCrazy

Imagen de Dioni0396

pero da error.

pero da error.

Imagen de Ikefix

Creo que no haría falta poner paréntesis, corrígeme si me equivo

 

#define agnos_en_un_siglo agnos_en_una_decada*(agnos_en_un_lustro*2)


 Creo que no haría falta poner paréntesis, corrígeme si me equivoco 

 #define agnos_en_un_siglo agnos_en_una_decada*agnos_en_un_lustro*2

Y pondría int en vez de float para quitarme 0,s así:

 /*Mezclando Variables con Constantes*/
 #include <stdio.h>
 #define IVA 15
 int precio, precioIva;
 int main()
{
     precio = 100;
     precioIva = precio + ((precio * IVA)/100);
     printf("Mi auto costaba %i \"$imoleanos\" sin IVA en los 40s.\n", precio);
     printf("Mi auto costaba %i \"$imoleanos\" con IVA en los 40s\n", precioIva);
     precio = 50;
     precioIva = precio + ((precio * IVA)/100);
     printf("\nHoy, mi auto cuesta %i \"$imoleanos\" sin IVA.\n",precio);
     printf("Hoy, mi auto cuesta %i \"$imoleanos\" con IVA.\n", precioIva);
     getchar();
     return 0;
}
Creo que también definir iva como 0.15 facilitaría el trabajo del tuto.

Un cordial saludo, admiro tu trabajo.

 

Gracias

Gracias Tanos, que estoy aprendiendo a programar. Aunque varío un poco los programas (Básicamente, puse Hola en lugar de HOLA, coche en lugar de auto y $imoleones en lugar de $imoleanos). ¿Alguien me puede decir si esto sirve para programar en NDS?


Draven no, DRAAAAAAAAAAAAAAAVEN.

Imagen de magicblack2009

Claro

Esto es la base para programar en C en cualquier plataforma, no solo NDS, pero si luego te quieres especializar en la programación de NDS, debes de pasarte por los tutoriales de programación para NDS.

Salu2.


¿Quieres estar totalmente informado sobre el universo 3DS? Visita Magic3DS.

También puedes estar al tanto de toda la actualidad de 3DS en Twitter: @Magic3DS

Gracias

Gracias, que este verano quería hacer un (o dos, tres cuatro...) homebrew de DS y no tengo ni papa de programación.

Imagen de iRVing_Prog

problema el segundo valor de float

hola pues tengo un problema, es que cuando voy a escribir lo que ah de costar el producto al dia de hoy osea "50" no lo escribe en pantalla, pero el iva si, aca dejo el codigo para que me puedan hechar una mano.

/*Mezclando Variables con Constantes*/
 
#include <stdio.h>
 
#define IVA 16
 
float precio, precioIva;
 
int main()
{
    precio = 100;
 
    precioIva = precio + ((precio * IVA)/100);
 
    printf("Mi auto costaba %f \"$mexicanos\" sin IVA en los 40s.\n",precio);
 
    printf("Mi auto costaba %f \"$mexicanos\" con IVA en los 40s\n",precioIva);
 
    precio = 50;
 
    precioIva = precio + ((precio * IVA)/100);
 
    printf("\nHOY, mi auto cuesta %F \"$mexicanos\" sin IVA.\n",precio);
 
    printf("Hoy, mi auto cuesta %f \"$mexicanos\" con IVA.\n",precioIva);
 
    getchar();
 
    return 0;
}

disculpen por postear un error algo tonto pero creo que les puede ocurria a muchos el problema fue que al escribir "%f" lo escribi en MAYUSCULAS y era donde no podia reconocer la variable.

y Gracias por los tutoriales estan muy buenos y faciles de entender


 

Imagen de Jaiminhio_Milhan

felicitaciones por el buen

felicitaciones por el buen tuto y muchas gracisa y se que el tuto esta algo olvidado, pero si algun editor se pasea por aqui encontre un error(sin mucha relevancia pero puede confundir:

"Las variables son datos que nunca cambian, esta es su
principal característica, para enfatizar esto, usé unidades de tiempo
como ejemplo, todos sabemos que una década tiene 10 años (Si en donde
vives una década no son 10 años, no eres de la Tierra)."

las variables SI cambian, son las CONSTANTES las que no cambian.

un saludo

Imagen de burnxez

Corregido

Gracias por el aviso ;-)

Saludos.

Imagen de Juanolo

gracias

chido

Imagen de rafaourense

si a las iniciativas

Hola Tanos, todo lo que sea programación es bienvenido y no limita el SO

Me gusta eso de : Manuales Recontrabuenos en español.

Como dices: "un código fuente vale más que mil palabras" "las variables nunca cambian", si vives 10 años, je,je.

Muy bien explicado, sencillo y claro, al final vuelvo a win, je, je.

Saludos,rafa

Imagen de Temporalin

Pregunta

Gracias por los tutos lo primero. Lo segundo es una pregunta puede que absurda, puede que no. ¿Para qué sirve el \n que aparece en los printf?


 

Imagen de Robione22

Creo que es

para dar un salto de línea, osea es como dar Enter en la PC.

SalU2.

Imagen de pspgorrister

Normas de estilo

Te lo digo como consejo porque veo que usas minúsculas:

Es costumbre (especialmente en C), poner los nombre de constantes en mayúsculas para
diferenciarlas de las variables. La casi totalidad de las librerías existentes así lo hacen.

A la hora de editar (o comprender) un código, te ahorra mucho tiempo porque no tienes que averiguar lo que es una constante.


LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.

Imagen de Gold_Dragon

pacht

tengo windows xp pack 2003 y no me aparece el archivo

pacht en mi pc che pasa

Imagen de P22

Tio Tanos te picas mucho.

Tio Tanos te picas mucho. Ademas yo no pretendi ofender , yo mi comentario lo decia a modo de alago (creo que esta mal escrit XD)

Ya que como habras podido observar he dicho que estan mejor hechos que de ahi. Y lo dije con intencon de pedir perdon por lo del privado pero bueno.

Saludos


¡Iníciate en Linux fácilmente! Sólo entra aquí y comprueba que distribución se adapta mejor a tí.

Mi review: iPod Touch 4G

Imagen de Guillermo_Cornielle

No te preocupes

No creo qe tanos se enoje con semejantes cosas, pero claro, el que alguien le este diciendo que esta copiando cosas de otro luagr y decirlo indirectamente (como lo dijistes tu) hartaria a cualquiera.

Saludos. 


Manual del Perfecto Votante Para un voto libre y justo!.

TheGCProjects

Imagen de P22

Pero yo de todos modos , ya

Pero yo de todos modos , ya pedi perdon y lo siento .

Salduos

Imagen de Tanos

Voy a hablar :P

Vamos por partes.

Como dijo Guillermo, a mi este tipo de cosas no me hacen enojar, les doy, realmente, poca importancia. No me importa que alguien me levante falsos, o diga cosas de mi, yo soy yo, yo sé qué es lo que hago y lo que no hago.

Por MP, te diste cuenta que no estaba enojado, de hecho hasta te deseé suerte en el Scenery, y no fue sarcasmo. Pero si me llamó mucho la atneción que alguien me enviará un privado diciendo: "Oye, sacaste los tutos de aquí. Pero no se lo diré a nadie. Por lo menos aportas a la comunidad" Más o menos tu MP fue así. Y como te contesté ¿Era necesario que me lo dijeras? Y para colmo, me lo dices como si estuviera cometiendo algún delito.

Pana tiene toda la razón, este caso, ni si quiera alcanza la categoría de problema, no hay por qué lamentar nada. No estoy enojado, ni lo estuve. Pero te quize dar una lección, y espero que la hayas entendido.

Imagen de Guillermo_Cornielle

Me encanta

Tio, no me mal interpretes, pero me encanta tu forma de expresarte, como tu no hay otro, con esa paciencia y trankilidad, de verdad que eres todo un buen ejemplo a seguir en cuanto a paciencia se refiere.

Saludos. 


Manual del Perfecto Votante Para un voto libre y justo!.

TheGCProjects

Imagen de Pana

Basta ya de disculpas, que

Basta ya de disculpas, que esto empieza a ser una conversación de "moñas" XDDDD (Es en puro cachondeo jeje).

Pues eso, que aquí no ha pasado nada. Un saludooo.

Imagen de P22

Cuando se acabe la scenery

Cuando se acabe la scenery pienso ponerme a aprender estos tutos que estan muy bien , ademas , vienen mejor explicados que de donde tu ya sabes ;) (No te preocupes que no digo nadaFoot in mouth)

Saludos PCero XD


¡Iníciate en Linux fácilmente! Sólo entra aquí y comprueba que distribución se adapta mejor a tí.

Mi review: iPod Touch 4G

Imagen de Tanos

Me estoy hartando

Y para que veas que eso no me molesta lo más absoluto:

Aprendí a programar en www.elrincondelc.com los tutoriales (al menos el primero) tienen cierta base de ese sitio, nada más.

¿Acaso es pecado aprender? ¿Acaso es pecado compartir lo aprendido?

Imagen de Pana

Precisamente esa es nuestra

Precisamente esa es nuestra filosofía Tanos. Absorber, masticar, digerir, escribir. Además, me parece intachable tu actitud de que, amedida que estás aprendiendo a programar, quieras y tengas ganas de compartir lo nuevo que aprendes y que te gusta con los demás. Para mi es de admirar.

Así que... El comentario de P22 no te lo tomes a mal, al fin y al cabo va a aprender a través de tus tutoriales, sientete orgulloso de ello que bien te lo mereces :).

Saludos.

Imagen de sebas_94

Gracias

Este me a servido de mucha ayuda, he aprendindo sin probarlo. A ver si hoy tengo mi pc windows preparado y hago prebas.


Salu2

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.