Estamos trabajando arduamente para mejorarlo.
Si desea colaborar, puede editarlo aquí: edit here (md).
Base
| sections in this chapter: |
|---|
| variables |
| acciones |
| objetos-y-mensajes |
| el-flujo-del-programa |
| plantillas |
| respondiendo |
XOScript es un lenguaje de programación puramente orientado a objetos. Esto significa que en XOScript todo es un objeto; no existen otros tipos de datos. Un programa informático escrito en XOScript puede constar, a grandes rasgos, de tres tipos de acciones: asignar, enviar mensajes y responder. El intercambio de mensajes entre objetos es la parte más importante de un programa XOScript.
Variables
El primer paso es asignar un objeto a una variable. Para asignar una variable, se utiliza el símbolo de declaración de variable: >> .El nombre de una variable puede contener todos los signos excepto: <-, := , espacios en blanco , puntos, comas, dos puntos, comillas [‘‘] y paréntesis (). Además, una variable no puede constar de varias líneas. Tenga en cuenta que una variable no puede comenzar con un número o un signo menos. Estos son ejemplos de variables válidas:
>> password := ['Secret'].
>> ♡♡♡ := 3.
>> $ := ['dollar'].
>> +plus := True.
>> user password := ['Pssst!'].
Las variables no válidas son, por ejemplo:
>> -123 := ['número negativo'].
>> contraseña del usuario := ['Clasificado'].
>> contraseña.del:usuario := ['Clasificado'].
>> ,x := 10.
Una vez declarada una variable, se puede utilizar libremente. Esto significa que solo es necesario utilizar el símbolo de declaración la primera vez que se utiliza la variable (la declaración).
Para ser más específicos, no se puede comenzar a declarar aleatoriamente un valor para la variable ( x := 2 ), ya que primero se debe declarar la variable ( >> x := 2 ). Sin embargo, una vez declarada se puede cambiar su valor sin utilizar el símbolo de declaración ( >> x := 2. x := 3. ).
Tenga en cuenta que es obligatorio asignar un valor a una variable en el momento de la declaración. A diferencia de otros lenguajes de programación, no se permite declarar una variable sin valor. Es esencial vincular explícitamente cada variable a un valor inicial. No obstante, siéntase libre de inicializar la variable con el objeto Nulo. En este caso, la variable puede considerarse vacía ( >> x := Nulo .). En resumen, no está permitido declarar una variable sin un valor inicial. Por lo tanto,
>> x
no es válido y mostrará un mensaje de error. (Obtenga más información sobre el objeto Nulo en el capítulo 3).
Acciones
XOScript percibe todo como un objeto, por lo tanto, no hay otros tipos de datos. Básicamente, hay tres acciones rutinarias básicas en un programa escrito en XOScript: asignar, mensajes programming y responder. El intercambio de mensajes entre objetos latypes parte clave un programa XOScript. Las tres acciones: Asignar, Mensajes, Respuesta.
Objetos y mensajes
Todo es un objeto; es decir, todos los dígitos, textos y fragmentos de código. Los números, como 1, 2, 100, -999 y 1234, son objetos numéricos. Todos los textos entre comillas simples son objetos de texto. Todos los fragmentos de código agrupados entre llaves {…} son objetos de tarea.
Los objetos como los números y el texto siempre tienen su origen en un objeto base. Todos los números, por ejemplo, derivan del objeto número. En principio, la programación implica enviar mensajes a objetos. La forma general de enviar un mensaje a un objeto es:
<objeto> <mensaje>
Por ejemplo, para comprobar si un número es par, se envía el mensaje:
2 ¿par?.
La respuesta será Verdadero (otro objeto). Los objetos suelen ignorar los mensajes desconocidos.
objeto puede recibir tres tipos de mensajes. En primer lugar, están mensajes unitarios, véase el ejemplo anterior, que no tienen argumentos. En segundo lugar, hay mensajes de palabras clave, que tienen uno o varios argumentos, por ejemplo:
>> x := Número entre: 1 y: 10 .
En este caso, el mensaje entre: y: se envía a Número, que es el objeto raíz de todos los números. El resultado será un número aleatorio entre 1 y 10. Por último, hay mensajes binarios, que tienen solo un carácter y un argumento:
2 + 3
Esto parece una suma matemática, pero en realidad es solo otro mensaje. El mensaje + se envía a 2, con argumento 3 que devolverá la respuesta 5. Se permite escribir mensajes binarios sin dos puntos. Los mensajes binarios se pueden encadenar:
>> x := 3 + 2 - 1.
En este fragmento, + 2 se envía primero al objeto Número 3, lo que da como resultado el objeto Número 5, después de lo cual se envía -1 a este número. Los lectores observadores tienen razón al notar la discrepancia que muestra este protocolo con respecto a las secuencias matemáticas convencionales de operadores. XOScript ignora la secuencia matemática a favor de la coherencia en su sistema de mensajes. Como resultado, la suma:
2 + 3 * 5 = 25
no 17. Esto es intencional. Se pueden usar paréntesis para modificar el orden de la secuencia:
2 + (3 * 5) = 17
La mayoría de los objetos se devuelven a sí mismos como resultado en respuesta a un determinado mensaje. Esto es útil ya que estimula un diálogo adicional con este objeto al enviarle un mensaje de seguimiento:
Salida escribir:
[' hello '] recortar mayúsculas.
Aquí, se envían dos mensajes al objeto Texto : recortar , seguido de mayúsculas. En el siguiente fragmento, es necesario el uso de una coma para indicar que se está entrando un nuevo mensaje. De lo contrario, XOScript se confundirá.
Salida escribir: ['Hola!'], detener .
Primero, se envía el mensaje escribir: al objeto Salida , seguido del mensaje detener . Sin la coma, XOScript pensaría que desea enviar el mensaje detener al objeto de Texto Hola , lo cual resultaría un resultado incorrecto. La secuencia de proceso de mensajes es la siguiente: de izquierda a derecha; comience con los mensajes entre paréntesis seguidos de los mensajes unitarios. A continuación, los mensajes binarios y luego termine con los mensajes de palabras clave . Vea el siguiente ejemplo:
Salida escribir: 0.5 redondear + (2 – 1), detener .
XOScript siempre lee de izquierda a derecha: primero, se envía el mensaje escribir: a Salida y es seguido por el mensaje detener .Dentro del argumento en sí,(el argumento de un mensaje es aquello que va despues de los 2 puntos :) XOScript lee de izquierda a derecha, por lo que 0,5 redondear y luego el +.
Además, redondear tiene prioridad sobre +, porque es un mensaje unitario. Como hay paréntesis, primero se calcula 2 – 1, después de lo cual se suma 1 al resultado de 0,5 redondear (1). Todo el proceso dará como resultado 2, que también es la respuesta a escribir. Después de la coma sigue el mensaje de parada, que mueve el cursor a una nueva línea. Por supuesto, la mejor manera de comprender completamente el orden de secuencia de los programas de XOScript es con la práctica. Es importante señalar que en XOScript, al contrario de muchos otros lenguajes de programación, los espacios en blanco son una parte fundamental de su sintaxis. En particular, cuando se trata de mensajes binarios, los espacios en blanco pueden causar cierta confusión. Utilice siempre un espacio en blanco después de un mensaje binario. No puede adjuntar directamente un número al mensaje, por ejemplo: 3 + 2 es diferente de 3 +2. El primer ejemplo (3 + 2), envía el mensaje + al número 3, con el argumento el número 2. El resultado, en este caso, será 5. En el segundo ejemplo (3 +2), el mensaje unario +2 se envía al número 3. Dependiendo del contexto eso podría producir un resultado muy diferente.
El flujo del programa
En XOScript no hay necesidad de reglas gramaticales separadas para bucles y condicionales. Una declaración condicional es simplemente un simple mensaje verdadero: o falso: a un objeto Verdadero o a un objeto Falso .
2 ¿par? verdadero: {
Salida escribir: ['Dos es un número par'] , detener.
}.
Los objetos Verdadero y Falso también se conocen como objetos de toma de decisiones. Esta denominación a veces es más precisa, porque especifica que estos objetos se utilizan para hacer que el programa maneje ciertas decisiones. Al igual que otros lenguajes de programación, un programa escrito en XOScript sigue un curso específico y conlleva varios patrones de ramificación. Las formas seleccionadas dentro de un programa dependen en gran medida de estos objetos de toma de decisiones. En el ejemplo anterior, el mensaje verdadero: se envía a Verdadero (la respuesta a la pregunta: ¿es 2 un número par?). Como argumento, se envía un fragmento adicional de código: un objeto Tarea. Esta tarea escribe en la pantalla que 2 es, de hecho, un número par. Tampoco es necesario que existan reglas de escritura independientes para un bucle. Para ejecutar un fragmento de código tres veces, simplemente envíe * con el argumento 3 a esa tarea:
{ Salida escribir: [' '], detener. } * 3.
Consideremos otro ejemplo. Cuando se necesita imprimir una tabla de conversión de kJ (kilojulio) a kcal (kilocaloría) en pasos de 100, consulte a continuación la notación correcta:
{ :linea
>> kJ := linea * 100.
Salida escribir: kJ, detener.
Salida escribir: kJ * 0.239, detener.
} * 10.
Este programa generará la siguiente lista:
Aquí, el número de la línea actual se transmite al parámetro :linea. Al comienzo de una tarea, se definen los parámetros de la tarea. Los parámetros no utilizados permanecen vacíos ( Nulo ). Los parámetros se colocan siempre al comienzo de la tarea, directamente después del corchete inicial y están precedidos por dos puntos. El mensaje mientras: es una combinación de un bucle y una condición. Se pueden vincular dos tareas utilizando el mensaje mientras: La tarea receptora continuará ejecutándose hasta que la tarea después de los dos puntos dé un resultado negativo. Así es como funciona:
>> x := 0.
{ x añadir: 1. } mientras: { <- x < 5. }.
Salida escribir: x, detener.
En el fragmento de código ilustrado anteriormente, se agrega 1 a x siempre que x sea menor que 5. Cuando este ya no sea el caso, la segunda tarea responderá Falso y, en consecuencia, la ejecución de la primera tarea finalizará.
Plantillas
La lista de kJ/kcal del capítulo anterior podría hacerse más presentable. Preferiblemente, la lista sería como sigue:
100 kj ➞ 23,88 kcal
200 kj ➞ 47,76 kcal
Cuando convierte la salida que quieres obtener en una plantilla, su notación podría ser:
número1 kJ ➞ número2 kcal
Esto significa que número1 representa el valor de kJ y número2 el valor de kcal. Así es como funciona la interpolación de cadenas en XOScript. No se necesitan reglas gramaticales diferentes para hacer esto en XOScript. Simplemente envíe la palabra que necesita ser reemplazada al texto con el texto sustituto como argumento:
>> texto :=
['número1 kJ ➞ número2 kcal']
número1: 100,
número2: 23.9.
El resultado:
La regla de sustitución funciona para cada mensaje indefinido que recibe un objeto Texto. Cada mensaje que no sea reconocido por el objeto Texto será interpretado de la siguiente manera: reemplace el texto del mensaje con el texto dentro del argumento mensaje. Puede adaptar el programa de la siguiente manera:
{ :linea
>> kJ := linea * 100.
>> kcal := kJ * 0.239.
Salida escribir: (
['número1 kJ ➞ número2 kcal']
número1: kJ,
número2: kcal
), detener .
} * 10.
Para evitar confusiones sobre qué mensaje se puede o no utilizar como sustituto, es mejor introducir un carácter no designado, por ejemplo, un rombo ( ⬧) (U+2B27, ALT+Z), antes de los segmentos de texto en la plantilla que se deben reemplazar. Este tipo de carácter es a veces no recomendable en el contexto internacional.
Respondiendo
Hasta ahora, ha enviado mensajes a objetos. Sin embargo, todavía no ha respondido usted a ningún mensaje . Para responder un mensaje se utiliza la flecha de retorno (<- ). El siguiente ejemplo ilustra cómo crear una tarea para calcular un porcentaje:
>> porcentaje := {
:numero :porciento
<- numero / 100 * porciento.
}.
Salida escribir:
( porcentaje aplicar: 100 y: 7 ),
detener.
Una vez que se ha definido la tarea y se la ha asignado a la variable porcentaje, se envía el mensaje aplicar:y: con los argumentos 100 y 7. Esto ejecutará la tarea aplicadando a 100 y 7, es decir, 7% de 100. Al utilizar la flecha de retorno, la respuesta se devuelve desde la tarea al programa principal. Aunque este código es válido, tiene una desventaja porque se debe recordar la secuencia de los argumentos. Entonces, ¿por qué no escribirlo así: 7 porciento de: 100 ? Se vería mucho más natural. Para que esto sea posible, tenemos que adaptar el objeto padre de 7, que es el objeto Número, para que comprenda el mensaje porciento de :. Esto se puede lograr enviando en:hacer: al objeto Número, de la siguiente manera:
Número en: ['porciento-de:'] hacer: {
:número
<- número / 100 * yo.
}.
Salida escribir:
(7 porciento-de: 100),
detener.
Como el porcentaje , en este caso, es el número en sí, nos referimos a yo, la palabra clave yo. En resumen, el símbolo yo significa: envíame este mensaje a mí mismo. Después de haber ejecutado el código mencionado anteriormente, podemos hacer:
Salida escribir:
(7 porciento-de: 100),
detener.
Naturalmente el resultado mostrado será: