Operadores lógicos



Pode ocorrer de um comando precisar receber mais de uma resposta para tomar uma decisão.


A linguagem C++ oferece três operadores lógicos que são:



&&

significa: E

||

significa: OU

!

significa: NÃO



A sintaxe é:


expressão_1 && expressão_2


resulta verdadeiro somente se ambas as expressões forem verdadeiras;


expressão_1 || expressão_2


se pelo menos uma das expressões for verdadeira, o resultado será verdadeiro;


! expressão


o resultado será verdadeiro somente se a expressão for falsa.


Como os dois primeiros operadores avaliam duas expressões, são classificados como binários; já o último, unário.


Nota: O tipo TShiftState é usado para eventos de teclado e eventos do mouse para determinar o estado das teclas Alt, Ctrl e Shift, bem como dos botões do mouse, quando ocorrer um evento. Trata-se de um grupo de flags que indica o seguinte:


ssShift

A tecla Shift está segura em baixo.

ssAlt

A tecla Alt está segura em baixo.

ssCtrl

A tecla Ctrl está segura em baixo.

ssLeft

O botão esquerdo do mouse está seguro em baixo.

ssMiddle

O botão do meio do mouse está seguro em baixo..

ssDouble

O mouse recebeu um duplo clique.




O exemplo a seguir leva um label no Form. Conforme o usuário produzir um dos eventos acima, uma resposta diferente será dada pelo programa:


//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
if(Shift.Contains(ssCtrl) && Shift.Contains(ssShift))
Label1->Caption = "Tecla Ctrl  \"e\"  tecla Shift pressionadas";

if(!Shift.Contains(ssAlt) && !Shift.Contains(ssCtrl) && !Shift.Contains(ssShift))
ShowMessage("A tecla pressionada não é a tecla Alt, Shift ou Ctrl.");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
if(Shift.Contains(ssDouble) || Shift.Contains(ssLeft))
Label1->Caption = "Evento do mouse detectado: Duplo Clique  \"ou\"  botão esquerdo.";
}
//---------------------------------------------------------------------------

anterior

índice

próxima


HOME || MAPA DO SITE || CURSOS || TUTORIAIS || LINKS || FORUM || CONTATO