You are on page 1of 46

Apostila C++ Builder

PRIMEIRO CONTATO
A linguagem de programao C++ Builder serve para fazer programas com mltiplas finalidades, tipo o WORD,
o AUTOCAD, o EXCELL, etc. Veja a aparncia do programa que ser usado na programao.

-----------------------------------------------Variveis bsicas ---------------------------------------------------

Variveis so letras ou palavras que iro durante o programa assumir valores para que se possam realizar
clculos.

Ex: a2 = b2 + c2

Esta equao, bastante conhecida, que calcula a hipotenusa de um tringulo retngulo, possui trs variveis, A,
B e C. As variveis B e C recebero nmeros e aps calculada a equao o resultado ser guardado na varivel
A que tambm representar um nmero.

float => varivel real, aceita nmeros reais (com e sem vrgula)

String => varivel que aceita letras "para apresentao no programa, no utilizada para clculos "

Int => varivel inteira, s aceita nmeros inteiros.

Na programao as variveis funcionam da mesma maneira. Fora este fato, quando definimos uma varivel em
um programa, este deixa um espao na memria do computador reservado para cada varivel definida.

1
Veja a ttulo de exemplo, como so definidas variveis em um programa.

float a, b, c, ladoa, ladob, resultado; (no deixar espao no meio da varivel)


int d, f, g, numeroaluno, idade, ano;
String casa, endereo, numero;
Etc.
--------------------------------------------- Comandos do programa ----------------------------------------------

So vrios os comandos existentes no C++, os que seguem abaixo, so bsicos e permitiro fazer pequenos
programas .

Label "Entrar com texto no programa. " (Onde est a letra A nos cones acima.)
Edit "Entrar com valores para o programa. " (Onde est a letra ab nos cones acima.)
Button "Entrar com a programao do programa. " (Onde est a letra OK nos cones acima.)

Se clicar em qualquer um deles citados acima, na janela Object Inspector aparecer s propriedades do
comando.

Os dois abaixo so bsicos e muito usados.

Font "Altera o tipo de fonte do comando. "

Caption " Introduzir o texto selecionado. "

Position " Define onde o programa aparecer na tela quando rodar. "

Sempre que aparecer um + dentro de um quadrado, como abaixo, ao se clicar no + aparecero opes do
comando.

2
Dentro da FONT aparecero as seguintes opes:

As se clicar ao lado do (TFont), no quadrado com os 3 pontinhos (...) abrese a tela abaixo com vrias opes;

Esta tabela equivale as opes mostradas ao se clicar no quadrado com o sinal de +.

------------------------------------------------ Teclas de Atalho ----------------------------------------------------

Algumas teclas de atalho para para facilitar a programao.

F12 " Alterna entre modo grfico e modo texto ( programa ). "

F9 " Roda o programa. "

------------------------------------ Comandos de operao matemtica -------------------------------------

+ = Soma
- = Subtrao

3
* = Multiplicao
/ = Diviso
pow = potencializao pow(a,5) = a5
M_PI = 3,14159........
sin = seno (em radianos)
cos = cosseno ( em radiano)
tan = Tangente (em radiano)
acos = arco cosseno
asin = arco seno
atan = arco tangente

---------------------------------------------- Programa 1 ------------------------------------------------

Construir um programa que faa o seguinte clculo c = a . b . 234 / 23 conforme abaixo :

Digite 1 nmero = Foi feito usando o boto LABEL


Retngulo com o nmero 10 = Foi feito com o boto EDIT
Retngulo com a palavra CALCULAR = Foi feito com o Boto BUTTON
Programa teste no cabealho do programa = Foi escrito usando o Caption no Object Inspector

Logo de incio, convm salvar o programa.

Para salvar usar sempre o cone que est ao lado.

O programa deve ser salvo na pasta projeto 2 conforme abaixo. (Os vrios arquivos mostrados abaixo, so
criados automaticamente pelo C++.

4
Ateno, o programa na hora de salvar os arquivo, gera nomes que no
devem ser modificados, veja abaixo a UNIT1 e PROJECT1

NO ALTERAR O NOME QUE O PROGRAMA D, NO CASO O UNIT1

5
NO ALTERAR O NOME QUE O PROGRAMA D, NO CASO O PROJECT1

Veja o programa.

float a,b,c; " definir as variveis "

a=StrToFloat(Edit1->Text); " pega o texto que est no Edit 1, este texto uma string (varivel com letras ou
caractezres) , e transforma em Float e armazena na varivel a "

b=StrToFloat(Edit2->Text); " pega o texto que est no Edit 2, este texto uma string , e transforma em Float e
armazena na varivel b "

c= a*b*234/23; executa o clculo e armazena em c

Edit3->Text=FormatFloat("0.00",c); " pega o valor de c , mostra o resultado com duas casas decimais , e
transforma num texto para ser exibido no Edit 3

-----------------------------------------------------Programa 2 ---------------------------------------------------

Construir um programa que execute os seguintes clculos :

c=a.b f=d.d.e.e conforme abaixo

6
No programa sero utilizados clculos matemticos que no esto inclusos na biblioteca padro do programa,
ento se deve primeiro adicionar uma nova biblioteca de clculo ( math.h ), conforme abaixo:

Com o programa iniciado pressionar a tecla F12 para aparecer tela de programao mostrada a seguir.

Inserir a linha de comando junto com os outros Include #include <math.h>

Esta linha insere uma biblioteca matemtica que permite que se executem contas matemticas no programa.

A incluso da linha deve ficar como a que segue;

7
Observao: a operao a pode ser escrita como sendo a 0,5. Para o programa ser utilizado o comando
pow da seguinte forma; a 0,5 = pow ( a , 0.5 ) , ou seja, pow de potncia, onde estamos dizendo que a
elevado a 0,5.

ATENO Deve-se escrever o programa dentro do Boto Calcular ( dar dois cliques no boto calcular
para entrar na folha de programao)

float a,b,c;

a=StrToFloat(Edit1->Text);
b=StrToFloat(Edit2->Text);

c= pow((a*b),0.5); executa o clculo 1

Edit3->Text=FormatFloat("0.00",c);

A linha gerada ficar como abaixo, e repare que nela est escrita BUTTON2CLICK que uma linha
correspondente ao boto CALCULAR.

//---------------------------------------------------------------------------

8
void __fastcall TForm1::Button2Click(TObject *Sender)
{
float d,e,f;

d=StrToFloat(Edit4->Text);
e=StrToFloat(Edit5->Text);

f= d*d*e*e; executa o clculo 2

Edit6->Text=FormatFloat("0.00",f);

//---------------------------------------------------------------------------

Pode-se tambm incluir um boto para fechar o programa , para fazer isso se deve incluir a linha de comando

Close ( );

Abaixo do boto correspondente ao comando de fechar veja como fica a programao. D dois cliques sobre ele
para acessar as linhas de programao dentro do boto.

//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Close ();
}
//---------------------------------------------------------------------------

-----------------------------------------------------Programa 3 ---------------------------------------------------

Exerccio : Elaborar um programa que execute os seguintes clculos ,

a 2 = b2 + c 2 Pitgoras

Volt = Resistncia x Corrente V=R.I Lei de Ohm

Potncia = Rotao x Torque / 716,2 Potncia de um motor

A aparncia do programa ficar como a que segue:

9
Dentro do boto CALCULAR a o programa ficar da seguinte forma:

------------------------------------------------------------------------------------

Dentro do boto CALCULAR U o programa ficar da seguinte forma:

------------------------------------------------------------------------------------

------------------------------------------------------------------------------------

Dentro do boto CALCULAR P o programa ficar da seguinte forma:

10
------------------------------------------------------------------------------------

------------------------------------------------------------------------------------

Dentro do boto FECHAR o programa ficar da seguinte forma:

------------------------------------------------------------------------------------

------------------------------------------------------------------------------------

O programa 4 com alguns valores para comparao est mostrado abaixo:

11
USANDO O COMADO IF
O comando IF um comando de desvio, que permite fazer opes de deciso na programao:

IF = SE ELSE = SENO

Aps o IF deve-se colocar o que se deseja entre chaves. Se for s uma linha, estas chaves poderiam ser
dispensadas, porm se for colocado, no estar errado.

Veja o exemplo que segue:

------------------------------------------------------------------------------------

if (a<5 ))
{
Edit5->Text=(" Reprovado");
}
else
if (a=5)
{
Edit5->Text=(" Recuperao");
}
else
if (a>5)
{
Edit5->Text=(" Aprovado");
}

------------------------------------------------------------------------------------
Este exemplo de cima, em portugus ficaria da seguinte forma:

SE o A for MAIOR que 5, ento escreva REPROVADO

SE o A for IGUAL a 5, ento escreva RECUPERAO

SE o A for MAIOR que 5, ento escreva APROVADO


------------------------------------------------------------------------------------

Dentro do comando if existem as condies de comparao conforme abaixo:

E igual a &&
OU igual a ||
= igual a ==
igual a !=

------------------------------------------------------------------------------------

if ((media >= 0) && (media < 5 ))


{
Edit5->Text=(" Reprovado");
}
else
if ((media >= 5) && (media < 6))
{
Edit5->Text=(" Recuperao");
}

12
else
if((media >=6) && (media <=10))
{
Edit5->Text=(" Aprovado");
}

------------------------------------------------------------------------------------
Este exemplo de cima, em portugus ficaria da seguinte forma:

SE a MEDIA for MAIOR OU IGUAL A 0 e a MEDIA for MENOR OU IGUAL A que 5, ento escreva
REPROVADO

SE a MEDIA for MAIOR OU IGUAL A 5 e a MEDIA for MENOR OU IGUAL A que 6, ento escreva
RECUPERAO

SE a MEDIA for MAIOR OU IGUAL A 6 e a MEDIA for MENOR OU IGUAL A que 10, ento escreva
APROVADO
-----------------------------------------------------Programa 4 ---------------------------------------------------

Exemplo usando o IF: Fazer um programa para definir se o aluno est reprovado, em recuperao ou aprovado,
usando para isso a mdia de 3 notas de provas.

Se a mdia for >= 0 e < 5 ------------------------- reprovado


Se a mdia for >= 5 e < 6 ------------------------- recuperao
Se a mdia for >= 6 e <= 10 ------------------------- aprovado

Iremos considerar nota 1 com peso 1


nota 2 com peso 2
nota 3 com peso 3
Ento a mdia ser :
mdia = ( nota1*1 +nota2*2+nota3*3 ) / (6*1.000)

Veja a tela de apresentao como pode ficar:

//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)


{

13
float nota1,nota2,nota3,media;

nota1=StrToFloat(Edit1->Text);
nota2=StrToFloat(Edit2->Text);
nota3=StrToFloat(Edit3->Text);

media= (nota1 + (nota2 * 2) + (nota3 * 3))/(6*1.000);


Edit4->Text=FormatFloat("0.00",media);

if ((nota1 < 0) || (nota1 > 10))


{
ShowMessage("Check a primeira nota");
}
if ((nota2 < 0) || (nota2 > 10))
{
ShowMessage("Check a segunda nota");
}
if ((nota3 < 0) || (nota3 > 10))
{
ShowMessage("Check a terceira nota");
}

if ((media >= 0) && (media < 5 ))


{
Edit5->Text=(" Reprovado");
}
else
if ((media >= 5) && (media < 6))
{
Edit5->Text=(" Recuperao");
}
else
if((media >=6) && (media <=10))
{
Edit5->Text=(" Aprovado");
}
}
//---------------------------------------------------------------------------
Veja o programa rodando:

14
USANDO O COMADO CASE (switch)

O Comando SWITCH, tambm conhecido por CASE, semelhante ao IF, porm com menos opes, j que a
sua comparao sempre com nmeros.

Por exemplo;

Digite um nmero qualquer e guarde este valor na varivel numero

