-
Metodologa de la Programacin
Tema 0. Structs
Departamento de Ciencias de la Computacin e I.A.
ETSIIT Universidad de Granada
Curso 2012-13
DECSAI (Universidad de Granada) Metodologa de la Programacin
Curso 2012-13 1 / 22
Contenido del tema
1 Introduccin
Definicin y sintaxis2 Operaciones con estructuras
Declaracin de variables
Inicializacin
Operadores de acceso a miembros de
la estructura
Operacin de asignacin
Operaciones de entrada y salida3 Paso de estructuras a
funciones
4 Peculiaridad de arrays o matrices
miembros de una estructura5 Arrays y matrices de estructuras6
Estructuras de estructuras
DECSAI (Universidad de Granada) Metodologa de la Programacin
Curso 2012-13 2 / 22
Introduccin
Contenido del tema
1 Introduccin
Definicin y sintaxis2 Operaciones con estructuras
Declaracin de variables
Inicializacin
Operadores de acceso a miembros de
la estructura
Operacin de asignacin
Operaciones de entrada y salida3 Paso de estructuras a
funciones
4 Peculiaridad de arrays o matrices
miembros de una estructura5 Arrays y matrices de estructuras6
Estructuras de estructuras
DECSAI (Universidad de Granada) Metodologa de la Programacin
Curso 2012-13 3 / 22
Introduccin Definicin y sintaxis
Definicin y sintaxis
Definicin
Las estructuras o registros son tipos de dato compuestos que se
definen apartir de elementos de otros tipos.
Sintaxis
struct {
;
;
... ...
;
};
La estructura tiene un nombre que es el nombre deltipo de dato.
Cada miembro tiene un nombre asociado quenos permitir
referenciarlo.
DECSAI (Universidad de Granada) Metodologa de la Programacin
Curso 2012-13 4 / 22
-
Introduccin Ejemplos
Ejemplos
Definicin de un punto en el plano (con coordenadas x, y).
struct Punto{double x;double y;
};
Informacin sobre un alumno (NIF, nombre, curso,
grupo,calificaciones parciales).
struct Alumno{string NIF;string nombre;int curso;char
grupo;double notas[3];
};
DECSAI (Universidad de Granada) Metodologa de la Programacin
Curso 2012-13 5 / 22
Introduccin Structs y class
Structs y class
Los struct son herramientas muy similares a las clases.
Puedencontener:
Especificadores de accesoMtodos miembroConstructores y
destructores
Diferencia:
Los miembros de una estructura son por defecto public (
privateen class ).
Habitualmente usaremos struct en lugar de class cuando la
clasees muy simple y no necesita mtodos (comportamiento): servira
comoforma de agrupar los datos que contiene.
Los struct suelen usarse a menudo para ayudar a definir
estructurasde datos.
DECSAI (Universidad de Granada) Metodologa de la Programacin
Curso 2012-13 6 / 22
Operaciones con estructuras
Contenido del tema
1 Introduccin
Definicin y sintaxis2 Operaciones con estructuras
Declaracin de variables
Inicializacin
Operadores de acceso a miembros de
la estructura
Operacin de asignacin
Operaciones de entrada y salida3 Paso de estructuras a
funciones
4 Peculiaridad de arrays o matrices
miembros de una estructura5 Arrays y matrices de estructuras6
Estructuras de estructuras
DECSAI (Universidad de Granada) Metodologa de la Programacin
Curso 2012-13 7 / 22
Operaciones con estructuras Declaracin de variables
Declaracin de variables
struct Alumno{string NIF;string nombre;int curso;char
grupo;double notas[3];
};
Ejemplo
Alumno ahora, arrayAlumnos[10], matrizAlumnos[5][7];
DECSAI (Universidad de Granada) Metodologa de la Programacin
Curso 2012-13 8 / 22
-
Operaciones con estructuras Inicializacin
Inicializacin
Una estructura se puede inicializar en la declaracin usando la
mismanotacin que para inicializar arrays.
Ejemplo
1 struct Punto{2 double x;3 double y;4 };5 struct Alumno{6
string NIF;7 string nombre;8 int curso;9 char grupo;
10 double notas[3];11 };12 Punto origen = {0.0, 0.0};13 Alumno
estudiante = {"12345678Z", "Juan Sevilla", 1, B,14 {0.0,0.0,0.0}
};
DECSAI (Universidad de Granada) Metodologa de la Programacin
Curso 2012-13 9 / 22
Operaciones con estructuras Operadores de acceso a miembros de
la estructura
Operadores de acceso a valores miembros de la estructura
Los miembros de una estructura se acceden mediante:
El operador punto ( . )Accede a un miembro a travs del nombre de
la variable del tipo de laestructura.
Punto punto={7.5, 2.3};
cout
-
Operaciones con estructuras Operaciones de entrada y salida
Operaciones de entrada y salida
En principio, se deben realizar individualmente sobre cada valor
miembro dela estructura, y consiste en combinar las operaciones de
entrada y salidacon las operaciones de acceso a valores
miembro.
Punto punto;...cout>punto.x;cout
-
Peculiaridad de arrays o matrices miembros de unaestructura
Contenido del tema
1 Introduccin
Definicin y sintaxis2 Operaciones con estructuras
Declaracin de variables
Inicializacin
Operadores de acceso a miembros de
la estructura
Operacin de asignacin
Operaciones de entrada y salida3 Paso de estructuras a
funciones
4 Peculiaridad de arrays o matrices
miembros de una estructura5 Arrays y matrices de estructuras6
Estructuras de estructuras
DECSAI (Universidad de Granada) Metodologa de la Programacin
Curso 2012-13 17 / 22
Peculiaridad de arrays o matrices miembros de unaestructura
Peculiaridad de arrays o matrices miembros de una
estructura
No es vlida la asignacin directa de arrays:int v1[50],
v2[50];
v2 = v1;
Se produce un error ya que las copias de arrays se deben
hacercomponente a componente.
Sin embargo, s que es vlido lo siguiente:
struct array50int{int util; // num de elementos usadosint
miarray[50];
};array50int v1, v2;...v2 = v1;
DECSAI (Universidad de Granada) Metodologa de la Programacin
Curso 2012-13 18 / 22
Arrays y matrices de estructuras
Contenido del tema
1 Introduccin
Definicin y sintaxis2 Operaciones con estructuras
Declaracin de variables
Inicializacin
Operadores de acceso a miembros de
la estructura
Operacin de asignacin
Operaciones de entrada y salida3 Paso de estructuras a
funciones
4 Peculiaridad de arrays o matrices
miembros de una estructura5 Arrays y matrices de estructuras6
Estructuras de estructuras
DECSAI (Universidad de Granada) Metodologa de la Programacin
Curso 2012-13 19 / 22
Arrays y matrices de estructuras
Arrays y matrices de estructuras
El acceso a los diferentes miembros de las estructuras, se
realizacombinando el acceso a los elementos de la matriz con las
operaciones deacceso a los miembros de la estructura.
struct Alumno{string NIF;string nombre;int curso;char
grupo;double notas[3];
};int main(){
Alumno listaAlumnos[100];
listaAlumnos[0].NIF="26262727T";...cin >>
listaAlumnos[3].notas[0];...listaAlumnos[1]=listaAlumnos[0];
DECSAI (Universidad de Granada) Metodologa de la Programacin
Curso 2012-13 20 / 22
-
Estructuras de estructuras
Contenido del tema
1 Introduccin
Definicin y sintaxis2 Operaciones con estructuras
Declaracin de variables
Inicializacin
Operadores de acceso a miembros de
la estructura
Operacin de asignacin
Operaciones de entrada y salida3 Paso de estructuras a
funciones
4 Peculiaridad de arrays o matrices
miembros de una estructura5 Arrays y matrices de estructuras6
Estructuras de estructuras
DECSAI (Universidad de Granada) Metodologa de la Programacin
Curso 2012-13 21 / 22
Estructuras de estructuras
Estructuras de estructuras
Como caso particular, un valor miembro de una estructura puede
ser asu vez otra estructura.
struct Punto{double x;double y;
};struct Circulo{
Punto centro;double radio;
};Circulo circulo1={{5.0,4.0},10.0};Circulo
circulo2;circulo2.centro.x=7.2;circulo2.centro.y=5.2;circulo2.radio=3.0;
DECSAI (Universidad de Granada) Metodologa de la Programacin
Curso 2012-13 22 / 22