Sei sulla pagina 1di 6

Contenido del tema

Metodologa de la Programacin
Tema 0. Structs
Introduccin
Definicin y sintaxis
2 Operaciones con estructuras
Declaracin de variables
Inicializacin
Operadores de acceso a miembros de
la estructura
Operacin de asignacin
Operaciones de entrada y salida
3 Paso de estructuras a funciones
1

Departamento de Ciencias de la Computacin e I.A.

ETSIIT

Peculiaridad de arrays o matrices


miembros de una estructura
5 Arrays y matrices de estructuras
6 Estructuras de estructuras
4

Universidad de Granada

Curso 2012-13
DECSAI (Universidad de Granada)

Metodologa de la Programacin

Curso 2012-13

1 / 22

DECSAI (Universidad de Granada)

Introduccin

Metodologa de la Programacin
Introduccin

Contenido del tema

Curso 2012-13

2 / 22

Definicin y sintaxis

Definicin y sintaxis

Introduccin
Definicin y sintaxis
2 Operaciones con estructuras
Declaracin de variables
Inicializacin
Operadores de acceso a miembros de
la estructura
Operacin de asignacin
Operaciones de entrada y salida
3 Paso de estructuras a funciones

Definicin
Las estructuras o registros son tipos de dato compuestos que se definen a
partir de elementos de otros tipos.

Sintaxis

Peculiaridad de arrays o matrices


miembros de una estructura
5 Arrays y matrices de estructuras
6 Estructuras de estructuras
4

struct <NombreEstructura> {
<tipo1> <miembro1>;
<tipo2> <miembro2>;
...
...
<tipon> <miembron>;
};

La estructura tiene un nombre <NombreEstructura> que es el nombre del


tipo de dato. Cada miembro tiene un nombre asociado <miembroX> que
nos permitir referenciarlo.
DECSAI (Universidad de Granada)

Metodologa de la Programacin

Curso 2012-13

3 / 22

DECSAI (Universidad de Granada)

Metodologa de la Programacin

Curso 2012-13

4 / 22

Introduccin

Ejemplos

Introduccin

Ejemplos

Structs y class

Structs y class
Los struct son herramientas muy similares a las clases. Pueden
contener:

Definicin de un punto en el plano (con coordenadas x, y).


struct Punto{
double x;
double y;
};

Especificadores de acceso
Mtodos miembro
Constructores y destructores

Diferencia:
Informacin sobre un alumno (NIF, nombre, curso, grupo,
calificaciones parciales).

Los miembros de una estructura son por defecto public ( private


en class ).

Habitualmente usaremos struct en lugar de class cuando la clase


es muy simple y no necesita mtodos (comportamiento): servira como
forma de agrupar los datos que contiene.

struct Alumno{
string NIF;
string nombre;
int curso;
char grupo;
double notas[3];
};

DECSAI (Universidad de Granada)

Los struct suelen usarse a menudo para ayudar a definir estructuras


de datos.

Metodologa de la Programacin

Curso 2012-13

5 / 22

DECSAI (Universidad de Granada)

Operaciones con estructuras

Contenido del tema

Curso 2012-13

6 / 22

Declaracin de variables

Declaracin de variables

Introduccin
Definicin y sintaxis
2 Operaciones con estructuras
Declaracin de variables
Inicializacin
Operadores de acceso a miembros de
la estructura
Operacin de asignacin
Operaciones de entrada y salida
3 Paso de estructuras a funciones

struct Alumno{
string NIF;
string nombre;
int curso;
char grupo;
double notas[3];
};

DECSAI (Universidad de Granada)

Metodologa de la Programacin

Operaciones con estructuras

Peculiaridad de arrays o matrices


miembros de una estructura
5 Arrays y matrices de estructuras
6 Estructuras de estructuras
4

Metodologa de la Programacin

Ejemplo
Alumno ahora, arrayAlumnos[10], matrizAlumnos[5][7];

Curso 2012-13

7 / 22

DECSAI (Universidad de Granada)

Metodologa de la Programacin

Curso 2012-13

8 / 22

Operaciones con estructuras

Inicializacin

Operaciones con estructuras

Operadores de acceso a miembros de la estructura

Inicializacin

Operadores de acceso a valores miembros de la estructura

Una estructura se puede inicializar en la declaracin usando la misma


notacin que para inicializar arrays.

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 la
estructura.

Ejemplo
1
2
3
4
5
6
7
8
9
10
11
12
13
14

struct Punto{
double x;
double y;
};
struct Alumno{
string NIF;
string nombre;
int curso;
char grupo;
double notas[3];
};
Punto origen = {0.0, 0.0};
Alumno estudiante = {"12345678Z", "Juan Sevilla", 1, B,
{0.0,0.0,0.0} };

Punto punto={7.5, 2.3};


cout<<punto.x<<", "<<punto.y;

Importante:
En general, <variable>.<miembro> es una variable y se comporta como
cualquier variable.
El operador flecha ( -> )
El operador flecha accede a un miembro a travs de la direccin de
memoria de una variable del tipo de la estructura.
Lo estudiaremos ms adelante.

DECSAI (Universidad de Granada)

Metodologa de la Programacin

Operaciones con estructuras

Curso 2012-13

9 / 22

DECSAI (Universidad de Granada)

Operacin de asignacin

Metodologa de la Programacin

Operaciones con estructuras

Asignacin campo a campo

Curso 2012-13

10 / 22

Operacin de asignacin

Asignacin completa

La asignacin se puede realizar de forma individual sobre cada uno de


los miembros de la estructura, combinando las operaciones de acceso
con el operador de asignacin
<OperacionAcceso> = <expresion>;

La asignacin se puede realizar de forma completa, asignando a una


estructura otra estructura del mismo tipo.
Ejemplo

Ejemplo
struct Alumno{
string NIF;
string nombre;
int curso;
char grupo;
double notas[3];
};
Alumno estudiante1 = {"12345678Z", "Juan Sevilla", 1, B,
{7.2,5.3,3.7} };
Alumno estudiante2;
estudiante2=estudiante1;

struct Alumno{
string NIF;
string nombre;
int curso;
char grupo;
double notas[3];
};
Alumno alumno;
alumno.NIF="26262727T";
...
alumno.notas[0]=7.2;
...
DECSAI (Universidad de Granada)

Metodologa de la Programacin

Curso 2012-13

11 / 22

DECSAI (Universidad de Granada)

Metodologa de la Programacin

Curso 2012-13

12 / 22

Operaciones con estructuras

Operaciones de entrada y salida

Paso de estructuras a funciones

Operaciones de entrada y salida

Contenido del tema

En principio, se deben realizar individualmente sobre cada valor miembro de


la estructura, y consiste en combinar las operaciones de entrada y salida
con las operaciones de acceso a valores miembro.
Punto punto;
...
cout<< "Introduce coordenada x: ";
cin>>punto.x;
cout<<Introduce coordenada y: ";
cin>>punto.y;
cout<<"El punto introducido es: "<<punto.x<<
", "<<punto.y<<endl;

DECSAI (Universidad de Granada)

Metodologa de la Programacin

Curso 2012-13

13 / 22

Paso de estructuras a funciones

Introduccin
Definicin y sintaxis
2 Operaciones con estructuras
Declaracin de variables
Inicializacin
Operadores de acceso a miembros de
la estructura
Operacin de asignacin
Operaciones de entrada y salida
3 Paso de estructuras a funciones
1

DECSAI (Universidad de Granada)

Peculiaridad de arrays o matrices


miembros de una estructura
5 Arrays y matrices de estructuras
6 Estructuras de estructuras
4

Metodologa de la Programacin

Curso 2012-13

14 / 22

Paso de estructuras a funciones

Paso de estructuras a funciones

Diferencia entre paso por referencia constante y paso por


valor

Las estructuras se comportan en C++ como si fueran tipos de datos


bsicos cuando se utilizan como argumento de las funciones:
Se pueden pasar por valor:

Paso por valor:

double calculaDistancia(Punto punto1,Punto punto2);

