Exprecion regular
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 para definirsimé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 unamatriz 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 "almacenaunValor 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 la Matriz 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 latranspuesta 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 2006
Ejercicio N° 2 Se le solicita que cree una subclase de Array, en la cual se le solicita quedefina 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 de los 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 instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' Métodos de clase ArrayConHistoria new...
Regístrate para leer el documento completo.