Curso C++: Variables y Tipos

Documentos relacionados
Lección 2 Introducción al lenguaje C

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Unidad II Fundamentos de C++ M.C. Juan Carlos Olivares Rojas

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

LENGUAJE. Tema 2 Elementos de un programa

Elementos de un programa en C

Tema 2. El lenguaje JAVA

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Estructuras de Datos Declaraciones Tipos de Datos

Sintaxis básica, variables y 7pos

Expresiones y sentencias

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Principios de Computadoras II

TEMA 02 TIPOS, OPERADORES Y EXPRESIONES

Lenguaje C Elementos de un Programa. Ing. Hugo Fdo. Velasco Peña Universidad Nacional 2006

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C Sesión 1

Elementos léxicos del lenguaje de programación C

República Bolivariana de Venezuela Aldea Universitaria Liceo Fray Pedro de Agreda Trayecto I Introducción a la Programación III

3.3 Conceptos Básicos del Lenguaje Java

El lenguaje C. 1. Identificadores, constantes y variables

Programación Estructurada

Programación estructurada (Introducción a lenguaje C)

Java para programadores

Construcciones del Lenguaje Java

PHP: Lenguaje de programación

Programación Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC.

Elementos léxicos del lenguaje de programación Java

República Bolivariana de Venezuela Aldea Universitaria Fray Pedro de Agreda PNFSI. Introducción a lenguaje C++ Parte II

Expresiones y sentencias

Tema 2: Desarrollo de Algoritmos. E.E. de Algorítmica

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS

Tema 2. El lenguaje de programación Java (Parte 1)

Programación n Orientada a Objetos Sentencias Java Parte I. Ing. Julio Ernesto Carreño o Vargas MsC.

4. Operadores Operador asignación

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Constantes. Las constantes no cambian durante la ejecucion de un programa en C++, en C++ existen 4 tipos de constantes:

Práctica de constantes, expresiones y operadores. Programación en C 1

CONCEPTOS BASICOS DEL LENGUAJE JAVA

UNIDAD 1. Algoritmo se define como un conjunto de instrucciones que la computadora debe seguir para resolver un problema.

Tema 3. Tipos de datos simples

REPRESENTACIÓN DE DATOS

Descripción de un Programa

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

1.1 Tipos de Datos Primitivos. 1.2 Tipos de datos estructurados. 1.3 Definición de estructura de datos

Datos y tipos de datos

Datos y tipos de datos

Programación. Test Autoevaluación Tema 3

Programación En Lenguaje C

Estatutos de Control C# Estatutos de Decisión (Selección)

Curso de Programación Avanzada en C

Programación en Lenguaje C

Laboratorio de Arquitectura de Redes. Punteros en lenguaje C

Fundamentos de Informática E.U.P. Universidad de Sevilla

Un identificador le da nombre único a un elemento en un programa (Variables, procedimientos, etc.). No puede contener operadores como + - * /

Programa Java. El lenguaje de programación Java. Comentarios. Programa Java. Palabras reservadas. Identificadores

Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales

Introducción a Java (II) Dr. (c) Noé Alejandro Castro Sánchez

VARIABLES TIPOS FUNDAMENTALES

TEMA 3. OPERADORES Y EXPRESIONES.

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Práctica 3 mtp. metodoloxía e tecnoloxía da programación. Presentar detalles básicos sobre la sintaxis del lenguaje de programación Java.

Expresiones Aritméticas. Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz

Universidad de Pamplona Materia: Programación 1 Docente: Ing. Lusbin Raúl Vargas LENGUAJE C ESTRUCTURA DE UN PROGRAMA EN C

Definición y Conversión de datos. Agustín J. González ELO-329

Expresiones Lógicas y Operadores sobre Bits

Objetivo de aprendizaje del tema

Informática. JavaScript: Lenguaje de programación. Fco J. Martín Mateos Carmen Graciani

Números enteros (cortos, largos y sin signo) Números reales (precisión simple y doble) Carácter y cadenas de caracteres. Lógicos.

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

