Vous êtes sur la page 1sur 5

Universidad de Carabobo.

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

Practica N1 Estructuras Pg. 1 de 5


Material de Apoyo en Clase Elaborado por Prof. Hugo Hernndez.
Universidad de Carabobo. Facultad
Facultad de Ingeniera. Direccin de Estudios Bsicos.
Departamento de Computacin. Ctedra de Computacin II Semestre Perodo 1 2015.

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

Practica N1 Estructuras Pg. 2 de 5


Material de Apoyo en Clase Elaborado por Prof. Hugo Hernndez.
Universidad de Carabobo. Facultad
Facultad de Ingeniera. Direccin de Estudios Bsicos.
Departamento de Computacin. Ctedra de Computacin II Semestre Perodo 1 2015.

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.

Practica N1 Estructuras Pg. 3 de 5


Material de Apoyo en Clase Elaborado por Prof. Hugo Hernndez.
Universidad de Carabobo. Facultad
Facultad de Ingeniera. Direccin de Estudios Bsicos.
Departamento de Computacin. Ctedra de Computacin II Semestre Perodo 1 2015.

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

Escenario N 1: Determinando Ecuaciones de Circunferencias


Se desea desarrollar una aplicacin en VB2010, que dado el archivo de datos, Datos.Txt, en el cual se
encuentra un grupo de pares de puntos ubicados en el plano cartesiano, P1(X1, Y1) y P2(X2, Y2), donde el
primer punto ledo representa el centro de una circunferencia y el segundo un punto que le pertenece,
determine e imprima al archivo de datos Circunferencias.Txt, la siguiente informacin:
Para cada par de puntos
ndice, Ecuacin de la circunferencia y Ubicacin del centro en el plano(*)
(*) La ubicacin se representa establece de la siguiente manera: Cuadrante I (X>=0 y Y>0), Cuadrante II (X<0 y Y>=0),
Cuadrante III (X<=0 y Y<0) y Cuadrante IV (X>0 y Y<=0)

Para todos los pares de puntos:


Porcentaje de Circunferencias donde el centro de la misma se ubica en el origen de coordenadas (0, 0).
Ecuacin de la Circunferencia, que posee el mayor radio, en caso de haber ms de una indique el
primero que se consigue.
Especificaciones:
Para dar solucin al problema, defina e implemente la estructura Punto, la cual sea capaz de almacenar las
coordenadas de la abscisa y la ordenada de un punto.
Recuerde:
La ecuacin de una circunferencia se representa de la siguiente manera
        

Donde: Xc y Yc, representan las coordenadas del centro
R, representa el radio de la circunferencia, es decir, la distancia entre el centro y un punto que le
pertenezca
La distancia entre dos puntos se determina como
          
Donde: (X1, Y1) y (X2, Y2), representan las coordenadas de los dos puntos

Practica N1 Estructuras Pg. 4 de 5


Material de Apoyo en Clase Elaborado por Prof. Hugo Hernndez.
Universidad de Carabobo. Facultad
Facultad de Ingeniera. Direccin de Estudios Bsicos.
Departamento de Computacin. Ctedra de Computacin II Semestre Perodo 1 2015.

Ejemplo del archivo de entrada y forma en que quedara el archivo de salida


Datos.Txt Circunferencia.Txt
-6.98, -7.92, -2.83, 2.04 1 (X-(-6.98))^2+(Y-(-7.92))^2=116.42 Cuadrante III
-5.21, 3.19, 2.92, -4.66 2 (X-(-5.21))^2+(Y-(3.19))^2=127.72 Cuadrante II
1.40, 5.88, 0.04, 3.61 3 (X-(1.4))^2+(Y-(5.88))^2=7.00 Cuadrante I
1.07, 1.58, -7.29, -2.78 4 (X-(1.07))^2+(Y-(1.58))^2=88.90 Cuadrante I
-3.85, 8.12, -9.09, -2.89 5 (X-(-3.85))^2+(Y-(8.12))^2=148.68 Cuadrante II
Porcentaje de circunferencias con centro en el origen: 0.00%
Ecuacion de la circunferencia con mayor radio:
(X-(-3.85))^2+(Y-(8.12))^2=148.68
Modificacin planeada
Luego de dar solucin al ejercicio, realice las modificaciones pertinentes, para que el mismo se desarrolle
utilizando adems la estructura Circunferencia, la cual sea capaz de almacenar el radio de la circunferencia y
las coordenadas de centro como un dato tipo Punto.

Escenario N 2: Clasificacin de Tringulos


Los tringulos o polgonos de tres puntos se pueden clasificar por la longitud de sus lados de acuerdo a la
siguiente clasificacin:
Tipo 1: Equiltero, el cual posee sus tres lados iguales. Es
decir, su relacin de distancias es, d12 = d13 = d23
Tipo 2: Issceles, que tienen dos lados iguales y su relacin
de distancia es as, (d12 = d13) (d12 = d23) (d13 = d23)
Tipo 3: Escaleno, los cuales tienen sus tres lados diferentes,
representndose de la siguiente manera segn su relacin
de distancia, (d12 <> d13) y (d12 <> d23) y (d13 <> d23)
Enunciado
Dado el archivo de datos Vertices.Txt, que contiene en cada lnea las coordenadas (x, y) de tres puntos que
representan los vrtices de un tringulo. Desarrolle un programa en VB2010, que lea el archivo antes
mencionado y determine e imprima en el archivo de datos Clasificacion.Txt, para cada tringulo, las
coordenadas de los vrtices, tipo de tringulo que forma y rea del mismo.
Especificaciones:
Para dar solucin al problema, defina e implemente la estructura Punto, la cual sea capaz de almacenar las
coordenadas de la abscisa y la ordenada de un punto.
Recuerde:
El rea de un tringulo se puede evaluar utilizando el mtodo del semipermetro (s), donde:
12  13  23/2
    12   12   23
Ejemplo del archivo de entrada y forma en que quedara el archivo de salida

Practica N1 Estructuras Pg. 5 de 5


Material de Apoyo en Clase Elaborado por Prof. Hugo Hernndez.

Vous aimerez peut-être aussi