void imprimePunto(Punto punto){


....
punto.x=5.2; //Permitido: se modifica punto que es una copia

Se pueden pasar por referencia:


void leerPunto(Punto &punto);

Paso por referencia constante:

Se pueden pasar por referencia constante:

void imprimePunto(const Punto &punto){


....
punto.x=5.2; //NO Permitido

double calculaDistancia(const Punto &punto1,const Punto


&punto2);

Las funciones pueden devolver estructuras:


Punto puntoMedio(const Punto &punto1,const Punto &punto2);
DECSAI (Universidad de Granada)

Metodologa de la Programacin

Curso 2012-13

15 / 22

El paso por referencia constante, pasa una referencia sobre el dato con el
que se quiere trabajar (con lo que evitamos una copia que puede ocupar
mucha memoria) pero lo protege para que no se pueda modificar el dato
original.
DECSAI (Universidad de Granada)

Metodologa de la Programacin

Curso 2012-13

16 / 22

Peculiaridad de arrays o matrices miembros de una


estructura

Peculiaridad de arrays o matrices miembros de una


estructura

Contenido del tema

Peculiaridad de arrays o matrices miembros de una


estructura

Introduccin
Definicin y sintaxis
2 Operaciones con estructuras
Declaracin de variables
Inicializacin
Operadores de acceso a miembros de
la estructura
Operacin de asignacin
Operaciones de entrada y salida
3 Paso de estructuras a funciones

No es vlida la asignacin directa de arrays:

DECSAI (Universidad de Granada)

int v1[50], v2[50];


v2 = v1;

Se produce un error ya que las copias de arrays se deben hacer


componente a componente.

Peculiaridad de arrays o matrices


miembros de una estructura
5 Arrays y matrices de estructuras
6 Estructuras de estructuras
4

Sin embargo, s que es vlido lo siguiente:


struct array50int{
int util; // num de elementos usados
int miarray[50];
};
array50int v1, v2;
...
v2 = v1;

Metodologa de la Programacin

Curso 2012-13

17 / 22

Arrays y matrices de estructuras

Metodologa de la Programacin

Curso 2012-13

18 / 22

Arrays y matrices de estructuras

Contenido del tema

Arrays y matrices de estructuras

Introduccin
Definicin y sintaxis
2 Operaciones con estructuras
Declaracin de variables
Inicializacin
Operadores de acceso a miembros de
la estructura
Operacin de asignacin
Operaciones de entrada y salida
3 Paso de estructuras a funciones

El acceso a los diferentes miembros de las estructuras, se realiza


combinando el acceso a los elementos de la matriz con las operaciones de
acceso a los miembros de la estructura.

DECSAI (Universidad de Granada)

DECSAI (Universidad de Granada)

struct Alumno{
string NIF;
string nombre;
int curso;
char grupo;
double notas[3];
};
int main(){
Alumno listaAlumnos[100];

Peculiaridad de arrays o matrices


miembros de una estructura
5 Arrays y matrices de estructuras
6 Estructuras de estructuras
4

Metodologa de la Programacin

listaAlumnos[0].NIF="26262727T";
...
cin >> listaAlumnos[3].notas[0];
...
listaAlumnos[1]=listaAlumnos[0];
Curso 2012-13

19 / 22

DECSAI (Universidad de Granada)

Metodologa de la Programacin

Curso 2012-13

20 / 22

Estructuras de estructuras

Estructuras de estructuras

Contenido del tema

Estructuras de estructuras

Introduccin
Definicin y sintaxis
2 Operaciones con estructuras
Declaracin de variables
Inicializacin
Operadores de acceso a miembros de
la estructura
Operacin de asignacin
Operaciones de entrada y salida
3 Paso de estructuras a funciones

Como caso particular, un valor miembro de una estructura puede ser a


su vez otra estructura.

DECSAI (Universidad de Granada)

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;

Peculiaridad de arrays o matrices


miembros de una estructura
5 Arrays y matrices de estructuras
6 Estructuras de estructuras
4

Metodologa de la Programacin

Curso 2012-13

21 / 22

DECSAI (Universidad de Granada)

Metodologa de la Programacin

Curso 2012-13

22 / 22

Potrebbero piacerti anche