Ave María, ¿cuándo serás mía?
Seguimos pues con las variables. Como hemos dicho, a las variables se les puede modificar el valor que contienen (por eso se llaman variables). Vamos a ver un algunos ejemplos:
Código: Seleccionar todo
#include <stdio.h>
int main(int argc, char *argv[])
{
int edad_pedrito;
int edad_josito;
edad_pedrito = 5;
edad_josito = 12;
printf("Edad de Pedro hace tiempo: %d\n", edad_pedrito);
printf("Edad de Jose hace tiempo: %d\n", edad_josito);
edad_pedrito = 7;
edad_josito = 14;
printf("Edad de Pedro ahora: %d\n", edad_pedrito);
printf("Edad de Jose ahora: %d\n", edad_josito);
getch();
return 0;
}
Primero veréis que ya no aparece #include <stdlib.h>. Esto es por el mero hecho de que no usamos ninguna función definida en ese fichero, por tanto nos sobra.
Código: Seleccionar todo
int edad_pedrito;
int edad_josito;
Ahora ya no asignamos las edades en la declaración. Esto significa que edad_pedrito y edad_josito tienen valores indefinidos (puede ser cualquier valor).
Código: Seleccionar todo
edad_pedrito = 5;
edad_josito = 12;
Aquí les asignamos valores. Estos valores sobreescriben los valores que hubiera anteriormente (los valores indefinidos).
Código: Seleccionar todo
edad_pedrito = 7;
edad_josito = 14;
De nuevo sobreescribimos los valores asignados anteriormente a edad_pedrito y edad_josito (5 y 12) por 7 y 14 respectivamente.
Evidentemente, sólo podemos asignar valores válidos según el tipo de la variable. Es decir:
Código: Seleccionar todo
edad_pedrito = "siete";
Sería incorrecto e ilegal, y el compilador nos daría un error en esta línea. Tampoco valdría
Código: Seleccionar todo
edad_pedrito = "17";
ya que al ponerlo entre comillas dobles estamos especificando que es una secuencia de caracteres y no un número (da igual que sólo sea una cifra, seguimos en las mismas). También sería incorrecto
Código: Seleccionar todo
edad_pedrito = 12.5;
porque hemos especificado int edad_pedrito, que como recordaréis es un entero, y 12.5 no es entero. Pero sin embargo
Código: Seleccionar todo
float edad_pedrito;
edad_pedrito = 12;
Es correcto, porque, aunque no especifiquemos explícitamente 12.0, el compilador sobreentiende esto (algo listo sí que es, pero no os fiéis...). Esto es porque los números reales (llamados coma flotante en programación) incluyen a los enteros, pero no viceversa.
Código: Seleccionar todo
#include <stdio.h>
int main(int argc, char *argv[])
{
char* nombre;
nombre = "Alfonsooooooooooo";
printf("%s\n", nombre);
nombre = "Digamelon\n";
printf("%s", nombre);
getch();
return 0;
}
Código: Seleccionar todo
char* nombre;
Declaramos una variable de cadena de caracteres llamada nombre.
Código: Seleccionar todo
nombre = "Digamelon\n";
Aquí veréis que hemos incluido el carácter cambio de línea (\n) en la variable en vez de en el printf(). Tanto monta que monta tanto.
Operaciones con variables
Bueno, todo esto de las variables está bien, pero ¿de qué sirven los datos si no los podemos manipular? Pues aquí que vamos con algunas operaciones
Código: Seleccionar todo
#include <stdio.h>
int main(int argc, char *argv[])
{
int edad_pedrito = 5;
int edad_josito = 12;
printf("Edad de Pedro ahora: %d\n", edad_pedrito);
printf("Edad de Jose ahora: %d\n", edad_josito);
printf("Edad de Pedro hace dos anios: %d\n", edad_pedrito - 2);
printf("Edad de Jose hace tres anios: %d\n", edad_josito - 3);
printf("La mitad de la edad de Pedro: %d\n", edad_pedrito / 2);
printf("La mitad de la edad de Jose: %d\n", edad_josito / 2);
printf("El triple de la edad de Jose: %d\n", edad_josito * 3);
printf("La suma de las edades de Pedro y Jose: %d\n", edad_josito + edad_pedrito);
getch();
return 0;
}
Lo primero que seguramente os llame la atención es que usamos expresiones en vez de variables en printf(). Ponemos las operaciones directamente en vez de usar variables. Esto es perfectamente legal. En cualquier lugar donde usemos una variable, podemos usar una expresión (una operación) tan larga como deseemos.
Lo segundo que algunos notaréis es que la mitad de la variable edad_pedrito (valor 5) es... ¿3? Esto es debido al tipo de datos de int edad_pedrito(integer, entero). Por tanto un entero dividido por un entero da un entero. Así que se redondea hacia el más cercano (hacia arriba si hay igual distancia como en este caso).
Más ejemplos:
Código: Seleccionar todo
#include <stdio.h>
int main(int argc, char *argv[])
{
float altura = 1.92;
float peso = 90;
printf("La mitad de la altura: %f\n", altura / 2);
printf("La mitad del triple del peso: %f\n", peso * 3 / 2);
printf("El doble del peso, mas 3: %f\n", peso * 2 + 3);
printf("El doble del peso mas 3: %f\n", (peso + 3) * 2);
printf("Factor del peso y la altura: %f\n", peso * altura);
printf("Relación peso - altura: %f\n", peso / altura);
printf("Relacion altura - peso: %f = %f\n", 1 / (peso / altura), altura / peso);
getch();
return 0;
}
Primero, veréis que usando el tipo float las divisiones ya no se redondean.
Código: Seleccionar todo
printf("El doble del peso, mas 3: %f\n", peso * 2 + 3);
printf("El doble del peso mas 3: %f\n", (peso + 3) * 2);
Es importante tener en cuenta el orden de precedencia de operadores. Como en las matemáticas, no es lo mismo 1+2*3 = 7 que (1+2)*3 = 9.
Código: Seleccionar todo
printf("Relacion altura - peso: %f = %f\n", 1 / (peso / altura), altura / peso);
Aquí veréis que usamos 2 expresiones en lugar de 2 variables. Como dijimos, donde va una variable puede ir una expresión. También veréis dos formas de calcular lo mismo ya que 1 / (x / y) = y / x.
Con todo esto, creo que se ve claramente la importancia de las matemáticas en la programación.
En el próximo veremos más operaciones con variables. ¡Hasta pronto!
EL PDF de esta lección para descargar (gracias a Kracker ):
<< Anterior Siguiente >>