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 [ ]
fin

para ordenaesto :lista1 :lista2
si vacía? :lista1 [reporta :lista2]
reporta ordenaesto menosprimero :lista1 inserta1 primero :lista1 :lista2
fin

para 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
fin

para 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)]
fin

muestra 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
fin

muestra 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 5

Subconjunto? 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]
cierto

Unió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]
fin

muestra unión [1 2 3 4 5] [3 4 5 6 7]
1 2 3 4 5 6 7