Comando Si
De GeoGebra Manual
Revisión del 18:17 24 may 2015 de Spanish1 (discusión | contribs.) (→Funciones Condicionadas por Tramos)
Si
Categorías de Comandos (todos)
- Si[ <Condición>, <ObjetoEntonces> ]
- Si la condición resulta verdadera (true), entonces se crea un nuevo objeto, según especificación o acorde al valor indicado y uno indefinido si se la evalúa falsa (false).
Ejemplos:
Si[round(10random()) < 4, 5]
crea un número dependiente, de valor 5 si el resultado de la condición aleatoria se cumple e indefinido si fuera falsa.tri := Si[Distancia[(round(10random()), round(10random())), EjeX] > 4, Polígono[(round(10random()), 3), (0, 2), 3]]
crea un polígono triangular cuando la condición resulta verdadera, quedando indefinido si fuera falsa.- tra :=
Si[Distancia[(3, round(10random())), EjeX] > 4, Traslada[tri, Vector[(0, 0), (0, 1)]]]
crea un polígono como copia trasladada de uno anterior, tri, si la condición es verdadera. Lo deja indefinido en caso contrario.
- Si[ <Condición>, <ObjetoEntonces>, <ObjetoSi no> ]
- Siendo la condición verdadera (true), entonces crea el objeto especificado y el señalado en segundo lugar si no lo fuera -false -.
Atención: Sendos objetos deben ser del mismo tipo. Otro tanto, de indicarse valores.
Ejemplos:
tritras := Si[Distancia[(3, round(10random())), EjeX] > 4, tri, Homotecia[tri, 0.2]]
crea un polígono copiado de uno anterior, tri, si la condición es verdadera y su reducción por factor de escala 0.2 en caso contrario.Si[round(10random()) < 4, 5, 2]
crea un número, dependiente, de valor 5 si el resultado de la condición aleatoria se cumple e igual a 2, si fuera falsa.
Funciones Condicionadas por Tramos
El comando Si y/o los booleanos en general, permiten crear funciones condicionadas por tramos, susceptibles de operar como argumentos de comandos como Derivada, Integral y hasta para, por ejemplo, Interseca.
El ámbito más usual para el empleo de este comando es la Vista Algebraica, como evidencian la mayor parte de los siguientes ejemplos.
Ejemplos:
f(x) = Si[x < 3, cos(x), x^2]
establece la función por tramos cos(x) para x < 3 y x2 para x ≥ 3f(x) = Si[x < 3, sen(x), x^2]
of(x) = (x < 3) sen(x) +(x>=3) x^2
establece la función por tramos tal que será sen(x) para x < 3 y x2 para x ≥ 3
La primera sintaxis desencadena, en la Vista Algebraica la siguiente expresión:
f(x) = \left\{\begin{matrix} sen( x ) \space\space : \space x < 3\\ x^{2}\space\space\space\space\space\space\space\space\space\space : \space \text{si no} \end{matrix}\right.g(x) = Si[0 < x ∧ x<3, x^3]
equivale ag(x)= x^3 ((0<x)&& (x<3))
establece la función por tramos tal que será x3 para x entre 0 y 3 y quedará indefinida para x ≤ 0 o x ≥ 3.*f(x) = Si[x < 3 ∧ x>0, cos(x)]
establece la función cos(x) para x entre 0 y 3 y queda indefinida para x ≥ 3 o 0 ≥ xg(x) = Si[-1 < x < 0, x³ + 1, 0 < x < 2, 1 - x, x² - 5]
f(x) = Si[0 <= x <= 3, sen(x) ]
establece la función que es igual a sen(x) para x entre 0 y 3 y queda indefinida en caso contrariof(x) = Si[x < 3 ∧ x>0, cos(x), x^3]
establece la función cos(x) para x entre 0 y 3 y x3 para x ≥ 3 o 0 ≥ x
h(x) = Si[-1 < x < 0, x³ + 1, 0 < x < 2, 1 - x, x² - 5]
o(-1<x<0)(x^3+1)+(0<x<2)(1-x)+!(-1<x<2)(x^2-5)
establece la función x² - 5, salvo entre -1 y 0, donde resulta x^{3} +1 y entre 0 y 2, donde es 1-x
La primera sintaxis muestra, en la Vista Algebraica, la expresión h(x) = \left\{\begin{matrix} x^{3} + 1 \space\space\space\space:\space\space -1 < x < 0\\ 1 - x\space : \space\space 0 < x < 2\\ x^{2} - 5\space\space : \space\space\text{si no} \end{matrix}\right.u(x) = Si[x < 2, x², x < 5, x, x < 6, (-x) / 7]
corresponde, en la Vista Algebraica, a h(x) = \left\{\begin{matrix} x² \space\space\space\space:\space\space x < 2\\x\space\space\space\space : \space\space x < 5\\ - \frac{x}{7}\space\space : \space\space x < 6 \end{matrix}\right.
Nota:
Ver la sección destinada a valores lógicos o booleanos para identificar los símbolos a emplear en las proposiciones condicionales.
Ver la sección destinada a valores lógicos o booleanos para identificar los símbolos a emplear en las proposiciones condicionales.
La derivada de Si[condición, f(x), g(x)] - como Derivada[Si[x < 3, cos(x), x^2]] - da resultado equivalente a Si[condición, f'(x), g'(x)] -como Si[x < 3, Derivada[cos(x)], Derivada[x^2]] -. No hace evaluación alguna de límites en los puntos críticos. |
Si en Guiones - Scripts
En muchos lenguajes de programación, el Si desencadena acciones:
- Si se cumple determinada condición, se hace cierta cosa y en caso contrario, sa hace otra o no se hace nada.
El Si de GeoGebra opera de otro modo, similar al Si de las hojas o planillas de cálculo:
- Si le asigna a un objeto valores acorde al resultado de determinada condición. Si se cumple, adquiere el valor indicado o el del modelo propuesto. En caso contrario, el de la alternativa planteada. Si no se hubiera previsto la alternativa, conserva el valor que tuviera, de existir previamente, o queda indefinido.
Ejemplo:
De querer asignarle el valor 3 a b cuando a > 2, el modo correcto de formularlo es:
Valor[b, Si[a > 2, 3, b]]
Atención:
Siendo a su vez correcta la sintaxis
b= Si[a > 2, 3, b]
, no lo es la que anida condiciones y los comandos Valor y Si. Nota:
Los argumentos de este comando deben ser Objetos o Comandos de Guiones, no asignaciones.
Así, la sintaxis
Así, la sintaxis
b = Si[a > 1, 2, 3]
es correcta, pero b = 2 o b = 3 no serían aceptables como parámetros.Alternativas de Asignación
Desde GG 4.2, Si... admite una modalidad adicional, más ágil para asignar valor a un objeto, máxime dentro de un script o guion. |
Nota: Así, desde la versión 4.2:
... colorea al existente punto A acorde a la condición, mientras que en versiones previas, no había cambio ni efecto de acción alguno sobre A sino sobre un nuevo punto, copia de A en todo, excepto en el valor de su color compuesto por la asignación de valor condicionada.
Si[ Resto[n, 2] == 0, ColorDinámico[A, 10,20,255], ColorDinámico[A, 255,20,10]]
...... colorea al existente punto A acorde a la condición, mientras que en versiones previas, no había cambio ni efecto de acción alguno sobre A sino sobre un nuevo punto, copia de A en todo, excepto en el valor de su color compuesto por la asignación de valor condicionada.
Ejemplos:
Si[ Resto[n, 2]== 0, Coordenadas[A, n, 0], Coordenadas[A, n, 1]]
cambia las coordenadas de A, sin necesidad de mediar a través del comando Ejecuta- Empleo del comando Ejecuta requerido hasta esta versión, a través de una sintaxis en la que, además, incluso se precisa que los nombres de los comandos se anoten en inglés (y por eso aparecerá SetCoords en lugar de Coordenadas):
Ejecuta[Si[ Resto[n, 2]== 0, {"SetCoords[A, n, 0]"}, {"SetCoords[A, n, 1]"}] ]
Concuerda con la asignación estática:A = Si[ Resto[n, 2]==0, (n, 0), (n, 1) ]
y complementa la dinámica y directa pero acaso menos acorde a expectativas y costumbres como:Coordenadas[A, n, Resto[n, 2]]
En la Vista ComputaciónAlgebraicaSimbólica
En esta vista, el comando obra de modo análogo al descripto, admitiendo literales para operar simbólicamente.
Ejemplo:
Simplifica[Derivada[k x^(Si[round(10 random()) < 7,3 ñ, 2 ó])]]
ofrece expresiones acorde a el aleatorio resultado señalado para el exponente que, además, incluye literales. Como las siguientes:Ver también el video tutorial que, en italiano, ilustra el empleo del comando exclusivamente para determinar el dominio de una función o definirlas por tramos. |