Diferencia entre revisiones de «Comando Si»

De GeoGebra Manual
Saltar a: navegación, buscar
m (Texto reemplazado: «;([a-zA-Z0-9]*)\[(.*)\]» por «;$1($2)»)
 
(No se muestran 4 ediciones intermedias de 2 usuarios)
Línea 1: Línea 1:
<noinclude>{{Manual Page|version=5.0}}</noinclude>{{command|logical|cas=true|Si}};Si( <Condición>, <Objeto<sub><small>''Entonces''</small></sub>> ):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'').
+
<noinclude>{{Manual Page|version=5.0}}</noinclude>{{command|logical|cas=true|Si}}
{{Examples|1=<div>
 
*'''<code>Si[round(10random()) < 4, 5]</code>''' crea un número dependiente, de valor ''5'' si el resultado de la condición aleatoria se cumple e ''indefinido'' si fuera falsa.
 
*'''<code>tri := Si[Distancia[(round(10random()), round(10random())), EjeX] > 4, Polígono[(round(10random()), 3), (0, 2), 3]]</code>''' crea un polígono triangular cuando la condición resulta verdadera, quedando ''indefinido'' si fuera falsa.
 
*'''tra := <code>Si[Distancia[(3, round(10random())), EjeX] > 4, Traslada[tri, Vector[(0, 0), (0, 1)]]]</code>''' crea un polígono como copia trasladada de uno anterior, ''tri'',  si la condición es verdadera. Lo deja ''indefinido'' en caso contrario.</div>}}
 
;Si( <Condición>, <Objeto<sub><small>''Entonces''</small></sub>>, <Objeto<sub><small>''Si no''</small></sub>>  ):Siendo la condición  verdadera (''true''), ''entonces'' crea el objeto especificado y el señalado en segundo lugar ''si no'' lo fuera  -''false'' -.
 
{{OJo|1=Sendos objetos '''deben''' ser del mismo tipo. Otro tanto, de indicarse valores.}}
 
