Unidad VI Registros (estructuras, uniones y enumeraciones)

Slides:



Advertisements
Presentaciones similares
Arreglos Unidimensionales y Bidimensionales ESTRUCTURAS DE DATOS I
Advertisements

Curso de java básico (scjp)
Instrucciones Básicas Entrada de Información
Arrays Fundamentos de Programación I
Listas enlazadas c++ Prof. Franklin Cedeño.
Diseño de algoritmos “Estructuras”
Ing. Eduard Antonio Lozano Córdoba
Elementos básicos del Lenguaje
Clase 3: Punteros y Referencias
Programación I Teoría IV
Direcciones, Arreglos y Argumentos de Funciones
Estructuras de datos. Programación, Algoritmos y Estructuras de Datos.
Tipos de Datos Básicos y Estructurados
INFORMATICA I Arreglos 1 CLASE 17.
Informática II Prof. Dr. Gustavo Patiño MJ
Tema 1. Introducción a la programación (Lenguaje java).
Estructuras Compuestas.
Teoría de lenguajes y compiladores
VECTORES.
Implementación de Listas
Estructuras de Datos Punteros y algo más.
Estructuras de datos M.I.A Daniel Alejandro García López.
Unidad 3 Punteros.
Vectores en java.
Almacenamiento y Recuperación de la Información 2do Semestre 2005 Wenceslao Palma M.
Tipos de Datos Básicos 1.
Tema 6: Clases Antonio J. Sierra.
Diseño de algoritmos “Punteros”
 2003 Prentice Hall, Inc. All rights reserved. 1 Capítulo 6: Clases y Abstracción de Datos Índice del capítulo 6.1 Introducción 6.2 Estructuras 6.3 Clases.
Tema 9 Estructuras.
MODOS DE DIRECCIONAMIENTO
Curso Programación en Java
Capítulo 5. Punteros y Cadenas de Caracteres
UNIDAD V Arreglos y Cadenas
Programación III Clase 06 Funciones.
Informática Ingeniería en Electrónica y Automática Industrial
Índice. Revisando conceptos acerca de la memoria.
Programación III Clase 08 Arreglos.
Estructuras.
TABLAS Definición. El tipo tabla permite definir objetos formados por un conjunto de elementos del mismo tipo. Ejemplos. El tipo tabla se utiliza para.
Informática Ingeniería en Electrónica y Automática Industrial
ATC-DistribuidasUniversidad de Oviedo / Dpto. de Informática XDR (External Data Representation) Tipos y codificación.
Clase 10: Estructuras de datos y arreglos.
COMPUTACIÓN I TEMA 6. Pasaje de parámetros por Referencia. Uso de apuntadores Prof. Mireya Morales.
Tipo de Datos Básicos.
PUNTEROS Ing Anghello Quintero.
El lenguaje de programación C - Vectores y matrices -
Unidad II Introducción a la programación en C++
Informática Ingeniería en Electrónica y Automática Industrial
Memoria estática versus dinámica con Estructuras
Programación en C para electrónicos
Listas Ligadas Simples. Definíción I  Es, en sencillas palabras. un grupo de datos organizados secuencialmente, pero a diferencia de los arreglos, la.
Elementos básicos del lenguaje
APUNTADORES.
Los punteros Programación modular.
Programación Procedural y Recursiva en C++
Registros Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes.
Términos algoritmo diseñar algoritmo implementar algoritmo
Computación II Capitulo VII Punteros. Presentación de la unidad Objetivos: –Ser capaces de utilizar punteros. –Comprender las relaciones entre punteros,
Registros Departamento de Computación
Arreglos: Vectores Departamento de Computación
Ing. Esp. Ricardo Cujar.  Conjunto de caracteres (palabra), representa una posición de memoria.  Recomendaciones para construir identificadores: Debe.
Unidad 2 Estructuras ESCUELA DE COMPUTACIÓN.
COMPUTACIÓN I TEMA 9. Constructor de tipos: struct Definición de nuevos tipos: typedef. Arreglos de estructuras Prof. Mireya Morales.
Arreglos unidimensionales
UNIDAD 4: Introducción a la Lógica Computacional Objetivo : Interpretar y aplicar adecuadamente los fundamentos básicos de la estructura y funcionamiento.
Arreglos: Vectores Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes.
3.6 Manejo de E/S Estructuras En la creación de soluciones para algunos problemas surge la necesidad de agrupar datos de diferente tipo o de manejar datos.
Lenguaje de Programación II Prof. Rafael Montenegro B. Carrera: T.S.U en Informática Periodo: 2014-I.
Computación I :: Prof. Yeniffer Peña Lenguaje C Presentación Computación I.
Transcripción de la presentación:

Unidad VI Registros (estructuras, uniones y enumeraciones) Computación II Unidad VI Registros (estructuras, uniones y enumeraciones)

Presentación de la unidad: Objetivos: Ser capaces de crear y utilizar estructuras, uniones y enumeraciones. Ser capaces de pasar estructuras a funciones en llamadas por valor y en llamadas por referencia. Ser capaces de crear campos de bits para almacenar datos en forma compacta.

Presentación de la unidad: Contenidos: Definición de estructuras. Cómo inicializar estructuras. Cómo tener acceso a los miembros de una estructura. Estructuras anidadas. Como utilizar estructuras con funciones. Typedef. Uniones Constantes de enumeración. Campos de bits.

