Proyectos con Palabras y Listas
Conociendo las condicionales, los predicados y los procedimientos que reportan, se pueden escribir programas más útiles y sofisticados.
En Logo resulta fácil definir predicados propios. A menudo estos predicados definidos por nosotros pueden ser utilizados como procedimientos herramientas para construir proyectos. Por ejemplo, después de definir el procedimiento invierte (en Procedimientos Recursivos que Reportan), podemos definir un procedimiento que controle si la palabra es un palíndrome (una palabra que se lee igual de derecha a izquierda que de izquierda a derecha). Una forma de escribir el procedimiento palíndrome? es la siguiente (consideramos que el procedimiento invierte ya está definido). Tenga en cuenta que este procedimiento utiliza siotro:
para palíndrome? :palabra
siotro :palabra = invierte :palabra [reporta "cierto] [reporta "falso]
fin
El procedimiento dice:
Si la entrada es igual a la palabra de entrada invertida, reporta cierto; de los contrario, reporta falso.
Ya que = es un predicado en sí mismo, palíndrome? puede ser definido con más elegancia:
para palíndrome? :palabra
reporta :palabra = invierte :palabra
finmuestra palíndrome? "ala
cierto
El siguiente es un procedimiento que controla si la entrada comienza con una vocal:
para vocal? :palabra
reporta miembro? primero :palabra [a e i o u]
fin
Esta idea de controlar la vocal puede ser aplicada a un programa para definir un dialecto llamado Quejido:
para quejido :fr
si vacía? :fr [reporta [ ]]
reporta frase cambiar primero :fr quejido menosprimero :fr
finpara cambiar :pal
si miembro? primero :pal [a e i o u ] [reporta palabra :pal "ay]
reporta cambiar palabra menosprimero :pal primero :pal
finmuestra quejido [Es un niño muy bueno]
Esay unay iñonay uymay uenobay
Quejido es un superprocedimento. Llama al procedimiento cambiar para cambiar la primera palabra de la frase de su entrada al dialecto; luego reduce su entrada en una palabra, hasta que todas las palabras de la frase hayan sido traducidas al dialecto. Cambiar examina y cambia parte de la palabra. Utiliza miembro? para controlar si la palabra comienza con una vocal. Si es así, agrega "ay al final de la palabra. Si la palabra no comienza con vocal, corta la primera letra de la palabra y la pone al final hasta que encuentra una vocal al comienzo de la palabra.
Quejido en una Caja de Texto: Podemos ejecutar quejido utilizando una caja de texto como entrada para la frase y otra caja de texto para mostrar el resultado. Por ejemplo, podemos crear una caja de texto (texto1) y escribir la frase a ser traducida. Creamos otra caja de texto (texto2) para mostrar el resultado. Escriba en el Centro de Mando:
texto2, escribe quejido hazlista texto1El siguiente es otro ejemplo de dialecto. Esta vez cambia las palabras que terminan en ito por palabras que terminan en ote. Múl es la abreviatura de menosúltimo en terminación:
para terminación :pal
si miembro? "ito :pal [reporta palabra múl múl múl :pal "ote]
reporta :pal
finpara dialecto :lista
si vacía? :lista [reporta []]
reporta ponprimero terminación primero :lista dialecto menosprimero :lista
fin
El procedimiento dialecto es casi idéntico al procedimiento quejido, pero utiliza ponprimero en lugar de frase.
muestra dialecto [El niñito es muy buenito]
El niñote es muy buenote
Terminación controla si la palabra termina en ito. Si fuera así, estas letras se cortan de la palabra y se agregan las letras ote. Si la palabra no tiene ito, la entrada se reporta sin cambio.
Observe la siguiente línea en terminación:
si miembro? "ito :pal [reporta palabra múl múl múl :pal "ote]¿Qué es múl múl múl :pal si :pal is niñito?
Aplique las reglas para leer una instrucción Logo de izquierda a derecha:
La entrada para el primer múl es múl múl "niñito
La entrada para el segundo múl es múl "niñito
La entrada para el tercer múl es "niñito que reporta niñit
La entrada para el segundo múl es "niñit que reporta niñi
La entrada para el primer múl es "niñi que reporta niñ.Dialecto es un superprocedimiento. Toma una lista y reemplaza las palabras relevantes por el nuevo dialecto.