Transcript
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