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!
@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!