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:
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 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á:
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);
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á:
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á:
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.
Comentarios
Problema
aqui dejo mi codigo: el problema me lo da en el primer printf
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
tu problema esta
en que despues de la coma, pulsas la barra espaciadora.
no lo veo
en que lugar o línea?
en todos los printsfs
hacer "noseque no se tal %i", agnos...
el problema es cuando pulsas el espacio despues de la coma.
¿así?
printf("Un lustro tiene %i años/n",años_...) ;
Y
el getchar, es getchar();, no getchar() ; y otra cosa, no uses la Ñ en un programa, y menos declarando constantes.
Efectivamente
Ya que puede producir un error en pantalla, al igual que ¿ que no se puede usar.
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
pero da error.
pero da error.
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)
Y pondría int en vez de float para quitarme 0,s así:
#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.
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.
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.
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.
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
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
Del problema de diseño del iPhone 4 y el descaro de Steve jobs..
sin firma!!! D:,
Corregido
Gracias por el aviso ;-)
Saludos.
gracias
chido
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
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?
Creo que es
para dar un salto de línea, osea es como dar Enter en la PC.
SalU2.
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.
pacht
tengo windows xp pack 2003 y no me aparece el archivo
pacht en mi pc che pasa
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
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
Pero yo de todos modos , ya
Pero yo de todos modos , ya pedi perdon y lo siento .
Salduos
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.
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
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.
www.SceneBeta.com recomienda Mozilla FireFox.
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 nada)
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
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?
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.
www.SceneBeta.com recomienda Mozilla FireFox.
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