Estructuras en C++ PDF
Document Details
Uploaded by IndulgentCitrine
MIUMG
Tags
Related
Summary
This document provides an overview of structures in C++. It covers topics such as the definition, declaration, and usage of structures in C++ programming. The document also provides examples of how to use structures in programs.
Full Transcript
Estructuras Estructuras Los arrays son estructuras de datos que contienen un número determinado de elementos (su tamaño) y todos los elementos han de ser del mismo tipo de datos. Esta característica supone una gran limitación cuando se requieren grupos de elementos con tipos diferentes de dat...
Estructuras Estructuras Los arrays son estructuras de datos que contienen un número determinado de elementos (su tamaño) y todos los elementos han de ser del mismo tipo de datos. Esta característica supone una gran limitación cuando se requieren grupos de elementos con tipos diferentes de datos cada uno. Por ejemplo, si se dispone de una lista de temperaturas, es muy útil un array; sin embargo, si se necesita una lista de información de clientes que contengan elementos tales como el nombre, la edad, la dirección, el número de la cuenta, etc., los arrays no son adecuados. La solución a este problema es utilizar un tipo de dato estructura. Estructuras Los componentes individuales de una estructura se llaman miembros. Cada miembro (elemento) de una estructura puede contener datos de un tipo diferente de otros miembros. Por ejemplo, se puede utilizar una estructura para almacenar diferentes tipos de información sobre una persona, tal como nombre, estado civil, edad y fecha de nacimiento. Cada uno de estos elementos se denominan atributo del miembro. Estructuras Una estructura es una colección de uno o más tipos de elementos denominados miembros, cada uno de los cuales puede ser un tipo de dato diferente. Una estructura puede contener cualquier número de miembros, cada uno de los cuales tiene un nombre único, denominado nombre del miembro. Supongamos que se desea almacenar los datos de una colección de discos compactos (CD) de música. Estos datos pueden ser: título, artista, número de canciones, precio, fecha de compra. Estructuras La estructura CD contiene cinco miembros. Tras decidir los miembros, se debe decidir cuáles son los tipos de datos para utilizar por los miembros. Esta información se representa en la tabla siguiente: Estructuras La Figura contiene la estructura CD, mostrando gráficamente los tipos de datos dentro de la estructura. Obsérvese que cada miembro es un tipo de dato diferente. Titulo Adrenalina Artista Varios Numero de canciones 10 Precio 200.00 Fecha de compra 14/01/2023 Declaración de Estructuras Una estructura es un tipo de dato definido por el usuario, que se debe declarar antes de que se pueda utilizar. El formato de la declaración es: struct ; ;... ; }; Declaración de Estructuras La declaración de la estructura CD es: struct coleccion_CD { char titulo; char artista; int num_canciones; float precio; char fecha_compra; } Ejemplo struct complejo { float parte_real, parte_imaginaria; }; Definición de variables de estructuras A una estructura se accede utilizando una variable o variables que se deben definir después de la declaración de la estructura. Del mismo modo que sucede en otras situaciones, en C++ existen dos conceptos similares a considerar, declaración y definición. La diferencia técnica es la siguiente. Una declaración especifica simplemente el nombre y el formato de la estructura de datos, pero no reserva almacenamiento en memoria. Definición de variables de estructuras Una declaración especifica simplemente el nombre y el formato de la estructura de datos, pero no reserva almacenamiento en memoria. Una definición de variable para una estructura dada crea un área en memoria en donde los datos se almacenan de acuerdo al formato estructurado declarado. Las variables de estructuras se pueden definir de dos formas: (1) listándolas inmediatamente después de la llave de cierre de la declaración de la estructura, o (2) listando el nombre de la estructura seguida por las variables correspondientes en cualquier lugar del programa antes de utilizarlas. Definición de variables de estructuras La definición y declaración de la estructura colecciones_CD se puede hacer por cualquiera de los dos métodos: 1. struct colecciones_CD { char título; char artista; int num_canciones; float precio; char fecha_compra; } cd1, cd2, cd3; 2. colecciones_CD cd1, cd2, cd3; Definición de variables de estructuras Consideremos un programa que gestione libros y procese los siguientes datos: título del libro, nombre del autor, editorial y año de publicación. Una estructura info_libro podría ser: struct info_libro { char título; char autor; char editorial; int anyo; }; Definición de variables de estructuras Consideremos un programa que gestione libros y procese los siguientes datos: título del libro, nombre del autor, editorial y año de publicación. Una estructura info_libro podría ser: struct info_libro { char título; char autor; char editorial; int anyo; }; Definición de variables de estructuras La definición de la estructura se puede hacer así: 1. info_libro libro1, libro2, libro3; 2. struct info_libro { char título; char autor; char editorial; int anyo; libro1, libro2, libro3; } Uso de estructuras en asignaciones Como una estructura es un tipo de dato similar a un int o un char, se puede asignar una estructura a otra. Por ejemplo, se puede hacer que libro3, libro4 y libro5 tengan los mismos valores en sus miembros que libro1. Por consiguiente, sería necesario realizar las siguientes sentencias: libro3 = libro1; libro4 = libro1; libro5 = libro1; De modo alternativo se puede escribir libro4 = libro5 = libro6 = libro1; Inicialización de una declaración de estructuras Se puede inicializar una estructura de dos formas. Se puede inicializar una estructura dentro de la sección de código de su programa, o bien se puede inicializar la estructura como parte de la declaración. Cuando se inicializa una estructura como parte de la declaración, se especifican los valores iniciales, entre llaves, después de la declaración. El formato general en este caso: struct { valor miembro1, valor miembro2,... valor miembron }; Inicialización de una declaración de estructuras Inicializar una estructura en el momento que se declara. Struct Fecha { int mes; int día; int anyo; }; Una vez que el tipo Fecha se ha definido, se puede declarar e inicializar una variable estructura llamada FechaNacimiento como sigue: Fecha FechaNacimiento = {8,10,1956}; Inicialización de una declaración de estructuras Los valores que inicializan se deben dar en el orden que corresponde al orden de las variables miembro de la definición del tipo estructura. En el ejemplo anterior, FechaNacimiento.mes toma el valor inicial de 8, FechaNacimiento.día toma el valor 10 y FechaNacimiento.anyo toma el valor 1956. Se produce un error si hay más valores de inicialización que miembros de la estructura. Si hay menos valores de inicialización que miembros de la estructura, los valores proporcionados se utilizan para inicializar miembros datos en el orden señalado. Cada miembro dato sin un inicializador se inicializa a un valor cero del tipo apropiado de la variable. Inicialización de una declaración de estructuras struct info_libro { char título; char auto; char editorial; int anyo; } libro1 = { "C++ ", "Luis Deitel","McGraw-Hill", 2019 }; Inicialización de una declaración de estructuras Otro ejemplo podría ser: struct coleccion_CD { char titulo; char artista; int num_canciones; float precio; char fecha_compra; } cd1 = { “Humo en tus ojos", "Col Porter", 15, 250, "02/6/2023" }; El tamaño de una estructura Inicialización de una declaración de estructuras ACCESO A ESTRUCTURAS Cuando se accede a una estructura, o bien se almacena información en la estructura o se recupera la información de la estructura. Se puede acceder a los miembros de una estructura de una de estas dos formas: (1) utilizando el operador punto (.), o bien (2) utilizando el operador puntero ->. Se puede almacenar información en una estructura mediante inicialización, asignación directa o lectura del teclado. El proceso de inicialización ya se ha examinado, veamos ahora la asignación directa y la lectura del teclado. Acceso a una estructura de datos mediante el operador punto La asignación de datos a estructuras se puede hacer mediante el operador punto. El operador (.) se utiliza para especificar una variable miembro de una variante estructura la sintaxis en C++ es: Algunos ejemplos son: El operador punto proporciona el camino directo al miembro correspondiente. Los datos que se almacenan en un miembro dado deben ser del mismo tipo que el tipo declarado para ese miembro. Acceso a una estructura de datos mediante el operador puntero El operador puntero, ->, sirve para acceder a los datos de la estructura. Para utilizar este operador se debe definir primero una variable puntero para apuntar a la estructura. A continuación, utilice simplemente el operador puntero para apuntar a un miembro dado. La asignación de datos a estructuras utilizando el operador puntero tiene el formato: -> = datos; Así, por ejemplo, una estructura estudiante Acceso a una estructura de datos mediante el operador puntero Se puede definir Mortimer como un puntero a la estructura Estudiante *Mortimer; A los miembros de la estructura Estudiante se pueden asignar datos como sigue (siempre y cuando la estructura ya tenga creado su espacio de almacenamiento, por ejemplo, con malloc()) Mortimer -> Num_Estudiante = 3425; Mortimer -> Nota = 7.5; strcpy(Mortimer -> Nombre, "Pepe Mortimer"); Acceso a una estructura de datos mediante el operador puntero Se puede definir Mortimer como un puntero a la estructura Estudiante *Mortimer; A los miembros de la estructura Estudiante se pueden asignar datos como sigue (siempre y cuando la estructura ya tenga creado su espacio de almacenamiento, por ejemplo, con malloc()) Mortimer -> Num_Estudiante = 3425; Mortimer -> Nota = 7.5; strcpy(Mortimer -> Nombre, "Pepe Mortimer"); Acceso a una estructura de datos mediante el operador puntero Lectura de información de unaestructura Si ahora se desea introducir la información en la estructura mediante el teclado, basta con emplear una sentencia de entrada utilizando el operador punto o puntero. Así, si Mortimer es una variable ordinaria de tipo estructura Recuperación de información de unaestructura Se recupera información de una estructura utilizando el operador de asignación o una sentencia cout. Igual que antes, se puede emplear el operador punto o el operador puntero. El formato general toma uno de estos formatos: Recuperación de información de unaestructura Algunos ejemplos del uso de la estructura Estudiante son: Número = Mortimer.Num_Estudiante; Grado = Mortimer -> Nota; cout