La función IF (Sí) evalúa una expresión condicional simple y si ésta cumple dicha condición, entonces el resultado es True (T) y se ejecutan las acciones del primer bloque de programación asociadas dentro de este bloque de código, por el contrario, si tras la evaluación de IF el resultado es nulo (nil), se ejecutarán las acciones del segundo bloque de código (ya sabemos que un bloque es también un abrir y cerrar un paréntesis).

Te muestro esta teoría a través de un gráfico:

Ahora veamos el desarrollo con un ejemplo:

Escribe lo siguiente en un archivo de texto y guárdalo con el nombre “condicionales.lsp“, una vez que lo hayas guardado, carga el código con el comando “Appload” y ejecutas la rutina con el nombre del comando según lo que te muestro a continuación:

(defun c:cn1()
	(setq nc (getint "Ingresa el número de columnas de la tabla:"))
	(if (< nc 1)
    		(alert "Debes de ingresar un número de columnas válido.")
    		(princ "\nAquí se llama al función que permite crear una tabla.")
	)
	(princ)
)

A continuación te explico este pequeño comando llamado cn1 que dibujará una tabla con un numero de columnas indicado:

En primer lugar la rutina necesita saber con cuantas columnas (número entero) dibujará la tabla y para ello le solicitamos ese valor al usuario mediante la función GETINT e inmediatamente almacenamos ese valor ingresado en la variable nc.

Sabemos que un usuario puede ingresar cualquier valor, incluso 0 ó valores negativos, pero esos valores de ninguna forma ayudarán a saber el número de columnas, es por ello que primero antes de ejecutar cualquier código, debemos de evaluar el valor ingresado y para ello usamos la función IF para crear una condición de evaluación, de este ejemplo:

La condición es “Si nc es mayor que 1, entonces se ejecute el código que dibuja la tabla, si es menor, muestra un mensaje de alerta para informar del error.”, ya sabes que en AutoLisp siempre las funciones van primero antes de los argumentos por ello que el símbolo “mayor que (>)” va primero antes de los argumentos a evaluar.

Como podemos observar, IF evalúa un posible resultado y ejecuta sólo una de dos posibles acciones (líneas de código) o una estructura de bloque con varias líneas de código, para ejecutar un bloque de varias líneas de código es necesario usar la función PROGN, esta función sirve de “contenedor” para escribir varias líneas de código, con lo cual la función IF solo considerará toda la estructura como una sola línea de código.

Mira este nuevo ejemplo:

Aquí la función progn, está ayudando a que todo el código que vaya dentro de ella (color amarillo), se considere como un sólo bloque de código o una sola línea de código, o una sola apertura y cierre de paréntesis “()” que la condición IF tomará en cuenta en caso de que la condición dada se cumpla.

La función progn, también puede ser usada para construir una segunda línea de código en el caso de que la condición no se cumpla, por ejemplo:

Aquí todo lo resaltado de color amarillo es considerado una sola estructura de código o una sola línea de código y también todo lo resaltado de color cian y así, si la condición evaluada por IF es verdadera, entonces se ejecuta todo lo resaltado con amarillo de lo contrario se ejecuta todo lo resaltado con cian.

Funciones que se han visto en este tema:

  1. defun
  2. setq
  3. getint
  4. if
  5. <
  6. >
  7. progn
  8. alert
  9. princ

En el tema siguiente vamos a conocer que función nos ayuda para ejecutar más de dos posibles acciones o sentencias o bloques de código según cumplan una o más de dos condiciones.