UCBLogo , también llamado Berkeley Logo , es un lenguaje de programación , un dialecto de Logo , derivado de Lisp . Es el dialecto de Logo más cercano a ser un estándar de facto . Tiene las mejores instalaciones para manejar listas , archivos , entrada / salida (E / S) y recursividad . [2] Se puede utilizar para enseñar la mayoría de los conceptos de ciencias de la computación, como lo hizo el profesor Brian Harvey [3] de la Universidad de California en Berkeley en su trilogía Computer Science Logo Style . [4] [5] [6]Es un software gratuito y de código abierto publicado bajo una Licencia Pública General GNU (GPL). [7]
Paradigmas | multi-paradigma : funcional educativo , procedimental , reflexivo |
---|---|
Familia | Ceceo |
Diseñada por | Brian Harvey |
Desarrolladores | Dan van Blerkom, Michael Katz, Doug Orleans. Contribuciones sustanciales: Freeman Deutsch, Khang Dao, Fred Gilham, Yehuda Katz, George Mills, Sanford Owings, Randy Sargent [1] |
Apareció por primera vez | 1992 |
Lanzamiento estable | 6.2.1 / 31 de diciembre de 2020 |
Disciplina de mecanografía | dinámica |
Alcance | Dinámica |
Lenguaje de implementación | C |
Plataforma | IA-32 , x86-64 |
SO | Windows , macOS , Linux |
Licencia | GPL |
Sitio web | gente |
Influenciado por | |
Ceceo | |
Influenciado | |
Smalltalk , Etoys , Scratch , NetLogo , KTurtle , Rebol |
Interfaz gráfica del usuario
UCBLogo tiene una interfaz gráfica de usuario (GUI) rudimentaria , por lo que existen varios proyectos que brindan una mejor interfaz. MSWLogo y su sucesor FMSLogo , para Microsoft Windows , se utilizan comúnmente en las escuelas del Reino Unido y Australia .
Diseño
El logotipo fue diseñado con un espíritu de umbral bajo y sin techo, lo que permite una fácil entrada a los principiantes y, sin embargo, satisface las necesidades de los usuarios de alto nivel. Las animaciones requieren la capacidad de dibujar y borrar formas. El proceso es el mismo, excepto que en el primero se deposita una línea en el dispositivo de visualización y en el segundo se elimina una línea. Usando la analogía de la tortuga, la pluma de la tortuga debe pintar y la pluma de la tortuga debe borrar. La tortuga se puede configurar para borrar cualquier cosa debajo de ella, usando el comando PENERASE (PE), mientras que el lápiz se puede configurar para comenzar a dibujar nuevamente con el comando PENPAINT (PPT), en UCBLogo.
El bolígrafo
A menudo se utiliza la analogía de una tortuga con un bolígrafo pegado a la cola. El corral de la tortuga se puede levantar y bajar, trazando así una línea de puntos rudimentaria.
Un código de ejemplo:
FD 20 ; dibuja una línea y mueve PENUP ; levante el bolígrafo para que no dibuje nada FD 20 ; moverse y no dibujar PENDOWN ; baje el bolígrafo para que vuelva a dibujar FD 20 ; dibuja una línea y mueve PENUP ; levante el bolígrafo para que no dibuje nada FD 40 ; moverse y no dibujar PENDOWN ; baje el bolígrafo para que vuelva a dibujar RT 20 ; girar a la derecha (en el sentido de las agujas del reloj) 20 grados
Datos
Hay tres tipos de datos en UCBLogo:
- la palabra
- la lista
- la matriz
Un número es un caso especial de palabra.
No hay escritura estática. El intérprete detecta el tipo de datos por contexto.
Dos símbolos importantes son:
- Los dos puntos (
:
) significan el contenido de . Este es un símbolo extremadamente útil que les recuerda a los estudiantes que una variable es realmente un lugar en la memoria. - La cita doble (
"
) significa que la palabra se evalúa como sí misma , o que su valor después de la evaluación es el mismo que antes . Esto es importante. Para usuarios de otros lenguajes de programación: la cita doble no está emparejada como citas de apertura y cierre.
Un número es un caso especial de autoevaluación; realmente podría escribirse con una cita. 2 es realmente "2
La asignación de variable (por ejemplo x := y + 3
) se maneja en Logo con el make
comando, como se ejemplifica con estas dos declaraciones equivalentes:
hacer "x suma: y 3hacer "x suma: y" 3
make
toma 2 parámetros, el segundo de los cuales aquí es sum :y "3
. sum
toma dos 'parámetros' y es una 'operación', por lo que el cálculo es posible. "3
evalúa 3
y :y
toma el contenido de la cosa llamada 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 make
se pasa por referencia, mientras que el segundo se pasa por valor.
Alcance
Las variables no tienen que declararse antes de su uso; su alcance es entonces global.
Se puede declarar una variable local
, entonces su alcance se limita a ese procedimiento y cualquier procedimiento que llame, lo que se denomina alcance dinámico . Llamar a un procedimiento con entradas (el nombre que generalmente se usa para los argumentos en la literatura de Logo) también crea variables locales que contienen los valores de los argumentos.
Liza
Logo hereda listas de Lisp y son su método principal para almacenar vectores. También se proporcionan matrices.
- Existen operadores para convertir palabras en listas y listas en matrices y viceversa.
- Este tipo de datos tiene la ventaja sobre las matrices de que es infinitamente ampliable. Los datos se obtuvieron mediante los operaciones
first
,butfirst
,last
,butlast
,butmember
,member
, yitem
. Los elementos de datos se agregan utilizandosentence
,fput
ylput
. - Se puede considerar que una lista es una cola con los operadores queue y quitan la cola, o una pila con las operaciones push y pop.
- La recursividad en lugar de la iteración es el método natural para procesar listas.
Comandos de estructura de control
Logo proporciona varias estructuras de control comunes . Hay una estructura condicional .
- prueba ifelse [do_if_true list] [do_if_false list]
Hay tres comandos de iteración :
- while condición [lista de instrucciones]
- hasta condición [lista de instrucciones]
- repetir número [lista de instrucciones]
La recursividad es el paradigma de procesamiento preferido de Logo.
Iteración de plantilla
Logo también proporciona estructuras de control basadas en listas. La idea básica es de dos listas:
OPERACIÓN [una lista de comandos] [muchos elementos de datos]
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 tipos de iteración de plantillas, conocidas como ranura explícita, procedimiento con nombre, ranura con nombre (o Lambda) y texto de procedimiento.
Listas de propiedades
Una lista de propiedades es una lista especial donde los elementos de número impar son nombres de propiedad y los pares son valores de propiedad. Hay tres comandos para procesar la lista de propiedades.
pProp : nombre de la lista : Nombre : valor ; añadir un nuevo par a la lista remprop : nombre de la lista : Nombre : valor ; para eliminar un par de la lista muestran gprop : nombre de la lista : nombre ; para obtener el valor coincidente de la lista
De entrada y salida
Para entrada / salida (E / S), el texto se puede escribir en la ventana de comandos (flujo de salida) usando print
y en la ventana gráfica usandolabel
Los comandos estándar son readlist readword readchar
el flujo de entrada normal que es el teclado. En la tradición de Unix, el flujo de entrada se puede cambiar, por lo que la entrada puede provenir de un archivo de disco. Del mismo modo, la salida se puede redirigir.
Sintaxis
Los comandos se pueden escribir en una línea o en más. Muchos comandos tienen formas cortas mnemotécnicas; por ejemplo FORWARD
y RIGHT
están codificados FD
y RT
respectivamente. Esto hace que la entrada sea menos onerosa. Todo lo que esté escrito después del; (punto y coma) se ignora, lo que permite al codificador insertar comentarios.
; dibuja un cuadrado con lados 100 unidades de largo ADELANTE 100 IZQUIERDA 90 ADELANTE 100 IZQUIERDA 90 ADELANTE 100 IZQUIERDA 90 ADELANTE 100 IZQUIERDA 90
FD 100 RT 120 FD 100 RT 120; dibuja un trianguloFD 100 RT 120
El programa Hello World en Logo tiene este aspecto:
imprimir [Hola mundo]
Bucles
Hay tres comandos de bucle (repetir); REPEAT es uno. Esto dibuja un cuadrado.
REPETIR 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 pequeñas rotaciones y un paso adelante: REPEAT 360 [FD 1 RIGHT 1]
. Los bucles se pueden anidar, dando resultados con poco esfuerzo.
REPETIR 36 [RT 10 REPETIR 360 [FD 1 RT 1]]FD 25RT 90
Otro ejemplo de bucles anidados
REPETIR 36 [REPETIR 4 [FD 100 RT 90] RT 10]
Funciones y procedimientos
Cada línea está formada por llamadas a funciones, de las cuales hay dos tipos:
- comandos (que normalmente hacen algo —efectos— pero no devuelven un valor) como
print
. - operaciones (que solo devuelven un valor, su salida) como
sum
,first
oreadlist
.
Un comando es similar a un procedimiento Pascal y una operación es similar a una función Pascal. (Ver también: separación comando-consulta , donde una consulta es una operación en Logo). Un subconjunto especial de operaciones, llamados predicados , que solo generan la palabra true
o false
, se escriben convencionalmente con un final p
. Los ejemplos incluyen emptyp
, wordp
y listp
.
- Las expresiones pueden ser primitivas o pueden ser definidas por el usuario.
- Las expresiones pueden tener cero, uno o más parámetros.
Los procedimientos se pueden definir en la línea de comando, usando el par TO END :
PARA PRESILLAR REPETIR 4 [FD 100 RT 90] FD 200 FIN
Sin embargo, en algunos de los primeros Logos, el procedimiento se limita a la longitud de la línea física del dispositivo de entrada.
Todos los logotipos pueden invocar un editor, generalmente por EDALL . En el editor, los procedimientos se pueden escribir en muchas líneas, ya que nada se interpreta hasta que se completa la edición.
EDALL
A la sillaREPETIR 4 [FD 100 RT 90] FD 200FINAL
La nueva palabra se guarda en el vocabulario disponible, pero la definición se perderá una vez que finalice la sesión de Logo. Internamente los procedimientos son palabras y en este caso, en cualquier momento que CHAIR
se ingrese, REPEAT 4 [FD 100 LEFT 90] FD 200
se ejecutará la secuencia . La palabra CHAIR
se puede utilizar como comando; por ejemplo, REPEAT 4 [CHAIR]
repetiría la CHAIR
operación cuatro veces.
EDALL; (para ingresar al modo editor, luego el procedimiento real)
PARA BORRAR EL PELOEDUCACIÓN FÍSICABK 200 REPETIR 4 [FD 100 RT 90]PPTFINAL
SILLA CS WAIT 200 BORRADOR
Un retraso de ESPERA entre el dibujo y el borrado puede introducir la ilusión de movimiento:
CS REPEAT 20 [CHAIR WAIT 200 ERASECHAIR PENUP FD 20 PENDOWN]
Argumentos, parámetros
El logotipo puede pasar información adicional a sus palabras y devolver información. Se indica al procedimiento (palabra) que espere algo y le dé un nombre a ese algo. El colon se usa para este propósito. Pasa la información por valor y los dos puntos se pronuncian como el valor de . Cuando el procedimiento se ejecuta con un comando como CHAIR 200, la palabra :thesize
toma el valor 200 por lo que cuando :thesize
se ejecuta FD , el intérprete entiende FD, el valor de 200 .
EDALL; (para ingresar al modo editor, luego el procedimiento real)PARA LA PRESIDENCIA: el tamañoREPETIR 4 [FD: el tamaño RT 90]FD: el tamañoFINALCSREPETIR 9 [SILLA 50 RT 20 SILLA 100 ESPERA 50 RT 20]
Otras notas
Matemáticas en los usos del logotipo prefijo de o notación polaca , como: . Infix también está disponible.sum :x :y, product :x :y, difference :x :y, quotient :x :y
ayuda "palabra clave; (mostrará una descripción completa de la expresión).
El logotipo permite la recursividad , un proceso en el que un procedimiento se llama a sí mismo.
en espiral: tamaño si: tamaño> 30 [parada]; una condición de salida fd: tamaño rt 15; muchas líneas de acción espiral: tamaño * 1.02; la llamada recursiva de tailendfinal
espiral 10
Ejemplos de código de computación simbólica
Filtrar, mapear y reducir ejemplos
? filtro de impresión [?> 2] [1 2 3 4]3 4? imprimir mapa [? *?] [1 2 3 4]1 4 9 16? imprimir reducir [max? 1? 2] [1999 432 654]999
?
Max se puede implementar como
al máximo: a: bsalida si no: a>: b [: a] [: b]final
Definir y utilizar un procedimiento que calcule el promedio de sus argumentos numéricos.
? para promediar [: nums] 2> op (aplicar "suma: números) / (recuento: números)> fin? promedio de impresión 1 53? imprimir (promedio 1 2 3 4 5)3? imprimir aplicar "promedio [1 2 3 4 5]3?
Definir y usar un procedimiento para calcular plurales.
? al plural: palabra> if equalp last: word "y [op word bl: word" ies]> if equalp last: word "s [op word: word" es]> palabra de salida: palabra "s> fin? imprimir plural "cuerpocuerpos? imprimir mapa "plural [virus del cuerpo del libro]libros cuerpos virus?
Transcribe una oración al ejemplo de Pig latin
? to pigl: palabra> if punctuationp last: word [op word pigl.real bl: word last: word]> op pigl.real: palabra> fin? a pigl.real: palabra> si la ayuda vocal primero: palabra [op palabra: palabra "ay]> op pigl.real word bf: palabra primero: palabra> fin? a la ayuda vocal: letra> op memberp: letra [aeiou]> fin? a puntuación p: letra> op memberp: letra [. ,? !]> fin? imprimir mapa "pigl [¡el latín de cerdo es divertido y difícil de dominar al mismo tiempo!]igpay atinlay isay unay, anday ardhay otay astermay atay ethay amesay imetay!?
Ver también
- Micromundos
- StarLogo
- NetLogo
Referencias
- ^ Harvey, Brian (1997). Volumen 1: Computación simbólica: Agradecimientos . Universidad de California, Berkeley, Ingeniería Eléctrica y Ciencias de la Computación . Estilo del logotipo de ciencias de la computación. 1 . Prensa del MIT . ISBN 0-262-58148-5. Consultado el 6 de mayo de 2019 .
- ^ "Lenguaje de programación de logotipos" . Fundación Logo . 2012. Archivado desde el original el 15 de agosto de 2013 . Consultado el 6 de mayo de 2019 .
- ^ Harvey, Brian. "Brian Harvey" . Ingeniería Eléctrica e Informática . Universidad de California, Berkeley . Consultado el 6 de mayo de 2019 .
- ^ Harvey, Brian (1997). Volumen 1: Computación simbólica . Universidad de California, Berkeley, Ingeniería Eléctrica y Ciencias de la Computación . Estilo del logotipo de ciencias de la computación. 1 . Prensa del MIT . ISBN 0-262-58148-5. Consultado el 6 de mayo de 2019 .
- ^ Harvey, Brian (1997). Volumen 2: Técnicas avanzadas . Universidad de California, Berkeley, Ingeniería Eléctrica y Ciencias de la Computación . Estilo del logotipo de ciencias de la computación. 2 . Prensa del MIT . ISBN 0-262-58149-3. Consultado el 6 de mayo de 2019 .
- ^ Harvey, Brian (1997). Volumen 3: Más allá de la programación . Universidad de California, Berkeley, Ingeniería Eléctrica y Ciencias de la Computación . Estilo del logotipo de ciencias de la computación. 3 . Prensa del MIT . ISBN 0-262-58150-7. Consultado el 6 de mayo de 2019 .
- ^ Harvey, Brian (14 de septiembre de 2008). "La versión 6.0 del logotipo de Berkeley ya está disponible mediante FTP o Web anónimos" . Ingeniería Eléctrica e Informática . Universidad de California, Berkeley . Consultado el 9 de mayo de 2019 .
enlaces externos
- Página web oficial
- Repositorio de código fuente de UCBLogo
- Intérprete experimental de logotipos en línea (versión extendida del antiguo proyecto de programación # 4 de CS61A. Implementa un subconjunto de UCBLogo, carece de gráficos de tortugas).