UCBLogo

lenguaje de programación

UCBLogo, también conocida como Logo de Berkeley, es más parecido a un lenguaje estándar de facto de programación Logo, con sus instalaciones para el manejo de listas, archivos, I/O, y recursividad en los scripts, [no en la cita dada] y puede ser usado para enseñar la mayoría de los conceptos de informática, como hizo el conferencista de la Universidad de Berkeley, profesor Brian Harvey, en su trilogía de Estilo de Logotipo de la Ciencia de la Computación.[1][2]​ Para la enseñanza del nivel terciario, sin embargo, el logotipo ha sido reemplazado por el Esquema, y lenguajes de script.

GUI editar

UCBLogo tiene sólo una interfaz gráfica de usuario rudimentaria, por lo que existen varios proyectos que proporcionan una mejor interfaz. MSWLogo y su sucesor FMSLogo, para Windows de Microsoft, se utilizan comúnmente en las escuelas de Reino Unido y Australia.

Diseño editar

Logo fue diseñado en el espíritu de bajo umbral y sin techo, lo cual permite una fácil entrada para novatos sin embargo, satisface las necesidades de los usuarios de alta potencia. Las animaciones requieren tanto la habilidad para dibujar formas como para borrar formas. El proceso es el mismo, excepto que en el antiguo, una línea se deposita en el dispositivo de exhibición y en el último se elimina una línea. Utilizando la analogía de tortuga, el bolígrafo de la tortuga debe pintar y debe borrar. La tortuga puede ser configurada para borrar cualquier cosa abajo de ella, utilizando el comando PENERASE (PE), mientras que el bolígrafo puede ser configurado para volver a dibujar con el comando PENPAINT (PPT), en UCBLogo.

El bolígrafo editar

 
La tortuga dibujando una línea de puntos

La analogía de una tortuga con un bolígrafo sujeto a su cola se utiliza a menudo. El bolígrafo de la tortuga puede ser levantado y bajado, dibujando así una línea de puntos rudimentaria.

Un código de ejemplo:

 FD 20 ; trazar una línea y en movimiento
 PENUP ; levantamiento del bolígrafo para que no dibuje cualquier cosa
 FD 40 ; en movimiento pero no dibujando
 PENDOWN ; bajando el bolígrafo así que dibuja de nuevo
 FD 20 ; trazar una línea y en movimiento
 PENUP ; levantamiento del bolígrafo para que no dibuje cualquier cosa
 FD 40 ; en movimiento pero no dibujando
 PENDOWN ; bajando el bolígrafo así que dibuja de nuevo
 RT 20 ; giro hacia la derecha (en el sentido de las agujas del reloj) 20 grados

Datos editar

Hay tres tipos de datos en UCBLogo:

  • La palabra
  • La lista
  • La matriz

Un número es un caso especial de palabra.

No hay tipos estáticos. El intérprete detecta el tipo de datos por el contexto.

