UCBLogo
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 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
oreadlist
.
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.
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]
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]- ↑ Lenguaje de programación de logotipo en el sitio web de Fundación del Logotipo Archivado el 15 de agosto de 2013 en Wayback Machine.
- ↑ Estilo de Logotipo de la informática