domingo, 11 de mayo de 2014

Tipos de Datos

Tipos de Datos

Los datos los podemos representar mediante dos formas, constantes o variables; constantes, son datos preseleccionados en tiempo en el tiempo de compilación, estos valores se mantienen durante toda la ejecución del programa. Variables, esta es una posición de memoria con nombre, en donde se guarda su valor, el mismo que puede ser modificado durante la ejecución del programa. En lenguaje C se debe declarar las variables previamente antes de usarlas a diferencia de otros lenguajes de programación; esto se debe a que en la compilación se asigna el espacio de memoria para las variables según el tipo de variable declarado.

Tipos de Datos en C

C no soporta un gran número de tipos de datos predefinidos, pero tiene la capacidad para crear sus propios tipos de datos.[1] En lenguaje C existen 5 tipos de datos básicos los cuales son:
v char (Carácter),
v int (Entero),
v float (Punto flotante),
v doublé (Punto flotante de doble precisión),
v void (Sin valor)
Todos los demás tipos de datos que podamos encontrar son variantes de estos.
Tipo
Ejemplo
Tamaño en bytes
Rango
Mínimo . . Máximo
char
short
int
unsigned int
long
float
double
long double
‘C’
15
1024
42325
262144
10.5
0.00045
1e-8
1
2
2
2
4
4
8
8
0
-128
-32768
0
-2147483648
3.4*(10-18)
1.7*(10-308)
Igual
. .
. .
. .
. .
. .
. .
. .
que
255
127
32767
65535
2147483637
3.4*(1018)
1.7*(103088)
double
Tabla 1. Tipos de datos simples en Lenguaje C.
1.  Tipo de dato: INT (Entero)
Los tipos de datos integer son, muy probablemente, más familiar de los demás. Son adecuados para aquellas aplicaciones que trabajan con datos numéricos. Un int es un número exacto, esto quiere decir que no posee una parte fraccionaria (no posee punto decimal). Su formato de declaración es el siguiente:
<tipo de dato> <nombre de variable> = <valor inicial>
Por ejemplo:
int longitud; int valor = 99;
int valor1, valor2;
int num_parte = 1141, num_items = 45;
2.  Tipo de dato: FLOAT/Double (Punto flotante)
Estos tipos de datos, representan números reales, es decir que contienen una coma o punto decimal. Estos números abarcan un rango mayor que el de los números enteros; y por lo general se los utiliza cuando se necesita un mayor rango de números, uso de fracciones y para cuando se desea una mayor precisión en cálculos matemáticos. Ejemplo de declaración:
float valor;
float valor1, valor2;
float valor = 99.99;
double valor3 = 0.0001;
3.  Tipo de dato: CHAR (Caracteres)
Los datos de tipo carácter representan caracteres definidos por el código ASCII. Existen caracteres especiales y no se pueden utilizar del método normal; por éste motivo C proporciona secuencias de escape (se verá un poco más abajo), por ejemplo: ‘\n’ que representa un salto de línea.
Ejemplo de declaración:
char dato_car;
char letra = 'A';
char respuesta = 'S';
4.  Tipo de dato: VOID
No tiene tipo de datos y se utilizan para declarar explícitamente una función que no devuelve ningún valor, para indicar que dicha función no recibe ningún parámetro, o crear punteros genéricos.
5.  Tipo de datos lógicos
Los compiladores de C no incorporan el tipo de dato lógico cuyos valores son true (verdadero) o false (falso). C simula éste tipo de dato en las estructuras de control (if, while…) para lo cual utiliza el tipo de dato int, interpretando el 0 por falso y distinto de 0 por verdadero (por lo general suele ser 1).

Constantes

