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.";
}
//---------------------------------------------------------------------------
|
HOME || MAPA DO SITE || CURSOS || TUTORIAIS || LINKS || FORUM || CONTATO |