miércoles, 10 de mayo de 2017

Cómo programar: datos simples (9) - Evaluar una expresión "IF"

La evaluación de una expresión if consiste en hacer una ejecución paso a paso de forma manual. Esto puede ser útil al momento de realizar alguna depuración cuando las cosas no resultan como se esperaban.

Dicha evaluación tiene las siguientes reglas:

1) Si la pregunta contenida en if no es un valor, evaluar la expresión if y reemplazarla con un valor.
2) Si la pregunta es verdadera (true), reemplazar la totalidad de la expresión if con la respuesta asociada a verdadero.
3) Si la pregunta es falsa (falsa), reemplazarla la totalidad de la expresión if con la respuesta asociada a falso.
4) Si la pregunta es un valor distinto a falso o verdadero, entonces se produce un error.

En el siguiente ejemplo se añadiran algunos comentarios en el código.  Para crear comentarios en una línea, se puede usar el punto y coma seguido del comentario:

(require 2htdp/image)
(define I1 (rectangle 10 20 "solid" "red"))
(define I2 (rectangle 20 10 "solid" "blue"))

; la siguiente expresión if es la que se va a evaluar:

(if (< (image-width I2)   ; dado que esta expresión no es un valor, se reemplazará por 20 en el paso 1)
         (image-height I2)) ; dado que esta expresión no es un valor, se reemplazará por 10 en el paso 1)
         (image-width I2) ; respuesta si es verdadero
         (image-height I2)) ; respuesta si es falso

Evaluación:

Paso 1) 

(if (< 20 10)         ; dado que la pregunta aún no es un valor, se reemplazará por "false" en el paso 2)
      (image-width I2) ; respuesta si es verdadero
      (image-height I2)) ; respuesta si es falso

Paso 2)

(if    false
      (image-width I2)
      (image-height I2)) ; dado que la pregunta es falsa, en el paso 3) se reemplazará la expresión completa con esta expresión

Paso 3)

(image-height I2) ; la expresión completa se reemplazo por la respuesta asociada a falso. En el siguiente paso se reducirá al valor 10, que representa el alto del rectángulo definido en la constante I2.

Paso 4)

10

Si se pone todo este código en Drracket, al final se va a obtener el mismo resultado en todos los pasos:




Anterior
Siguiente

No hay comentarios:

Publicar un comentario

Cómo programar: datos simples (21) - Enumeración

Diseñar una definición de datos para representar las letras de calificaciones en un curso.  Estas letras son A, B y C, que significan bueno,...