**Challenge yourself**
# Challenge: Message identification
Ejercicios tomados del capítulo homino del libro [Learning Object-Oriented Programming, Design with TDD in Pharo](https://files.pharo.org/books-pdfs/learning-oop/2018-04-01-LearningOOP.pdf)
For each of the expressions below, fill in the answers: * What is the receiver object? * What is the message selector? * What is/are the argument (s)? * What is the result returned by this expression execution?
* Receiver: 3 * Selector: + * Arguments: 4 * Result: 7
* Receiver: Date * Selector: Today * Arguments: * Result: 2025-04-08
![ Error al ejecutar codigo ](https://i.imgur.com/2s4PY8W.png)
* Receiver: World * Selector: at: 1 put * Arguments: Hello * Result: #('Hello')
* Receiver: #(1 22 333) * Selector: at * Arguments: 2 * Result: 22
* Receiver: #(2 33-4 67) * Selector: Collect * Arguments: each | each abs * Result: 2 33 4 67
* Receiver: números * Selector: @ * Arguments: X Y * Result: X=25 Y=50
* Receiver: Números enteros * Selector: SmallInteger * Arguments: maxVal * Result: 1152921504606846975
* Receiver: #(a b c d e f) * Selector: includesAll * Arguments: #(f d b) * Result: Verdadero
* Receiver: True * Selector: or * Arguments: False * Result: True
* Receiver: Text * Selector: Point * Arguments: method dictionary * Result: #(#y #isSpartaScalarPoint #isPoint #scaleTo: #@ #adhereTo: #eightNeighbors #fourNeighbors #- #bearingToPoint: #adaptToCollection:andSend: #printOn: #sign #fuelAccept: #fourDirections #nearestPointAlongLineFrom:to: #'//' #'<=' #rectangle: #transposed #ceiling #scalarMultiplicate2D: #transformedOn: #adaptToNumber:andSend: #bitShiftPoint: #truncated #max: #roundTo: #translateBy: #scaledByDisplayScaleFactor #rotateBy:about: #min #rotateBy:centerAt: #leftRotated #asGPoint #+ #truncateTo: #isBlocPositivePoint #nearestPointOnLineFrom:to: #greaseString #asFloatPoint #isInsideRectangle: #directionToLineFrom:to: #negated #abs #< #'\\' #degrees #guarded #asPoint #veryDeepCopyWith: #= #scaleBy: #max #setR:degrees: #onLineFrom:to: #isZero #min: #hash #rightRotated #onLineFrom:to:within: #isPoint2D #grid: #to:intersects:to: #theta #asNonFractionalPoint #asIntegerPoint #corner: #storeOn: #/ #quadrantOf: #'>=' #interpolateTo:at: #closeTo: #isFloatPoint #isIntegerPoint #rounded #reciprocal #r #> #closeTo:epsilon: #flipBy:centerAt: #to:sideOf: #squaredDistanceTo: #scaleFrom:to: #isInsideCircle:with:with: #sortsBefore: #octantOf: #asGVector #roundDownTo: #setX:setY: #normal #asBrAnchoredAnchorBounds #triangleArea:with: #x #dotProduct: #crossProduct: #asTranslate3D #sideOf: #distanceTo: #normalized #isPoint3D #isBlocFiniteFloatPoint #* #min:max: #extent: #stonOn: #floor #asBlocVector #closeTo:precision: #angle #asScale3D #deepCopy #reflectedAbout: #asMargin #roundUpTo: #isSelfEvaluating #insideTriangle:with:with: #angleWith: #fromSton:)
# Challenge: Literal objects
¿A qué tipo de objeto se refieren las siguientes expresiones literales? Es igual que preguntar, cuál es el resultado de enviar el mensaje de clase a dichas expresiones.
* Reciver: 1 * Selector: > * Arguments: 3 * Result: Falso
* Reciver: 1 * Selector: '' * Arguments: 3 * Result: Verdadero
* Reciver: (2 33 4) * Selector: >>> * Arguments: 4 * Results: #(2 33 4)->4
* Reciver: 'Hello, Dave' * Selector: | * Arguments: 'Hello, Dave' * Results: 'DvHlo,a e'
* Reciver: 1.5 * Selector: ?? * Arguments: 1 * Results: a XPathNodeTestWithPredicates([ :each | each scale: 1.5 ]; #(1))
* Reciver: $A * Selector: charcode * Arguments: ASCII * Results: 65
* Reciver: true * Selector: not * Arguments: . * Results: False
* Reciver: 1 * Selector: > * Arguments: 0 * Results: True
# Challenge: Kind of messages Examinar los siguinetes mensajes son unarios, binarios y/o basado en palabras claves.
* Tipo de mensaje: unario
* Tipo de mensaje: Unario.
![ ](https://i.imgur.com/3qsXHo5.png)
* Tipo de mensaje basado en palabra en clave * Resultado es 32
* Tipo de mensaje: basado en palabra clave *Resultado: 'helloworld'
* Tipo de mensaje: Binario * Resultado: (10@20)
* Tipo de mensaje: Unario * Resultado error porque X no se puede enviar a 0
![ ](https://i.imgur.com/WBtlkIC.png)
* Tipo de mensaje: Basado en palabra clave * Resultado: error por falta de arrgumentos
![ ](https://i.imgur.com/wLR54ql.png)
# Challenge: Results Examinar las siguientes expresiones & ¿Cuál es el valor que devuelve su ejecución?
* Resultado: -2
* Resultado: 32
* Resultado: 'second'
* Resultado: #(4 9 100 9)
* Resultado: 5
* Resultado: -32
* Resultado: Verdadero
# Challenge: unneeded parentheses Al usar más paréntesis de lo necesario puede llevar a expresiones complejas de entender. En las siguientes expresiones usar la menor cantidad de paréntesis.
![ ](https://i.imgur.com/D4xxNGs.png)
* Resultado: #(#asSet #f #d #b)
* Resultado: #(#asSet #f #d #b)
![ ](https://i.imgur.com/arAcPDF.png)
* Resultado: an OrderedCollection(56 33)
*Resultado; an OrderedCollection(56 33)
* Resultado: 17
* Resultado: 17
* Resultado: 501
* En este caso no se puede elimnar los paréntesis porque no se ejecuta la operación.