Translate

25 ago 2014

Programación en C [Parte 2]

En esta entrada hablaré más sobre los distintos formatos que podemos usar para tabular o para dar saltos de línea. Así como los tipos de datos, qué son las variables y cómo podemos usarlas.

Vamos primero con los los tabuladores y los saltos de línea. La tecla del Tabulador (situada encima de las mayúsculas, para quién no lo sepa), se representa con el formato de: \t; mientras que los saltos de línea se representan con: \n; veamos el siguiente código fuente de mi fichero "formatos.c":

La primera línea es un comentario, iniciado por las barritas dobles, esto indica que ese comentario será solo de una línea, y no de varias como los comentarios que usan los asteriscos. El include, me permite insertar en el programa una librería llamada "stdio.h", en la cual se recopilan numerosas funciones y código para que podamos usarlo. Y en la función main, la función principal (el programa en sí), se ejecuta un printf que saca por pantalla el texto amarillo, el cual sacará por pantalla lo siguiente, literalmente:
..1
    ..2
        ..3
¿Pero cómo es posible que haga esto? Por los formatos de tabulación y salto de línea que hay incluidos dentro del texto. El printf, y el programa en sí, van ejecutando línea a línea y letra a letra, después del primer número, hay un "\n\t", lo cual indica que salte hacia abajo y escriba el texto separado del margen. Así con lo demás, no tiene mucho misterio. Compilamos el programa con: gcc formatos.c -o formatos.out; y no recibiremos ninguna advertencia esta vez (no como en la primera parte), porque la librería ya contiene el printf y al acceder a ella, puede usarlo sin problemas. Es como si al incluir el stdio.h, estuviésemos incluyendo todo el código que trae consigo, donde se encuentra el printf. Una captura de pantalla deja las cosas más claras:

El siguiente punto son las variables. ¿Qué son las variables? Pues son datos, letras o nombres que contienen datos (explicado de forma cutre, vaya xD), y son de un tipo concreto. Pueden ser letras, cadenas de texto, números... Los tipos de datos existentes en C son los siguientes:

char: indica que la variable contendrá una sola letra, sea la que sea. También puede ser un número, pero no se podrá operar con ella; es, básicamente, texto.

int: indica que la variable será un número comprendido entre 0 y 255. Por lo general y por regla obvia, estas variables están destinadas a las operaciones matemáticas, y tienden a cambiar su valor o cambiar el de otras.

float: no obstante, el tipo de dato anterior tenía como máximo hasta 255 números, ¿qué pasaría si en un momento necesitamos un valor mucho mayor? Pues para eso se ha generado el tipo de dato flotante, que soporta números negativos, positivos y decimales de gran tamaño. Exactamente, comprende un rango desde -3.2x10^+-38 hasta +3.2x10^+-38.

Hay más tipos de datos, pero por lo general estos son los básicos y los necesarios. Ya iré explicando más sobre la marcha, pero no en esta entrada.

Para definir una variable es suficiente con seguir el siguiente esquema: tipo de dato identificador = valor:

Podemos incluso definir numerosas variables en una sola línea separándolas con comas. Pero no hay que olvidar tampoco que estas son variables locales, es decir, solo funcionan dentro de la función main, en otra zona del programa no existirían y sería necesario volverlas a declarar. Hay varios métodos para pasar variables locales (o sus valores) a través del flujo del código, como accediendo a su zona de memoria y coger lo que contiene y pasarlo a otra función, pero para ahorrarnos tantas complicaciones, podemos simplemente hacer variables globales, las cuales se definen encima de main y bajo las librerías, y como su nombre indica, al ser globales para todo el programa, funcionan en cualquier parte:

Lo que estamos haciendo con esto es definir una variable global, que será para todo el código un cinco, y dentro de main una variable char que es una letra A mayúscula, así como dos variables numéricas (dos y tres, respectivamente), y la variable x, que valdrá 2.5 (un número decimal).

Ahora bien, vamos a ver cómo sacar por pantalla el valor de estas variables, así como utilizarlas u operar con ellas. Cada tipo de dato contiene además un formato concreto a la hora de usarlo en un printf, como los tabuladores y los saltos de línea de arriba, no obstante, los formatos son diferentes. El tipo de dato char usa el formato "%c", el tipo de dato int usa el formato "%d", y el tipo de dato flotante usa el formato "%f". Hagamos un printf y veamos la prueba:

La sentencia del printf es la siguiente: printf("La variable 'ch' es:\t%c\nLa variable 'a' es:\t%d\nLa variable 'b' es:\t%d\nLa variable 'x' es:\t%f\n", ch, a, b, x);

Hay que darse cuenta que después del texto va una coma con las variables que usará, en orden de aparición, el primer "%c" corresponde a 'ch', el segundo %d corresponde a 'a', y así. Veamos qué sale por pantalla:

Pero, uy, ese número decimal es muy grande, para remediar esa cantidad de ceros hay que escribir el formato del número flotante de la siguiente forma: "%.2f", de esta manera solo saldrán dos decimales.

Respecto a la variable global, voy a comprobar ahora cómo se comporta haciendo una sencilla suma:

Lo cual saca por pantalla:

Vemos como de un printf a otro no parecer haber diferencia, pero entre ambos, en el código fuente, vemos que hay una suma que incrementa a la variable global su propio valor con el de 'a' y 'b', lo cual resulta en diez (sí, he cogido esos valores a propósito, ¡odiadme!).

Los operadores los dejaré para otro momento, y pensad que la utilidad de las variables globales puede ser para almacenar contraseñas, donde el valor queda registrado. Y tampoco olvidéis compilar cada vez que modifiquéis el código fuente, aunque creo que esto resulta obvio.

Hasta más ver~

No hay comentarios: