B. TIPOS DE DATOS, VARIABLES Y OPERADORES




TOKEN
Recordar en este punto que un token en un lenguaje de programación es un componente léxico con un significado específico dentro de ese lenguaje. Las palabras reservadas son los tokens básicos del lenguaje. El lenguaje C (versión C90) dispone de 32 palabras reservadas. La estandarización del 99 añadió 4 palabras más.


DATOS
Un dato es un elemento con información, un trozo de información.

Tipos de datos
Cada lenguaje proporciona varios tipos de datos ya construidos. C proporciona los siguientes:


-char: 1 byte. Representan caracteres. Su rango de valores con signo está entre [-128,127] ó sin signo entre [0, 255]. Cada byte simboliza un carácter dado por un código, tal como puede ser el ASCII o el ANSI, de 256 símbolos.

-int: 4 bytes (1 bit signo, 31 bits valor). Son los enteros. Se representan en el formato complemento a dos. En caso de un tipo int, el rango de valores garantizado por el ANSI/ISO de C está entre -2147483648 y +2147483647. Pueden presentar el problema del desbordamiento con facilidad.

-float: 4 bytes (1 bit signo, 8 bits exponente, 23 bits mantisa). Se utiliza para almacenar reales. Se representan en el formato coma flotante IEEE754. La precisión de los números se calcula por redondeo. Existen zonas de desbordamiento (a partir de -Nmax y Nmax),y una zona de agotamiento (entre -Nmin y Nmin). El estandar ANSI/ISO de C garantiza un rango aproximado de valores de 1E-38 a 1E+38 con 6 dígitos de precisión.

-double: 8 bytes (1 bit signo, 11 exponente, 52 mantisa). También se usa para almacenar reales, la diferencia está en que permite una mayor precisión con 10 dígitos decimales en lugar de 6. Se representa igual que el tipo float y el estándar ANSI/ISO de C garantiza un rango aproximado de valores que va de 1E-308 a 1E+308.

-void: indica ausencia de tipo.

-bool (tipo de C++): booleano, toma valores 0 (false) ó 1 (true).

Según su representación interna los tipos de datos pueden ser:
-Simples (escalares): contienen un solo dato. Se declaran : <tipo de dato><nombre de la variable>.
-Estructurados (arrays): contienen más de un dato del mismo tipo. Se declaran: <tipo de dato><nombre de la variable>[longitud del array]. Cabe destacar que en C el 1er elemento se considera el índice 0, por lo que el último será índice N-1,donde N es la longitud del array. Otros tipos de datos estructurados son las matrices con 2 índices:
<tipo de dato><nombre de la variable>[NFILAS][NCOLUMNAS].


Modificadores de tipos de datos
-Tamaño: short y long (por defecto). Son palabras reservadas y ambas se usan con datos de tipo int.
-Signo: signed y unsigned. Se emplean con datos de tipo char o int.
-Modo de almacenamiento: register, auto (por defecto), static (guarda el valor último de la variable que modifica) y extern que enlaza una variable con otra externa.



VARIABLES
Nombre o símbolo que identifica una posición de memoria.
int x : x es una variable tipo entero, identifica la zona de memoria donde se almacena un entero.

Declaración de variables
Una variable queda identificada por un identificador.
Se pueden declarar varias variables seguidas, del mismo tipo, separadas por comas, o se pueden declarar por separado.
Se pueden inicializar a la vez que se declaran o después. Cuando usamos una variable, ésta no tiene ningún valor predeterminado. Si se usa esa variable sin definirle ningún valor inicial, el programa podría no funcionar correctamente.
tipo variable=valor;
ó
tipo variable;
variable=valor;



OPERADORES
Indican una acción específica. Pueden ser unarios (afecta a una única variable u operando), binarios (afectan a dos variables u operandos) o ternarios (afectan a tres variables u operandos).

Tipos

De asignación: x = y

De comparación: ==, !=, <=, >=, >, <

Aritméticos: +, -, /, *, % (% significa módulo o resto)
++: pre/post incremento
--: pre/postdecremento

Lógicos o booleanos: && (AND), || (OR), ! (NOT)

A nivel de bit: &, |, ^, ~, <<, >>

Compuestos +=, -=, *= , /=, %=

Condicionales: condición ? valor1 : valor2.
X=(a>=b)?1:0 significa si a>=b: x=1 sino x=0.

Para punteros: Referencia o dirección de memoria: p=&x
Desreferencia o contenido de la memoria: *p=x.

Sizeof: tamaño de una variable o tipo de dato.
x=sizeof(int) tamaño de x=4 (bytes).

Postfijos: [],{},(),.,->


MÁS INFORMACIÓN:
http://courseware.ikor.org/ansi-c


Para consultar problemas relacionados con esta información:
http://programacion1-practica.wikispaces.com/B.+Datos%2C+Variables+y+Operadores