Lenguajes de programación

2. EXPRESIONES 3. OPERADORES Y OPERANDOS 4. INDENTIFICADORES COMO LOCALIDADES DE MEMORIA

Tema 4. Operadores y Expresiones

INTRODUCCIÓN AL LENGUAJE C

Curso Introducción JAVA Pág.: 1

Unidad I Tipos de Datos en C

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid.

Tipos de Datos Estructurados

Fundamentos de la programación

Fundamentos de JAVA. Angel Kuri Enero, /2/2006

Tema 13: Apuntadores en C

UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO.

Tema 6: Memoria dinámica

Fundamentos del Lenguaje de Programación Java

Clases en Java. Declaración de clases en Java 02/09/16. Ing. Roberto Martínez Román - public class Alumno { private int matricula;

Tema 2: Los tipos de datos

Repaso de las características más importantes de la programación Java y su adaptación a Android

Es toda la información que utiliza el computador. Según sea la información que guardemos en los datos, se clasifican en los siguientes tipos:

Ficha de Aprendizaje N 13

Lección 2: Creando una Aplicación en Java. 1. Estructura del archivo de una clase. 3. Definiendo clases fundamentos

TIPO DE DATO ABSTRACTO (TDA)

Definición de Memoria

Características de Lenguajes de Scripts

Lenguaje de programación C. Introducción

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación.

JavaScript. Contenidos. Introducción El lenguaje Validación de formularios. Programación en Internet DLSI - Universidad de Alicante 1

Manual de turbo pascal

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Transcripción:

Curso C++: Variables y Tipos Jorge Peña Pastor jpena@cesvima.upm.es June 7, 2011 Jorge Peña Pastor Variables y Tipos 1/53

Variables Representan cantidades y/o cualidades. Antes de usarlas debemos declararlas para que el compilador (o intérprete) pueda conocer: Su nombre Su ámbito de vida Su visibilidad El tipo de datos asociado Jorge Peña Pastor Variables y Tipos 2/53

Declaración de Variables Simple: int i ; Múltiple: int i, j, k; Con asignación de valor inicial: int i = 5; Jorge Peña Pastor Variables y Tipos 3/53

Declaración de Variables Simple: int i ; Múltiple: int i, j, k; Con asignación de valor inicial: int i = 5; int i = 133, j = i, k; Jorge Peña Pastor Variables y Tipos 3/53

Nombres de Variables Deben reflejar los términos abstractos del problema. No deben ser ambiguos. El lenguaje puede restringir el nombrado: Identificadores correctos: {a-za-z_}[a-za-z_0-9]* No estan permitidas variables cuyo nombre coincida con palabras reservadas del lenguaje. No se admiten símbolos especiales: ; " ñ,?! ^ ~ Otras restricciones (ej. longitud). Jorge Peña Pastor Variables y Tipos 4/53

Palabras Reservadas en C++ asm, auto, bool, break, case, catch, char, class, const, const_cast, continue, default, delete, do, double, dynamic_cast, else, enum, explicit, export, extern, false, float, for, friend, goto, if, inline, int, long, mutable, namespace, new, operator, private, protected, public, register, reinterpret_cast, return, short, signed, sizeof, static, static_cast, struct, switch, template, this, throw, true, try, typedef, typeid, typename, union, unsigned, using, virtual, void, volatile, wchar_t, while Jorge Peña Pastor Variables y Tipos 5/53

Ámbito de Vida Determina durante cuánto tiempo existe una variable. Variable global a módulo o programa: Existen durante todo el tiempo de ejecución. Toman valor inicial 0 (todos sus bits a 0). Variable local o parámetro formal de una función: Existen sólo durante cada llamada. Toman valor inicial indeterminado (basura). Jorge Peña Pastor Variables y Tipos 6/53

Visibilidad Determina desde dónde podemos usar una variable. Variable global al programa: Desde cualquier punto del programa. Variable global a un módulo: Sólo desde dicho módulo. Variable local o parámetro formal de función: Sólo desde dicha función. Una variable local oculta a una global con el mismo nombre. Jorge Peña Pastor Variables y Tipos 7/53

Ejemplos de Ámbito y Visibilidad int a,b; / Globales / void funcion(void) { / Las variables a y b son variables enteras / / La variable c no existe / } int main(void) { float a, c; / Locales / / Las variables a y c son reales / / La variable b es entera / } Jorge Peña Pastor Variables y Tipos 8/53

Modificadores de Variables const Su valor no debe, y no puede, ser alterado. static Su valor se mantiene dentro de su ámbito. Si global, sólo global al módulo. Si local, conserva valor entre invocaciones. Valor inicial 0. register Indica nuestra intención de ubicar la variable en un registro. Es una pista para el compilador (no está garantizado). volatile El contenido de la variable podría cambiar de valor espontáneamente por efecto de algo "externo" al programa. Evita optimizaciones por parte del compilador en cuanto a acceso de memoria de la variable. Jorge Peña Pastor Variables y Tipos 9/53

Tipos de Datos Cada variable tiene que tener asociado un tipo que indique qué es lo que contiene la variable. Determina qué opereaciones se pueden hacer sobre la variable. Permite al compilador: Detectar errores Optimizar la ejecución Podrá ser uno de los tipos básicos proporcionados por el lenguaje o bien un tipo derivado creado por un programador. Jorge Peña Pastor Variables y Tipos 10/53

Tipos de Datos Se escoge según el conjunto de valores que queramos que la variable pueda tomar. En algunos casos por las limitaciones del sistema. Los tipos numéricos básicos deteminan el rango de posibles valores Una variable de tipo Entero no podrá valer 3.75 (decimal). Una variable de tipo Positivo (sin-signo) no podrá valer -1. Jorge Peña Pastor Variables y Tipos 11/53

Tipos Básicos Posibles contenidos de variables según el tipo con el que fueron declaradas: Boleano: true, false Carácter: a, A, z, Z, 1, 9,... Entero: 1, 33 Real: 3.14, 5x10 15 Enumerado: lunes, martes... Vectores: {4, 5, 9}, {H, o, l, a} Puntero: NULL Jorge Peña Pastor Variables y Tipos 12/53

Entero Para contar o enumerar int saldo_bancario = 1000; Diferentes bases de representación: Hexadecimal(base 16): 0x0-0x1 0xFFF 0xFea0 Octal(base 8): 00-01 07777 0177240 Decimal(base 10): 0-1 4095 65184 Jorge Peña Pastor Variables y Tipos 13/53

Modificadores de Enteros De Signo: signed: Valores positivos y negativos. signed int var ; 32 bits : / 2147483648 a 2147483648 / unsigned: Sólo valores positivos. unsigned int var ; / 32 bits : 0 a 4294967295 / Jorge Peña Pastor Variables y Tipos 14/53

Modificadores de Enteros De Signo: signed: Valores positivos y negativos. signed int var ; 32 bits : / 2147483648 a 2147483648 / unsigned: Sólo valores positivos. unsigned int var ; / 32 bits : 0 a 4294967295 / Si no se indica nada es signed int var ; 32 bits : / 2147483648 a 2147483648 / Jorge Peña Pastor Variables y Tipos 14/53

Modificadores de Enteros De tamaño: short short int dia ; / 16 bits (aprox) / sin modificador (por defecto) int horas; / 32 bits / long long segundos; / 32 bits (aprox) / long long long long micro_segundos; / 64 bits (GNU C) / Jorge Peña Pastor Variables y Tipos 15/53

Modificadores de Enteros Pueden combinarse para adaptarse a las necesidades de nuestro problema: signed long int variable ; unsigned short int variable ; Puede omitirse el int unsigned variable ; El tamaño en memoria depende del compilador y de la arquitectura. Normalmente se usa simplemente int. Jorge Peña Pastor Variables y Tipos 16/53

Booleano Representa los valores lógicos cierto y falso. bool hace_sol = true ; bool tengo_coche = false ; Jorge Peña Pastor Variables y Tipos 17/53

Booleano Representa los valores lógicos cierto y falso. bool hace_sol = true ; bool tengo_coche = false ; Se utiliza para representar el resultado de operaciones lógicas (según el álgebra de Bool) y de comparación: bool vamos_excursion = hace_sol && tengo_coche bool resultado = a > b; Jorge Peña Pastor Variables y Tipos 17/53

Carácter Son valores numéricos de tamaño 1 byte (128 tipos). Representan caracteres según una convención dada (código ASCII o Latin1). Constante entre comillas simples (apóstrofe ) char letra = a ; Secuencias de escape: char retorno = \n ; char tabulador = \ t ; Valor numérico: char arroba = \100 ; / Codigo ASCII de @ en octal / Jorge Peña Pastor Variables y Tipos 18/53

Real Números positivos o negativos con o sin decimales. También llamdos de coma flotante. Representación interna distinta a la del entero. Notación decimal o científica Jorge Peña Pastor Variables y Tipos 19/53

Tipos de Reales Tres tamaños: float (precisión simple). float medida = 2.3 f ; float distancia = 42E 11; double (doble precisión). double valor = 4.22; long double (precisión extendida). long double PI=3.14159265358979323846; El valor exacto depende de cada implementación pero normalmente float 32 bits, double 64 y long double 128 bits. Jorge Peña Pastor Variables y Tipos 20/53

Conversión de Tipos Qué pasa cuando combinamos tipos diferentes? int y float int y bool float y double Existen 2 mecanismos: Conversión automática Conversión explícita Jorge Peña Pastor Variables y Tipos 21/53

Conversión Automática La hace automáticamente el compilador Es segura siempre que sepamos que la conversión que va a hacer el compilador es la que nos interesa. Promoción De un tipo menor a un tipo mayor float valor = 2; / / 2 se convierte en 2.0 Degradación int valor = 2.2; / / 2.2 se convierte en 2 Jorge Peña Pastor Variables y Tipos 22/53

Conversión Explícita de Tipo Casting: mecanismo para explicitar el cambio de tipo de una expresión o variable. Le indicamos al compilador que asumimos la responsabilidad Existen 2 formas: Castings de C: (tipo)variable tipo(variable) Castings de C++: static_cast dynamic_cast const_cast reinterpret_cast Jorge Peña Pastor Variables y Tipos 23/53

Ejemplos de Conversión de Tipos float f = 65.2; float g = ( int ) 65.2; / / g vale 65.0 float h = 3/2; / / h vale 1.0 float i = ( float )3/( float)2 / / i vale 1.5 float k = static_cast<int >(65.2); / / k = 65.0 Jorge Peña Pastor Variables y Tipos 24/53

Conversión de Bool Las expresiones condicionales o booleanas, se convierten automáticamente utilizando las siguiente normas: Si la expresión vale 0, entonces es falso, si no, es cierto. Los valores booleanos true y false se convierten en 1 y 0 cuando se hace el casting a int Para pasar de int a bool se sigue la misma norma que para las expresiones: 0 es false y el resto de enteros true Jorge Peña Pastor Variables y Tipos 25/53

Operadores Aritméticos + Suma - Resta * Multiplicación / División % Módulo (resto) ++ Auto-incremento (pre ó post) Auto-decremento (pre ó post) Jorge Peña Pastor Variables y Tipos 26/53

Ejemplo Operadores Aritméticos int a = 5 (2 2); int b; float f ; a++; / a = a + 1 / a=3; b=a++; / a=4 b=3 / a=3; b=++a; / a=4 b=4 / a=3; b=a ; / a=2 b=3 / f =4/3; / f == 1 Div. entera / b=4%3; / b == 1 == (4 (4/3) 3) / f =4.0/3; / f == 1.333 Div. real / f =(float )4/3; / f == 1.333 Div. real / for ( int i =0; i <10; i ++) / / Realiza 10 veces el bucle Jorge Peña Pastor Variables y Tipos 27/53

Operadores de Asignación Provienen de la combinación de operadores aritméticos con el operador de asignación: Algunos ejemplos: +=, -=, *=, /=, %= int a = 5, b = 2; a = 2; / a = a 2; a = 5 2; a = 10 / a /= b + 3; / a = a / (b+3); a = 10 / (2+3); a = 2; / Jorge Peña Pastor Variables y Tipos 28/53

Operadores de Comparación y Lógicos == Igual! = Distinto > Mayor >= Mayor o igual < Menor <= Menor o igual && AND lógico OR lógico! NOT lógico Jorge Peña Pastor Variables y Tipos 29/53

Operadores de Comparación y Lógicos int a = 3, b= 2, c=4, d=1; i f (a>b) / cierto / i f (a>b a>c) / cierto / i f (a>b && c>d) / cierto / bool a = false ; I f (a == b) / falso / i f (!a) / cierto / Jorge Peña Pastor Variables y Tipos 30/53

Operadores de Comparación y Lógicos Se aplican sobre tipos booleanos. Toda expresión sirve de expresión lógica considerándose: FALSA si la expresión se evalúa a CERO. CIERTA si la expresión se evalúa a cualquier otro valor. i f (a) / Identico a: i f (a!= 0) / i f (!b) / Identico a: i f (b == 0) / El valor resultante de evaluar operadores lógicos es 0 sii FALSO 1 sii CIERTO Jorge Peña Pastor Variables y Tipos 31/53

Operadores de Comparación y Lógicos Es importante a la hora de evaluar una expresión lógica: La precedencia de los operadores: int a = (3>2 5==4) &&!1; / a = 0 o FALSO) / int b = (3>2 5==4) && 7; / b = 1 o CIERTO) / La evaluación de expresiones lógicas es perezosa int a = (3>2 b==4); / b==4 NO se llega a evaluar / Jorge Peña Pastor Variables y Tipos 32/53

Operador Ternario Sii (A) entonces vale B, si no vale C A? B : C En operador ternario nos permite reemplazar asignaciones condicionales. Así pues, en lugar de usar una estructura de control: I f (num%2) { str = "par" ; } else { str = "impar" ; } Podemos emplear el operador ternario para obtener el mismo resultado: str = (num%2? "par" : "impar" ) ; Jorge Peña Pastor Variables y Tipos 33/53

Operador sizeof() Obtiene el número de bytes que ocupa (en memoria) una variable o un tipo de datos int a; i f (sizeof(a) == sizeof( int )) / CIERTO / Devuelve un unsigned Se obtiene durante la compilación NO es función sino operador Relaciones conocidas: 1 == sizeof(char) <= sizeof(short) <= sizeof(int) == sizeof(unsigned) <= sizeof(long) <= sizeof(long long) sizeof(float) <= sizeof(double) Jorge Peña Pastor Variables y Tipos 34/53

Operadores de Bit & AND OR ^ XOR ~ NOT << Desplazamiento a la izquierda >> Desplazamiento a la derecha Jorge Peña Pastor Variables y Tipos 35/53

Ejemplos Operador de Bit unsigned char a = 48; 0 0 1 1 0 0 0 0 a unsigned char b = 19; unsigned char x = a & b; unsigned char y = a b; unsigned char z = a ^ b; unsigned char w = ~a; unsigned char t = a >> 2; unsigned char s = b << 3; 0 0 0 1 0 0 1 1 b 0 0 0 1 0 0 0 0 x = 16 0 0 1 1 0 0 1 1 y = 51 0 0 1 0 0 0 1 1 z = 35 1 1 0 0 1 1 1 1 w = 207 0 0 0 0 1 1 0 0 t = 12 1 0 0 1 1 0 0 0 s = 152 Jorge Peña Pastor Variables y Tipos 36/53

Precedencia y Asociación Cómo se evalúan expresiones con múltiples operadores? int res = 3+4 6 / (27 o 42) / Jorge Peña Pastor Variables y Tipos 37/53

Precedencia Los operadores de cada fila tienen mayor precedencia que los de su fila inferior. Los operadores de cada fila tienen la misma precedencia (, ), [, ],., ++, (post) sizeof, ++,, (pre), /, % +, <<, >> <, <=, >, >= ==,!= & ^ && =, +=, -=, *=, /=, %=?, : Jorge Peña Pastor Variables y Tipos 38/53

Asociación Todos los operadores de asignación, los operadores unarios y el operador ternario son asociativos de derecha a izquierda. El resto de izquierda a derecha. 3+4+5+6; / ((3+4)+5)+6 / a=b=c=d; / a=(b=(c=d)) / a=b<c; / a=(b<c) / Jorge Peña Pastor Variables y Tipos 39/53

Ejercicios Preguntas Jorge Peña Pastor Variables y Tipos 40/53

Arrays/Vectores Agrupaciones de información homogénea. Se almacenan en memoria contigua. Son variables independientes. Utilizan un mismo identificador para acceder a su contenido. A cada elemento se accede con el operador [] Se indexan con enteros desde el 0 int vector [2]; / / Vector de 2 elementos vector [0] = 1; / / Primer elemento vector [1] = 2; / / Segundo elemento vector [2] = 3; / / Error : No existen 3 elementos Jorge Peña Pastor Variables y Tipos 41/53