Switch(numero)
{
case 1:
acontece algum evento;
break;

case 2:
acontece algum outro evento;
break;

case 3:
acontece mais algum evento;
break;

case 4:
acontece outro evento, e assim por diante;
break;
}

Em outras palavras, se o numero for 1, acontece alguma coisa, se for 2, acontecer outra, e se for 3 outra pode
acontecer e assim por diante. Sempre comparando com nmeros.
O CASE ser o ponto onde o computador vai parar para ver qual a opo numrica escolhida.

-----------------------------------------------------Programa 5 ---------------------------------------------------

Veja um exemplo abaixo completo. O programa que segue, mostra o que um guarda rodovirio teria que falar ao
motorista em funo da velocidade que este estivesse transitando, caso parasse um veculo.

Veja a aparncia inicial do programa:

Veja abaixo como fica o programa;

15
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)


{
Close();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)


{
float limite;
int velocidade;

velocidade=StrToFloat(Edit1->Text);
limite = 80;

if (velocidade < 70)


{
Edit3->Text=("Velocidade OK");
Edit4->Text=(" ");
Edit5->Text=(" ");
}

switch(velocidade)
{
case 70:
Edit3->Text=("Velocidade OK");
Edit4->Text=(" ");
Edit5->Text=(" ");
break;

case 75:
Edit3->Text=("Velocidade OK");
Edit4->Text=(" ");
Edit5->Text=(" ");
break;

case 80:
Edit3->Text=("Velocidade OK");
Edit4->Text=(" ");
Edit5->Text=(" ");
break;

case 85:
Edit3->Text=("Velocidade no limite");
Edit4->Text=(" ");
Edit5->Text= " Lembrar que a velocidade mxima permitita de " +FormatFloat( "0",limite)+ " km/h";
break;

case 90:
Edit3->Text=("Velocidade acima do limite -> multar R$ 500");
Edit4->Text=("Alertar quanto aos cuidados com o limite de velocidade");
Edit5->Text= " Lembrar que a velocidade mxima permitita de " +FormatFloat( "0",limite)+ " km/h";
break;

case 95:
Edit3->Text=("Velocidade acima do limite -> multar R$ 500");

16
Edit4->Text=("Alertar quanto aos cuidados com o limite de velocidade");
Edit5->Text= " Lembrar que a velocidade mxima permitita de " +FormatFloat( "0",limite)+ " km/h";
break;

case 100:
Edit3->Text=("Velocidade acima do limite -> multar R$ 1000");
Edit4->Text=("Apreender carta de habilitao por 1 ano");
Edit5->Text= " Lembrar que a velocidade mxima permitita de " +FormatFloat( "0",limite)+ " km/h";
break;

case 105:
Edit3->Text=("Velocidade acima do limite -> multar R$ 1000");
Edit4->Text=("Apreender carta de habilitao por 1 ano");
Edit5->Text= " Lembrar que a velocidade mxima permitita de " +FormatFloat( "0",limite)+ " km/h";
break;

case 110:
Edit3->Text=("Velocidade acima do limite -> multar R$ 1000");
Edit4->Text=("Apreender carta de habilitao por 1 ano");
Edit5->Text= " Lembrar que a velocidade mxima permitita de " +FormatFloat( "0",limite)+ " km/h";
break;

case 120:
Edit3->Text=("Velocidade acima do limite -> multar R$ 1000");
Edit4->Text=("Apreender carta de habilitao por 1 ano");
Edit5->Text= " Lembrar que a velocidade mxima permitita de " +FormatFloat( "0",limite)+ " km/h";
break;
}

if (velocidade > 120)


{
Edit3->Text=("Velocidade acima do limite -> multar R$ 1000");
Edit4->Text=("Apreender carta de habilitao por 2 anos");
Edit5->Text= " Lembrar que a velocidade mxima permitita de " +FormatFloat( "0",limite)+ " km/h";
}
}
//---------------------------------------------------------------------------

Veja o programa funcionando;

17
------------------------------------------- Outro exemplo de programa ----------------------------------------

-----------------------------------------------------Programa 6 ---------------------------------------------------

Fazer um programa para calcular as frmulas da lei de OHM.


Usar o comando IF e o comando SWITCH.

Para fazer este programa, ser usado um comando novo, o RadioGroup que permitira a escolha da frmula que
se deseja calcular.

Ser usado tambm o comando Bevel na tarja Additional que serve para evidenciar algum detalhe do programa.

Para este programa, as seguintes frmulas devero ser possvel de ser calculadas.

V=RxI
R=V/I
I=V/R
P=VxI
P = R x I2
R = P / I2
I=P/V
I = RAIZ ( P / R )

Desta forma a tela de apresentao do programa ficaria da seguinte forma.

18
A primeira parte que deve ser feita a colocao da tabela de opo de frmulas disponvel para clculo. Para
isso ser necessrio usar o comando RadioGroup, cuja figura segue;

Para pode fazer esta tabela, deve-se clicar no boto RadioGroup que se encontra na tarja Standard, e cuja
figura segue:

Deve-se clicar no boto RadioGroup e depois clicar na Form ou tela de trabalho, e nesta tela, aparecer a
seguinte imagem:

Indo na janela Object Inspector deve-se clicar na opo Caption e l escrever LEI DE OHM e a nova imagem
do RadioGroup ficar desta forma

Feito isso deve-se criar as opo para a escolha das frmulas. Para isso, deve-se ir ao Object Inspector (os 8
pontinhos pretos que rodeiam a imagem do RadioGroup devem estar aparecendo, isso significar que o Object
Inspector estar se referenciando a ele) e ai aproveite para clicar na coluna da frente do Items que ficar da
seguinte forma;

19
Ao se clicar na linha Items ir aparecer o (TSting) com um boto com 3 pontinhos. Ao se clicar neste boto
com 3 pontinhos, aparecer uma nova tela como a que segue mais a frente. Nesta nova tela, devero ser
digitadas as frmulas da maneira que se deseja que estas apaream no programa.
IMPORTANTE: Estas frmulas s serviro para aparecer na tela e no serviro para fazer os clculos. Para
calcular, as frmulas devero estar dentro do Boto Calcular.

