IIC3745-2020-2/syllabus

Predicados en código

Closed this issue · 6 comments

Hola!
Me surgió una duda al intentar identificar los distintos predicados en un código. En clases vimos los predicados como conjunto de clausulas y siempre analizamos un solo predicado (o casi siempre). Al analizar código e intentar identificar los distintos predicados no supe verlo tan claro.
Por ejemplo, si yo tengo un código de la forma

if (a>b):
algo
else:
otro algo

Habría un solo predicado que puede evaluarse en true o false? {a>b}
O habría que considerar que hay dos predicados? {a>b, a<=b (else)}

Saludos y gracias!

Y otra duda: Si se tienen dos predicados: {b==true, b == false} o {b>0, b<=0}. Existen 1 sola variable, pero ¿Se deben considerar como 2 clausulas separadas? ¿O como una sola clausula que puede ser True o False?

Hola,

En el caso de los if-else solamente hay un predicado que puede tomar los valores True y False. Sin embargo, en el caso de los elsif (o switch/case-when) se debe considerar que para que un predicado sea True además todos los anteriores deben ser False.

Sobre tu segunda pregunta, si bien existe una sola variable, esos predicados y cláusulas son distintos (a pesar de que uno sea la negación del otro), por lo que se deben considerar como 2 predicados/cláusulas separadas. Por esta razón, y si es posible, sería mejor realizar un refactor sobre el código para que esta evaluación quede de la forma if-else, lo que haría más simple el análisis con criterios basados en lógica.

Consejo: te recomiendo que revises la notación de markdown en GitHub para facilitar la lectura de tus ejemplos de código.

Saludos,

Perfecto, muchas gracias por la respuesta!

Hola!
Me surgió una duda: Si tengo a una variable booleana y luego
if a: ...

a es una claúsula, pero ¿Es un predicado? ya que por la definición vista en clases un predicado es un conjunto de cláusulas , entonces ¿Sería un predicado ya que genera implicancia?:
IMG_7F119467E68D-1
Gracias!

@JoseValencia125 Implícitamente lo que está haciendo el lenguaje de programación es una igualdad if a == True, lo que es un predicado. Los lenguajes transforman las variables a booleanos en base a su tipo, y esta interpretación cambia entre lenguajes.

Ya perfecto, muchas gracias profe!