Hay dos símbolos importantes:

  • Los dos puntos (:) significa los contenidos de. Este es un símbolo de gran utilidad que mantiene recordando a los estudiantes que una variable es realmente algún 'sitio' en memoria.
  • La comillas dobles (") significa la palabra se evalúa como sí misma, o su valor después de la evaluación es el mismo que era antes. Esto es importante. Para usuarios de otros lenguajes de programación: las comillas dobles no están emparejadas como apertura y cierre de citas.

Un número es un caso especial de auto-evaluación—en lo que realmente pueda ser escrito con una cita. 2 es realmente "2

Asignación de variables (p. ej. x := y + 3) se maneja en Logo con el comando make, como se ejemplifica en estas dos declaraciones equivalentes:

 make "x sum :y 3
 make "x sum :y "3

make toma 2 parámetros, el segundo del cual aquí es sum :y 3. sum toma dos 'parámetros' y es una 'operación', por ello el cálculo es posible. "3 evalúa a 3, y :y toma los contenidos de la que se llama y, estos se suman dando un número.

El efecto de make es colocar el resultado en el primer parámetro. Desde una perspectiva programática, el primer argumento a make se pasa por referencia, mientras que el segundo se pasa por valor.

Alcances editar

Las variables no tienen que ser declaradas antes de su uso; su alcance es entonces mundial.

Una variable puede ser declarada local, entonces su alcance se limita a dicho procedimiento y cualesquier procedimientos que llama (también llamado Alcance dinámico). Llamar a un procedimiento con las entradas (el nombre normalmente utilizado para argumentos en la literatura Logo) también crea variables locales que mantienen los valores de los argumentos.

Listas editar

Logo hereda las listas de Lisp, y son su principal método de almacenamiento de vectores. También se proporcionan matrices.

  • Existen operadores para convertir palabras a listas, y listas a matrices y viceversa.
  • Este tipo de dato tiene la ventaja sobre las matrices que es infinitamente expandible. Los datos se extraen mediante las operaciones first, butfirst, last, butlast, butmember, member e item. Los elementos de datos se añaden utilizando fput y lput.
  • Una lista puede ser considerada como una cola con los operadores queue y dequeue, o una pila con los operaciones push y pop.
  • La recursividad más que iteración es el método natural para procesar listas.

Órdenes de estructura del control editar

Logo proporciona varias estructuras de control comunes. Hay una estructura condicional.

  • ifelse test [hacer_si_lista cierta ] [hacer_si_lista falsa]

Hay tres órdenes de iteración:

  • Mientras condición [lista de instrucción]
  • Hasta que condición [lista de instrucción ]
  • Repetir número [lista de instrucción]

La recursividad es el paradigma de procesamiento preferido de Logo.

Iteración de plantilla editar

Logo también proporciona estructuras de control basadas en listas. La idea básica es de dos listas:

 OPERACIÓN [ una lista de órdenes ] [ muchos elementos de dato ]

Cada uno de los comandos se aplica a su vez a cada uno de los elementos de datos. Hay varios de estos comandos de plantilla con nombres como MAP, APPLY, FILTER, FOREACH, REDUCE y CASCADE. Representan cuatro sabores de iteración de plantilla, conocida como explicit-slot, named-procedure, named-slot (o Lambda), y procedure-text.

Listas de propiedades editar

Una lista de propiedad es una lista especial donde los elementos de número impar son nombres de propiedades, e incluso, son los valores de propiedad. Hay tres comandos para procesar lista de propiedades.

 pprop :listname :nombre :valor ;para añadir un par nuevo a la lista
 remprop :listname :nombre :valor ;para sacar un par del espectáculo
 de lista gprop :listname :nombre ;para conseguir el valor de emparejar de la lista

I/O editar

El texto puede ser escrito en la ventana de comandos (flujo de salida) usando print y en la ventana de gráficos se usa label

Las comandos estándar son readlist readword readchar siendo el teclado el flujo de entrada normal. En la tradición Unix el flujo de entrada se puede cambiar, así que la entrada puede provenir de un archivo de disco. Del mismo modo, la salida puede ser redirigida.

Sintaxis editar

Los comandos pueden escribirse en una sola línea, o más. Muchos comandos tienen formas cortas mnemotécnicas; por ejemplo FORWARD y RIGHT son codificados FD y RT respectivamente. Esto hace la entrada menos onerosa. Cualquier cosa escrita después de; (punto y coma) se ignora, lo que permite el código para insertar comentarios.

 ; dibuja un cuadrado con lados de 100 unidades de longitud
 FORWARD 100
 LEFT 90
 FORWARD 100
 LEFT 90
 FORWARD 100
 LEFT 90
 FORWARD 100
 LEFT 90
 FD 100 RT 120 FD 100 RT 120 ; dibuja un triángulo
 FD 100 RT 120

El programa Hola mundo en Logo se ve así:

 Print [Hola Mundo]

Bucles editar

Hay tres comandos de bucle (repetición); REPEAT es uno. Esto dibuja un cuadrado.

 REPEAT 4 [FD 100 LEFT 90]

El comando FD 100 LEFT 90 se ejecuta cuatro veces. Una aproximación de un círculo se puede construir fácilmente con 360 rotaciones pequeñas y un paso adelante: REPEAT 360 [FD 1 RIGHT 1]. Los bucles pueden anidarse, dando resultados espectaculares con poco esfuerzo.

 REPEAT 36 [RT 10 REPEAT 360 [FD 1 RT 1]]
 FD 25
 RT 90

Otro ejemplo de bucles anidados

 REPEAT 36 [REPEAT 4 [FD 100 RT 90] RT 10]

Funciones y procedimientos editar

Cada línea está hecha de llamadas a funciones, o subrutinas en la terminología de programación, de los cuales hay dos tipos:

  • Comandos (Que hacer algo—afecta—pero no regresa un valor) como print.
  • Operaciones (Que regresa un valor, su salida) como sum, first o readlist.

Un comando es similar a un procedimiento de Pascal, y una operación es similar a una función de Pascal. (Véase también: la separación de consultas del sistema, donde una consulta es una operación en Logo). Un subconjunto especial de operaciones, llamada predicados, que acaba de emitir la palabra true o false, está convencionalmente escrito con una p al final. Los ejemplos incluyen emptyp, wordp, y listp.

  • Las expresiones pueden ser primitivas, o definidas por el usuario.
  • Las expresiones pueden tener cero, uno o más parámetros.
 
Silla básica

Los procedimientos pueden ser definidos en la línea de comandos, utilizando el par TO END:

 TO SILLA REPEAT 4 [FD 100 RT 90] FD 200 END

Sin embargo, en los primeros Logo el procedimiento se limitó a la longitud de la línea física del dispositivo de entrada.

Todos los Logo pueden involucrar un Editor, por lo general por EDALL. En el editor, los procedimientos pueden ser grabados sobre muchas líneas, como nada es interpretado hasta que la edición se ha completado.

 EDALL

 TO SILLA
 REPEAT 4 [FD 100 RT 90] FD 200
 END

La nueva palabra se guarda en el vocabulario disponible, pero la definición se pierde una vez la sesión de Logo ha terminado. Internamente los procedimientos son palabras y en este caso, cada vez que SILLA se introduce, la secuencia REPEAT 4 [FD 100 LEFT 90] FD 200 se ejecutará. La palabra SILLA puede ser usada como un comando; por ejemplo, REPEAT 4 [SILLA] repetiría la operación SILLA cuatro veces.

 EDALL ;(Para entrar en el modo de edición, entonces el procedimiento real)

 TO BORRASILLA
 PE
 BK 200 REPEAT 4 [FD 100 RT 90]
 PPT
 END

 CS SILLA WAIT 200 BORRASILLA

Un retraso de WAIT entre el dibujo y el borrando puede introducir la ilusión de movimiento:

 CS REPEAT 20 [SILLA WAIT 200 BORRASILLA PENUP FD 20 PENDOWN]

Argumentos/Parámetros editar

Logo puede pasar información adicional a sus palabras, e información de retorno. El procedimiento, (palabra) es instruido para esperar algo y darle un nombre. Los dos puntos se utiliza para este propósito. Se pasa la información por el valor y los dos puntos se pronuncia como el valor de. Cuándo el procedimiento se ejecuta con un comando como SILLA 200, la palabra :thesize toma el valor 200 así que cuando FD :thesize se ejecuta, el intérprete entiende FD, el valor de 200.

 EDALL ;(Para introducir el modo de editor, entonces el procedimiento real)
 TO SILLA :thesize
 REPEAT 4 [FD :thesize RT 90]
 FD :thesize
 END
 CS
 REPEAT 9 [SILLA 50 RT 20 SILLA 100 WAIT 50 RT 20]
 
Patrón

Otras notas editar

Matemática en Logo usa la notación de prefijo, como: sum :x :y, product :x :y, difference :x :y, quotient :x :y Infix también está disponible.

help "keyword ; (aparecerá una descripción completa de la expresión).

Logo permite la recursividad, el proceso donde un procedimiento se llama a sí mismo.

to spiral :size
   if  :size > 30 [stop] ; an exit condition
   fd :size rt 15        ; many lines of action
   spiral :size *1.02    ; the tailend recursive call
end

 spiral 10

Referencias editar