Digitando as frmulas, as mesmas ficaro como a figura que segue: Repare que o cursor est na linha de baixo
das frmulas, ou seja, d um ENTER ao encerrar a frmula. Depois disso s clicar em OK e na Form do
programa aparecer as frmulas j dentro do nosso RadioGroup.

20
Veja a figura que segue.

Falta apenas um detalhe, que mostrar o pontinho preto, que no caso aparece na ltima opo. Para conseguir
fazer com que ele aparea nesta posio ou em outra qualquer, deve-se ir na janela Object Inspector e clicar em
ItemIndex e ao lado colocar um nmero.
Vale neste caso a seguinte informao;

Se o nmero for -1 , ele no selecionar nenhuma frmula,


Se o nmero for 0, ele selecionar a primeira opo,
Se o nmero for 1, ele selecionar a segunda opo,
Se o nmero for 2, ele selecionar a terceira opo e assim por diante.
Portanto para selecionar a ltima opo o nmero a ser digitado deve ser 7.

Com isso, basta agora digitar o programa, e para isso basta dar um duplo clique no boto CALCULAR
(BUTTON1) e digitar esta dentro das chaves;

void __fastcall TForm1::Button1Click(TObject *Sender)


{
float Fator,a,b,c,i;

a=StrToFloat(Edit1->Text);
b=StrToFloat(Edit2->Text);

switch(RadioGroup1->ItemIndex) //*** OBS: Repare que o RadioGroup est se referenciando ao ItemIndex


{
case 0:
c=a*b;
Edit3->Text=FormatFloat("0.000",c);
break;
case 1:
c=a/(b*1.000);
Edit3->Text=FormatFloat("0.000",c);
break;
case 2:
c=a/(b*1.000);
Edit3->Text=FormatFloat("0.000",c);
break;
case 3:
c=a*b;
Edit3->Text=FormatFloat("0.000",c);
break;
case 4:
c=a*b*b;
Edit3->Text=FormatFloat("0.000",c);
break;
case 5:
c=a/(b*b*1.000);

21
Edit3->Text=FormatFloat("0.000",c);
break;
case 6:
c=a/(b*1.000);
Edit3->Text=FormatFloat("0.000",c);
break;
case 7:
c=pow((a/(b*1.000)),0.5);
Edit3->Text=FormatFloat("0.000",c);
break;
}
}

No Boto FECHAR (BUTTON2) da mesma forma, basta dar um duplo clique e digitar o que esta dentro das
chaves;

void __fastcall TForm1::Button2Click(TObject *Sender)


{
Close();
}

Finalmente a ltima no ltimo Boto Verificar a resposta correta (BUTTON3), dar um duplo clique e digitar
o que esta dentro das chaves;

void __fastcall TForm1::Button3Click(TObject *Sender)


{
float dado;

dado=StrToFloat(Edit4->Text);

if (dado==1)
Edit5->Text=("E R R A D O deixe de preguia e estude mais");
if (dado==2)
Edit5->Text=("E R R A D O pense mais");
if (dado==3)
Edit5->Text=("E R R A D O preste mais ateno");
if (dado==4)
Edit5->Text=("E R R A D O estude mais");
if (dado==5)
Edit5->Text=("E S T A C E R T O mas existe outra resposta certa");
if (dado==6)
Edit5->Text=("E S T A C E R T O mas existe outra resposta certa");
if (dado==7)
Edit5->Text=("P A R A B E N S A C E R T O U");
}

O Comando BEVEL serve para evidenciar ou separar uma regio, veja a imagem que segue onde as opes
parece que esto rebaixadas.

22
Este comando BEVEL nada mais que um retngulo que se ajusta no lugar que se deseja ressaltar. Ele pode ser
encontrado na pasta ADDITIONAL e depois no Boto BEVEL. Depois de clicar no boto s clicar na tela e
abrir o retngulo na posio que se deseja.

---------------------------------------------------Uma melhoria no programa-----------------------------------------------

Este mesmo programa pode ser modificado, tirando o Primeiro Valor, o Segundo Valor e no lugar colocar
por exemplo V em Volt, ou Corrente em Amperes. Veja o exemplo abaixo;

No entanto para fazer isso e dar certo para qualquer escolha do Radio Group necessrio colocar vrios
Label um em cima do outro, e s deixar aparecer aquele que interessa no momento. Na imagem abaixo, foram
criados vrios Label porm estes foram colocados um ao lado do outro de forma a poder mostrar todos o
Label criados.
Veja a criao dos vrios Label.

23
Veja as linhas que seguem;

A opo true, significa verdade, ou seja, o Label ficar visvel.


A opo false, signifiva falsa, ou seja o Laber ficar invisvel.

case 5:
Label16->Visible = true; //Potncia em Watts
Label2->Visible = true; //Corrente em Amperes
Label14->Visible = true; //Resposta em Ohm

Label17->Visible = false; //V em Volts


Label1->Visible = false; //V em Volts
Label15->Visible = false; //Resposta em Amperes
Label13->Visible = false; //Resposta em Volts
Label18->Visible = false; //Resistncia em Ohm
Label3->Visible = false; //Resposta em Watts
Label12->Visible = false; //Resistncia em Ohm
break;

O Label16 -> Visible = true Significa que o Label 16 estar visvel na tela.
O Label17-> Visible = false Significa que o Label 17 estar invisvel na tela, e assim por diante.

Veja agora como fica o programa completo:

24
//----------------------------------------------------------------------------------------------------------------------------------

#include <vcl.h>
#include<math.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{ // Esta parte que segue abaixo vai aparecer em primeiro na tela
Label1->Visible = true; // V em Volts
Label2->Visible = true; //Corrente em Amperes
Label3->Visible = true; //Resposta em Watts

Label14->Visible = false; //Resposta em Ohm


Label17->Visible = false; //V em Volts
Label16->Visible = false; //Potncia em Watts
Label15->Visible = false; //Resposta em Amperes
Label13->Visible = false; //Resposta em Volts
Label18->Visible = false; //Resistncia em Ohm
Label12->Visible = false; //Resistncia em Ohm
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)