{{Examples|1=<div>
 
*'''<code>tritras := Si[Distancia[(3, round(10random())), EjeX] > 4, tri, [[Comando Homotecia|Homotecia]]'''['''tri, 0.2]]</code>''' 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.
 
*'''<code>Si[round(10random()) < 4, 5, 2]</code>''' 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.</div>}}
 
==[[Funciones]] Condicionadas por Tramos==
 
El [[Comandos|comando]] ''Si'' y/o los ''booleanos'' en general, permiten crear funciones condicionadas por tramos, susceptibles de operar como argumentos de comandos como [[Comando Derivada|Derivada]], [[Comando Integral|Integral]] y hasta para, por ejemplo, [[Comando Interseca|Interseca]].<br>
 
El ámbito más usual para el empleo de este [[Comandos|comando]] es la [[Vista Algebraica]], como evidencian la mayor parte de los siguientes ejemplos.
 
{{Examples|1=<div>
 
*'''<code>f(x) = Si[x < 3, cos(x), x^2]</code>''' establece la [[Funciones|función]] por tramos ''cos(x)'' para ''x < 3'' y ''x<sup>2</sup>'' para ''x ≥ 3''
 
*'''<code>f(x) = Si[x < 3, sen(x), x^2]</code>''' o '''<code>f(x) = (x < 3) sen(x) +(x>=3) x^2 </code>''' establece la [[Funciones|función]] por tramos tal que será ''sen(x)'' para ''x < 3'' y ''x<sup>2</sup>'' para ''x ≥ 3''<br><br>La primera sintaxis desencadena, en la [[Vista Algebraica]] la siguiente expresión:<br><math>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. </math><br><br>
 
*'''<code>g(x) = Si[0 < x ∧ x<3, x^3]</code>''' equivale a '''<code>g(x)= x^3 ((0<x)&& (x<3)) </code>''' establece la [[Funciones|función]] por tramos tal que será ''x<sup>3</sup>'' para x entre 0 y 3  y quedará indefinida para ''x ≤ 0'' o ''x ≥ 3''.*'''<code>f(x) = Si[x < 3 ∧ x>0, cos(x)]</code>'''  establece la función ''cos(x)'' para x entre 0 y 3 y queda indefinida para ''x ≥ 3'' o ''0 ≥ x''
 
*<code>g(x) = Si[-1  <  x  <  0, x³ + 1, 0  <  x  <  2, 1 - x, x² - 5]</code>   
 
*'''<code>f(x) = Si[0 <= x <= 3, sen(x) ]</code>''' establece la función que es igual a ''sen(x)'' para x entre 0 y 3 y queda indefinida en caso contrario
 
*'''<code>f(x) = Si[x < 3 ∧ x>0, cos(x), x^3]</code>'''  establece la función ''cos(x)'' para x entre 0 y 3 y  ''x<sup>3</sup>'' para ''x ≥ 3'' o ''0 ≥ x''
 
  
*<code>h(x) = Si[-1  <  x  <  0, x³ + 1, 0  <  x  <  2, 1 - x, x² - 5]</code>   o <code> (-1<x<0)(x^3+1)+(0<x<2)(1-x)+!(-1<x<2)(x^2-5)</code> establece la [[Funciones|función]] <math>x² - 5</math>, salvo entre -1 y 0, donde resulta <math>x^{3} +1</math> y entre 0 y 2, donde es  <math>1-x</math><br><br>La primera sintaxis muestra, en la [[Vista Algebraica]], la expresión <math>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. </math><br>
+
; Si( <Condición>, <Entonces> )
*'''<code>u(x) = Si[x < 2, x², x < 5, x, x < 6, (-x) / 7]</code>''' corresponde, en la [[Vista Algebraica]], a <math>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. </math> <!--
+
: Da por resultado una copia del objeto ''Entonces'' si la "Condición" se verifica, y un objeto indefinido, si la condición no se verifica.
*'''<code>f(x) = Si[-1 <  x  < 0, x³ + 1, < < 2, 1 - x, x² - 5]'''</code>--></div>}}
+
:{{Examples|1=<div>
{{Note|1=<br>Ver la sección destinada a [[Valores Lógicos|valores lógicos o ''booleanos'']] para identificar los símbolos a emplear en las proposiciones condicionales.}}
+
:*Sea ''n'' = 3. <code><nowiki>Si(n==3, x + y = 4)</nowiki></code> da por resultado la recta ''x'' + ''y'' = 4, ya que la condición sobre el número ''n'' se verifica.
{{Attention|1=La derivada de '''Si[condición, f(x), g(x)]''' - como '''<code>[[Comando Derivada|Derivada]][Si[x < 3, cos(x), x^2]]</code>''' - da resultado equivalente a '''Si[condición, f'(x), g'(x)]''' -como '''<code>Si[x < 3, [[Comando Derivada|Derivada]][cos(x)],  [[Comando Derivada|Derivada]][x^2]]</code>''' -. No hace evaluación alguna de límites en los puntos críticos.}}
+
:*Sea ''n'' = 4. <code><nowiki>Si(n==3, x + y = 4)</nowiki></code> crea un objeto ''indefinido'', porque la condición sobre el número ''n'' no se verifica .</div>}}
 +
; Si( <Condición>, <Entonces>, <Si no> )
 +
: Da por resultado una copia del objeto ''Entonces'' si la "Condición" se verifica, y una copia del objeto ''Si no'' si la condición no se verifica. '''Ambos objetos ''deben'' ser del mismo tipo.'''
 +
:{{example|1= Sea ''n'' un número. <code><nowiki>Si(n==3, x + y = 4, x - y = 4)</nowiki></code> da por resultado la recta ''x'' + ''y'' = 4 cuando ''n'' = 3, y la recta ''x'' - ''y'' = 4 para todo ''n'' distinto de 3.}}
 +
; Si( <Condición 1>, <Entonces 1>, <Condición 2>, <Entonces 2>, ... , <Si no (opcional)> )
 +
: Da por resultado una copia del objeto ''Entonces 1'' si la "Condición 1" se verifica, "Entonces 2" si la segunda condición se verifica, etc. Si ninguna de las condiciones se verifica, entonces da por resultado el objeto indicado en "Si no". Si este último parámetro no se completa, el comando devuelve un objeto indefinido.
 +
:{{example| 1=<code>Si(a ≟ 1, "Matías", a ≟ 2,"Juan", a ≟ 3, "Viviana", "Alejandro")</code> Cuando ''a''=1 da por resultado el texto "Matías", para ''a''=2' da por resultado "Juan", para ''a''=3, "Viviana" y para todos los demás valores de ''a'' da por resultado "Alejandro".}}
  
=='''Si''' en Guiones - ''Scripts''==
+
===Funciones definidas por tramos===
En muchos lenguajes de programación, el '''Si''' desencadena ''acciones'':
+
:El comando '''Si''' puede ser utilizado para crear funciones definidas por tramos. Tales funciones pueden ser utilizadas como argumentos en cualquier otro comando que acepte funciones, tales como [[Comando Derivada|Derivada]], [[Comando Integral|Integral]], y [[Comando Interseca|Interseca]].
*''Si'' se cumple determinada condición, ''se hace'' cierta cosa y en caso contrario, ''sa hace otra'' o no se ''hace'' nada.
+
:{{Examples|1=<div>
El '''Si''' de '''''GeoGebra''''' opera de otro modo, similar al '''Si''' de las hojas o planillas de cálculo:
+
:* <code>f(x) = Si(x < 3, sen(x), x^2)</code> da por resultado una función definida por tramos que asigna ''sen(x)'' para ''x < 3'' y ''x<sup>2</sup>'' para ''x ≥ 3''.
*<big>''Si''</big> ''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'''''.<br>
+
:* <code>f(x) = Si(0 <= x <= 3, sen(x))</code> da por resultado una función que asigna ''sen(x)'' para x entre 0 y 3 (y no está definida para otros valores).
{{Example|1=<div>
+
::{{note|1= Una sintáxis más corta para este último caso es <code>f(x) = sen(x), 0 <= x <= 3</code>}}
De querer asignarle el valor 3  a ''b'' cuando ''a > 2'', el modo correcto de formularlo es:
+
:* <code>f(x) =Si(x<-1,,-1<=x<=1,1,-x²+2)</code> da por resultado la función definida por tramos <math>f(x)  = \left\{\begin{matrix}{} x^{2}& : &x < -1\\ 1& :& -1 ≤ x ≤ 1\\ -x^{2} + 2& : &\text{en caso contrario} \end{matrix}\right </math>.
*'''<code>[[Comando Valor|Valor]][b,  Si[a > 2, 3, b]]</code>'''</div>}}
+
</div>}}
{{OJo|1=<div>Siendo a su vez correcta la sintaxis '''<code>b= Si[a > 2, 3, b]</code>''', no lo es la que  ''anida'' condiciones y los comandos '''Valor'''  y '''Si'''.</div>}}
 
{{note|1=<div>
 
Los argumentos de este comando deben ser [[Objetos]] o [[Comandos de Guiones - Scripting|Comandos de Guiones]], no asignaciones.<br>Así, la sintaxis <code><nowiki>b = Si[a > 1, 2, 3]</nowiki></code> es correcta, pero ''b = 2'' o ''b = 3'' no serían aceptables como parámetros.</div>}}
 
  
==Alternativas de Asignación==
 
{{Attention|1=<small>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.</small>}}
 
{{Note|1=Así, desde la versión 4.2:<br>'''<code>Si[ Resto[n, 2] == 0, ColorDinámico[A, 10,20,255], ColorDinámico[A, 255,20,10]]</code>'''...<br>... ''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.}}
 
{{Examples|1=<div>
 
*'''<code>Si[  [[Comando Resto|Resto]][n, 2]== 0, [[Comando Coordenadas|Coordenadas]][A, n, 0], [[Comando Coordenadas|Coordenadas]][A, n, 1]]</code>''' cambia las coordenadas de '''''A''''', sin necesidad de ''mediar'' a través del comando [[Comando Ejecuta|Ejecuta]] <hr>
 
*Empleo del comando [[Comando Ejecuta|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'''''):
 
**'''<code>[[Comando Ejecuta|Ejecuta[Si[ Resto[n, 2]== 0, {"SetCoords[A, n, 0]"}, {"SetCoords[A, n, 1]"}] ]]]</code>'''<br>Concuerda con la asignación estática:<br>'''<code>A = Si[ [[Comando Resto|Resto]][n, 2]==0,  (n, 0),  (n, 1) ]</code>''' y complementa la dinámica y directa pero acaso menos acorde a expectativas y costumbres como:<br>'''<code>[[Comando Coordenadas|Coordenadas]][A, n, [[Comando Resto|Resto]][n, 2]]</code>'''</div>}}
 
  
===[[File:Menu_view_cas.png|link=Vista CAS|24px]] [[Comandos Específicos CAS (Cálculo Avanzado)|En]] la [[Vista CAS|Vista C<sub><small>omputación</small></sub>A<sub><small>lgebraica</small></sub>S<sub><small>imbólica</small></sub>]]===
+
:{{notes|1=<div>
En esta [[Vista CAS|vista]], el comando obra de modo análogo al descripto, admitiendo literales para operar simbólicamente.
+
:* La derivada de  ''Si(condición, f(x), g(x))'' da por resultado ''Si(condición, f'(x), g'(x))''. No realiza ningún tipo de evaluación en los puntos de cambio de definición.
{{Example|1=<br>'''<code>Simplifica[Derivada[k x^(Si[round(10 random()) < 7,3 ñ, 2 ó])]]</code>''' ofrece expresiones acorde a el aleatorio resultado señalado para el exponente que, además, incluye literales. Como las siguientes:<br>
+
:* Ver la sección: [[Valores Lógicos]] para ver los símbolos que se utilizan en proposiciones condicionales.</div>}}
:*[[File:Si2.PNG]]
+
 
:*[[File:Si1.PNG]]
+
==El comando Si en guiones==
}}
+
:El comando '''Si''' puede ser utilizado en guiones (scripts) para desencadenar acciones bajo ciertas condiciones.
<small>{{Attention|1=Ver también el [http://youtu.be/GlnsoceZp-s video tutorial] que, en italiano, ilustra el empleo del comando exclusivamente para determinar el dominio de una [[Funciones|función]] o definirlas por tramos.}}</small>
+
:{{example|1= Sea ''n'' un número, y ''A'' un punto. El comando <code>Si(Resto(n, 7) == 0, Coordenadas(A, n, 0), Coordenadas(A, n, 1))</code> modifica las coordenadas del punto ''A'' de acuerdo a la condición dada. En este caso sería más sencillo utilizar  <code> Coordenadas(A, n, Si(Resto(n, 7) == 0,0,1))</code>.}}
 +
:{{note|1= Los argumentos de '''Si''' deben ser Objetos o [[Comandos de Guiones - Scripting]], no asignaciones. La sintaxis <code><nowiki>b = Si(a > 1, 2, 3)</nowiki></code> es correcta, pero ''b = 2'' o ''b = 3'' no serían aceptado como parámetros del comando '''Si'''.}}

Revisión actual del 14:21 4 abr 2019



Si( <Condición>, <Entonces> )
Da por resultado una copia del objeto Entonces si la "Condición" se verifica, y un objeto indefinido, si la condición no se verifica.
Ejemplos:
  • Sea n = 3. Si(n==3, x + y = 4) da por resultado la recta x + y = 4, ya que la condición sobre el número n se verifica.
  • Sea n = 4. Si(n==3, x + y = 4) crea un objeto indefinido, porque la condición sobre el número n no se verifica .
Si( <Condición>, <Entonces>, <Si no> )
Da por resultado una copia del objeto Entonces si la "Condición" se verifica, y una copia del objeto Si no si la condición no se verifica. Ambos objetos deben ser del mismo tipo.
Ejemplo: Sea n un número. Si(n==3, x + y = 4, x - y = 4) da por resultado la recta x + y = 4 cuando n = 3, y la recta x - y = 4 para todo n distinto de 3.
Si( <Condición 1>, <Entonces 1>, <Condición 2>, <Entonces 2>, ... , <Si no (opcional)> )
Da por resultado una copia del objeto Entonces 1 si la "Condición 1" se verifica, "Entonces 2" si la segunda condición se verifica, etc. Si ninguna de las condiciones se verifica, entonces da por resultado el objeto indicado en "Si no". Si este último parámetro no se completa, el comando devuelve un objeto indefinido.
Ejemplo: Si(a ≟ 1, "Matías", a ≟ 2,"Juan", a ≟ 3, "Viviana", "Alejandro") Cuando a=1 da por resultado el texto "Matías", para a=2' da por resultado "Juan", para a=3, "Viviana" y para todos los demás valores de a da por resultado "Alejandro".

Funciones definidas por tramos

El comando Si puede ser utilizado para crear funciones definidas por tramos. Tales funciones pueden ser utilizadas como argumentos en cualquier otro comando que acepte funciones, tales como Derivada, Integral, y Interseca.
Ejemplos:
  • f(x) = Si(x < 3, sen(x), x^2) da por resultado una función definida por tramos que asigna sen(x) para x < 3 y x2 para x ≥ 3.
  • f(x) = Si(0 <= x <= 3, sen(x)) da por resultado una función que asigna sen(x) para x entre 0 y 3 (y no está definida para otros valores).
Nota: Una sintáxis más corta para este último caso es f(x) = sen(x), 0 <= x <= 3
  • f(x) =Si(x<-1,x²,-1<=x<=1,1,-x²+2) da por resultado la función definida por tramos f(x) = \left\{\begin{matrix}{} x^{2}& : &x < -1\\ 1& :& -1 ≤ x ≤ 1\\ -x^{2} + 2& : &\text{en caso contrario} \end{matrix}\right .


Notas:
  • La derivada de Si(condición, f(x), g(x)) da por resultado Si(condición, f'(x), g'(x)). No realiza ningún tipo de evaluación en los puntos de cambio de definición.
  • Ver la sección: Valores Lógicos para ver los símbolos que se utilizan en proposiciones condicionales.

El comando Si en guiones

El comando Si puede ser utilizado en guiones (scripts) para desencadenar acciones bajo ciertas condiciones.
Ejemplo: Sea n un número, y A un punto. El comando Si(Resto(n, 7) == 0, Coordenadas(A, n, 0), Coordenadas(A, n, 1)) modifica las coordenadas del punto A de acuerdo a la condición dada. En este caso sería más sencillo utilizar Coordenadas(A, n, Si(Resto(n, 7) == 0,0,1)).
Nota: Los argumentos de Si deben ser Objetos o Comandos de Guiones - Scripting, no asignaciones. La sintaxis b = Si(a > 1, 2, 3) es correcta, pero b = 2 o b = 3 no serían aceptado como parámetros del comando Si.
© 2024 International GeoGebra Institute