smalltalk

Páginas: 7 (1647 palabras) Publicado: 10 de noviembre de 2014
Paradigmas de Programación. Año 2006

EJERCICIOS RESUELTOS DE SMALLTALK
Ejercicio N° 1
i. Se le solicita que defina en Smalltalk una clase Matriz (para representar este concepto), la cual deberá ser una
subclase de OrderedCollection. Describa claramente que modelo emplea para representar el concepto de matriz.
Se le solicita que defina los métodos básicos para su creación, inspección ymodificación:
new: n
at: unPar
at: unPar put: valor
Para la representación del objeto unPar puede emplear la clase Point.
ii. Con las especificaciones del punto i. defina el método simétrica, el cual deberá retornar true, si la matriz
receptora es una matriz simétrica. Recuerde que la definición de matriz simétrica es la siguiente:
A = AT
Defina todos los métodos que considere necesario paradefinir simétrica.
Resolución:
La matriz se representará como una lista de filas, utilizando el comportamiento heredado de la superclase, donde
cada fila será un Array (cuyo tamaño es equivalente al número de columnas).
Clase Matriz
OrderedCollection subclass: #Matriz
instanceVariableNames:
'filas columnas '
classVariableNames: ''
poolDictionaries: ''
Métodos de clase Matriz
new:unEntero
"crea y responde una matriz cuadrada de unEntero*unEntero"
^self new: unEntero por: unEntero.
new: rows por: cols
"crea y responde una matriz de rows*cols"
|ret|
ret := super new: rows.
ret inicializar: (rows @ cols).
^ret.
Métodos de instancia Matriz
at: unPar
"responde el valor contenido en (unPar x, unPar y)"
|row col|
row := unPar x.
col := unPar y.
^((super at: row) at:col).
at: unPar put: unValor
"almacena unValor en la posicion (unPar x, unPar y)
y responde el valor almacenado"
|row col|
row := unPar x.
col := unPar y.
^((super at: row) at: col put: unValor).
columnas
"responde el numero de columnas que posee la Matriz"
^columnas.

Ejercicios Resueltos Smalltalk

1

Paradigmas de Programación. Año 2006

esCuadrada
"responde true si laMatriz tiene igual numero de filas que de columnas"
^(filas = columnas).
esSimetrica
"responde true si la Matriz es simetrica"
|ret cuentaFila cuentaCol|
(self esCuadrada) ifFalse: [ ^false ].
cuentaFila := 1.
cuentaCol := 1.
ret := self transpuesta.
filas timesRepeat: [ columnas timesRepeat: [ ( (self at: cuentaFila @ cuentaCol) =
(ret at: cuentaFila @ cuentaCol) )
ifFalse: [ ^false ].cuentaCol := cuentaCol + 1 ].
cuentaCol := 1.
cuentaFila := cuentaFila +1 ].
^true.
filas
"responde el numero de filas que posee la Matriz"
^filas.
inicializar: unPar
"inicializa el contenido de la Matriz, así como el número de filas y de columnas"
filas:= unPar x.
columnas:= unPar y.
1 to: filas do: [ :cuentaFila |
self add: (Array new: columnas) .
1 to: columnas do: [ :cuentaCol |(super at: cuentaFila) at: cuentaCol put: 0 ].
].
transpuesta
"responde la transpuesta de una Matriz"
|ret|
ret := Matriz new: self columnas por: self filas.
1 to: filas do: [ :cuentaFila | 1 to: columnas do:
[ :cuentaCol | ret at: cuentaCol @ cuentaFila put: (self at: cuentaFila @ cuentaCol)
]
].
^ret.

Ejercicios Resueltos Smalltalk

2

Paradigmas de Programación. Año 2006Ejercicio N° 2
Se le solicita que cree una subclase de Array, en la cual se le solicita que defina los siguientes métodos que
permiten que mantenga la historia de los valores asignados y la posibilidad de fijar valores máximos y mínimos
para cada posición del arreglo:
historia: i ; retorna una colección con todos los valores que fueron asignados a la posición i.
invertir ; revierte el orden delos valores del arreglo receptor del mensaje, se modifica el estado del mismo.
at: i valorMax: n ; asignar un valor máximo n para la posición i.
at: i valorMin: n ; asignar un valor mínimo n para la posición i.
Describa la estructura de la subclase, es decir los atributos y demás métodos que sean necesarios.
Resolución:
Clase ArrayConHistoria
Array variableSubclass: #ArrayConHistoria...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Colecciones Smalltalk
  • variables smalltalk
  • polinomio en smalltalk
  • Smalltalk
  • Smalltalk
  • Smalltalk
  • Estructura de Datos, simula y smalltalk
  • Trabajo Practico Sobre Smalltalk

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS