Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-08-2007
senda senda is offline
Miembro
 
Registrado: sep 2006
Posts: 48
Poder: 0
senda Va por buen camino
Operador 'and'

Hola, ¿alguien sabe cómo de listo es el operador 'and' de Delphi? Me explico, trabajo con Delphi 7 y quería saber en qué orden se ejecutan las instrucciones cuando hay un 'and' por medio. Es decir:
Código:
if A and B then
C
else
D
Primero se ejecuta A, y luego (esto es lo que quiero saber) si A es falso ¿se ejecuta B o se pasa directamente a D?
Responder Con Cita
  #2  
Antiguo 17-08-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por senda Ver Mensaje
Primero se ejecuta A, y luego (esto es lo que quiero saber) si A es falso ¿se ejecuta B o se pasa directamente a D?
Hay una directiva llamada $B, si $B es $B-, eso significara que esto se analizara de la manera "perezosa", osea que tomando tu ejemplo, si A no cumple la condición, pasara a ejecutar D y no tomara en cuenta a B. Si $B es igual a $B+ entonces hara lo contrario.

Nota: $B por defecto es negativo.

Cita:
Empezado por Ayuda de Delphi
Boolean short-circuit evaluation

Type Switch
Syntax {$B+} or {$B-}
{$BOOLEVAL ON} or {$BOOLEVAL OFF}
Default {$B-}
{$BOOLEVAL OFF}
Scope Local
Remarks

The $B directive switches between the two different models of code generation for the and and or Boolean operators.

In the {$B+} state, the compiler generates code for complete Boolean expression evaluation. This means that every operand of a Boolean expression built from the and and or operators is guaranteed to be evaluated, even when the result of the entire expression is already known.
In the {$B-} state, the compiler generates code for short-circuit Boolean expression evaluation, which means that evaluation stops as soon as the result of the entire expression becomes evident in left to right order of evaluation.

For further details, see the section "Boolean operators" in the Object Pascal Language Guide.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/

Última edición por jhonny fecha: 17-08-2007 a las 20:27:42.
Responder Con Cita
  #3  
Antiguo 17-08-2007
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Si tienes desactivada la opción Complete boolean eval en las opciones del compilador (compiler) de tu proyecto, estas se evaluan tal que si A es falso ya no se evalua el valor de B...


Saludos...


Edit: Veo que por n-sima vez contestaron antes que yo...
Responder Con Cita
  #4  
Antiguo 17-08-2007
senda senda is offline
Miembro
 
Registrado: sep 2006
Posts: 48
Poder: 0
senda Va por buen camino
Muchas gracias maeyanes xq el tema de las directivas {$B+} y {$B-} no me había quedado nada claro.
Responder Con Cita
  #5  
Antiguo 18-08-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por senda Ver Mensaje
xq el tema de las directivas {$B+} y {$B-} no me había quedado nada claro.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #6  
Antiguo 18-08-2007
Avatar de b3nshi
b3nshi b3nshi is offline
Miembro
 
Registrado: feb 2005
Ubicación: Tucuman - Argentina
Posts: 164
Poder: 20
b3nshi Va por buen camino
Mmm... la verdad... la explicacion q te dieron son muy tecnicas, quizas deberias empezar por conocer q son operadores... Existen diferentes operadores, el AND, OR, not, ==, <> son operadores logicos o booleanos.

En cuanto al funcionamiento del mismo es simple...

Solo te voy a explicar, de una forma simple el AND y el OR... luego puedes buscar mas informacion en internet...

Veamos... cuando nosotros usamos estructuras condicionales (if, if else, while, case) estamos haciendo preguntas... si las respuestas son afirmativas entonces se procede a realizar algo de lo contrario no se hace nada o se realiza otra cosa... es decir:

SI (condicion) ES
verdadera
SINO
falsa

Traducido al delphi:

Código Delphi [-]
if (condicion) then
begin
//Si es verdadero hago esto
end
else
begin
//Si no es verdadero hago esto
end;

Los operadores AND y OR aparecen en la condicion...

Cuando hacemos una pregunta con AND,(¿se cumple esto Y Esto?) si una de las condiciones es falsa, entonces lo logico sera dejar de preguntar, ya q necesitamos q se cumpla todo, por lo q no es conveniente habilitar la opcion: Complete boolean eval.
o al menos, no para casos sensillos como este.
En el caso del OR, (¿Se cumple esto O esto?) si se sigue preguntando en el caso de q una no se cumpla, y solo hasta encontrar una verdadera ya q solo necesitas q se cumpla una u otra para q la sintaxis sea verdadera...

Esto lo puedes ver mejor en un cuadro de VERDAD, creo q asi se llama:
AND:
cond1---cond2---res
--V-------V------V
--V-------F------F
--F-------V------F
--F-------F------F

OR:
cond1 cond2 res
--V-------V------V
--V-------F------V
--F-------V------V
--F-------F------F

Los cuadros me los invente porq sinceramente no me los acuerdo... pero creo q eran asi...

Espero te sirva! Y perdon si ya sabias todo esto

{Saludos}

Última edición por b3nshi fecha: 18-08-2007 a las 00:20:59.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problemas con Operador Or lucasarts_18 SQL 14 22-07-2006 03:23:21
Que pasa con el operador @? Turboleta Varios 3 12-01-2006 20:50:35
Operador IS Aztaroth C++ Builder 8 04-08-2004 14:44:27
Operador *= febito SQL 1 09-06-2004 21:26:43
Operador @ Tanix PHP 2 27-10-2003 10:07:14


La franja horaria es GMT +2. Ahora son las 03:53:45.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi