definicion y declaracion de estructuras

Anuncio
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
Lógica de Programación - 204022
DEFINICION Y DECLARACION DE ESTRUCTURAS
Las estructuras están compuestas por una serie de componentes individuales
llamados miembros, para hacerlo más grafico podemos decir que queremos
ingresar datos de una persona como su nombre, apellido, dirección, salario,
edad… cada miembro de la estructura es de dato diferente, una estructura
no tiene restricciones para contener un número determinado de miembros, e
inclusive podemos realizar estructuras que contengan otras estructuras.
Veamos un ejemplo:
Se desea llevar los datos de una colección de películas, para ello tenemos:
Titulo,
Protagonista
Genero
Precio
Fecha de compra
Para este ejemplo encontramos cinco miembros, ahora debemos deducir
que tipo de datos contiene cada uno de ellos.
Miembro
Titulo
Protagonista
Genero
Precio
Fecha de compra
Tipo
Vector de 30 caracteres titulo [30]
Vector de 30 caracteres prota [30]
Vector de 10 caracteres genero [10]
float
Vector de 10 caracteres fecha [10]
Si tenemos datos quedara así
Miembro
Titulo
Protagonista
Genero
Precio
Fecha de compra
Dato
Corto circuito
Alambrito
Acción
25.580
01/01/05
Bien pero como se declara en un programa, Sencillo
1
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
Lógica de Programación - 204022
struct película
{
char titulo[30];
char prota[30];
char genero[10];
float precio;
char fecha[10];
} Nombre; // variable que refiere a la estructura
Lo mejor es hacerlo con la codificación real de un ejercicio, supongamos que
deseamos llevar los datos de básicos de un empleado
#include <iostream>
using namespace std;
struct registro
{
string nombre;
int edad;
float salario;
} empleado;
int main()
{
cout << "Digite su nombre: "; cin >> empleado.nombre;
cout << "Digite su edad: "; cin >> empleado.edad;
cout << "Digite su salario: "; cin >> empleado.salario;
cout << "\n\nNombre: " << empleado.nombre << "\nSalario: $ " <<
empleado.salario;
cout<< "\n Edad: " << empleado.edad << " años";
}
Explicación
1. Creamos una estructura llamada registro con los miembros nombre, edad,
salario.
2
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
Lógica de Programación - 204022
2. Una variable empleado que de tipo registro
3. Observemos que cada vez que hacemos referencia a un miembro de la
estructura lo hacemos a través de la variable (empleado), separándolo con un
punto
Otros ejemplos:
Ahora bien definamos una estructura como el conjunto de variables que se
referencian bajo el mismo nombre. La sintaxis de la declaración de una estructura
en lenguaje C es:
struct nombre_estructura
{
tipo nombre_variable;
tipo nombre_variable;
...
tipo nombre_variable;
} variables_estructura;
Algunas características esenciales son:
 el nombre de la estructura (nombre_estructura), no es obligatorio al
momento de declararla
 los miembros de la estructura pueden tener distintos tipos de datos
 el nombre de la estructura y la variable de la estructura pueden tener el
mismo nombre como se puede ver en algunos ejemplos
 es aconsejable evitar que el nombre de los miembros de la estructura y la
variable_estructura sean iguales
Veamos algunos ejemplos de declaración de estructuras:
struct LISTA{
int tam;
char cadena[50];
}var_lista;
struct DATO{
int tam;
float vector[3];
struct DATO *siguiente;
};
3
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
Lógica de Programación - 204022
struct {
float a,b;
unsigned long i,j;
char cadena[5];
}memo[10];
struct ALFA{
int a;
float b;
};
struct BETA{
struct ALFA alfa;
float c,d;
}variable;
Para referenciar un elemento de una estructura se realiza de la siguiente forma:
variables_estructura.nombre_variable;
Así, podíamos referenciar los elementos de las estructuras anteriores de la
siguiente forma:
var_lista.tam;
var_list.cadena;
var_list.cadena[7];
memo[2].a;
memo[6].cadena[3];
variable.alfa.a;
variable.c;
Un aspecto que es necesario aclarar es el paso de estructuras como parámetros a
las funciones. A una función es posible pasarle un elemento de los que componen
la estructura, una estructura entera, e incluso, un array de estructuras. En caso de
pasarle un elemento de la estructura, el paso se hace siguiendo las reglas del tipo
del cual sea ese elemento; en el caso de una estructura entera, C la pasa, a no
ser que se le indique lo contrario, por valor, y en el caso de un array de
estructuras, como todo array, lo pasara por "referencia". Conviene aclarar en este
momento que si la estructura posee en su interior un array de elementos, la
estructura puede ser pasada por valor a una función, pero el array será pasado
4
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
Lógica de Programación - 204022
siempre por referencia. En concreto a la función se le pasara por valor un puntero
al primer elemento del array.
Veamos todo esto en un ejemplo:
PROGRAMACION EN FALCON C++
#include <iostream>
#include <stdlib.h>
using namespace std;
const int Max=100;
struct registro {
char nombre[20];
int edad;
float salario;
} amigos[Max]; // permite almacenar máximo 100 datos para este caso
int main()
{
int num_reg = 0, i;
cout <<"Cuántos amigos desea introducir? (máximo " <<Max <<") ";
cin >> num_reg;
for (i=0;i<num_reg;++i) {
cout << "Registro : " << i << "\n";
cout << " Salario: "; cin >> amigos[i].salario;
cout << " Nombre : "; cin >> amigos[i].nombre;
cout << " Edad : "; cin >> amigos[i].edad;
}
system("cls");
cout << "________________________\n";
for (i=0; i<num_reg; ++i)
cout << i+1 << " " << amigos[i].nombre << " " << amigos[i].edad << " " <<
amigos[i].salario << endl;
cout << "________________________\n";
}
Es interesante a realizar la prueba de escritorio de este ejercicio
5
Descargar