adf.ly

sábado, 15 de octubre de 2011

4. Programacion en C - Tipos de Datos

Tipos de Datos

Los tipos de datos son expresiones que se utiliza en dependencia de que es lo que se este trabajando. Los tipos de datos son varios y su funcion es clasificar, como su nombre lo dice, los datos con los que se van a trabajar.

Tipos de Datos:

Tipos de datos enteros: char, int, long, enum.
Tipos de datos reales: float, double y long double.
Otros: void.

Tipo Char (Tipo caracter = 1 byte)

Sirve para guarda caracteres, cada caracter corresponde a 1 byte. Ej. Hola, tiene 4 byte. Sin embargo los valores no son guardados como alfanumericos, sino que lo son en forma numeral, esto es usando el ASCII con un rango de -128 a 127 (siendo de 0 a 127 propios del codigo ASCII).

char letra = 'A';
ó
char letra = 65;

Tipo Int (Tipo entero = 2 byte)

El tipo int es para definir valores enteros sin decimales (Z). El rango que puede tomar es de -32768 a 32767.

int num = 22;
int a = 14;
int xxx = 100;

Tipo Long (Tipo entero con formato largo = 4 byte)

Es igual que int, pero su única caracteristica es la inclusion de mas numeros desde -2147483648 hasta 214748347.

long num = 22;
long a = 214748347;

Tipo enumerado

enum, lo que hace es, como su nombre lo dice, enumerar los tipos de datos, crear una enumeracion es definir un nuevo tipo de dato,denominados tipo enumerado y declarar una variable de este tipo. La sintaxis es la siguiente.

enum tipo_enumerado
{
/*Definicion de nombres de constantes enteras */
}

Ej:

enum arcoiris
{
    rojo,amarillo,verde,azul,blanco
};

Con enum, es como si desarrollemos un tipo de dato nuevo, es por eso que para usarlo es necesario llamarlo como si de otro tipo de datos fuese.
Ej:

enum arcoiris color;

Esta es una forma de hacerlo, pero hay la funcion enum nos permite declarar una variable en su misma funcion.
Ej:

enum arcoiris
{
     rojo,amarillo,verde,azul,blanco
}color;

De esta forma la variable ya queda declarada.
Enum, es una enumeracion, eso quiere decir que cada uno de sus valores (en este caso, rojo,amarillo...), tienen un valor de posicion (enumerado) comenzando desde 0, asi:
rojo = 0.
amarillo = 1.
verde = 2.
azul = 3.
blanco = 4.

Pero esto se puede modificar a nuestra conveniencia, solo hay que asignarle el numero que se quiere.
Ej.

enum arcoiris
{
    rojo,amarillo,verde=100,azul,blanco
};

La enumeracion siguiente daria el siguiente orden.

rojo = 0.
amarillo = 1.
verde = 100.
azul = 101.
blanco = 102.

Tipo Float (Reales de precision simple = 4 byte)

En este tipo de dato podemos almacenar numeros decimales. El rango de posibles valores es:
-3,402823E+38  a  -1,175494E-38 para numeros negativos.
1,175494E-38  a  3,402823E+38  para numero positivos.

Un número real de simple precision no tiene mas de 7 digitos significativos.
La verdad yo NO soy cientifico, es por eso que 7 digitos, me parece una barbaridad, es decir en vez de definir:
PI = 3.1416
con float podriamos definirlo como:
PI = 3.141592

Ahora definamos PI usando float, es como un int o char, asi que no prestaremos mucha atencion, quedaria asi:

float pi = 3.1416;

Tipo Double (Reales de precision doble = 8 bytes)

Ya se podran imaginar, este es un float x2, en este se pueden almacenar numeros reales en el rango de:
-1,79769E+308  a  -2,22507E-308 para numeros negativos.
2,22507E-308   a  1,79769E+308 para numeros positivos.

Con una presicion de 16 digitos significativos.
Bien ya les dije, no soy cientifico (jejeje), pero necesitaremos este tipo, a la hora de trabajar calculos matematicos o fisicos grandes.
Para definirla lo hacemos igual que el float:

double pi = 3.141593;

La diferencia se nota al usar E o e.

Tipo Long Double (doble formato largo = 10 byte)

Los valores que comprenden son:

-1.189731E+4932  a  -3.362103E-4932 para numeros negativos
3.362103E-4932  a  1.189731E+4932  para numeros positivos

Un numero real de doble formato largo puede tener hasta 19 digitos significativos.
Ej:

long double y = 3.14e+425;

Tipo Void

Especifica un conjunto vació de valores. En realidad void no es un tipo, aunque por su forma de utilizarlo lo colocamos aquí. Debido a que no es un tipo, no se puede declarar una variable tipo void.

void a; //da error, no se puede declarar una variable tipo void.

El uso que se le da a void es muy diferente, alguno de los casos son:

Indicar que una función no acepta argumentos:
double fx(void);

Declarar funciones que no retornan ningún valor.
int main (void)

Declarar un puntero generico, esto es, un puntero a un objeto de tipo desconocido.
void *p;

Constantes

Las constantes son datos que en el programa no cambian su valor y que es necesario que permanesca asi.
Hay dos formas de declarar constantes:

Antes de la función principal:

#include <stdio.h>
#include <stdlib.h>

#define pi 3.1416
#define hi "Hola mundo"

La otra forma es dentro de una función ej:

int main()
{
   const int a = 3;
   const float pi = 3.1416;
}

Las diferencias están mas que claras, pero a eso hay que agregar que usando #define, estamos diciendo que esa constante estará disponible para todo el programa y usando const decimos que esa constante estará disponible solo para esa función, en este caso la función principal main.
Ademas con const, debemos indicar el tipo de dato que usara esa constante (int, float, double...) con # define eso se omite.

Sabias Que:
No es lo mismo declarar que inicializar?
Declarar: int a;
Inicializar: int a =3;

Sabias Que:
El valor en Bytes de cada tipo, en realidad depende de cada compilador, es decir que en Pelles C y Dev C++ los valores de estos puede diferir.


No dejare, Ejercicios en esta ocasión, los dejare para el siguiente post, ya que para practicar con los tipos de datos necesitamos otros conocimientos (algo sencillo), pero que lo daré en la siguiente ocasión.



Anterior                                                                     Siguiente




No hay comentarios:

Publicar un comentario