By Maex.
Se trata de la forma más versatil de trabajar con fichas de información. Veamos como se definen y posteriormente
comentaremos todos los aspectos relevantes de ellas.
struct [Nombre_de_la_estructura]
{
tipo1 campo1;
tipo2 campo2;
.
.
tipoN campoN;
} [variable];
La palabra clave struct define una estructura. Por tratarse de un tipo de datos puede utilizarse directamente para definir una variable. La variable aparece entre corchetes puesto que puede ser omitida. Si se especifica una variable, estaremos definiendo una
variable cuyo tipo será la estructura que la precede. Si la variable no es indicada definimos un nuevo tipo de datos (struct Nombre_de_la_estructura), que podremos utilizar posteriormente. Si es el nombre de la estructura lo que se omite, tendremos que especificar obligatoriamente una variable que tendrá esa estructura y no podremos definir otras variables con esa estructura sin tener que volver a especificar todos los campos. Lo que se encuentra dentro de las llaves es una definición típica de variables con su tipo y su identificador. Todo esto puede parecer un poco confuso pero lo aclararemos con unos ejemplos.
struct punto
{
float x;
float y;
int color;
} punto_de_fuga;
Aquí estamos definiendo una variable llamada punto_de_fuga cuyo tipo es una estructura de datos formada por tres campos y a la que hemos llamado punto. Dos de ellos son de tipo float y representan las coordenadas del punto, el tercer valor es un entero que indica el color de ese punto. En este caso hemos definido una variable y una estructura. Al disponer de un identificador para esta última podemos definir nuevas variables de esta estructura.
struct punto origen1;
struct punto final1;
Donde origen1 y final1 son variables de tipo struct punto que hemos definido anteriormente. Si en la definición de punto_de_fuga no se hubiese incluído un identificador para la estructura (en este caso el identificador es punto), no podríamos definir nuevas variables con esa estructura ya que no estaría identificada por ningún nombre.
También podríamos haber excluído el nombre de la variable (punto_de_fuga). En este caso lo que definiríamos sería una estructura llamada punto que pasaría a ser un nuevo tipo disponible por el usuario. Así los tipos de variables de que dispondríamos ahora serían:
int
float
double
char
struct punto
Por tanto podríamos definir cualquier variable con estos tipos o incluso definir matriz de estos tipos.
struct punto matriz_de_puntos[30];
Así estaríamos definiendo una matriz de 30 elementos en la que cada elemento es una struct punto con sus tres campos.
Lo que ahora nos interesa es saber como referenciar esos campos y acceder o modificar, por tanto la información que contienen. Esto se consigue separando el identificador del campo de la variable mediante un punto.
ARTÌCULO ENVIADO POR GUSTAVO GONZALEZ LINARES
ESTUDIANTE DE INGENIERÌA EN SISTEMAS, TECNOLOGICO DE VALLE DE BRAVO
El siguiente programa està hecho en Visual Basic y maneja estructuras, por lo tanto, tal programa puede ser implementado en cualquier otro lenguaje como JAVA
Private Type Ficha
nombre As String * 40 nota As Single
End Type Private alumno(20) As Ficha Dim n As Integer Dim cadena As String Private Sub Aceptar_Click()
Dim i As Integer
Dim j As Integer
i = Indice.Text
With alumno(i)
.nombre = Text2.Text
.nota = Text3.Text
cadena = “alumno (“ & i & “)” & “ “ & alumno(i).nombre & “calificacion” & “ “ & alumno(i).nota
End With
Lista.Add Item? cadena, (j)
Text2.Text = “ “
Text3.Text = “ “
If i = n Then
Text2.Visible = False
Text3.Visible = False
Aceptar.Visible = False
aviso.Visible = True
Label3.Visible = False
Label4.Visible = False
Label2.Visible = False
Otro_dato.Visible = True
Exit Sub
End If
j = j + 1
i = i + 1
Indice.Text = i
Text2.Set Focus?
End Sub Private Sub Command1_Click()
n = Input Box?(“Ingrese numero de registros”) Text2.Set Focus
End Sub Private Sub Command2_Click()
Dim x As Integer cadena = “¿Seguro que desea borrar el registro” & Lista.List Index? & “?” Msg Box (cadena), , “¡Mensaje!” x = Lista.List Index Lista.Remove Item? (x)
End Sub Private Sub Command3_Click()
For i = 1 To n
cadena = “alumno (“ & i & “)” & “ “ & “Nombre” & “ “ & alumno(i).nombre & “calificacion” & “ “ & alumno(i).nota
Msg Box (cadena), , “Registros del vector”
Next i
End Sub
Private Sub Form_Load()
Dim n As Integer, i As Integer Dim s As Integer, k As Integer aviso.Visible = False Indice.Text = 1 Text2.Text = “ “ Text3.Text = “ “
End Sub Private Sub Ordenar_Click()
Dim aux As Ficha
i = Indice.Text
While (s = 1) And (k > 1)
s = 0
For i = 2 To k
If alumno(i - 1).nombre > alumno(i).nombre Then
aux = alumno(i - 1)
alumno(i - 1) = alumno(i)
alumno(i) = aux
s = 1
End If
Next i
Wend
For i = 0 To n
Lista.List(i) = “ “
Next i
For i = 0 To n
Lista.List(i) = alumno(i).nombre
Lista.List(i) = alumno(i).nota
Next i
End Sub
Programa que utiliza paquetes y procesa los datos de un empleado, ademas de utilizar estructuras. Por:Gustavo Gonzalez Linares
//Paquete Fecha?.java package paquetito; import javax.swing.J Option Pane; public class Fecha {
private int dia;
private int mes;
private int anio;
public Fecha ()
{
int d=introducirDia();
int m=introducirMes();
int a=introducirAnio();
validarTodo(d,m,a);
}
public void validarTodo(int dia, int mes, int anio)
{
this.dia=validarDia(dia);
this.mes=validarMes(mes);
this.anio=anio;
}
public int validarDia(int day)
{
if(day>0 && day<31)
return day;
else
{
J Option Pane.showMessageDialog(null,”Dìa incorrecto, escriba otro dìa”, “ERROR”,J Option Pane.INFORMATION_MESSAGE);
int d=introducirDia();
return d;
}
}
public int validarMes(int month)
{
if(month>0 && month<13)
return month;
else
{
J Option Pane.showMessageDialog(null,”Mes incorrecto, escriba otro mes”, “ERROR”,J Option Pane.INFORMATION_MESSAGE);
int m=introducirMes();
return m;
}
}
public int introducirDia()
{
String dia=J Option Pane.showInputDialog(“Ingrese el dìa”);
int d=Integer.parseInt(dia);
return d;
}
public int introducirMes()
{
String mes=J Option Pane.showInputDialog(“Ingrese el mes”);
int m=Integer.parseInt(mes);
return m;
}
public int introducirAnio()
{
String anio=J Option Pane.showInputDialog(“Ingrese el año”);
int a=Integer.parseInt(anio);
return a;
}
public String aCadena()
{
return dia+” “+”/”+mes+” “+”/”+anio;
}
public int obtenerDia()
{
return dia;
}
public int obtenerMes()
{
return mes;
}
public int obtenerAnio()
{
return anio;
}
}
package paquetito; import paquetito.Fecha; import javax.swing.J Option Pane; public class Empleado {
private String nombre;
private String fechaDeNacimiento;
private String fechaDeIngreso;
public Empleado()
{
nombre=introducirNombre();
J Option Pane.showMessageDialog(null,”Ingrese fecha de naciomiento:”,”DATOS”,J Option Pane.INFORMATION_MESSAGE);
Fecha Nacimiento=new Fecha();
J Option Pane.showMessageDialog(null,”Introduzca fecha de ingreso:”,”DATOS”,J Option Pane.INFORMATION_MESSAGE);
Fecha Ingreso=new Fecha();
fechaDeNacimiento=Nacimiento.aCadena();
fechaDeIngreso=Ingreso.aCadena();
}
public String introducirNombre()
{
String nom=J Option Pane.showInputDialog(“Ingrese su nombre”);
return nom;
}
public String aCadenaEmpleado()
{
return “El nombre del empleado es:”+” “+nombre+”\n”+
“Su fecha de nacimiento es:”+” “+fechaDeNacimiento+”\n”+
“Su fecha de ingreso es:”+” “+fechaDeIngreso;
}
} //Paquete principal import paquetito.Empleado; import paquetito.Fecha; import javax.swing.J Option Pane; class Prueba Empleado//La clase crea un vector de {//tipo empleado y de esta manera se crea una serie de
public static void main(String args[])//objetos del
{//mismo tipo
Empleado vectorE[]=new Empleado[5];
for(int i=0;i<vectorE.length;i++)
{
vectorE[i]=new Empleado();
J Option Pane.showMessageDialog(null,vectorE[i].aCadenaEmpleado(),”DATOS DEL EMPLEADO”,J Option Pane.INFORMATION_MESSAGE);
}
}
}