**Ponte a prueba**
**Challenge yourself**
Ejercicios tomados de el capítulo homónimo del libro [Learning Object-Oriented Programming, Design with TDD in Pharo](https://files.pharo.org/books-pdfs/learning-oop/2018-04-01-LearningOOP.pdf)
# Message identification
Para cada una de las siguientes expresiones, complete las respuestas:
* ¿Cuál es el objeto receptor?
* ¿Cuál es el selector de mensajes?
* ¿Cuál es el/los argumento(s)?
* ¿Cuál es el resultado de la ejecución de esta expresión?
* **Receptor:** 3
* **Selector**: +
* **Argumento**: 4
* **Resultado**: 7
* **Receptor:** Fecha
* **Selector**: Hoy
* **Argumento**:
* **Resultado**: 23 04 2025

* **Receptor:** #('' 'World')
* **Selector**: at: put:
* **Argumento**: 1 Hello
* **Resultado**: {Hello . World}
* **Receptor:** #(1 22 333)
* **Selector**: at:
* **Argumento**: 2
* **Resultado**: 22
* **Receptor:** #(2 33 -4 67)
* **Selector**: collect:
* **Argumento**: [ :each | each abs ]
* **Resultado**: Index (2 33 4 67)
* **Receptor:** 25
* **Selector**: @
* **Argumento**: 50
* **Resultado**: Variable ( X 25 Y 50 ).
* **Receptor:** SmallInteger
* **Selector:** maxVal
* **Argumento:** Decimal
* **Resultado:** 1152921504606846975
* **Receptor:** #(a b c d e f).
* **Selector:** includesAll:
* **Argumento:** #(f d b).
* **Resultado:** True (Verdadera).
* **Receptor:** True (Verdadera)
* **Selector**: |
* **Argumento**: false (Falso)
* **Resultado**: True (Verdadera)


* **Receptor:** Point (puntos)
* **Selector**: selectors
* **Argumento**: ninguno
* **Resultado**: Nos ofrece varias opciones para escoger algun punto.
# Literal objects
**Desafío: Objetos literales**
¿A qué tipo de objeto se refieren las siguientes expresiones literales? Es lo mismo que preguntar cuál es el resultado de enviar el mensaje de clase a dichas expresiones.
> Numero como es Decimal y Binarios
> Caracteres
> Un Arreglo
1: 2
2: 33
3: 4
**Arreglos** están confinados por **#( )** y sus elementos se separan por espacios. Por ejemplo, inspecciona la siguiente expresión, que define un arreglo de 3 elementos.
> Hola, Dave
Cadenas de caracteres.
> Mensajes
Bloque por que esta delimitado por parentesis cuadrados.
Binario
> A
Un **Caracter** represetan una **letra o glifo del alfabeto** y puede ser creado o instanciado usando el operador **$**.
> **Verdadero**
Mensajes valor binario.
> 1
Objetos basicos **1, 2, 100, 2/3 ... son Números (Numbers)**, y responden a muchos mensajes evaluando expresiones matemáticas.
# Kind of messages
Desafío: **Tipos de mensajes**
Examina los siguientes mensajes e indica si son unarios, binarios o basados en palabras clave.
> 0.0
Mensaje **Unario**
> Presenta error.
* receptor: Browser
* Selector: open
* Respuesta: Ninguno
* Mensaje **Unario**
> 32
Mensaje **Keyword** (Palabra Clave).
> helloworld
Mensaje **Palabra clave**
>
X: 10
Y: 20
Mensaje **Binario**
> Me presenta error #x was sent to nil
Mensaje **Unario**
> Me presenta error #distancefrom:was sent to nil
Tiene que ver con palabras clave por los visto en clase.
# Results
Desafío: **Resultados**
Examine las siguientes expresiones. **¿Cuál es el valor devuelto al ejecutarlas?**
> -2
> -2
> 32
> Second **(Segundo)**
>
1= 4
2= 9
3= 100
4= 9
> 5
> 32
> True **(Verdadero)**
# unneeded parentheses
Desafío: **Paréntesis innecesarios**
Poner más paréntesis de los necesarios es una buena manera de empezar. Sin embargo, esta práctica resulta en expresiones menos legibles. Reescribe las siguientes expresiones usando la menor cantidad de paréntesis posible.
> Me presenta error y aparece #X WAS SENT TO NIL
> **#(a b c d e f) asSet intersection: #(f d b) asSet**
> Me presenta error en los ( ) aqui : (x includes: y)
Eliminar parentesis
>
1: 56
2: 33
> 17
> 501
> http://www.pharo.org Url .