Está en la página 1de 7

Programacin en C

Tipos de datos

ENTEROS
Los enteros son el tipo de dato ms primitivo en C. Se usan para representar nmeros
enteros. Pero siempre se pueden encontrar otras aplicaciones para los nmeros enteros. En
general se pueden usar para representar cualquier variable discreta.
Los tipos de datos enteros son: short , int , long y long long , cada uno representando
un nmero entero de un tamao o capacidad determinado. Segn el compilador y la
plataforma de hardware, cada uno de estos tipos de dato puede ocupar desde 1 byte hasta 8
bytes en memoria (para ms detalles busca en la referencia).
Adems, el lenguaje C hace la distincin de si el entero es con signo ( signed ) o sin signo
( unsigned ). En caso de que no se declare si es con signo o sin signo, se toma con signo.
Algunos ejemplos de declaraciones de enteros:
int a;
unsigned int a;
signed long a;
signed long long a = 10000000;
Todos los nmeros son representados en memoria mediante una cadena de bits. En el caso
de los nmeros con signo, el bit ms significativo es el que se usa para representar el signo.
La representacin de los nmeros negativos se realiza mediante el complemento a dos, que
es una tcnica que permite operar con los nmeros negativos de forma lgica.
A modo de ejemplo, la representacin en memoria del nmero -8 en una variable de 2 bytes,
entera, con signo, sera la siguiente:
1111111111111000

FLOTANTES
Se denomina flotantes a los tipos de datos que representan a los nmeros reales, ya que
utilizan un sistema de representacin basado en la tcnica de coma flotante, que permite
operar con nmeros reales de diversas magnitudes, mediante un nmero decimal
llamado mantisa y un exponente que indica el orden de magnitud.

El tipo de dato flotante en lenguaje C slo tiene dos tamaos: el float y el double , que son
4 bytes y 8 bytes respectivamente. Se los puede utilizar tanto para representar nmeros
decimales, como para representar nmeros enteros con un orden de magnitud muy grande.
La forma de declarar una variable flotante es escribiendo en una lnea uno de los tipos de
datos flotantes y a continuacin el nombre de la variable y tal vez algn valor que se les quiera
dar.
Algunos ejemplos:
float a;
double a = 1e23;
double a = 3.1416;
float a = 4e-9;
double a = -78;
Hay que tener en cuenta que aunque los valores flotantes son ms convenientes para algunas
aplicaciones, hay casos en los que se prefieren los enteros. Esto se debe a que los nmeros
flotantes no necesariamente tienen soporte de hardware, en particular en las
plataformas integradas. Una alternativa que se utiliza en estas situaciones es interpretar los
enteros como decimales de forma que 150 se interprete como 1.5 y 2345 como 23.45.
Para el caso de los flotantes de 4 bytes, se utiliza 1 bit para el signo, 8 bits para el exponente
y 23 bits para el valor del nmero. El procedimiento para almacenar un nmero en una
variable flotante es el siguiente:
1. Se convierte a binario la parte entera.
2. Se coloca el signo en el bit ms significativo de la misma manera que en los enteros (1
para el - y 0 para el +).
3. Se mueve la coma (en la representacin binaria de la parte entera) hasta que est a la
derecha del primer uno y ste se descarta (el uno ms significativo). El valor del
exponente ser el nmero de posiciones que se movi la coma. El exponente usa la
representacin de un entero con complemento a dos.
4. Se convierte en binario la parte decimal del nmero. Esto usando el peso de los bits. el
bit decimal ms significativo vale 1/2, el siguiente vale 1/4, el otro 1/8, el otro 1/16 y
as hasta completar lo que falta para los 23bits del valor.
5. Se concatena todo y ese es el valor flotante representado en memoria.

CARACTERES
Los caracteres se representan utilizando el tipo char , que tiene slo 1 byte de tamao. Este
tipo se utiliza para representar los 256 caracteres de la tabla de caracteres del sistema. El
tipo char es tambin un tipo entero, ya que puede tomar valores de 0 a 255. Por lo tanto
tambin puede ser signed o unsigned .
En cuanto a la forma de declarar variables de tipo char es la misma forma que con los otros
tipos.
char a;
char a = 's';
unsigned char a = 48;
Como puedes ver, se le puede asignar un nmero a una variable char , ya que se trata de un
tipo entero. En muchas situaciones se utiliza el tipo char para almacenar nmeros pequeos,
ya que ocupa en memoria slamente un byte.
Es importante notar que con la llegada de la codificacin UTF-8, los caracteres de los diversos
idiomas pueden ocupar 1, 2, 3 o 4 bytes, de modo que el tipo char ya no alcanza para la
representacin de todos los caracteres posibles. Por ello, el estndar C99 introduce el
tipo wchar que puede ocupar ms de 1 byte, segn sea necesario para la codificacin
utilizada por el sistema.

