Operadores matemáticos
A linguagem C++ possui cinco operadores matemáticos binários representados pelos seguintes operadores:
+ (adição);
- (subtração);
* (multiplicação);
/ (divisão); e
% (módulo);
e possui um operador unário:
- (menos unário).
Os operadores binários operam sobre dois operandos e o unário sobre um.
Os operadores de adição, subtração, multiplicação e divisão funcionam normalmente como nos cálculos matemáticos usuais. Já o operador módulo fornece-nos o resto de uma divisão inteira (sem eventuais partes fracionárias) como resultado. Por exemplo, quando fazemos a divisão de 9 por 5, o resultado é 1 e o resto é 4.
O operador menos unário serve para trocar o sinal de seu operando (positivo para negativo ou negativo para positivo):
int i = 440; i = -i; Label1 -> Caption = i; // Agora o valor de i é - 440
O exemplo a seguir (calculadora básica) possui, no Form, três componentes Edit e cinco RadioButton(s) dentro de um RadioGroup. Todas as propriedades do programa serão geradas em tempo de execução (no código), e não diretamente no Object Inspector. O usuário deverá digitar um valor no Edit1, outro valor no Edit2 e escolher uma operação matemática no RadioGroup para visualizar o resultado no Edit3.
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Form1 -> Caption = "Calculadora Básica";
Form1 -> BorderStyle = bsSizeToolWin; // altera a borda de Form1
Edit1 -> Text = ""; // esvazia Edit1
Edit2 -> Text = ""; // Esvazia Edit2
Edit3 -> Text = ""; // esvazia Edit3
Edit3 -> ReadOnly = true; // Edit3 não aceita dados via teclado ou mouse (arrastar e soltar)
RadioGroup1 -> Caption = "Escolha uma operação";
RadioButton1 -> Caption = "+ (adição)";
RadioButton2 -> Caption = "- (subtração)";
RadioButton3 -> Caption = "* (multiplicação)";
RadioButton4 -> Caption = "/ (divisão)";
RadioButton5 -> Caption = "% (módulo)";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioButton1Click(TObject *Sender)
{
/*Na operação de adição precisamos declarar variáveis e realizar as respectivas
coversões para evitar erros de concatenação de strings em face do operador + */
double primeiro = StrToFloat(Edit1 -> Text);
double segundo = StrToFloat(Edit2 -> Text);
Edit3->Text = primeiro + segundo; //realiza o cálculo por via indireta
Edit1->SetFocus(); //chama a função SetFocus() para colocar o foco em Edit1
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioButton2Click(TObject *Sender)
{
Edit3->Text = double((Edit1->Text) - (Edit2->Text)); //realiza o cálculo por via direta
Edit1->SetFocus(); //chama a função SetFocus() para colocar o foco em Edit1
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioButton3Click(TObject *Sender)
{
Edit3->Text = double((Edit1->Text) * (Edit2->Text)); //realiza o cálculo por via direta
Edit1->SetFocus(); //chama a função SetFocus() para colocar o foco em Edit1
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioButton4Click(TObject *Sender)
{
Edit3->Text = double((Edit1->Text) / (Edit2->Text)); //realiza o cálculo por via direta
Edit1->SetFocus(); //chama a função SetFocus() para colocar o foco em Edit1
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioButton5Click(TObject *Sender)
{
/* Essa parte do código foi corrigido com o comando if ...else pois
apresentava um bug nas operações em que o divisor era maior que o dividendo*/
//se o valor convertido para ponto flutuante de Edit1 for maior do que o de Edit2
if (StrToFloat(Edit1 -> Text) > StrToFloat(Edit2 -> Text))
// Edit3 apresentará o resto da divisão de Edit1->Text por Edit2->Text
Edit3 -> Text = double((Edit1 -> Text) % (Edit2 -> Text));
// caso contrário
else
// Edit3 apresentará o valor 0 (zero) em seu texto
Edit3 -> Text = 0;
Edit1 -> SetFocus(); // chama a função SetFocus() para colocar o foco em Edit1
}
//---------------------------------------------------------------------------
|
HOME || MAPA DO SITE || CURSOS || TUTORIAIS || LINKS || FORUM || CONTATO |