Diferencia entre revisiones de «Comando Si»

De GeoGebra Manual
Saltar a: navegación, buscar
(Ajustando a la versión en inglés)
(Ajustando a la versión en inglés)
Línea 12: Línea 12:
 
; Si( <Condición 1>, <Entonces 1>, <Condición 2>, <Entonces 2>, ... , <Si no (opcional)> )
 
; 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.
 
: 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>If(a ≟ 1, "Matthew", a ≟ 2,"Larry", a ≟ 3, "Vivian", "Alex")</code> When ''a''=1 this returns the text "Matthew", for ''a''=2' it returns "Larry", for ''a''=3 "Vivian" and for all other values of ''a'' it yields "Alex".}}
+
:{{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".}}
  
===Conditional Functions===
+
===Funciones definidas por tramos===
:The '''If''' command can be used to create conditional functions. Such conditional functions may be used as arguments in any command that takes a function argument, such as [[Derivative Command|Derivative]], [[Integral Command|Integral]], and [[Intersect Command|Intersect]].
+
: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]].
 
:{{Examples|1=<div>  
 
:{{Examples|1=<div>  
:* <code>f(x) = If(x < 3, sin(x), x^2)</code> yields a piecewise function that equals ''sin(x)'' for ''x < 3'' and ''x<sup>2</sup>'' for ''x ≥ 3''.
+
:* <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''.
:* <code>f(x) = If(0 <= x <= 3, sin(x))</code> yields a function that equals ''sin(x)'' for x between 0 and 3 (and undefined otherwise).
+
:* <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).
::{{note|1= A shorter syntax for this is <code>f(x) = sin(x), 0 <= x <= 3</code>}}
+
::{{note|1= Una sintáxis más corta para este último caso es <code>f(x) = sen(x), 0 <= x <= 3</code>}}
:* <code>f(x) =If(x<-1,x²,-1<=x<=1,1,-x²+2)</code> yields the piecewise function <math>f(x)  = \left\{\begin{matrix}{} x^{2}& : &x < -1\\ 1& :& -1 ≤ x ≤ 1\\ -x^{2} + 2& : &\text{otherwise} \end{matrix}\right </math>.
+
:* <code>f(x) =Si(x<-1,x²,-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>.
 
</div>}}
 
</div>}}
  
  
 
:{{notes|1=<div>
 
:{{notes|1=<div>
:* Derivative of ''If(condition, f(x), g(x))'' gives ''If(condition, f'(x), g'(x))''. It does not do any evaluation of limits at the critical points.
+
:* 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.
:* See section: [[Boolean values]] for the symbols used in conditional statements.</div>}}
+
:* Ver la sección: [[Valores Lógicos]] para ver los símbolos que se utilizan en proposiciones condicionales.</div>}}
  
==If Command in Scripting==
+
==El comando Si en guiones==
:'''If''' command can be used in scripts to perform different actions under certain conditions.
+
:El comando '''Si''' puede ser utilizado en guiones (scripts) para desencadenar acciones bajo ciertas condiciones.
:{{example|1= Let ''n'' be a number, and ''A'' a point. The command <code>If(Mod(n, 7) == 0, SetCoords(A, n, 0), SetCoords(A, n, 1))</code> modifies the coordinates of point ''A'' according to the given condition. In this case it would be easier to use  <code> SetCoords(A, n, If(Mod(n, 7) == 0,0,1))</code>.}}
+
:{{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= Arguments of '''If''' must be Objects or [[Scripting Commands]], not assignments. Syntax <code><nowiki>b = If(a > 1, 2, 3)</nowiki></code> is correct, but ''b = 2'' or ''b = 3'' would not be accepted as parameters of '''If'''.}}
+
:{{note|1= Los argumentos de '''Si''' deben ser Objetos o [[Comandos de guión]], not 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'''.}}
 
 
 
 
 
 
 
 
;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'').
 
{{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>
 
*'''<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> <!--
 
*'''<code>f(x) = Si[-1  <  x  < 0, x³ + 1, 0 <  x  <  2, 1 - x, x² - 5]'''</code>--></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.}}
 
{{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.}}
 
 
 
=='''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:
 
*<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>
 
{{Example|1=<div>
 
De querer asignarle el valor 3  a ''b'' cuando ''a > 2'', el modo correcto de formularlo es:
 
*'''<code>[[Comando Valor|Valor]][b,  Si[a > 2, 3, b]]</code>'''</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>]]===
 
En esta [[Vista CAS|vista]], el comando obra de modo análogo al descripto, admitiendo literales para operar simbólicamente.
 
{{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>
 
:*[[File:Si2.PNG]]
 
:*[[File:Si1.PNG]]
 
}}
 
<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>
 

Revisión del 14:15 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 guión, not 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