Copia de Arrays Para copiar arrays es necesario realizar la copia de cada uno de sus valores. int a[2], b[2]; a = b; / / Operacion no permitida a[0] = b[0]; a[1] = b[1]; Jorge Peña Pastor Variables y Tipos 42/53

Inicialización de Arrays Manual: int a[2]; a[0] = 1; a[1] = 2; Jorge Peña Pastor Variables y Tipos 43/53

Inicialización de Arrays Manual: int a[2]; a[0] = 1; a[1] = 2; int a[4] = {0,1,2,3}; Jorge Peña Pastor Variables y Tipos 43/53

Inicialización de Arrays Manual: int a[2]; a[0] = 1; a[1] = 2; int a[4] = {0,1,2,3}; Automática: int a[ ] = {0,1}; / a[2] = {0,1} Jorge Peña Pastor Variables y Tipos 43/53

Inicialización de Arrays Manual: int a[2]; a[0] = 1; a[1] = 2; int a[4] = {0,1,2,3}; Automática: int a[ ] = {0,1}; / a[2] = {0,1} int a[4] = {1,2}; / / Las posiciones 2 y 3 vacias Jorge Peña Pastor Variables y Tipos 43/53

Arrays de Varias Dimensiones Se declaran concatenando varios [] Se indexa en cada paso cada dimensión Se inicializan de la misma forma que los arrays unidimensionales. int a[2][3] = { {1,2,3}, {4,5,6} } ; Se declarar automáticamente el tamaño de la primera dimensión, pero no del resto. int a[ ] [ 3 ] = { {1,2,3}, {4,5,6} } ; int b = a[0][2]; / / b contendra al valor 3 int c = a[1][1]; / / c contendra al valor 5 Jorge Peña Pastor Variables y Tipos 44/53

