Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Corto-circuito, VerdaderoFalso, Interpretes
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Corto-circuito, VerdaderoFalso, Interpretes 
 
Hola!.

Estuve viendo una cosa con el interprete de Python y luego hice el mismo programa en Gambas.
En este ejemplo se usa los operadores and y or.

Recordemos que And para que sea verdadero sus dos operadores deben ser verdaderos.
Y en el caso de  Or , solo en el caso de que sea Falso sus dos operadores, el resultado sera Falso.
El resto es verdadero.

De acuerdo.

Suponer que tenemos dos expresiones que tenemos que evaluar y dependiendo del resultado hará una cosa u otra.

A - Falso OR Verdadero
B - Verdadero OR Verdadero
C - Verdadero AND Verdadero
D - Falso AND Verdadero
 
¿ Que ocurre en los distintos casos ?.
 
A: Se necesita saber si la ultima expresión es verdadera
B: Sabemos que sera verdadera. ¿ Necesitamos terminar de evaluar la segunda expresión ?. No. Sabemos que es verdadera con la primera.
C: Volvemos a necesitar en el caso de un And las dos expresiones.
D: En este caso como el primer operador o (expresión completa) es falso, sabremos siempre que lo que venga detrás dará igual, el primer operador ya
    ha determinado el resultado.

Bien. En el interprete Python no se preocupa de evaluar la expresión siguiente si al evaluar la primera ya le esta diciendo el resultado de la expresión en total.
No va a variar.

¿ Que ocurre ?. Que si sabe el resultado al comienzo, no se se ejecuta lo que haya detrás, (una llamada a una función por ejemplo dentro
de la expresión a evaluar, que nunca sera llamada).

En el caso de gambas no es así. Necesita evaluar toda la expresión completa.

Ejemplo en gambas y su salida:
Public Sub Main()

If Falso("gatos") Or Verdadero("perros") Then Print "Paso 1"
If Verdadero("hola") Or Verdadero("adios") Then Print "Paso 2"
If Verdadero("Spam") And Verdadero("queso") Then Print "Paso 3"
If Falso("rojo") And Verdadero("azul") Then Print "Paso 4"

End

Public Function Verdadero(mensaje As String) As Boolean  
  Print mensaje
  Return True  
End

Public Function Falso(mensaje As String) As Boolean  
  Print mensaje
  Return False  
End
 


Citar:

gatos
perros
Paso 1
hola
adios
Paso 2
Spam
queso
Paso 3
rojo
azul


Ejemplo en Python y su salida:
# Ejemplo de Corto-circuito
# VerdaderoFalso

def VerdaderoFizz(mensaje):
    print (mensaje)
    return True


def FalsoFizz(mensaje):
    print (mensaje)
    return False


if FalsoFizz('Gatos') or VerdaderoFizz('Perros'):
    print ('Paso 1')

if VerdaderoFizz('Hola') or VerdaderoFizz('Adios'):
    print ('Paso 2')

if VerdaderoFizz('Spam') and VerdaderoFizz('Queso'):
    print ('Paso 3')

if FalsoFizz('Rojo') and VerdaderoFizz('Azul'):
    print ('Paso 4')
 


Citar:

Gatos
Perros
Paso 1
Hola
Paso 2
Spam
Queso
Paso 3
Rojo


Una vez un compañero de nuestra comunidad me dijo que para comprender un lenguaje además de conocer sus virtudes,
debía conocer también sus defectos o carencias.

Lo cierto es que cuesta asimilar cosas nuevas.Luego esto se traduce en mucho tiempo para entenderlo y asimilarlo para llevarlo a cabo.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Corto-circuito, VerdaderoFalso, Interpretes 
 
Shell escribió: [Ver mensaje]


En el caso de gambas no es así. Necesita evaluar toda la expresión completa.

...

Una vez un compañero de nuestra comunidad me dijo que para comprender un lenguaje además de conocer sus virtudes,
debía conocer también sus defectos o carencias.


Bien, en este caso el problema es que no has encontrado la sintaxis correcta para los cortocircuitos, porque sí que existe en gambas.

Cambia el bloque de condiciones por esto:

    If Falso("gatos") Or If Verdadero("perros") Then Print "Paso 1"
    If Verdadero("hola") Or If Verdadero("adios") Then Print "Paso 2"
    If Verdadero("Spam") And If Verdadero("queso") Then Print "Paso 3"
    If Falso("rojo") And If Verdadero("azul") Then Print "Paso 4"


La sintaxis para los cortocircuitos es "And If", "Or If", etc. ¡Comprueba los resultados!  

Y aquí la documentación:

http://gambasdoc.org/help/lang/if?es&v3

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Corto-circuito, VerdaderoFalso, Interpretes 
 
