2.3. Estructuras de Control

Los predicados son funciones que devuelven respuestas lógicas(cierto-falso), mientras que las estructuras de control controlan laejecución del programa y permiten múltiples ramificaciones.

PREDICADOS
Permiten comprobar características relacionadas con el tipo de datocon que se está operando en cada momento. Devuelve T(cierto) si la condición se cumple y nil (falso) en casocontrario.
  • PREDICADOS GENERALES: Suelendistinguirse por terminar el nombre de la función en la letraP que significa predicado. Se utiliza la siguiente regla paradecidir si la P está precedida por un guión: si el nombre delpredicado se forma añadiendo la P a un nombre existente, tal como elnombre de un tipo de dato, se añade un guión sólo en elcaso de que el nombre original incluya alguno (BOUNDP, LISTP,NUMBERP sin guión ó VL-FILE-DIRECTORY-P,VLAX-ERASED-P con guión). Los predicados que fueron introducidoscon Visual LISP se conocen por los prefijos que se adicionan VL-, VLAX- oVLR- (VL-CONSP, VLAX-PROPERTY-AVAILABLE-P, VLR-ADDED-P). En casos comoVL-CONSP se hace una excepción a la regla anterior, puestoque en realidad se está renombrando un predicado standard de CommonLISP.
    PREDICADOS SOBRE ÁTOMOS Y LISTAS
  • PREDICADOS ARITMÉTICOS: Corresponden a las funciones de comparación (mayor que, menor que, igual a...).
  • OTROS PREDICADOS DEFINIDOS POR ELUSUARIO: muestra de la extensibilidad de LISP.
OPERADORES LÓGICOS
Corresponden a las operaciones Booleanas básicas. LISP suministratres operadores sobre valores Booleanos: and, or, ynot. De ellos, and y or sontambién en cierto modo estructuras de control ya que sus argumentos sonevaluados condicionalmente. Permiten agrupar las condiciones de prueba, casisiempre a partir de la utilización de predicados que se utilizan dentrode las estructuras de programación descritas más adelante.Lafunción not tiene un sólo argumento que analizar, yes por ello una función simple.
ESTRUCTURASCONDICIONALES
Visual LISP provee las dos estructuras de control tradicionales de LISP. Laestructura condicional de más tradición en LISP esCOND. Sin embargoIF resulta más simple y esdirectamente comparable a las estructuras condicionales de otros lenguajes deprogramación.