{

float Fator,a,b,c,i;

a=StrToFloat(Edit1->Text);
b=StrToFloat(Edit2->Text);

switch(RadioGroup1->ItemIndex)
{
case 0:
// Esta parte durante os clculos (ao apertar o boto Calcular) aparece na tela

Label13->Visible = true; //Resposta em Volts


Label12->Visible = true; //Resistncia em Ohm
Label2->Visible = true; //Corrente em Amperes

Label16->Visible = false; //Potncia em Watts


Label15->Visible = false; //Resposta em Amperes
Label14->Visible = false; //Resposta em Ohm
Label1->Visible = false; //V em Volts
Label3->Visible = false; //Resposta em Watts
Label18->Visible = false; //Resistncia em Ohm
Label17->Visible = false; //V em Volts

c=a*b;
Edit3->Text=FormatFloat("0.000",c);
break;

25
case 1:
Label2->Visible = true; //Corrente em Amperes
Label1->Visible = true; //V em Volts
Label14->Visible = true; //Resposta em Ohm

Label16->Visible = false; //Potncia em Watts


Label15->Visible = false; //Resposta em Amperes
Label3->Visible = false; //Resposta em Watts
Label13->Visible = false; //Resposta em Volts
Label12->Visible = false; //Resistncia em Ohm
Label18->Visible = false; //Resistncia em Ohm
Label17->Visible = false; //V em Volts
c=a/(b*1.000);
Edit3->Text=FormatFloat("0.000",c);
break;

case 2:
Label1->Visible = true; // Label2->Visible = true;
Label18->Visible = true; //Resistncia em Ohm
Label15->Visible = true; //Resposta em Amperes

Label17->Visible = false; //V em Volts


Label16->Visible = false; //Potncia em Watts
Label3->Visible = false; //Resposta em Watts
Label12->Visible = false; //Resistncia em Ohm
Label2->Visible = false; //Resposta em Amperes
Label14->Visible = false; //Resposta em Ohm
Label13->Visible = false; //Resposta em Volts
c=a/(b*1.000);
Edit3->Text=FormatFloat("0.000",c);
break;

case 3:
Label1->Visible = true; // V em Volts
Label2->Visible = true; //Corrente em Amperes
Label3->Visible = true; //Resposta em Watts

Label14->Visible = false; //Resposta em Ohm


Label17->Visible = false; //V em Volts
Label16->Visible = false; //Potncia em Watts
Label15->Visible = false; //Resposta em Amperes
Label13->Visible = false; //Resposta em Volts
Label18->Visible = false; //Resistncia em Ohm
Label12->Visible = false; //Resistncia em Ohm
c=a*b;
Edit3->Text=FormatFloat("0.000",c);
break;

case 4:
Label12->Visible = true; //Resistncia em Ohm
Label2->Visible = true; //Corrente em Amperes
Label3->Visible = true; //Resposta em Watts

Label15->Visible = false; //Resposta em Amperes


Label16->Visible = false; //Potncia em Watts
Label14->Visible = false; //Resposta em Ohm

26
Label1->Visible = false; //V em Volts
Label17->Visible = false; //V em Volts
Label18->Visible = false; //Resistncia em Ohm
Label13->Visible = false; //Resposta em Volts
c=a*b*b;
Edit3->Text=FormatFloat("0.000",c);
break;

case 5:
Label16->Visible = true; //Potncia em Watts
Label2->Visible = true; //Corrente em Amperes
Label14->Visible = true; //Resposta em Ohm

Label17->Visible = false; //V em Volts


Label1->Visible = false; //V em Volts
Label15->Visible = false; //Resposta em Amperes
Label13->Visible = false; //Resposta em Volts
Label18->Visible = false; //Resistncia em Ohm
Label3->Visible = false; //Resposta em Watts
Label12->Visible = false; //Resistncia em Ohm
c=a/(b*b*1.000);
Edit3->Text=FormatFloat("0.000",c);
break;

case 6:
Label16->Visible = true; //Potncia em Watts
Label17->Visible = true; //V em Volts
Label15->Visible = true; //Resposta em Amperes

Label12->Visible = false; //Resistncia em Ohm


Label1->Visible = false; //V em Volts
Label13->Visible = false; //Resposta em Volts
Label2->Visible = false; //Corrente em Amperes
Label14->Visible = false; //Resposta em Ohm
Label18->Visible = false; //Resistncia em Ohm
Label3->Visible = false; //Resposta em Watts
c=a/(b*1.000);
Edit3->Text=FormatFloat("0.000",c);
break;

case 7:
Label16->Visible = true; //Potncia em Watts
Label18->Visible = true; //Resistncia em Ohm
Label15->Visible = true; //Resposta em Amperes
Label12->Visible = false; //Resistncia em Ohm
Label1->Visible = false; //V em Volts
Label13->Visible = false; //Resposta em Volts
Label2->Visible = false; //Corrente em Amperes
Label14->Visible = false; //Resposta em Ohm
Label3->Visible = false; //Resposta em Watts
Label17->Visible = false; //V em Volts
c=pow((a/(b*1.000)),0.5);
Edit3->Text=FormatFloat("0.000",c);
break;
}

27
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)


{
float dado;

dado=StrToFloat(Edit4->Text);

if (dado==1)
Edit5->Text=("E R R A D O deixe de preguia e estude mais");
if (dado==2)
Edit5->Text=("E R R A D O pense mais");
if (dado==3)
Edit5->Text=("E R R A D O preste mais ateno");
if (dado==4)
Edit5->Text=("E R R A D O estude mais");
if (dado==5)
Edit5->Text=("E S T A C E R T O mas existe outra resposta certa");
if (dado==6)
Edit5->Text=("E S T A C E R T O mas existe outra resposta certa");
if (dado==7)
Edit5->Text=("P A R A B E N S A C E R T O U");

}
//---------------------------------------------------------------------------

