**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

* 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.

* 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

* Tipo de mensaje: Basado en palabra clave
* Resultado: error por falta de arrgumentos

# 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.

* Resultado: #(#asSet #f #d #b)
* Resultado: #(#asSet #f #d #b)

* 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.