EJERCITACION 1- Dados los siguientes mensajes: 1.a) Clasificarlos en mensajes unarios, binarios o de palabra clave. 1.b) Elegir un mensaje de cada grupo y analizar su estructura identificando objeto receptor, método y argumentos. 1.c) Evaluar cada mensaje con Display it y obtener el resultado. 1.d) Indicar a qué clase pertenece el método y qué hace. 7 max: 5 5 max: 7 2 min: 5 5 min: 2 12 + 2 12 + 2.0 12 - 14.5 12 * 2 12 * 2.0 14 / 2 14 / 3 14 / 3.0 4 raisedTo: 3 4 raisedToInteger: 3 4 raisedTo: 0.5 2 sqrt 9 squared 4 even 7 even 2 odd 3 odd -3 negative 3 negative -3 positive 3 positive 4 sign -4 sign 2.3 ceiling -2.3 ceiling 2.3 truncated -2.3 truncated 2.3 rounded 2.6 rounded 7 reciprocal ( 3 / 8 ) reciprocal 3 / 8 reciprocal 1 exp 1 ln 2 log: 2 4 factorial 16 gcd: 6 16 lcm: 6 12 asFloat 12.0 asInteger ( 3 / 4 ) denominator ( 3 / 4 ) numerator ( 3 / 4 ) asFloat ( 3 / 4 ) truncated 65 asCharacter Character value: 65 $A asciiValue $A isAlphaNumeric $A isDigit $A isLetter $2 isDigit $2 isLetter $G isLowerCase $g isLowerCase $G isUpperCase $g isUpperCase $; isSeparator $ isSeparator $a isVowel $b isVowel 2- Utilizando los métodos de la clase Number, escribir las expresiones que permitan calcular: a) el arcotangente de Pi b) el cubo de 25 d) el cubo del seno de 45 grados e) la inversa del coseno de Pi f) el entero superior más próximo a 35.8 g) el redondeo de 35.8 h) el redondeo de 100 veces el seno de 33 grados j) el mayor valor entre el factorial de 3 y la raíz cúbica de 64 3- Indicar qué se obtiene al evaluar los siguientes trozos de código con Display it: a) | cadena n p | n := p := 0. cadena := #(12 4 7 9 4 6 3 1 2 5 11). 1 to: cadena size do: [ :i | ( cadena at:i) odd ifTrue:[ n := n + 1 ] ifFalse:[ p := p + 1 ]]. n > p ifTrue:[ ^true ] ifFalse:[ ^false ] b) | cadena | cadena := Prompter prompt:'Cual es tu nombre?'. cadena at: 1 put: (cadena at:1) asUppercase. 2 to: cadena size do:[ :j | cadena at:j put: (cadena at:j) asLowercase]. ^cadena 4- Dentro de la clase Number escribir los métodos que representen los siguientes comportamientos: a) Realizar la suma de los primeros N enteros (N es el objeto receptor). b) Modificar el método definido en a) para realizar la suma de los recíprocos de los primeros N enteros. c) Modificar el método definido en a) para realizar la suma de 1 / ( x + 1) para los primeros N enteros. 5- Dentro de la clase String definir métodos para: a) Convertir las vocales de la cadena receptora en mayúsculas y las consonantes en minúsculas. b) Contar la cantidad de vocales dentro de la cadena receptora. c) Convertir los caracteres de la cadena receptora que están en mayúsculas a caracteres en minúsculas y viceversa. d) Convertir los caracteres de la cadena receptora que ocupan una posición impar a mayúsculas y los que ocupan una posición par a minúsculas. 6- Crear la clase Circunferencia y los métodos necesarios para calcular y mostrar la longitud de la circunferencia y el área del círculo por ella definido, teniendo como único dato el radio de la misma. 7- a) Crear la clase Ecuación y definir los métodos necesarios para resolver una ecuación de segundo grado en el campo real. Los coeficientes a, b y c de la ecuación se ingresan por teclado. Considerar que el coeficiente de segundo grado (a) debe ser distinto de cero. Si la ecuación no tiene raíces reales mostrar un mensaje aclaratorio. b) Modificar el programa del ítem a) para poder resolver cuatro ecuaciones. c) Modificar el programa del ítem a) para poder resolver un número indeterminado de ecuaciones. 8- Crear la clase Triangulo y los métodos mecesarios para clasificar los triángulos en equiláteros, isósceles o escalenos. Los lados del triángulo se deben ingresar por teclado. 9- Se desea crear un programa que permita ingresar alumnos en una comisión. De cada alumno se conocen su nro. de legajo y la nota que obtuvo en un examen. El programa deberá permitir la emisión de tres listados: a) Alumnos que superan el promedio general. b) Alumnos que no superan el promedio general pero si superan la mitad del promedio general. c) Alumnos que no superan la mitad del promedio general. Por cada alumno se deberá mostrar su nro. de legajo y la nota obtenida. 10- Un negocio maneja una lista de artículos que comercializa. Estos artículos se clasifican en nacionales e importados. De cada artículo se registra código numérico, descripción y precio basico. El precio unitario de un artículo se determina de la siguiente forma: - Si es Nacional: PrecioUnitario = PrecioBasico * (1 - Dto / 100) donde Dto es un dato común a todos los artículos nacionales. - Si es Importado: PrecioUnitario = PrecioBasico * ValorDolar donde ValorDolar es un dato común a todos los artículos importados. El propietario del negocio desea cargar la información de todos los artículos que comercializa (no se sabe cuántos son) y obtener un listado de los artículos nacionales o importados según una opción que se ingrese por teclado. Este listado deberá contener el correspondiente título y para cada artículo, deberá mostrar: Código, Descripción y Precio Unitario. Se pide: a) Desarrollar el modelo de clases completo, mostrando todas la relaciones, atributos y métodos necesarios para resolver los requerimientos planteados. b) En el entorno Smalltalk definir las clases, subclases y métodos necesarios para responder al modelo planteado en el punto a). El programa ppal. deberá mostrar un menú que permita acceder a las siguientes opciones: 1- Inicializar valores generales 2- Carga de artículos 3- Listado de artículos 0- Salir c) ¿Qué modificaciones haría si el listado tuviera que salir ordenado por precio unitario en forma decreciente? d) Agregar otra opción al menú que permita consultar los datos un artículo a partir del ingreso del código del mismo. Si dicho artículo no se encuentra, avisar con un mensaje esta situación y volver a solicitar otro código si el usuario así lo desea. e) Modificar el programa de modo tal que el código del artículo sea un valor que se genere en forma automática a partir del último valor asignado. f) Modificar el programa en forma conveniente sabiendo que los artículos importados tienen una numeración independiente a la de los artículos nacionales y las mismas no se solapan.