void __fastcall TForm1::RadioGroup1Click(TObject *Sender)


{

switch(RadioGroup1->ItemIndex)
{
case 0:
// Esta parte aparece na tela ao mudar a seleo no boto do Radio Group.

Label13->Visible = true; //Resposta em Volts


Label12->Visible = true; //Resistncia em Ohm
Label2->Visible = true; //Corrente em Amperes

Label16->Visible = false; //Potncia em Watts


Label15->Visible = false; //Resposta em Amperes
Label14->Visible = false; //Resposta em Ohm
Label1->Visible = false; //V em Volts
Label3->Visible = false; //Resposta em Watts
Label18->Visible = false; //Resistncia em Ohm
Label17->Visible = false; //V em Volts
break;

case 1:
Label2->Visible = true; //Corrente em Amperes
Label1->Visible = true; //V em Volts
Label14->Visible = true; //Resposta em Ohm

28
Label16->Visible = false; //Potncia em Watts
Label15->Visible = false; //Resposta em Amperes
Label3->Visible = false; //Resposta em Watts
Label13->Visible = false; //Resposta em Volts
Label12->Visible = false; //Resistncia em Ohm
Label18->Visible = false; //Resistncia em Ohm
Label17->Visible = false; //V em Volts
break;

case 2:
Label1->Visible = true; // Label2->Visible = true;
Label18->Visible = true; //Resistncia em Ohm
Label15->Visible = true; //Resposta em Amperes

Label17->Visible = false; //V em Volts


Label16->Visible = false; //Potncia em Watts
Label3->Visible = false; //Resposta em Watts
Label12->Visible = false; //Resistncia em Ohm
Label2->Visible = false; //Resposta em Amperes
Label14->Visible = false; //Resposta em Ohm
Label13->Visible = false; //Resposta em Volts
break;

case 3:
Label1->Visible = true; // V em Volts
Label2->Visible = true; //Corrente em Amperes
Label3->Visible = true; //Resposta em Watts

Label14->Visible = false; //Resposta em Ohm


Label17->Visible = false; //V em Volts
Label16->Visible = false; //Potncia em Watts
Label15->Visible = false; //Resposta em Amperes
Label13->Visible = false; //Resposta em Volts
Label18->Visible = false; //Resistncia em Ohm
Label12->Visible = false; //Resistncia em Ohm
break;

case 4:
Label12->Visible = true; //Resistncia em Ohm
Label2->Visible = true; //Corrente em Amperes
Label3->Visible = true; //Resposta em Watts

Label15->Visible = false; //Resposta em Amperes


Label16->Visible = false; //Potncia em Watts
Label14->Visible = false; //Resposta em Ohm
Label1->Visible = false; //V em Volts
Label17->Visible = false; //V em Volts
Label18->Visible = false; //Resistncia em Ohm
Label13->Visible = false; //Resposta em Volts
break;

case 5:
Label16->Visible = true; //Potncia em Watts
Label2->Visible = true; //Corrente em Amperes
Label14->Visible = true; //Resposta em Ohm

29
Label17->Visible = false; //V em Volts
Label1->Visible = false; //V em Volts
Label15->Visible = false; //Resposta em Amperes
Label13->Visible = false; //Resposta em Volts
Label18->Visible = false; //Resistncia em Ohm
Label3->Visible = false; //Resposta em Watts
Label12->Visible = false; //Resistncia em Ohm
break;

case 6:
Label16->Visible = true; //Potncia em Watts
Label17->Visible = true; //V em Volts
Label15->Visible = true; //Resposta em Amperes

Label12->Visible = false; //Resistncia em Ohm


Label1->Visible = false; //V em Volts
Label13->Visible = false; //Resposta em Volts
Label2->Visible = false; //Corrente em Amperes
Label14->Visible = false; //Resposta em Ohm
Label18->Visible = false; //Resistncia em Ohm
Label3->Visible = false; //Resposta em Watts
break;

case 7:
Label16->Visible = true; //Potncia em Watts
Label18->Visible = true; //Resistncia em Ohm
Label15->Visible = true; //Resposta em Amperes

Label12->Visible = false; //Resistncia em Ohm


Label1->Visible = false; //V em Volts
Label13->Visible = false; //Resposta em Volts
Label2->Visible = false; //Corrente em Amperes
Label14->Visible = false; //Resposta em Ohm
Label3->Visible = false; //Resposta em Watts
Label17->Visible = false; //V em Volts
break;
}
}
//------------------------------------------------------------------------------------------------------------------------------

USANDO O COMADO FOR-TO-DO

Antes de mostrar o comando FOR TO DO, conveniente conhecer e aprender uma outra opo para poder
mostrar na tela o funcionamento deste comando, e o ListBox. Ele encontrado no menu superior e possui o
smbolo que segue:

Este comando facilita muito para mostrar vrios valores em forma de tabela.

Na tabela que segue, esto abertos dois ListBox, o ListBox1 e o ListBox2, estes so mostrados abaixo onde
mostrado tambm o boto FECHAR:

30
Para mostrar melhor o funcionamento do comando FOR TO DO, ser feito tambm uma apresentao com
diversos Edits.

O comando FOR TO DO um comando de repetio, ou seja, com ele possvel fazer uma determinada rotina
de programao ser repetida diversas vezes. Isso facilita muito na programao de diversos programas,
principalmente quando tiver que gerar tabelas ou diversos valores para fazer grficos.

Para poder melhor entender este comando o programa que segue ajudar.

Usando o comando, o ListBox, e usando os Comandos Edit, Label e Button pode-se fazer a tela de apresentao
que segue:

31
Alguns comandos vo aparecer abaixo e significam o seguinte:

ListBox1->Clear(); Limpar o contedo existente dentro da ListBox.

