76 Matching Annotations
  1. Apr 2024
    1. miColeccion := #(11 38 3 -2 10)

      crea un array con los números (11 38 3 -2 10)

    2. [:each | each abs]

      El bloque proporcionado es [:each | each abs], que toma cada elemento (each)

    3. collect

      mensaje collect: para aplicar un bloque a cada elemento del array.

    4. Asignación de bloques

      básicamente en esta sección podemos ver que en pharo, los bloques son piezas de código encapsuladas que pueden ser asignadas a variables y ejecutadas en un momento

    5. Bloques
      • Métodos anónimos: Los bloques no tienen nombres asociados y pueden ser creados y utilizados sobre la marcha sin necesidad de definir un nombre específico para ellos.

      • Almacenamiento en variables: Los bloques pueden ser asignados a variables y pasados como argumentos a otros métodos o bloques.

      • Delimitados por paréntesis cuadrados: Los bloques en Pharo están delimitados por paréntesis cuadrados [ ].

      • Captura de contexto: Los bloques pueden capturar variables definidas en el contexto en el que se crean, lo que les permite acceder y manipular esos valores

    6. messageBoard clear

      Aunque no se vea el cambio podemos verificar que si se ejucuto el comando messageBoard clear

    7. messageBoard show: 'hola'. messageBoard cr. messageBoard show: 'Pharo'

      messageBoard, puedes encadenar los mensajes en cascada para lograr el mismo resultado de una manera más concisa y legible.

      show: se utiliza para mostrar un mensaje en el objeto messageBoard Hola y Pharo

      cr : se utiliza para agregar un salto de línea

    8. Mensajes en cascada

      los "mensajes en cascada" permiten enviar múltiples mensajes a un mismo objeto de forma encadenada. Esto proporciona una forma concisa de realizar una secuencia de acciones en un objeto sin tener que repetir el nombre del objeto en cada línea de código

    9. 2 * 10 + 2.
      • la expresión 2 * 10 + 2, la multiplicación (*) tiene una precedencia más alta que la adición (+). Por lo tanto, la multiplicación se evaluará antes que la adición
      • Primero, se realizará la multiplicación 2 * 10, que da como resultado 20.
      • Luego, se realizará la adición 20 + 2, que da como resultado 22

    10. (2 + 3) squared

      "Squared" Elevado al cuadrado

      la expresión dentro de los paréntesis: 2 + 3, que da como resultado 5
      se aplica el mensaje squared al resultado de la suma, es decir, al número 5
      (2 + 3) squared es a 25
      
    11. 2 raisedTo: (3 + 2)
      • expresión dentro de paréntesis: (3 + 2). Esto da como resultado 5.
      • Luego, elevamos 2 a la potencia (raisedTo) de 5. Esto significa que multiplicaremos 2 por sí mismo 5 veces.

      Entonces, 2 potencia de 5 =(2×2×2×2×2)= 32

    12. Prioridad

      En esta sección tenemos:

      • Paréntesis: Las expresiones dentro de paréntesis se evalúan primero.

      • Mensajes unarios: Los mensajes unarios, que consisten en un solo identificador, se evalúan después de las expresiones entre paréntesis.

      • Mensajes binarios: Los mensajes binarios, que consisten en operadores como +, -, *, etc., se evalúan después de los mensajes unarios.

      • Mensajes de palabra clave: Los mensajes de palabra clave, que consisten en uno o más identificadores seguidos de dos puntos y un argumento, se evalúan después de los mensajes binarios

    13. Color r:1 g:0 b:0.

      el mensaje r:g:b: es un ejemplo de un mensaje de palabra clave implementado en la clase Color. Este mensaje se utiliza para crear un color especificando los valores de los componentes rojo (r), verde (g) y azul (b)

      • la expresión Color r: 1 g: 0 b: 0, estamos creando un nuevo color donde el componente rojo (r) tiene un valor de 1 (máximo), mientras que los componentes verde (g) y azul (b) tienen un valor de 0 (mínimo), lo que resulta en un color rojo puro.
    14. Date today + 3 years

      Date today + 3 years está utilizando un mensaje binario. Aquí, Date today devuelve la fecha actual, y luego el mensaje binario + se envía a esa fecha junto con el objeto 3 years.

      Este mensaje binario + se utiliza para agregar un período de tiempo a una fecha. En este caso, se está agregando un período de 3 años a la fecha actual.

    15. Binario

      En esta sección los "mensajes binarios" son aquellos que se envían a un objeto junto con otro objeto, sin palabras clave o métodos especiales entre ellos. La forma típica de un mensaje binario es la siguiente

      anObjecto aMessage anotherObject

    16. Date today

      Date today se utiliza para obtener la fecha actual del sistema. Esto devuelve un objeto de tipo Date que representa la fecha actual

    17. false not

      El mensaje unario not se envía a un objeto que es true, el not invertirá el valor de false para que se convierta en true

    18. true not

      false not evaluará a true. Esto se debe a que false es un valor bque representa "falso". Al aplicar el operador not, se invierte su valor lógico, convirtiéndolo en "verdadero". Entonces, true not resultará en false

    19. arreglo dinámico

      arreglo dinámico

      (2+3) es una expresión que suma 2 y 3, dando como resultado 5. (6+6) es una expresión que suma 6 y 6, dando como resultado 12.

      'hello' , 'Stef' es una concatenación de dos strings cadena , se unifican y queda un resultado de un único string 'helloStef' y luego se evalua con size

      Por lo tanto, { (2+3) . (6+6) . 'hello' , 'Stef' } size evalúa a 3

    20. arreglo estático

      arreglo estático

      (2+3) es una expresión que suma 2 y 3, dando como resultado 5. (6+6) es una expresión que suma 6 y 6, dando como resultado 12.

      'hello' , 'Stef' es una concatenación de dos strings cadena, estas se unifican ando un resultando en un único string 'helloStef y se pone size

      Entonces, #( (2+3) (6+6) 'hello' , 'Stef') size evalúa a 3

    21. Arreglos Dinámicos

      En esta seccion podemos ver que podemos usar el arreglo por llaves { } y sus elementos se separan por "." punto.

      en el ejemplo vemos { (2+3).(6*6) }.

      la interpretación es Sume la primera matriz y Multiplique la segunda

    22. #(1 2 4) isEmpty

      La expresión #(1 2 4) representa una matriz que contiene los elementos 1, 2 y 4 el mensaje isEmpty pregunta si la matriz está vacía o no, lo cual al ejecutarla sale FALSE, porque si contienen elementos

    23. #( 1 2 3 #(4 5 6)) size
      • En la matriz principal, tenemos 3 elementos individuales: 1, 2, y 3.
      • Luego, tenemos una matriz con 3 elementos: 4, 5, y 6.

      entonces La matriz principal contiene 3 elementos individuales, y una matriz con 3 elementos adicionales entonces el tamaño total de la matriz es 3 (elementos individuales) + 1 (matriz anidada) = 4 elementos en total.

    24. Arreglos

      En esta sección aprenderemos como coleccionar información en diferentes formas, los arreglos se representan con un (#) y dentro de los paréntesis se colocan los elementos separados por espacio (barra espacio)

      (1 7 13)

    25. a == a ← Comparación fuerte.

      a == a ← Comparación fuerte. Se trata del mismo símbolo?

    26. #PharoTutorial.

      Comparación

    27. Símbolos

      En esta seccion podemos ver que tenemos dos elementos (Symbol) y (String) el cual nos dice que un unico simbolo es #PharoTutorial y que los objetos cambian String cual sea el contenido.

    28. La concatenación de cadenas (strings) es el proceso de unir dos o más cadenas para formar una sola cadena más larga y se realiza utilizando el operador coma

      La concatenación de cadenas (strings) es el proceso de unir dos o más cadenas para formar una sola cadena más larga y se realiza utilizando el operador coma

      Ejemplo: 'Pharo tutorial ', ' is cool', ' when i active the code '

    29. Cadenas Un String o cadena es una colección de caracteres. Usa comillas simples para crear un objeto String

      En esta sección podemos ver que podemos crear un objeto y darle sentido veamos un ejemplo.

      Ejecutamos 'Adan no calla con nada' reverse.

    30. Character allByteCharacters

      problema de visualización con símbolos no romanos/latinos, generalmente causado por las fuentes que tienes instaladas en tu Sistema Operativo

    31. Character space

      Al ejecutar estos caracteres podemos darnos cuenta de que no tendrán una visión en el recuadro de ejercicio, pero si se esta ejecutando

    32. $A

      Un caracter representa una letra del alfabeto y puede ser usado con el operador ($) y cualquier letra del alfabeto. en este caso A.

    33. Caracteres

      En esta sección tenemos la explicación de que al usar un carácter ($) combinado con un ASCII que es un numero representado por un caracter en este caso el @ me indica el número 64. acompañado de un comando que ejecuta charCode

    34. Números
      • En esta sección podemos explorar lo que son los números en Pharo y como ejecutarlos en Glamorous Toolkit, para poder desarrollar y ejecutar estos ejercicios matemáticos

      • Cuando le damos inspeccionar a estos mensajes matemáticos sucede que nos muestra la operación resulta. ejemplo (1/3) Inspect

      Resultado.

  2. Mar 2024
    1. miColeccion := #(11 38 3 -2 10) collect: [:each | each abs].

    2. miColeccion := #(11 38 3 -2 10)

      crea un array con los números (11 38 3 -2 10)

    3. [:each | each abs]

      El bloque proporcionado es [:each | each abs], que toma cada elemento (each)

    4. collect:

      mensaje collect: para aplicar un bloque a cada elemento del array.

    5. ifFalse: [GtTranscript new show: 'Es falso']

    6. ifTrue: [GtTranscript new show: 'Es cierto']

    7. [:x | x+2] value: 20. b := [:x | x+2]. b value: 20.

      [:x | x+2] value: 20. * Este código crea un bloque directamente en el lugar donde se necesita y lo ejecuta inmediatamente con el argumento 20. El bloque toma x como argumento, suma 2 a x y devuelve el resultado. En este caso, se pasa 20 el resultado será 20 + 2 = 22

      b := [:x | x+2]. b value: 20. * primero se crea un bloque y se asigna a la variable b. Luego, el bloque almacenado en b se ejecuta con el argumento 20. Este enfoque permite reutilizar el mismo bloque en múltiples lugares o en momentos diferentes dentro del código

    8. Asignación de bloques Los bloques pueden ser asignados a variables y ejecutados después. Nota que |b| es la declaración de una variable llamada 'b' y que ':=' asigna un valor a una variable.

      básicamente en esta sección podemos ver que en pharo, los bloques son piezas de código encapsuladas que pueden ser asignadas a variables y ejecutadas en un momento

    9. [:x | x+2]

    10. Bloques For this part a Basic understanding of Basic Types is recommended. If you have not done that part yet, please go to that subtree and run the code there Ahora hablemos de los bloques. Piensa en los bloques como una manera de 'congelar' código que luego podremos ejecutar por demanda, cuando queramos y/o las condiciones para su ejecución se cumplan. Los bloques son métodos anónimos, lo cual quiere decir que no es necesario ponerles nombres para invocarlos (como ocurre con las operaciones sobre objetos que hemos visto hasta el momento) y pueden pueden ser almacenados en variables. Los bloques están delimitados por paréntesis cuadrados: []
      • Métodos anónimos: Los bloques no tienen nombres asociados y pueden ser creados y utilizados sobre la marcha sin necesidad de definir un nombre específico para ellos.

      • Almacenamiento en variables: Los bloques pueden ser asignados a variables y pasados como argumentos a otros métodos o bloques.

      • Delimitados por paréntesis cuadrados: Los bloques en Pharo están delimitados por paréntesis cuadrados [ ].

      • Captura de contexto: Los bloques pueden capturar variables definidas en el contexto en el que se crean, lo que les permite acceder y manipular esos valores

    11. messageBoard show: 'hello'; cr; show: 'Pharo'.

    12. messageBoard clear

      Aunque no se vea el cambio podemos verificar que si se ejucuto el comando messageBoard clear

    13. messageBoard show: 'hola'. messageBoard cr. messageBoard show: 'Pharo'

      messageBoard, puedes encadenar los mensajes en cascada para lograr el mismo resultado de una manera más concisa y legible.

      show: se utiliza para mostrar un mensaje en el objeto messageBoard Hola y Pharo

      cr : se utiliza para agregar un salto de línea

    14. Mensajes en cascada Supongamos que tenemos un objeto donde queremos mostrar un conjunto de resultados
      • los "mensajes en cascada" permiten enviar múltiples mensajes a un mismo objeto de forma encadenada. Esto proporciona una forma concisa de realizar una secuencia de acciones en un objeto sin tener que repetir el nombre del objeto en cada línea de código
    15. Prioridad de los mensajes matemáticos Las reglas tradicionales de las matematicas NO aplican dentro de Pharo. 2 * 10 + 2. Aqui el mensaje multiplicación (*) es enviado al 2, y su resultado correspondiente es 20. Entonces 20 reciben el mensaje +, con argumento 2, para un total de 22. Recuerda que todos los mensajes simpre siguen una regla precente de izquierda a derecha, sin excepciones.
      • la expresión 2 * 10 + 2, la multiplicación (*) tiene una precedencia más alta que la adición (+). Por lo tanto, la multiplicación se evaluará antes que la adición
      • Primero, se realizará la multiplicación 2 * 10, que da como resultado 20.
      • Luego, se realizará la adición 20 + 2, que da como resultado 22

    16. (2 + 3) squared

      "Squared" Elevado al cuadrado

      • la expresión dentro de los paréntesis: 2 + 3, que da como resultado 5
      • se aplica el mensaje squared al resultado de la suma, es decir, al número 5
      • (2 + 3) squared es a 25
    17. 2 raisedTo: (3 + 2)
      • expresión dentro de paréntesis: (3 + 2). Esto da como resultado 5.
      • Luego, elevamos 2 a la potencia (raisedTo) de 5. Esto significa que multiplicaremos 2 por sí mismo 5 veces.

      Entonces, 2 potencia de 5 =(2×2×2×2×2)= 32

    18. Prioridad Los mensajes unarios son ejectuados primero, los mensajes binarios son ejecutados despues y finalmente las cadenas de mensajes: paréntesis > Unary > Binary > Keywords

      En esta sección tenemos:

      • Paréntesis: Las expresiones dentro de paréntesis se evalúan primero.
      • Mensajes unarios: Los mensajes unarios, que consisten en un solo identificador, se evalúan después de las expresiones entre paréntesis.
      • Mensajes binarios: Los mensajes binarios, que consisten en operadores como +, -, *, etc., se evalúan después de los mensajes unarios.
      • Mensajes de palabra clave: Los mensajes de palabra clave, que consisten en uno o más identificadores seguidos de dos puntos y un argumento, se evalúan después de los mensajes binarios
    19. Color r:1 g:0 b:0. El mensaje es r:g:b: implementado en la clase Color. Note que también puede escribir

      el mensaje r:g:b: es un ejemplo de un mensaje de palabra clave implementado en la clase Color. Este mensaje se utiliza para crear un color especificando los valores de los componentes rojo (r), verde (g) y azul (b)

      • la expresión Color r: 1 g: 0 b: 0, estamos creando un nuevo color donde el componente rojo (r) tiene un valor de 1 (máximo), mientras que los componentes verde (g) y azul (b) tienen un valor de 0 (mínimo), lo que resulta en un color rojo puro.
    20. Date today + 3 years.

      Date today + 3 years está utilizando un mensaje binario. Aquí, Date today devuelve la fecha actual, y luego el mensaje binario + se envía a esa fecha junto con el objeto 3 years.

      Este mensaje binario + se utiliza para agregar un período de tiempo a una fecha. En este caso, se está agregando un período de 3 años a la fecha actual.

    21. Binario

      En esta sección los "mensajes binarios" son aquellos que se envían a un objeto junto con otro objeto, sin palabras clave o métodos especiales entre ellos. La forma típica de un mensaje binario es la siguiente

      anObjecto aMessage anotherObject

    22. false not

      El mensaje unario not se envía a un objeto que es true, el not invertirá el valor de false para que se convierta en true

    23. true not

      false not evaluará a true. Esto se debe a que false es un valor bque representa "falso". Al aplicar el operador not, se invierte su valor lógico, convirtiéndolo en "verdadero". Entonces, true not resultará en false

    24. Date today

      Date today se utiliza para obtener la fecha actual del sistema. Esto devuelve un objeto de tipo Date que representa la fecha actual

    25. arreglo estático #( (2+3) (6+6) 'hello' , 'Stef') size

      arreglo estático

      (2+3) es una expresión que suma 2 y 3, dando como resultado 5. (6+6) es una expresión que suma 6 y 6, dando como resultado 12.

      'hello' , 'Stef' es una concatenación de dos strings cadena, estas se unifican ando un resultando en un único string 'helloStef y se pone size

      Entonces, #( (2+3) (6+6) 'hello' , 'Stef') size evalúa a 3

    26. con este arreglo dinámico: { (2+3) . (6+6) . 'hello' , 'Stef' } size.

      arreglo dinámico

      (2+3) es una expresión que suma 2 y 3, dando como resultado 5. (6+6) es una expresión que suma 6 y 6, dando como resultado 12.

      'hello' , 'Stef' es una concatenación de dos strings cadena , se unifican y queda un resultado de un único string 'helloStef' y luego se evalua con size

      Por lo tanto, { (2+3) . (6+6) . 'hello' , 'Stef' } size evalúa a 3

    27. Arreglos Dinámicos

      En esta seccion podemos ver que podemos usar el arreglo por llaves { } y sus elementos se separan por "." punto.

      en el ejemplo vemos { (2+3).(6*6) }.

      la interpretación es Sume la primera matriz y Multiplique la segunda

    28. #(1 2 4) isEmpty

      La expresión #(1 2 4) representa una matriz que contiene los elementos 1, 2 y 4 el mensaje isEmpty pregunta si la matriz está vacía o no, lo cual al ejecutarla sale FALSE, porque si contienen elementos

    29. Inspecciona las siguientes expresiones: #( 1 2 3 #(4 5 6)) size.
      • En la matriz principal, tenemos 3 elementos individuales: 1, 2, y 3.
      • Luego, tenemos una matriz con 3 elementos: 4, 5, y 6.

      entonces La matriz principal contiene 3 elementos individuales, y una matriz con 3 elementos adicionales entonces el tamaño total de la matriz es 3 (elementos individuales) + 1 (matriz anidada) = 4 elementos en total.

    30. Arreglos

      En esta sección aprenderemos como coleccionar información en diferentes formas, los arreglos se representan con un (#) y dentro de los paréntesis se colocan los elementos separados por espacio (barra espacio)

      (1 7 13)

    31. 'PharoTutorial' = 'PharoTutorial'.

      Comparación

    32. #PharoTutorial == 'PharoTutorial'

      a == a ← Comparación fuerte. Se trata del mismo símbolo?

    33. Símbolos

      En esta seccion podemos ver que tenemos dos elementos (Symbol) y (String) el cual nos dice que un unico simbolo es #PharoTutorial y que los objetos cambian String cual sea el contenido.

    34. La concatenación de String usa el operador coma: ['PharoTutorial', ' is cool']. "versión cambiada" 'Pharo tutorial ', ' is cool', ' when i active the code '

      La concatenación de cadenas (strings) es el proceso de unir dos o más cadenas para formar una sola cadena más larga y se realiza utilizando el operador coma

      Ejemplo: 'Pharo tutorial ', ' is cool', ' when i active the code '

    35. Cadenas

      En esta sección podemos ver que podemos crear un objeto y darle sentido veamos un ejemplo.

      Ejecutamos 'Adan no calla con nada' reverse.

    36. $A.

      Un caracter representa una letra del alfabeto y puede ser usado con el operador ($) y cualquier letra del alfabeto. en este caso A.

    37. Caracteres

      En esta sección tenemos la explicación de que al usar un carácter ($) combinado con un ASCII que es un numero representado por un caracter en este caso el @ me indica el número 64. acompañado de un comando que ejecuta charCode

    38. There are some character that are not printable

      **Caracteres no visibles. **

      Al ejecutar estos caracteres podemos darnos cuenta de que no tendrán una visión en el recuadro de ejercicio, pero si se esta ejecutando

    39. Números
      • En esta sección podemos explorar lo que son los números en Pharo y como ejecutarlos en Glamorous Toolkit, para poder desarrollar y ejecutar estos ejercicios matemáticos

      • Cuando le damos inspeccionar a estos mensajes matemáticos sucede que nos muestra la operación resulta. ejemplo (1/3) Inspect

      Resultado.

  3. May 2023
    1. In a better world, I would have built this in a day, using some kind of modern, flexible HyperCard for iOS. In our actual world, I built it in about a week, and roughly half of that time was spent wrestling with different flavors of code-signing and identity provi­sioning and I don’t even know what. I waved some incense and threw some stones and the gods of Xcode allowed me to pass. Our actual world isn’t totally broken. I do not take for granted, not for one millisecond, the open source compo­nents and sample code that made this project possible. In the 21st century, as long as you’re operating within the bounds of the state of the art, program­ming can feel delight­fully Lego-like. All you have to do is rake your fingers through the bin.

      It's a good remainder of not taking Free Libre Open Source Software (FLOSS) as granted, as a commons we don't need to fight for in an increasing world of extractivism, expropriation and platform surveillance capitalism against the commons. So even with all the indirection and friction behind software building, delivery and modification, having FLOSS should not given for granted.

      On another note, there is already an intermediate place between hypercard and FLOSS, with pretty agile development/prototyping cycles in things like Pharo/GT. It's for the desktop, not yet into iPhone, but with betas in progress to the more more open Android ecosystem and with possibilities to run on on with PharoJS

  4. Dec 2020
    1. paginas := folder children select: [ :each | (each basename endsWith: 'md') and: [ (each basenameWithoutExtension = 'enlaces') not ]].

      Selecciono todas las páginas terminadas en .md en un folder en particular y excluyo algunas que no me interesan.

  5. Feb 2019
    1. Learning Object-OrientedProgramming, Design and TDDwith Pharo

      Texto para desarrollar habilidades de programación, con miras a moldear Grafoscopio.