Literales String Tiras de Caracteres. Constantes entre comillas dobles. "Esto es un string " Sirven para inicializar arrays de tipo char El último caracter siempre es el caracter nulo \0 Necesitamos almacenar tantas variables de tipo char como caracteres en nuestro literal + 1 del caracter nulo. char nombre[4] = "Ana" ; / nombre[4]={ A, n, a, \0 }; / Pero no para cambiar su valor una vez inicializados. nombre = "Pedro" / ERROR / Jorge Peña Pastor Variables y Tipos 45/53

Punteros Tipo básico. Diferente a los que hemos visto hata ahora: El resto de los tipos almacenan datos relativos al cálculo del programa Los punteros almacenan direcciones de memoria Así pues, un puntero no almacene un dato, sino que apunta a él. Puntero Dato Jorge Peña Pastor Variables y Tipos 46/53

Punteros Definición de variables de tipo puntero: tipo *variable; int puntero_a_int, variable_int ; / solo la primera variable es un puntero / Operador &: Sirve para obtener la dirección de una variable. Operador : puntero_a_int = &variable_int ; Sirve para obtener el dato al que apunta una variable. bool iguales = puntero_a_int == variable_int ; Jorge Peña Pastor Variables y Tipos 47/53

Tipos Definidos por el usuario Jorge Peña Pastor Variables y Tipos 48/53

