Académique Documents
Professionnel Documents
Culture Documents
Facultad
Facultad de Ingeniera. Direccin de Estudios Bsicos.
Departamento de Computacin. Ctedra de Computacin II Semestre Perodo 1 2015.
Practica N1 Estructuras
Semana del 27 de Abril al 1 de Mayo del 2015
Objetivo de la Prctica: Implementar los conocimientos adquiridos en Computacin I, en el desarrollo de una
aplicacin bajo consola en VB2010, donde se ponga en uso la utilizacin de tipos de datos definidos por el
usuario (Estructuras).
Introduccin
Los lenguajes de programacin disponen de un conjunto de tipos de
datos simples o primitivos, los cuales conocen como manejarlos en el
caso de ser usados a la hora de definir una variable, constante,
mtodo, etc. de ese tipo. Es decir, como se leen, imprimen, las
operaciones que se pueden realizar, entre otras cosas.
Sin embargo estos datos, son los ms bsicos que una persona puede
utilizar en la vida diaria y de estos pueden surgir conceptos de mayor
profundidad que manejan ms de un valor.
Ejemplo, en los lenguajes se disponen de los datos tipo cadena y numricos, con estos tipos se pueden
almacenar caracteres o valores que puede representar cualquier informacin o magnitud de un concepto
simple, en el caso de una cadena se puede guardar una direccin, nombre de un pas, una placa, entre otros
conceptos posibles, para el caso de un valor numrico, se puede almacenar la magnitud del peso de una
persona, su edad, cantidad de dinero a depositar, etc. Pero un concepto conocido por nosotros como una
fraccin, este concepto que estamos acostumbrados a manejar como un solo dato, es en realidad una relacin
entre dos valores numricos, lo que significa que para poder manejarlo en un computador se requiere
implementar dos variables una que guarde el numerador y otra que guarde el denominador, ya que no se
dispone del tipo de dato fraccin por ser un concepto ms profundo.
En casos como este, una manera de poder manejar este
concepto como un tipo de dato, es definiendo un nuevo tipo de
datos que se adapte a ese concepto, segn el lenguaje de
programacin que se implemente se le conoce como crear un
registro o estructura. Es decir, una estructura, es un nuevo tipo
de datos que un programador incorpora en un programa para
ser implementado dentro en la aplicacin a desarrollar. Sin
embargo este tipo de dato no es manejado directamente por el
lenguaje, sino que el programador de alguna u otra manera
debe mostrarle a la maquina como se almacenaran los datos
que esta va a poseer, operacin posibles, etc.
En el caso de una fraccin este tipo de dato debe almacenar dos datos tipos enteros, uno para el numerador y
otro para el denominador, estos dos conceptos dentro de la estructura se conocen como sus CAMPOS, los
cuales puede ser de cualquier tipo conocido por el lenguaje o definidos por el programador. A continuacin se
muestra la definicin de la estructura Fraccin en Visual Basic Net:
Structure Fraccion
Dim Num, Den As Integer
End Structure
Luego de definida la estructura, ya se pueden definir variables, mtodos, etc, de ese tipo de dato, y el
procedimiento a seguir es el mismo implementado hasta este momento. Ej. en el caso de querer definir una
variable de este tipo en el procedimiento Main(), se proceder de la misma manera como se ha estado
realizando la definicin de una variable, como se muestra a continuacin:
Module module1
Structure Fraccion
Dim Num, Den As Integer
End Structure
Sub Main()
Dim Frac As Fraccion
End Sub
End Module
Ahora, la variable Frac es un dato tipo fraccin, sin embargo este tipo de dato el lenguaje no lo maneja de
manera directa. Cualquier actividad que se quiera realizar debe ser establecida por un tipo de dato conocido
por el lenguaje, para lograr esto se requiere hacer acceso hasta un campo de la estructura que sean del tipo
primitivo, esto se posible colocando el nombre de la variable estructura y luego utilizando el operador de
acceso punto se coloca el nombre del campo al que se quiere accesar.
Por otro lado, tambin se puede necesitar entrar varias veces a los campos de una variable tipo estructura y el
tener que colocar el nombre de la variable estructura se hace muy molestoso cada vez que se quiera entrar a
uno de sus campos, esto se puede evitar implementando la instruccin With. La instruccin With, tiene como
caracterstica que puede abreviar el nombre de solo una variable tipo Estructura a la vez y ahora para entrar a
alguno de sus campos solo requiere indicar el nombre del campo con el operador de acceso punto .
Ej. para leer los valores del numerador y denominador de la variable Frac por teclado, el cdigo quedara de la
siguiente manera mostrndose con y sin el uso de la instruccin With:
Sub Main()
Sub Main()
Dim Frac As Fraccion
Dim Frac As Fraccion
With Frac
Console.Write(Numerador = ) Console.Write(Numerador = )
Frac.Num = Console.Readline() .Num = Console.Readline()
Console.Write(Denominador = ) Console.Write(Denominador = )
Frac.Den = Console.Readline() .Den = Console.Readline()
End With
End Sub
End Sub
Ahora, supongamos que luego de leda la variable Frac queremos transformarla a su representacin como
fraccin mixta, otro tipo de dato que no existe en los lenguajes de programacin ya que est compuesta por un
coeficiente y la fraccin que representa la parte decimal del coeficiente. Definir este tipo de dato puede
realizarse declarando tres campos tipos enteros o como un campo tipo entero y otro tipo fraccin, en caso de
realizarlo de la segunda forma, su definicin se le conoce como una estructura tipo anidada, donde el campo
del coeficiente es manejable directamente por el lenguaje pero el campo fraccin no y su definicin sera la
siguiente, teniendo previamente definido el tipo Fraccion:
Structure FraccionMixta
Dim Coe As Integer
Dim F As Fraccion
End Structure
Al definir una variable del tipo FraccionMixta, esta va poseer dos campos Coe y F, pero para el caso del
campo F, la maquina no pude manejarlo directa sino que hay que entrar a los campos interno de F (Num y
Den), que si son campos manejables por el lenguaje. Ej. al transformar la variable Frac y se va a asignar los
valores correspondientes a los campos de la variable tipo FraccionMixta, el cdigo queda de la siguiente
manera planendose primeramente sin implementar la funcin With y luego con su implementacin:
Sub Main()
Structure FraccionMixta
Dim Coe As Integer
Dim Frac As Fraccion
Dim F As Fraccion
Dim FracMix As FraccionMixta
End Structure
Sub Main() Implementando el With a la variable FracMix
With FracMix
Dim Frac As Fraccion
.Coe = Frac.Num \ Frac.Den
Dim FracMix As FraccionMixta
With .F
.Num = Frac.Num mod Frac.Den
FracMix.Coe = Frac.Num \ Frac.Den
.Den = Frac.Den
FracMix.F.Num = Frac.Num mod Frac.Den End With
FracMix.F.Den = Frac.Den
End With
End Sub
End Sub
Observe que en el caso del uso del With, para este ejemplo se muestra que se implementaron dos, uno para
abreviar el nombre de la variable tipo estructura (FracMix) y uno interno para abreviar el campo F que
tambin es tipo Estructura, de no hacer esto se tendra que hacer acceso a sus campos internos de manera
normal.
Por ltimo, en el caso de manejar variables tipo estructuras en un programa, la nica operacin que se puede
realizar con estos tipos de datos es la operacin de asignacin. Ej. si se quisiera realizar una copia del valor de
la fraccin leda (Frac), los valores almacenados en esta variable pueden ser asignada directamente a otra
variable siempre y cuando est sea del mismo tipo estructura de Frac.
Module module1
Structure Fraccion
Dim Num, Den As Integer
End Structure
Structure FraccionMixta
Dim Coe As Integer
Dim F As Fraccion
End Structure
Sub Main()
Dim Frac, FracCopia As Fraccion
Dim FracMix As FraccionMixta
FracCopia = Frac
Tambin se podra asignar una copia de Frac en el campo F de FracMix
FracMix.F = Frac
End Sub
End Module
Ahora, que pasa si se quisiera comparar dos variables tipo Estructura en todos los casos de comparacin
excepto para el caso de verificar si son iguales, es decir, que todos los campos de ambas variables poseen el
mismo valor, la manera de determinar si cumple o no esta condicin a verificar es entrando a los campos que
posee la estructura, ahora para el caso de la igualdad, adems de poder realizarlo entrando campo a campo a
cada una de las variable tipo estructuras a cotejar, se cuenta con la funcin Equals.
La funcin Equals, comparar dos variables tipo Objetos en este caso estructuras, siempre y cuando estas sean
del mismo tipo, dando como respuesta un valor booleano (True o False), es decir, en caso que todos los
campos de las dos variables sean iguales (True) y si al menos una o todos los miembros entre las dos variables
difieren (False). Ej. supngase que se quiere verificar si dos fracciones son iguales, a continuacin se muestra
la manera de cotejar este hecho aplicando comparaciones campo a campo y luego con el uso de la funcin
Equals:
Sub Main()
Sub Main()
Dim Frac1, Frac2 As Fraccion
Dim Frac1, Frac2 As Fraccion Dim FracMix As FraccionMixta
Dim FracMix As FraccionMixta
If Equals(Frac1, Frac2) Then
If Frac1.Num = Frac2.Num And
Frac1.Den = Frac2.Den Then End If
Tambin se puede comparar el campo F de FracMix
End If If Equals(Frac1, FracMix.F) Then
End Sub End If
End Sub