Jesús:

Gracias, es idéntico!.

Cuando pasas de un lenguaje a otro, quieres hacerlo idéntico al otro, no siempre se puede.
Hay que buscar una alternativa, aunque no sea la misma sintaxis.Hay cosas que se complica bastante
para convertirlas de uno al otro. Y es mejor pensarlo dos veces.

Con la opción de código:
¿ Que debo hacer la próxima vez que quiera mostrar en el mensaje un código en Python para que podamos verlo lo mejor posible en la comunidad ?.
¿ Cual es la mejor ?. Bash,C,gambas,Xml..

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Corto-circuito, VerdaderoFalso, Interpretes 
 
Shell escribió: [Ver mensaje]


Con la opción de código:
¿ Que debo hacer la próxima vez que quiera mostrar en el mensaje un código en Python para que podamos verlo lo mejor posible en la comunidad ?.
¿ Cual es la mejor ?. Bash,C,gambas,Xml..

Saludos


Para que el código de cualquier lenguaje salga coloreado con la sintaxis correcta, sólo hay que cambiar "gambas" por el nombre del lenguaje apropiado en minúsculas:

[code linenumbers=false syntax=gambas]
[code linenumbers=false syntax=python], etc

Algún día haré que se pueda escoger desde un desplegable... pero me tienen que entrar ganas, jaja!


Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Corto-circuito, VerdaderoFalso, Interpretes 
 
jguardon escribió: [Ver mensaje]


Algún día haré que se pueda escoger desde un desplegable... pero me tienen que entrar ganas, jaja!


No tenia ni idea que se pudiera hacer con cualquier lenguaje.

Lo cierto es que no me dio nunca en gambas por usar un if detrás de otro , siempre estuve usando el IF, ELSE-IF,ELSE  pero un IF detrás de otro,
no lo había visto, es que hasta parece rara la expresión. Siempre se aprende algo nuevo.

Es muy probable que este post le valga a los compañeros, pero tiene un titulo raro. Entonces su nombres es corto-circuito, que nombres, como para
saber lo que es a la primera.  

Gracias por la doble información.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Corto-circuito, VerdaderoFalso, Interpretes 
 
Shell:

La verdad es que estamos un poco "viciados" con el antiguo BASIC, pero gambas tiene muchas más opciones y ordenes.
A mi me gusta visitar de vez en cuando esta página de la documentación: http://www.gambasdoc.org/help/lang?v3, siempre descubro cosas nuevas.

Saludos

Julio

Nota:
Hoy he descubierto esta orden Inline Arrays , y es muy parecido a las listas de python

Public Sub Form_Open()
  Public Sub Form_Open()
  
  Dim valor As Variant[] = ["2.4", [3, 2.4], 3.2]
  
  Print valor, valor[0], valor[1], valor[2]
  
  Print valor[1][0], valor[1][1]
  
End


¿guay ehhhh?
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
última edición por jsbsan el Domingo, 14 Julio 2013, 20:33; editado 1 vez 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Corto-circuito, VerdaderoFalso, Interpretes 
 
jsbsan escribió: [Ver mensaje]

Hoy he descubierto esta orden Inline Arrays , y es muy parecido a las listas de python


Eso es el array "normal" que ya todos conocemos. Tenemos los Native Arrays que siguen siendo lo mismo, pero con el tipo de dato predefinido para sus elementos. En realidad lo único que varía es la forma de llenarlos de datos, porque sigue siendo necesario declararlos como un tipo de array nativo. Es cierto que es lo más parecido a las listas de python, así podremos sacar más partido a ciertas formas de programar más "pythónicas".

El otro tipo de array es el Estático o embebido, donde se declaran las dimensiones en el identificador, y es bastante diferente al nativo por varios motivos. Ver al final de la página de documentación:

http://www.gambasdoc.org/help/cat/arraydecl?es&v3

Bueno, que la cosa se desvía del tema inicial, saludos!
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Corto-circuito, VerdaderoFalso, Interpretes 
 
Julio y Jesús:

Lo cierto es que recuerda mucho a las listas de Python.

Hay algo que comentare en otro post para no salirme de temática.
Diccionarios.

Voy a buscar antes y luego escribo el post.

Olvidaba. ¿ Son distintos los índices en ingles y español en la documentación online de gambas ?.
(¿ Esta mas al día ?. Quiero decir)

http://www.gambasdoc.org/help/lang?es&v3

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Lunes, 15 Julio 2013, 08:42; editado 1 vez 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Versiones De Largo Plazo Y Corto Plazo ? Shell Mundo Linux 1 Viernes, 28 Diciembre 2018, 21:35 Ver último mensaje
tincho
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron