Tema 3 Constantes, Variables y Tipos Contenidos 1. Definiciones. 1.1 Variables y Constantes. 1.2 Identificadores. 2. Declaración de Variables en un Programa en C. 3. Tipos de Datos. 3.1 Clasificación. 3.2 Tipos de Datos Enteros. 3.3 Tipos de Datos Reales. 3.4 Tipo de Datos Carácter. 3.5 Tipo de Datos Cadena de Caracteres. 4. Inicialización de Variables. 5. Constantes. 2 1. Definiciones 1.1 Variables y Constantes Objetos básicos que se manipulan en un programa y sobre los que se realizan las operaciones. Variable: Objeto cuyo valor puede variar. La declaración de variables supone: Darle un nombre o identificador. Asignarle un tipo de dato. tipo_de_dato nombre1, nombre2; Constante: Objeto cuyo valor no puede variar. 3 1. Definiciones 1.2 Identificadores Identificador: Nombre dado a un elemento del programa (constantes simbólicas, variables y funciones). Reglas para construir un identificador: Deben comenzar por letra (a..z o A..Z) o subrayado (_). El resto del identificador puede constar de letras del alfabeto, dígitos numéricos o subrayado. No se admiten espacios. Se distinguen mayúsculas y minúsculas. Pueden tener hasta 32 caracteres (dependiendo del compilador se consideran 8 o más). No pueden coincidir con las palabras reservadas del lenguaje. Palabras Reservadas: Identificadores que tienen un significado predefinido dentro del lenguaje (main, int,...). 4 2. Declaración de Variables en un Programa en C int main() { /* Zona de declaración de variables */ tipo1 variable1; tipo2 variable2, variable3; ... /* Zona de entrada de datos */ instrucción 1; instrucción 2; ... /* Área de cálculo */ instrucción m; ... /* Extracción de resultados */ instrucción n; ... return 0; } 5 3. Tipos de Datos 3.1 Clasificación Cuando declaramos una variable, definimos (de forma implícita): La longitud del dato (número de bits). Operaciones que se pueden realizar con ese dato. Conjunto de valores posibles. Clasificación de los tipos de datos: Simples o Básicos. Estructurados. Compuestos de otros tipos de datos simples o estructurados. 6 3. Tipos de Datos 3.1 Clasificación (II) Los tipos de datos básicos se clasifican en: Numéricos. Enteros. Subconjunto finito de números enteros. Reales. Subconjunto finito de números reales. Alfanuméricos. Carácter. Conjunto finito y ordenado de caracteres que el procesador reconoce. Cadenas de caracteres. Secuencia finita de caracteres. 7 3. Tipos de Datos 3.2 Tipos de Datos Enteros Subconjunto de los enteros con signo. Emplea la palabra clave int. Declaración: int variable1, variable2; Podemos variar el tamaño con short y long: short int v3; long int v4, v5, v6; Podemos expresar enteros sin signo con unsigned. unsigned int a; unsigned short int b, c; unsigned long int d, e, f; 8 3. Tipos de Datos 3.2 Tipos de Datos Enteros (II) Su tamaño depende del compilador y del procesador que se utilice: Tipo Palabra 16 bits Palabra 32 bits int 16 bits 32 bits short int 16 bits 16 bits long int 32 bits 32 bits unsigned short int 16 bits 16 bits unsigned long int 32 bits 32 bits 9 3. Tipos de Datos 3.2 Tipos de Datos Enteros (III) Tipo Bits Rango short int 16 bits [-32.768, ..., 32.767] unsigned short int 16 bits [0, ..., 65.535] long int 32 bits [-2.147.483.648, ... , 2.147.483.647] unsigned long int 32 bits [0, ..., 4.294.967.295] 10 3. Tipos de Datos 3.3 Tipos de Datos Reales Subconjunto de los reales con signo. Emplean las palabras float o double. Declaración: float f1, f2; double numero; 11 3. Tipos de Datos 3.3 Tipos de Datos Reales (II) La diferencia entre float y double es su tamaño. Esto influye tanto al rango de números representables como a su precisión. Valor Mínimo y Máximo (en valor absoluto) Tipo Tamaño float 32 bits [1.17549e-38, …, 3.4028e+38] double 64 bits [2.2251e-308, …, 1.7977e+308] 12 3. Tipos de Datos 3.4 Tipo de Datos Carácter Conjunto finito y ordenado de caracteres que el ordenador es capaz de reconocer. Contiene un solo carácter: 1 byte (8 bits). Un carácter se almacena como un valor entero de 8 bits. El ordenador interpreta este código en función de unas tablas de conversión (código ASCII). Las constantes de este tipo se representan entre comillas simples. Declaración: char letra; Puede usarse para almacenar enteros pequeños: char valor_pequenyo; /* Rango: [-128,127] */ unsigned char sin_signo; /* Rango: [0,255] */ 13 3. Tipos de Datos 3.4 Tipo de Datos Carácter (II) Tipos de Caracteres: Alfabéticos: a … z, A ... Z Numéricos: 0 ... 9 Especiales: +, -, *, /, <, ... incluyendo los caracteres no imprimibles (retorno de carro, fin de cadena,...). \0 \n \t \b Fin de cadena Nueva línea Tabulado Retroceso \r \f \\ Retorno de carro Salto de página Contrabarra \' \" Apóstrofe (comilla simple) Comillas 14 3 3. Tipos de Datos 3.5 Tipo de Datos Cadena de Caracteres Bajo un mismo nombre de variable agrupamos un conjunto de caracteres. Se representan entre comillas dobles. Cuando se declara una variable de este tipo debemos indicar el número de caracteres que almacena. char cadena[20], frase[100]; En C se sigue la convención de que las cadenas acaban siempre con el carácter '\0'. Por este motivo, al declarar la variable debemos reservar un espacio más. char saludo[5]="HOLA"; char despedida[]="ADIOS"; 15 4. Inicialización de Variables Cuando una variable se declara, el compilador le reserva espacio en la memoria, pero no modifica la información que había en dicho espacio. Toda variable debe ser inicializada antes de usar su valor en el programa. Las variables pueden ser inicializadas a un valor concreto cuando son declaradas. Para ello, en la declaración se añade el signo de igual más una constante. 16 5. Constantes Al igual que las variables, las constantes guardan datos, pero su valor no varía. Existen tantos tipos de constantes como tipos de datos. Podemos expresar una constante según el tipo de dato. Las constantes pueden aparecer con su valor directamente o mediante un identificador. Constantes simbólicas: Constantes a las cuales se les asocia un nombre o identificador. Se declaran como: #define nombre_constante valor 17 5. Constantes (II) Ejemplos: #define M 10 #define N 10. /* Es un double */ #define PI 3.14159265 /* double */ #define PIf 3.14159265f /* float */ #define A -1.2345e-17 /* double en notación científica */ #define salto_de_linea '\n' #define HOLA "HOLA" 18