Tipo Enumerado Es un tipo que puede contener un conjunto de valores definido por el usuario. Se suele utilizar como una forma alternativa para definir constantes. Existen dos formas de declararlos: especificando el nombre del tipo: enum Mes {Enero, Febrero,.., Diciembre } ; Mes mes_de_vacaciones; Mes mes_de_nacimiento; sin especificar el nombre del tipo: enum {FEMENINO, MASCULINO} genero; Jorge Peña Pastor Variables y Tipos 49/53

Representación Interna de los Enumerados Internamente se representan como un entero: enum Genero {FEMENINO=0, MASCULINO=1}; Jorge Peña Pastor Variables y Tipos 50/53

Representación Interna de los Enumerados Internamente se representan como un entero: enum Genero {FEMENINO=0, MASCULINO=1}; Se puede especificar el valor de cada elemento: enum Mes {Enero=1, Febrero=2,.., Diciembre=12}; Jorge Peña Pastor Variables y Tipos 50/53

Representación Interna de los Enumerados Internamente se representan como un entero: enum Genero {FEMENINO=0, MASCULINO=1}; Se puede especificar el valor de cada elemento: enum Mes {Enero=1, Febrero=2,.., Diciembre=12}; Se puede especificar el valor del primer elemento, y el resto se asignan de forma consecutiva: enum Mes {Enero=1, Febrero,.., Diciembre } ; Jorge Peña Pastor Variables y Tipos 50/53

Definición de Nuevos Tipos Permite dar semántica a las variables de un problema. typedef float Grados; Grados temperatura = 26.5; Facilita la lectura del código. typedef const unsigned int ConstanteEnteraSinSigno; ConstanteEnteraSinSigno MAX_FILAS = 5; Puede facilitar la portabilidad entre distintas plataformas. Jorge Peña Pastor Variables y Tipos 51/53

Estructuras Agrupaciones de información heterogénea almacenada en memoria continua: struct Fecha { int dia ; Mes mes; int ano; bool festivo ; } ; Fecha aniversario ; Jorge Peña Pastor Variables y Tipos 52/53

Estructuras Agrupaciones de información heterogénea almacenada en memoria continua: struct Fecha { int dia ; Mes mes; int ano; bool festivo ; } ; Fecha aniversario ; Se pueden inicializar como los vectores: Fecha hoy = {7,JUNIO, 2011, false } ; Jorge Peña Pastor Variables y Tipos 52/53

Estructuras Agrupaciones de información heterogénea almacenada en memoria continua: struct Fecha { int dia ; Mes mes; int ano; bool festivo ; } ; Fecha aniversario ; Se pueden inicializar como los vectores: Fecha hoy = {7,JUNIO, 2011, false } ; Se accede a sus campos utilizando el operador. (punto): aniversario.mes = Febrero; bool esfestivo = hoy. festivo ; Jorge Peña Pastor Variables y Tipos 52/53

Uniones Se declaran de forma similar a las estructuras. Sus campos comparten la misma memoria. Sólo permiten almacenar un valor (de cualquiera de sus tipos) a la vez. struct Datos { int a, x[2]; char c; } ; Datos d; union Datos { int a, x[2]; char c; } ; Datos d; Jorge Peña Pastor Variables y Tipos 53/53