Programación : Herramientas Útiles
Los siguientes procedimientos pueden ser utilizados como herramientas para escribir programas. Por supuesto, esta muestra no es exhaustiva:
Entre? controla si el número está dentro de un rango definido:
para entre? :x :menor :mayor
reporta no o (:x < :menor) (:x > :mayor)
fin
muestra entre? 5 3 9
cierto
Mapa aplica un mando a cada elemento de la lista:
para mapa :mando :lista
si vacía? :lista [alto]
activa lista :mando palabra "" primero :lista
mapa :mando menosprimero :lista
fin
da "países [ME CR AR UY]
mapa "muestra :países
ME
CR
AR
UY
Reemplaza reemplaza una palabra en una lista por una palabra diferente:
para reemplaza :palabra1 :palabra2 :lista
si vacía? :lista [reporta [ ]]
si :palabra1 = primero :lista
[reporta frase :palabra2 menosprimero :lista]
reporta ponprimero primero :lista reemplaza :palabra1 :palabra2 menosprimero :lista
fin
muestra reemplaza "saltar "dormir [Mira saltar a mi perro]
Mira dormir a mi perro
Ordena toma una lista de palabras y la ordena alfabéticamente:
para ordena :lista
reporta ordenaesto :lista [ ]
finpara ordenaesto :lista1 :lista2
si vacía? :lista1 [reporta :lista2]
reporta ordenaesto menosprimero :lista1 inserta1 primero :lista1 :lista2
finpara inserta1 :pal :lista
si vacía? :lista [reporta ponprimero :pal :lista]
si anterior? :pal primero :lista [reporta ponprimero :pal :lista]
reporta ponprimero primero :lista inserta1 :pal menosprimero :lista
finpara anterior? :a :b
si o vacía? :a vacía? :b [reporta "falso]
siotro (ascii primero :a) = (ascii primero :b)
[reporta anterior? menosprimero :a menosprimero :b]
[reporta (ascii primero :a) < (ascii primero :b)]
finmuestra ordena [Ana María Soledad Inés Rocío]
Ana Inés María Rocío Soledad
Cuál reporta cuál es la posición del elemento en la lista. Para poder trabajar, el elemento debe ser parte de la lista. Esta herramienta actúa como un complemento del reportero ítem:
para cuál :miembro :lista
si vacía? :lista [reporta 0]
si :miembro = primero :lista [reporta 1]
reporta 1 + cuál :miembro menosprimero :lista
finmuestra cuál "a [c a i]
2
Los siguientes procedimientos son herramientas para manipular dos juegos de datos:
Intersección responde la intersección de dos entradas:
para intersección :lista1 :lista2
si vacía? :lista1 [reporta [ ]]
si miembro? (primero :lista1) :lista2
[reporta frase (primero :lista1)
intersección (menosprimero :lista1) :lista2]
reporta intersección (menosprimero :lista1) :lista2
fin
muestra intersección [1 2 3 4 5] [3 4 5 6]
3 4 5Subconjunto? controla si una de las listas de entrada es un subconjunto de la otra:
para subconjunto? :lista1 :lista2
si vacía? :lista1 [reporta "cierto]
si no miembro? primero :lista1 :lista2 [reporta "falso]
reporta subconjunto? menosprimero :lista1 :lista2
fin
muestra subconjunto? [2 3] [2 3 4 5]
ciertoUnión reporta la unión de los dos conjuntos:
para unión :lista1 :lista2
si vacía? :lista1 [reporta :lista2]
siotro miembro? primero :lista1 :lista2
[reporta unión menosprimero :lista1 :lista2]
[reporta ponprimero primero :lista1 unión menosprimero :lista1 :lista2]
finmuestra unión [1 2 3 4 5] [3 4 5 6 7]
1 2 3 4 5 6 7