1. Estudiante 2. Desarrollo

Anuncio
Nota: 100
UNIVERSIDAD DE COSTA RICA
FACULTAD DE INGENIERÍA
ESCUELA DE INGENIERÍA ELÉCTRICA
PROGRAMACIÓN BAJO PLATAFORMAS ABIERTAS IE-0117
I CICLO 2012
REPORTE LABORATORIO 11
1.
Estudiante
Curso: Programación bajo Plataformas Abiertas
Grupo: 1
Estudiante: Ricardo Abarca Garro
Carné: A90010
2.
Desarrollo
En este laboratorio se introdujo la utilización de clases y el algunas tecnicas para el manejo de errores, el
manejo de clases es de gran utilidad pues permiten al usuario desarrollar tipos de datos los cuales se ajusten
a las necesidades que estos requieran en el programa, las cuales podrian ser difíciles de resolver con los tipos
basicos de variables. En el laboratorio se debian efectuar operaciones con matrices, las cuales no son un tipo
de dato incluido en python, con la utilización de clases se crearon objetos del tipos matriz lo cual facilita de gran
manera las operaciones con matrices.
2.1.
Problema 1
La primera parte del laboratorio consistiá en elaborar un módulo con una clase que creará objetos del tipo
matriz del tamaño deseado, y donde se definieran algunas operaciones básicas de estas, el programa encargado
de la elaborar estas matrices se puede ver en el archivo adjunto parte1.
La primera parte de este módulo es la del método constructor en el cual se crean las matrices del tamaño específicado con todos sus valores iguales a cero, en este método se define el atributo matriz como una lista de listas,
este atributo es de gran importancia pues es con el que se define el objeto como una matriz, el metodo constructo
se puede ver a continuacion:
def _ _ i n i t _ _ ( s e l f , f i l a s , columnas ) :
filas = str ( filas )
columnas = s t r ( columnas )
i f f i l a s . i s d i g i t ( ) and columnas . i s d i g i t ( ) :
filas = int ( filas )
columnas = i n t ( columnas )
self . filas = filas
s e l f . columnas = columnas
s e l f . matriz = [ [ ] ]
columna = [ ]
f o r i i n range ( f i l a s ) :
f o r j i n range ( columnas ) :
UNIVERSIDAD DE COSTA RICA
FACULTAD DE INGENIERÍA
ESCUELA DE INGENIERÍA ELÉCTRICA
PROGRAMACIÓN BAJO PLATAFORMAS ABIERTAS IE-0117
I CICLO 2012
REPORTE LABORATORIO 11
columna . i n s e r t ( j , 0 )
s e l f . m a t r i z . append ( columna )
columna = [ ]
Para mostrar la información del objeto matriz se utiliza un método especial, el cual es llamado de forma inmediata
al efectuar comandos como print, el método implementado se muestra a continuación:
def _ _ s t r _ _ ( s e l f ) :
r e t u r n ’ \ n ’ . j o i n (map( s t r , s e l f . m a t r i z ) )
De forma similar al caso anterior hay otros métodos especiales los cuales se llaman de forma inmediata al realizar
operaciones basicas como sumas o restas con instancias del objeto, en este laboratorio se implementaron estos
métodos para la suma, la resta y la comparación de dos matrices, todos estos se pueden ver en el archivo adjunto,
a continuación se mostrará unicamente el caso de la suma:
def __add__ ( s e l f , suma ) :
i f suma . f i l a s == s e l f . f i l a s and suma . columnas== s e l f . columnas :
s e l f . suma = suma
t o t a l = M a t r i z ( s e l f . f i l a s , s e l f . columnas )
f o r f i l a i n range ( s e l f . f i l a s ) :
f o r columna i n range ( s e l f . columnas ) :
t o t a l . m a t r i z [ f i l a ] [ columna ] = s e l f . m a t r i z [ f i l a ] [ colum
return t o t a l
else :
p r i n t ’ No se pueden sumar m a t r i c e s con d i f e r e n t e s dimensiones ’
sys . e x i t ( 1 )
Tambien se implementaron métodos para ingresar valores a alguna posición de la matrices y otro para obtener
el valor de alguna posición de la matriz, solo se mostrará el que introduce valores, ya que el los devuelve es muy
similar:
def s e t _ v a l o r ( s e l f , pm, pn , v a l o r ) :
i f pm<= s e l f . f i l a s and pn<= s e l f . columnas :
#se asegura de que l a p o s i c i o n i n d i c a e x i s t a en l a m a t r i z , de l o c o n t
s e l f .pm = pm
s e l f . pn = pn
self . valor = valor
s e l f . m a t r i z [ pm− 1 ] [ pn−1] = v a l o r
else :
p r i n t ’ No e x i s t e esa p o s i c i o n en l a m a t r i z ’
sys . e x i t ( 1 )
En estos métodos se recibe la posción de la matriz(y el valor a introducir en el caso de set), por lo que al
llamar a estos métodos desde una instancia del objeto se deben indicar esos valores, estos métodos simplemente
determinan la posición indicada en la matriz, e introducen o devuelven el valor asignado a esa posición según le
corresponda al método.
UNIVERSIDAD DE COSTA RICA
FACULTAD DE INGENIERÍA
ESCUELA DE INGENIERÍA ELÉCTRICA
PROGRAMACIÓN BAJO PLATAFORMAS ABIERTAS IE-0117
I CICLO 2012
REPORTE LABORATORIO 11
2.2.
Problema 2
La segunda parte del laboratorio simplemente consistia en un módulo de prueba, donde se crean objetos
del tipo matriz, y se efectuan operaciones con estos, el módulo utilizado se puede ver en el archivo prueba.py.
Todos los argumentos enviados desde el módulo utilizado son compatibles con el programa, y no generan ningun
error, sin embargo es fácil obtener resultados distintos alterando un poco los valores introducidos, al declarar las
instancias del tipo matriz, y al efectuar operaciones con estas, se llama a la clase Matrices donde estas estan
definidas, y en donde se efectuan las operaciones requeridas por estas operaciones.
Descargar