Definición de estructuras Las estructuras son colecciones de variables relacionadas bajo un mismo nombre. Son tipo de datos derivados; están construidos utilizando objetos de otros tipos. Sintaxis: struct <nombre>{ <miembros de la estructura>; }; <nombre>:identificador valido. El rotulo de la estructura esta formado por el nombre y la palabra reservada struct. <miembros de la estructura>: declaración de variables. Los miembros de la estructura pueden ser de los tipos de datos básicos o agregados, como lo son arreglos u otras estructuras.

Definición de estructuras C++ permite incluir funciones en el interior de las estructuras. Normalmente estas funciones tienen la misión de manipular los datos incluidos en la estructura. La estructura no reserva ningún espacio en memoria; genera un nuevo tipo de datos que se utiliza para declarar variables. Ejemplo: struct alumno { char *nombre; char *clave; }; int main(){ struct alumno aCompu, aUniversidad[1000], *aPtr; …………… return 0; }

Definición de estructuras El nombre del rotulo de la estructura es opcional; si la estructura no contiene el nombre del rotulo, las variables de este tipo de estructura pueden ser únicamente declaradas dentro de la definición de la estructura. Ejemplo: struct { char *nombre; char *clave; char *leerNombre(){return nombre;} } aCompu, aUniversidad[1000], *aPtr; Las estructuras no pueden compararse entre si, porque los miembros de una estructura no están necesariamente almacenados en bytes consecutivos de memoria.

Cómo inicializar estructuras Las estructuras pueden ser inicializadas mediante listas de inicialización como los arreglos, asignándoles una variable de estructura del mismo tipo ó asignándoles valores a los miembros individuales. struct aCompu = {“Carolina”, “98005555”}; aCompu.nombre=“Carolina”; aCompu.nombre = aUniversidad[100].nombre; Si en la lista aparecen menos inicializadores que en la estructura, los miembros restantes son inicializados a 0 o a Null.

Cómo tener acceso a miembros de estructuras Operador de miembro de estructura (.), también conocido como operador punto. Operador apuntador de estructura (->), también conocido como operador flecha. El operador miembro de estructura tiene acceso a un miembro de la estructura mediante el nombre de la variable de la estructura: cout<< aCompu.nombre; El operador apuntador de estructura tiene acceso a un miembro de la estructura vía un puntero a la estructura: cout<< alu->nombre; cout<< (*alu).nombre;

Estructuras Anidadas Los miembros de una estructura pueden ser otras estructuras. Ejemplo: struct universidad{ struct alumno alu; struct profesor{ char *nombre; char *carrera; }pro; int cantidadFacultades; }; /*Inicialización*/ struct universidad stUni ={{“Caro”, “9800555”},{“Pepe”, “Ing”}, 6};

Estructuras Anidadas Para declarar una variable del tipo profesor hay que utilizar el operador de acceso: (::) struct universidad :: profesor uProfe; uProfe = {“Pepe”, “Ing”}; Para acceder a los miembros de las estructuras anidadas tenemos: struct universidad uni; uni.alu.nombre = “Carolina”; uni.pro.carrera = “Ingeniería”;

Cómo utilizar estructuras con funciones Las estructuras pueden ser pasadas a funciones pasando miembros de la estructura individuales, pasando toda la estructura o pasando un puntero a la estructura. Cuando se pasan estructuras o miembros individuales a una función se pasan en llamadas por valor. void imprimeAlumno(struct alumno aCompu); void imprimeNombre(char *aCompu.nombre); Para pasar una estructura en llamada por referencia, se pasa la dirección de la variable estructura. void cargaDatos(struct alumno *alu);

Typedef Proporciona un mecanismo para la creación de sinónimos para tipos de datos anteriormente definidos. Ejemplo: struct alumno{ char *nombre; char *clave; }; typedef struct alumno ALU; ALU aCompu, aUniversidad[1000], *alu; Al declarar un nuevo nombre utilizando typedef no se crea un nuevo tipo, sino que crea un nuevo nombre de tipo.

Uniones Una “union” es un tipo de dato derivado cuyos miembros comparten el mismo espacio de almacenamiento. Los miembros de una “union” pueden ser de distinto tipo, y únicamente un miembro de una “union” puede ser referenciado en un momento dado. Sintaxis: union <nombre>{ <declaracion de variables>; }; En una declaración, una “union” puede ser inicializada únicamente con un valor del mismo tipo que el primer miembro de la “union”. union numero{ int x; float y; union number value={10};

Campos de bits C++ permite especificar el número de bits en el cual se almacena un miembro unsigned de una estructura o union. Una variable de tipo unsigned queda almacenada en por lo menos 2 bytes de memoria. Los campos de bits ayudan a ahorrar almacenamiento. Sintaxis: struct <nombre> { unsigned <tipo_entero> <identificador>:<núm_de_bits>; }; Un campo de bits no puede ocupar dos variables distintas; pero es posible combinar los campos de bits con campos normales. struct mapaDeBits{ float numero; unsigned short int campo1:3; unsigned short int campo2:4;

Campos de bits Ejemplo: struct mystruct { unsigned flag : 1; } M; int prueba() {   M.flag = true; //almacena 0 ó 1   if (M.flag) cout<<("- Cierto -"); }

Constantes de enumeración Una enumeración es un conjunto de constantes enteras representado por identificadores. Constantes simbólicas cuyos valores pueden ser definidos automáticamente. Los valores de una enumeración se inician con 0, a menos que se definan de otra manera, y se incrementan en 1. Sintaxis: enum <identificador> {<lista_de_constantes_simbolicas>}; Ejemplo: enum meses = {ENE, FEB, MAR, JUN, JUL, AGO, SEPT, OCT, NOV, DIC}; enum meses1 = {ENE = 1, FEB, MAR, JUN, JUL, AGO, SEPT, OCT, NOV, DIC};