for (e=0;e<=b;e++) ou for (e=0;e<=b;e=e+1) Linha de atuao do comando For que diz o seguinte; o e
inicial deve ser 0 (e=0), o e deve ser menor e igual a b (e<=b), e o valor de e deve sempre ser somado 1 (e++)
ou (e=e+1), ou seja, na primeira passagem o e igual a 0, na segunda, deve-se adicionar 1 ao valor 0, ou seja, o
e passa a valer agora 1 ( e=0+1), na prxima passagem o e ser novamente somado 1, ficando este valendo
ento 2 (e=1+1), e assim por diante. Se desejar fazer o loop pulando de 15 em 15 ficaria da seguinte forma =>
(e=e+15). Para pular de 20 em 20 ficaria => (e=e+20).

ListBox1->Items->Add(FloatToStr(e)); Adiciona 1 tem Float no ListBox1

ListBox2->Items->Add(FloatToStr(f)+" xxx"); Adiciona 1 tem Float no ListBox2 e mostra no final


XXX.
O XXX serve apenas para mostrar que se pode escrever qualquer coisa junto com o resultado, por exemplo
kg, metros, segundos, etc.

f= pow(a,e); Frmula que ser usada no programa, onde pow(a,e) significa ae, ou seja f = ae

-----------------------------------------------------Programa 7 ---------------------------------------------------

Veja como fica a programao no Button1 para o exerccio dado.

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)


{
float a,b,f;
float e;

32
a=StrToFloat(Edit1->Text);

b=StrToFloat(Edit2->Text);

ListBox1->Clear();
ListBox2->Clear();

for (e=0;e<=b;e++)
{
ListBox1->Items->Add(FloatToStr(e));
f= pow(a,e);
ListBox2->Items->Add(FloatToStr(f)+" xxx");

if (e==0)
Edit3->Text=FormatFloat("0.00",f);
if (e==1)
Edit4->Text=FormatFloat("0.00",f);
if (e==2)
Edit5->Text=FormatFloat("0.00",f);
if (e==3)
Edit6->Text=FormatFloat("0.00",f);
if (e==4)
Edit7->Text=FormatFloat("0.00",f);
if (e==5)
Edit8->Text=FormatFloat("0.00",f);
if (e==6)
Edit9->Text=FormatFloat("0.00",f);
if (e==7)
Edit10->Text=FormatFloat("0.00",f);
if (e==8)
Edit11->Text=FormatFloat("0.00",f);
if (e==9)
Edit12->Text=FormatFloat("0.00",f);
if (e==10)
Edit13->Text=FormatFloat("0.00",f);
}
}
//---------------------------------------------------------------------------

Quando o programa for colocado para rodar, se apresentar da seguinte forma:

33
No programa acima, na coluna esquerda, formada com os Edits, os resultados foram feitas sem o for, e
usando os comandos IF. Neste caso para preencher estas 11 linhas, foram necessrio criao de 23 linhas de
programao. Caso fosse para fazer apenas a coluna da esquerda, o programa ficaria como o mostrado a seguir;

//---------------------------------------------------------------------------

for (e=0;e<=b;e++)
{
f= pow(a,e);

if (e==0)
Edit3->Text=FormatFloat("0.00",f);
if (e==1)
Edit4->Text=FormatFloat("0.00",f);
if (e==2)
Edit5->Text=FormatFloat("0.00",f);
if (e==3)
Edit6->Text=FormatFloat("0.00",f);
if (e==4)
Edit7->Text=FormatFloat("0.00",f);
if (e==5)
Edit8->Text=FormatFloat("0.00",f);
if (e==6)
Edit9->Text=FormatFloat("0.00",f);
if (e==7)
Edit10->Text=FormatFloat("0.00",f);
if (e==8)
Edit11->Text=FormatFloat("0.00",f);

34
if (e==9)
Edit12->Text=FormatFloat("0.00",f);
if (e==10)
Edit13->Text=FormatFloat("0.00",f);
}
}
//---------------------------------------------------------------------------

Na coluna do meio e na coluna a direita, os onze valores existentes em cada coluna, foram gerados por apenas 3
linhas. Se fossem fazer apenas as colunas do meio e da direita o programa ficaria como segue o exemplo:
Repare que o ListBox1 mostra s o valor do e, e no ListBox2 feito os clculos,

for (e=0;e<=b;e++)
{
ListBox1->Items->Add(FloatToStr(e));
f= pow(a,e);
ListBox2->Items->Add(FloatToStr(f)+" xxx");
}
}
//---------------------------------------------------------------------------

Veja que o comando FOR-TO-DO economiza muito tempo de trabalho de programao.

-------------------------------------------------------------------------------------------------------------------------------

Exemplos de programas
-----------------------------------------------------Programa 8 ---------------------------------------------------

Como transformar um ngulo com valor decimal em graus, minutos e segundos.

No esquecer da linha
#include<math.h> ( relambrando, serve para fazer os clculos matemticos)
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float a,b,c,d,e,f,g,h;
a=StrToFloat(Edit1->Text);
d=floor(a); // floor Retorna o menor inteiro menor que a
e=a-d;
b=e*60;
f=floor(b); // floor Retorna o menor inteiro menor que d
g=b-f;
h=g*60;
Edit2->Text=FormatFloat("0",d)+ " graus " +FormatFloat("0",f)+ " minutos e "+FormatFloat("0.000",h)+ "
segundos";

35
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
Este o resultado que deve aparecer.

-----------------------------------------------------Programa 9 ---------------------------------------------------
Exemplo com comando FOR

A imagem da lana no programa foi feito com o auxlio do CAD.


Programa para calcular a lana de uma empilhadeira. Este o formato que fica a tela. Para a imagem s entrar
no Palet ADDITIONAL,

depois clicar em IMAGE

36
e colocar na FORM.

D dois click sobre o quadro que se abre da IMAGE (sem nada dentro),

e ir aparecer uma tela com a tecla LOAD que dever ser clicado para aparecer a tela LoadPicture.

37
Clicando ali se pode carregar a imagem.

O PROGRAMA

Frmulas usadas

Momento = Carga x distncia Estao = distncia


Momento Resistente = Momento / Tenso
Altura = (momento resistivo x 6 / base )0.33333
Fora de cisalhamento = Tenso * 0.75 x altura x base

/---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)


