You are on page 1of 25

Fundamentos de

Programación

Capítulo 4
Tipos de datos
Objetivos del capítulo
 Comprender la sintaxis y el funcionamiento de los tipos de datos
elementales
 del lenguaje C.
 Aprender a crear tipos complejos definidos por el usuario.
 Aprender a manejar tipos de datos en C.
 Comprender la conversión de tipos de datos en C.
 Aprender a imprimir distintos tipos de datos en C.

Fundamentos de programación 2 © J. Carretero, F. García, J. M. Pérez, J. Fernández, A. Calderón


Contenidos del capítulo
 Presentación de los conceptos de identificador, tipo, variable y
constante.
 Definición y uso correcto de variables y constantes de los tipos
elementales.
 Presentación de los operadores aplicables a los tipos elementales
en el lenguaje C y del orden de precedencia de los mismos.
 Concepto de tipo complejo y presentación de los tipos complejos
más habituales.
 Definición de tipos por parte de los programadores.
 Conversión de tipos de datos.

Fundamentos de programación 3 © J. Carretero, F. García, J. M. Pérez, J. Fernández, A. Calderón


Programa como manipulador de datos

Fundamentos de programación 4 © J. Carretero, F. García, J. M. Pérez, J. Fernández, A. Calderón


Tipos de datos
 Dato:
 Hecho o valor a partir del cual se puede inferir una conclusión o
información.
 Tipo de un dato:
 Conjunto de valores que puede tomar durante el programa
 Características:
o Rango de datos
o Operaciones que soporta
o Detección de errores
o Determinan el orden de las operaciones

Fundamentos de programación 5 © J. Carretero, F. García, J. M. Pérez, J. Fernández, A. Calderón


Tipos simples y complejos

Fundamentos de programación 6 © J. Carretero, F. García, J. M. Pérez, J. Fernández, A. Calderón


Identificadores
 Nombre que se asigna a los distintos elementos de un programa
 Identificadores en C
 caracteres alfabéticos en mayúsculas y minúsculas
 los diez dígitos decimales (del 0 al 9)
 el subrayado
 NO pueden empezar por un número.
 Ejemplos
 Casa
 _MES
 A3245
 Cuidado: C es sensible a mayúsculas y minúsculas

Fundamentos de programación 7 © J. Carretero, F. García, J. M. Pérez, J. Fernández, A. Calderón


Palabras reservadas en C

Fundamentos de programación 8 © J. Carretero, F. García, J. M. Pérez, J. Fernández, A. Calderón


Variables
 Representación alfanumérica de una posición de memoria.
 Propiedades:
 posición de memoria que almacena el valor
 tipo de datos almacenado
 nombre que se refiere a esa posición de memoria.
 Declaración:
<tipo de datos> <nombre1> [<nombre2> .. <nombreN>];
<tipo_de_datos> <nombre1> = <valor>;
Ejemplo:
int temperaturaHorno;

Fundamentos de programación 9 © J. Carretero, F. García, J. M. Pérez, J. Fernández, A. Calderón


Constantes
 Constantes simbólicas que representan un valor determinado, cuyo
valor no cambia a lo largo del programa.
#define <nombre_constante> <valor>
 Ejemplo
#define PI 3.141516
#define PELIGRO "Peligro. No pasar"
 No se puede asignar valor a constantes durante el programa.
 Solo se pueden asignar a otras variables y usarlas directamente.
 Ejemplo:
// Area de un c´ırculo
area = PI * radio * radio;
Fundamentos de programación 10 © J. Carretero, F. García, J. M. Pérez, J. Fernández, A. Calderón
Tipos de datos elementales en C

Fundamentos de programación 11 © J. Carretero, F. García, J. M. Pérez, J. Fernández, A. Calderón


Operadores en C

 sizeof devuelve el tamaño en bytes que ocupa un determinado


tipo de datos o variable.
Fundamentos de programación 12 © J. Carretero, F. García, J. M. Pérez, J. Fernández, A. Calderón
Tipos numéricos enteros
 short, int, long y long long (signed y unsigned)
 La división trunca:
 3/2 = 1
 Rangos:

Fundamentos de programación 13 © J. Carretero, F. García, J. M. Pérez, J. Fernández, A. Calderón


Tipos numéricos reales
 float, double, long double
 Notación:
 Base decimal: 3.02
 Mantisa decimal con base decimal y exponente entero: 23.4e2
 Mantisa hexadecimal con base dos y exponente entero: 0x23.4p14
 Rangos:

 Biblioteca math