En C existen 4 tipos de constantes, que son las siguientes:
v Constantes literales
Estas también se clasifican en 4 grupos:
Ø Enteras
Especifican números enteros, como por ejemplo 10 o -100. La escritura de estas constantes requiere seguir unas determinadas reglas que podrían ser:
·      Nunca utilizar comas u otros signos de puntuación.
123456 en lugar de 123.456
·      Para forzar un valor de tipo long, se debe terminar la expresión con la letra L o l.
1024 es un tipo entero
1024L es un tipo long
·      Para forzar un valor de tipo unsigned debe terminar con la letra mayúscula U.
4352U
·      Para representar un entero en octal, el número debe estar precedido de 0.
123 está en formato decimal
0777 está en formato octal
·      Para representar un entero en hexadecimal, el número debe estar precedido de 0x.
0XFF3A está en formato hexadecimal
Ø Reales
Requiere del punto decimal seguido de los números de la parte fraccionaria, y también permite el uso de notación científica.
82.347
.63
2.5E4 (Notación científica) equivale a 25000
5.435E-3 (Notación científica) equivale a 0.005435
Ø Carácter
Estas pueden representar tan sólo un único carácter del código ASCII q va entre apóstrofes (Comillas simples: ' '). Además, aquellos caracteres que no se pueden introducir por teclado, existe una forma de hacerlo la cual se la conoce como secuencias de escape. Por ejemplo:
'A'     'b'     'c'
Código de escape
Significado
'\n'
'\r'
'\t'
'\v'
'\a'
'\b'
'\f'
'\\'
'\''
'\"'
'\?'
'\000'
'\xhh'
Salto de línea (new line)
Retorno de carro
Tabulación horizontal
Tabulación vertical
Alerta
Retroceso (back space)
Avance de página
Barra invertida (back slatch)
Comilla simple
Comilla doble
Signo de interrogación
Número octal
Número hexadecimal
Aritmética de caracteres:
Esto es posible darse puesto a la correspondencia entre un carácter y su código ASCII, por ejemplo:
char c;
c = 'T' + 5;
Después de realizada la operación lo que realmente sucede es que en c se almacena el valor de 'Y'.
Ø Cadena
Este tipo de constantes (conocidas simplemente por cadena), aunque en C no existe formalmente un tipo de dato cadena. Esta cadena es una secuencia de caracteres que van entre comillas dobles " ". Así por ejemplo:
"Esto es una cadena"
Y muy importante, no se debe confundir entre cadena de caracteres y caracteres:
"a" es una cadena
'a' es un carácter
Las cadenas se representan por una serie de caracteres ASCII más un 0 o nulo (este carácter nulo marca el final de la cadena.
v Constantes definidas (simbólicas)
Las constantes pueden recibir nombres simbólicos mediante la directiva #define.
#define NUEVALINEA \n
#define PI 3.141592
#define VALOR 54
C constituye los valores \n, 3.141592 y 54 cuando se encuentra las constantes simbólicas. Las líneas que escribimos anteriormente no se consideran sentencias, por lo que no terminan en ;
Un ejemplo utilizando las constantes definidas sería lo siguiente:
printf("El valor es %dNUEVALINEA", VALOR);
v Constantes enumeradas
Estas nos permiten crear listas de elementos. El mejor ejemplo práctico sería:
enum Colores {Rojo, Naranja, Amarillo, Verde,  Azul, Violeta};
Al realizar esto el compilador asigna un valor a cada elemento que inicia en 0.
Es posible asignar distintos valores de los que les corresponde, por ejemplo:
enum LucesT1rafico {Verde, Amarillo = 10, Rojo};
Así al momento de procesar, el compilador asigna los valores de: 0 a Verde, 10 a Amarillo, 11 a Rojo
v Constantes declaradas const y volatile
El cualificador const permite dar nombres simbólicos a constantes. El formato general para crear una constante es:
const tipo nombre = valor;
En este caso si se omite tipo, C utilizará int por defecto.
El utilizar este calificador de tipo variable const, específica que el valor de esa variable no se va a poder modificar durante toda la ejecución del programa.
Mientras que la palabra reservada volatile actúa como const, pero su valor puede ser modificado; pero estas variables no se pueden guardar en registros.
const y #define
ü Diferencia; const especifican tipos de datos, terminan con ; y se inicializan como las variables. Mientras que la directiva #define no específica tipos de datos, no utiliza el operador de asignación y no termina con ;
ü Ventaja de const sobre #define; en C es preferible el uso de const en lugar de #define, además de lo ya escrito anteriormente, como las definiciones especifican tipos de datos, de esta forma el compilador puede comprobar de forma inmediata si las constantes en las definiciones de const están en forma. Mientras que con #define no se puede realizar pruebas similares hasta que una sentencia utiliza el identificador constante.
ü Desventaja; los valores de los símbolos const ocupan espacio de datos en tiempo de ejecución, mientras que #define sólo existe en el texto del programa y su valor se inserta directamente en el código ya compilado.

Variables

Para el lenguaje C, una variable corresponde a una posición donde se almacena un valor de un tipo de dato. Las variables pueden almacenar todo tipo de datos, como por ejemplo, cadenas, números y estructuras.
v Identificadores
Estos son los nombres que son usados para referenciar las constantes simbólicas, variables, funciones, etiquetas u otros objetos definidos. La longitud de un identificador puede variar entre 1 y varios caracteres.
El primer carácter siempre debe ser una letra del alfabeto inglés o guión bajo ( _ ), mientras que los siguientes pueden ser letras, números o guión bajo. Por ejemplo:
salario     num_total     _fax     curso2
Las letras en minúsculas y mayúsculas son tratadas de forma distintas. Por ejemplo ESTO es diferente que esto, por lo cual son identificadores distintos.
v Declaración de variables
Todas las variables en C deben ser declaradas antes de poder ser usadas. Una declaración de una variable es una sentencia que proporciona información al compilador C. Su sintaxis es de la siguiente forma:
tipo variable
Por ejemplo:
long dNumero;
double Notas;
int edad;
Como se dijo anteriormente, es muy preciso declarar estas variables antes de ser utilizadas. Estas variables las podemos declarar al principio de un bloque de código. Por ejemplo:





v Inicialización de variables
Las variables se pueden inicializar a la vez que se las declaran. En otras palabras, esto quiere decir que al momento de declarar una variable nosotros le asignamos un valor inicial a dicha variable. Por ejemplo:
char respuesta = ‘P’;
int cont = 0;
float peso = 165.48;
Para los ejemplos anteriores tenemos que estas variables almacenan memoria los valores respectivos situados a continuación del carácter. Para un segundo método, consiste en utilizar sentencias de asignación después de definir la variable:
char barra;
barra = ‘/’;
v Duración de una variable
Dependiendo del lugar donde se definan las variables, se las pueden utilizar en la totalidad del programa, dentro de una función o pues también puede existir de forma temporal dentro de un bloque. La zona de un programa en la cual una variable está activa, se la denomina usualmente como ámbito o alcance. Los tipos básicos de variables en C son:
Ø Variables locales
Son aquellas variables declaradas dentro de un bloque o función, y que son visibles únicamente ahí. Estas variables locales sólo existen mientras se ejecuta el bloque de código  en el cual haya sido creada. Estas variables se crean en un segmento de pila, esto quiere decir que la variable se crea al momento de entrar al bloque de código y se destruye al momento de salir del mismo. Ejemplo:



Ø Variables globales
Estas variables son aquellas que se declaran fuera de una función y por defecto son visibles a cualquier función. Estas variables mantienen su porción de memoria durante toda la ejecución del programa. Ejemplo:



Ø Variables dinámicas
[Este tipo de variables se verá más adelante junto con el tema de Punteros]

Bibliografía y Net-grafía

Evelio Granizo Montalvo. (1999). Lenguaje C Teoría y Ejercicios. Quito: Editorial ESPE.
Luis Joyanes Aguilar, Ignacio Zahonero Martinez. (1999). PROGRAMCACIÓN EN C. Metodología, algoritmo y estructura de datos. Madrid: Editorial McGraw-Hill.




[1]  (Luis Joyanes Aguilar, Ignacio Zahonero Martinez, 1999)

No hay comentarios:

Publicar un comentario