Estructura de un programa en C.
Todo programa escrito en C consta de una o ms funciones, una de
las cuales se llama main. El programa siempre comenzar por la
ejecucin de la funcin main. Cada funcin debe contener:

Una cabecera de la funcin, que consta del nombre de la funcin, seguido


de una lista opcional de argumentos encerrados con parntesis.
Una lista de declaracinde argumentos, si se incluyen estos en la
cabecera.
Una sentencia compuesta, que contiene el resto de la funcin.

Los argumentos son smbolos que representan informacin que se le


pasa a la funcin desde otra parte del programa . (Tambin se
llaman parmetros a los argumentos).

Cada sentencia compuesta se encierra con un par de llaves, {.....}. Las


llaves pueden contener combinaciones de sentencias elementales
(denominadas sentencias de expresin) y otras sentencias compuestas.
As las sentencias compuestas pueden estar anidadas, una dentro de
otra. Cada sentencia de expresin debe acabar en punto y coma (;).

Los comentarios pueden aparecer en cualquier parte del programa,


mientras estn situados entre los delimitadores /* ................ */ (por
ejemplo: /*esto es un ejemplo*/). Los comentarios son tiles para
identificar los elementos principales de un programa o simplemente
para orientar a un posible usuario de ese cdigo.

Todo fichero fuente en C sigue la siguiente estructura; para verla ms


claramente pondremos un ejemplo con sus correspondientes
comentarios, que nos vayan explicando cada una de las partes,
muchas de las cosas que se vean, no se conocen an, pero nos servirn
para hacernos una idea de cmo se estructura un programa:

Ejemplo:
#include <stdio.h>
#include <conio.h>
/*#include del sistema:Se deben especificar todos los ficheros de cabecera
(ficheros con extensin .h) correspondientes a las libreras de funciones
utilizadas.
Son libreras implementadas y listas para que nosotros las usemos,con slo
llamar a la funcin que tenga implementada dentro dicha librera. Por
ejemplo: la instruccin printf est incluida dentro de stdio.h, por tanto,
cuando decidamos usarla, tendremos que poner en esta seccin:
#include <stdio.h> */

#include <lista.h>
/* #include de la aplicacin:Ficheros de cabecera creados para el fichero
fuente. Se puede decir que estos son los que yo he creado, que son invocados
escribiendo su nombre seguido de .h. (Ms tarde explicaremos cmo se
crean). Si lo pongo entre signos: < > (como lo tenemos en este ejemplo), dicha
librera ser buscada en el directorio del compilador INCLUDE que contiene
las libreras. Si por el contrario pongo: #include "lista.h", entonces, dicha
librera ser buscada 1 en el directorio actual, y luego, si no est, ser
buscada en el directorio del compilador INCLUDE*/

extern void salida(void);


/* externvariables globales externas: Variables globales que voy a
definir en otros mdulos que voy a usar en este mdulo. A salida le
hemos asignado el tipo de almacenamiento extern, pues tiene que ser
accedida desde otro archivo distinto de aquel en que es definida; por

tanto, ha de ser una funcin externa. */

#define CIERTO 1
#define FALSO 0
/* #define definicin de macros y constantes simblicas.*/

typedef struct {
int dia;
int mes;
int ano;
}FECHA;
/* typedef definicin de tipos: me sirve para crearme un tipo distinto
de los preestablecidos de partida.*/

int suma (int , int);


/* Declaracin de los prototipos de las funciones implementados en
este mdulo: La declaracin de una funcin le da informacin al
compilador de una funcin que va a ser utilizada pero que todava
no ha sido implementada. En particular le dice al compilador qu
tipo de datos requiere y cul devuelve la funcin. En el ejemplo, la
funcin con nombre suma
recibe dos nmeros enteros y da como salida otro nmero entero.*/

extern int a,b,c;


/* Declaracin de variables globales de este mdulo:
extern declaracin de funciones externas a este mdulo:
Funciones que se utilizan en este mdulo y que estn
implementadas en otro mdulo.
static declaracin de las funciones internas no visibles para
otros mdulos: Funciones que se implementan en este mdulo
y que no pueden ser utilizadas en otros mdulos. */

main(){
............
............
}
int suma(int x,int y){

...........
...........
}
/* Implementacin de las funciones: Se implementan todas las
funciones del mdulo incluida la funcin main().*/