Fundamentos de programación 14 © J. Carretero, F. García, J. M. Pérez, J. Fernández, A. Calderón


Tipo carácter
 Tipo char: tipo básico para manejar caracteres
 Validos: los de ASCII exendido
 ‘a’, ‘&’,…
 char numero = ’0’;
 Secuencia de escape: carácter \ + letra o conjunto de dígitos.

Fundamentos de programación 15 © J. Carretero, F. García, J. M. Pérez, J. Fernández, A. Calderón


Tabla de caracteres ASCII

Fundamentos de programación 16 © J. Carretero, F. García, J. M. Pérez, J. Fernández, A. Calderón


Tipos enumerados
 Permiten definir un conjunto de constantes simbólicas con valor
entero

enum DiasSemana {lunes, martes, miercoles, jueves, viernes, sabado,


domingo};

enum Boolean {false, true};

enum DiasSemana dia;

Fundamentos de programación 17 © J. Carretero, F. García, J. M. Pérez, J. Fernández, A. Calderón


Arrays
 Conjunto de datos del mismo tipo, a los que se da un nombre
común y que se almacenan en posiciones de memoria contiguas.
 Multidimensionales:
tipo_dato nombre_array [dimension1] .. [dimensionk];
 Ejemplo: int numeros[40][5];

Fundamentos de programación 18 © J. Carretero, F. García, J. M. Pérez, J. Fernández, A. Calderón


Cadenas de caracteres (strings)
 Caso particular de array formado por una secuencia de caracteres.
char nombre_cadena[longitud];
 Secuencia de caracteres encerrados entre dobles comillas (")
 Operaciones propias: strcpy, strcat, strlen, …
 Terminan con \0

Fundamentos de programación 19 © J. Carretero, F. García, J. M. Pérez, J. Fernández, A. Calderón


Estructuras
 Compuestas por elementos individuales (miembros) que pueden
ser de distinto tipo.
struct nombre_estructura
{
tipo_dato_1 miembro_1;
...
tipo_dato_N miembro_N;
};
 Definir variables de tipo estructura:
struct nombre_estructura variable_estructura;

Fundamentos de programación 20 © J. Carretero, F. García, J. M. Pérez, J. Fernández, A. Calderón


Punteros
 Tipo de datos de C que no almacena datos en sí sino que almacena
direcciones de memoria.
tipo_de_dato *variable_puntero;
 Operadores:
 Dirección (&): permite obtener la dirección de memoria en la
que se almacena una determinada variable.
 Indirección (*): permite acceder al contenido de una
determinada dirección de memoria.
 Tienen dentro un número natural (0.. tama˜no memoria)
 Se pueden usar suma y resta de naturales.

Fundamentos de programación 21 © J. Carretero, F. García, J. M. Pérez, J. Fernández, A. Calderón


Typedef y conversión de tipos
 Permite crear un nuevo tipo de datos en C.
typedef tipo_de_datos nuevo_tipo;
 Ejemplo:
typedef float Temperatura;
Temperatura temp_min;
 Conversión de tipos: C es débilmente tipado
 Conversión implícita -> asignar tipos directamente
 Conversión explícita ->
o <variable> = (<tipo de datos>) <expresión>;
o espacio = (float) longitud;

Fundamentos de programación 22 © J. Carretero, F. García, J. M. Pérez, J. Fernández, A. Calderón


Escribir con printf
%[flags][ancho][.precisi´on][longitud]especificador_de_conversi´on

Fundamentos de programación 23 © J. Carretero, F. García, J. M. Pérez, J. Fernández, A. Calderón


Lectura de datos con scanf
scanf(formato, arg1, ..., argN);

Fundamentos de programación 24 © J. Carretero, F. García, J. M. Pérez, J. Fernández, A. Calderón


Errores de programación comunes
 Problemas con las mayúsculas y las minúsculas.
 Omisión del punto y coma Todas las sentencias en C deben acabar
en punto y coma.
 Uso de punto y coma en la directiva #define
 Comentarios anidados
 Comentarios mal finalizados
 Empleo de variables no definidas
 Cadenas de caracteres sin dobles comillas
 No utilizar el operador de dirección en la función scanf
 Olvido de los paréntesis en la función main
 Empleo inadecuado de los especificadores de conversión
Fundamentos de programación 25 © J. Carretero, F. García, J. M. Pérez, J. Fernández, A. Calderón