{
float tensao, carga, largura, comprimento, e, momento, cisalha, altura;
float estacao, distancia,altura1,altura2;

tensao=StrToFloat(Edit1->Text);
carga=StrToFloat(Edit2->Text);
comprimento=StrToFloat(Edit3->Text);
largura=StrToFloat(Edit4->Text);
estacao=StrToFloat(Edit5->Text);

38
ListBox1->Clear();
ListBox1->Items->Add(" Estao | Momento | Altura | Carga Cisalhamento que
suporta");
for (e = 1 ; e <= estacao ; e++)
{
distancia = (comprimento / estacao) * e;
momento = carga * distancia;
altura = pow((momento/tensao)*6 / (largura*1.0000),0.333333333333);
cisalha = tensao * 0.75 * ( altura * largura);

ListBox1->Items->Add( " " +FloatToStr(distancia) +" | "+ FloatToStr(momento)+" | "+


FloatToStr(altura)+" | " + FloatToStr(cisalha));
}
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)


{
Close();
}
//---------------------------------------------------------------------------

Veja o final

-----------------------------------------------------Programa 10 ---------------------------------------------------

39
Programa sobre a Lei de WHEATSTONE

//---------------------------------------------------------------------------

#include <vcl.h>
#include <math.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::Button1Click(TObject *Sender)
{
float r1,r2,r3,r4,vcc,vo,e,rx;

r4=StrToFloat(Edit1->Text);
vcc=StrToFloat(Edit2->Text);
r1=StrToFloat(Edit3->Text);
r2=StrToFloat(Edit4->Text);
r3=StrToFloat(Edit5->Text);

ListBox1->Clear();
ListBox2->Clear();
Edit6->Clear();
Edit7->Clear();

40
for (e = (r4-100) ; e <= (r4+100) ; e=e+10)
{
vo=(((r1*r3)-(r2*e))/((r1+r2)*(r3+e)))*vcc;
ListBox1->Items->Add( FloatToStr(e));
ListBox2->Items->Add( FloatToStr(vo));
if (vo==0)
{
Edit6->Text=("Ponte em Equilbrio");
Edit7->Text=("0.0",e);
}
}

rx=(r1*r3)/(r2*1.000);
Edit8->Text=(" Ponte em Equilbrio s");
Edit9->Text= " acontecer com R4 = " +FormatFloat("0.000",rx);

}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)


{
Close();
}
//---------------------------------------------------------------------------

-----------------------------------------------------Programa 11 ---------------------------------------------------

41
Programa CDIGO DE CORES DE RESISTORES

O desenho do resistor foi feito no CAD.

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include <math.h>

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

void __fastcall TForm1::Button2Click(TObject *Sender)


{
Close();

42
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float a,b,c,d;
String e;

switch(RadioGroup1->ItemIndex)
{
case 0:
a=0;
break;
case 1:
a=1;
break;
case 2:
a=2;
break;
ase 3:
a=3;
break;
case 4:
a=4;
break;
case 5:
a=5;
break;
case 6:
a=6;
break;
case 7:
a=7;
break;
case 8:
a=8;
break;
case 9:
a=9;
break;
}

switch(RadioGroup2->ItemIndex)
{
case 0:
b=0;
break;
case 1:
b=1;
break;
case 2:
b=2;
break;

43
case 3:
b=3;
break;
case 4:
b=4;
break;
case 5:
b=5;
break;
case 6:
b=6;
break;
case 7:
b=7;
break;
case 8:
b=8;
break;
case 9:
b=9;
break;
}

switch(RadioGroup4->ItemIndex)
{
case 0:
d=10;
break;
case 1:
d=5;
break;
}

switch(RadioGroup3->ItemIndex)
{
case 0:
c=0;
Edit1->Text=FormatFloat("0",a) + FormatFloat("0",b) + " Ohm -- " + " Tolerncia de " +
FormatFloat("0",d)+"%";
break;
case 1:
c=1;
Edit1->Text=FormatFloat("0",a) + FormatFloat("0",b) + "0" + " Ohm -- " + " Tolerncia de " +
FormatFloat("0",d)+"%";
//e=0;
break;
case 2:
c=2;
Edit1->Text=FormatFloat("0",a) + FormatFloat("0",b) + "00" + " Ohm -- " + " Tolerncia de " +
FormatFloat("0",d)+"%";
//e=00;
break;

44
case 3:
c=3;
Edit1->Text=FormatFloat("0",a) + FormatFloat("0",b) + "000" + " Ohm -- " + " Tolerncia de " +
FormatFloat("0",d)+"%";
//e=000;
break;
case 4:
c=4;
Edit1->Text=FormatFloat("0",a) + FormatFloat("0",b) + "0000" + " Ohm -- " + " Tolerncia de " +
FormatFloat("0",d)+"%";
//e=0000;
break;
case 5:
c=5;
Edit1->Text=FormatFloat("0",a) + FormatFloat("0",b) + "00000" + " Ohm -- " + " Tolerncia de " +
FormatFloat("0",d)+"%";
//e=00000;
break;
case 6:
c=6;
Edit1->Text=FormatFloat("0",a) + FormatFloat("0",b) + "0000000" + " Ohm -- " + " Tolerncia de " +
FormatFloat("0",d)+"%";
//e=000000;
break;
case 7:
c=7;
Edit1->Text=FormatFloat("0",a) + FormatFloat("0",b) + "00000000" + " Ohm -- " + " Tolerncia de "
+ FormatFloat("0",d)+"%";
//e=0000000;
break;
case 8:
c=8;
Edit1->Text=FormatFloat("0",a) + FormatFloat("0",b) + "000000000" + " Ohm -- " + " Tolerncia de "
+ FormatFloat("0",d)+"%";
//e=00000000;
break;
case 9:
c=9;
Edit1->Text=FormatFloat("0",a) + FormatFloat("0",b) + "00000000000" + " Ohm -- " + " Tolerncia
de " + FormatFloat("0",d)+"%";
//e=000000000;
break;
}
}
//---------------------------------------------------------------------------

45
46