Vous êtes sur la page 1sur 38

Computao para

Automao I
Tutorial - Conversor de bases
Decimal Binrio
Binrio - Decimal

Profs. Roberto / Silvio

Introduo
O objetivo deste tutorial mostrar os procedimentos para se
construir uma aplicao em Visual C++ para a converso de bases
numricas (decimal para binrio e binrio para decimal).
Ressaltamos que a construo de um programa para realizar uma
determinada tarefa, requer do programador conhecimento pleno
sobre o processo que dever ser realizado. Portanto, antes de
esboar o algoritmo, imprescindvel que o desenvolvedor tenha
domnio sobre o assunto.
Neste nosso projeto (conversor de bases numricas), importante
que voc conhea, alm dos conceitos de bases numricas, os
mtodos para a converso.

Sistemas de numerao : Reviso


Existem diversos sistemas de numerao em uso na tecnologia digital.
Os mais comuns so os sistemas decimal, binrio, octal e
hexadecimal. O sistema decimal o mais familiar, e conhecer as suas
caractersticas nos ajudar a entender melhor os demais sistemas.

Sistema decimal:

103 102 101 100

3
0
7
1

x
x
x
x

100
101
102
103

=
3
=
0
= 700
= 1000
1703

Valores posicionais (pesos)

Sistema binrio:
Apesar da maior familiaridade, o sistema de numerao decimal no
conveniente para ser implementado em sistemas digitais, pois muito
difcil projetar um equipamento eletrnico para que ele opere com dez
nveis diferentes de tenso (cada um representando um dgito decimal,
0 a 9). O sistema binrio, portanto, a base dos sistemas digitais.

23

22

21

20

1
0
1
1

x
x
x
x

20
21
22
23

=
=
=
=

1
0
4
8
______

13
Valores posicionais (pesos)

Converso de Decimal para Binrio


A converso pode ser realizada atravs de divises sucessivas pelo
nmero decimal 2, e a escrita, de modo inverso, dos restos de cada
diviso at que um quociente 0 seja obtido. Por exemplo, para 2510:

25
= 12 + o resto 1
2

bit menos significativo

12
= 6 + o resto 0
2
6
= 3 + o resto 0
2
3
= 1 + o resto 1
2
bit mais significativo
1
= 0 + o resto 1
2

2510 = 1 1 0 0 12

Fluxograma do mtodo de divises sucessivas


na converso de decimal para binrio.

Converso de Binrio para Decimal


A converso pode ser realizada atravs da soma dos produtos dos
dgitos binrios pelos valores posicionais correspondentes (potncias
de 2)

1
1
0
1
1

x
x
x
x

20
21
22
23

=
=
=
=

1
0
4
8
______

13

Construo da aplicao
Abra o Visual C++ 2008 Express Edition e selecione o menu FILE /
NEW / PROJECT:

Construo da aplicao
Na janela NEW PROJECT selecione o tipo CLR e o template
Windows Forms Application:

Construo da aplicao
No campo Name informe o nome do projeto (bindec). Utilize o boto
Browse para selecionar a pasta onde o projeto ser criado (selecione
um local do HD desktop ou pasta de documentos):

Clique em OK aps o
preenchimento

Ajuste do formulrio

Ajuste o tamanho do
formulrio

Acesse a guia
Properties para alterar
as propriedades do
objeto (Form1)

Ajuste do formulrio

Altere a propriedade Text


para Conversor de
Bases este ser o
ttulo do formulrio.

Insero dos rtulos (Labels)


1) Selecione a guia Toolbox
(caixa de ferramentas)

2) Selecione o objeto
Label

3) Insira o objeto
(controle) no
formulrio

Insero dos rtulos (Labels)


4) Selecione a guia Properties
(Propriedades)

5) Altere a propriedade
Text para DECIMAL

Insero dos rtulos (Labels)

6) Altere a propriedade
Font/Size para 18

Insero dos rtulos (Labels)


Com o mesmo procedimento, crie outros trs rtulos conforme figura
abaixo (voc pode usar o recurso copiar-colar):

Insero das caixas de texto (TextBoxes)


1) Selecione a guia Toolbox
(caixa de ferramentas)
2) Selecione o objeto
TextBox

3) Insira o objeto
(controle) no
formulrio

Insero das caixas de texto (TextBoxes)


4) Selecione a guia Properties
(Propriedades)

5) Altere a propriedade
Font para:
Name: Courier New
Size: 14

Insero das caixas de texto (TextBoxes)

6) Altere a propriedade Name


para txtdec

Insero das caixas de texto (TextBoxes)


Use os mesmos procedimentos para inserir as outras caixas de texto.
Voc pode utilizar o recurso copiar-colar, mas no se esquea de
alterar a propriedade Name, pois cada caixa deve ter o seu nome
prprio. Veja os nomes nos bales abaixo:
Name: txtdec

Name: txtbin2

Name: txtbin

Name: txtdec2

Insero dos botes de comando (Buttons)


1) Selecione a guia Toolbox
(caixa de ferramentas)
2) Selecione o objeto
Button

3) Insira o objeto
(controle) no
formulrio

Insero dos botes de comando (Buttons)


4) Selecione a guia
Properties (Propriedades)

5) Altere a propriedade
Name para: cmddecbin

Insero dos botes de comando (Buttons)

6) Altere a propriedade
Text para CONVERTER

Insero dos botes de comando (Buttons)


Use o mesmo procedimento para inserir o outro boto. Altere a
propriedade Name do segundo boto para cmdbindec.

Name: cmdbindec

Codificao das rotinas de converso


O que fizemos at agora foi apenas a insero dos objetos (ou
controles) no formulrio. No conceito do paradigma Orientado a
Objeto, podemos dizer que esta fase corresponde modelagem
dentro da viso esttica, ou seja, construmos a interface da
aplicao com uma nica preocupao: as propriedades das
coisas (objetos).
O prximo passo relacionar as coisas e dar funcionalidades a elas, o
que corresponde s vises dinmica e funcional dentro do paradigma
Orientado a Objeto.
Portanto, devemos agora escrever as rotinas que daro funcionalidade
aplicao. Lembre-se de que temos 2 botes de comando dentro do
nosso formulrio. Vamos construir as nossas rotinas de converso
decimal-binrio e binrio-decimal para serem executadas quando o
usurio clicar sobre um destes botes (devemos programar o evento
CLICK dos objetos cmddecbin e cmdbindec).

Codificao das rotinas de converso


Programao do evento Click do objeto cmddecbin:
1) Selecione o
objeto cmddecbin

2) Acesse a guia
Properties
3) Clique sobre
o boto Events

4) D um duplo clique
sobre o evento Click

Codificao das rotinas de converso


Surgir a janela de edio onde o cursor j estar posicionado para o
incio da digitao do cdigo:
Nosso cdigo dever ser
digitado entre a abertura e
fechamento das chaves da
rotina cmddecbin_Click

Codificao das rotinas de converso


A figura abaixo mostra a aparncia da janela de edio aps a
digitao da rotina (no prximo slide temos a mesma rotina em formato
texto):

Codificao das rotinas de converso


private: System::Void cmddecbin_Click(...
{ String ^bin = "";
int i, valor;
valor=Int16::Parse(txtdec->Text);
for(i=0;i<8;i++){
if(valor%2){
bin = "1"+bin;
} else {
bin = "0"+bin;
}
valor = valor/2;
}
txtbin->Text=bin;
}

Comentrios sobre algumas instrues utilizadas


na rotina cmddecbin _Click
String ^bin = "";
Declara a varivel bin como String (cadeia de caracteres)

int i, valor;
Declara as variveis i e valor como int (numricas inteiras)

valor=Int16::Parse(txtdec->Text);
Converte o valor da propriedade Text da caixa de texto txtdec
(txtdec->Text) para inteito (Int16::Parse) e armazena o
valor convertido na varivel valor.

Comentrios sobre algumas instrues utilizadas


na rotina cmddecbin _Click
for(i=0;i<8;i++){
Inicia um loop onde a varivel contadora i comea em 0 (i=0)
e chega at 7 (i<8). A cada ciclo a varivel i incrementada
em 1 (i++). Esta estrutura for faz um loop para promover as
divises sucessivas por 2 do valor decimal (varivel valor)
para compor o valor binrio correspondente.

if(valor%2){
Verifica se o resto da diviso da varivel valor por 2
verdadeiro (maior que 0). Lembre-se de que o operador %
(mdulo) retorna o resto de uma diviso inteira.

Comentrios sobre algumas instrues utilizadas


na rotina cmddecbin _Click
txtbin->Text=bin;
Faz com que o contedo da propriedade Text da caixa de texto
txtbin (txtbin->Text) seja igual ao contedo da varivel bin
(string) .

Codificao das rotinas de converso


Programao do evento Click do objeto cmdbindec:
1) Selecione o
objeto cmdbindec

2) Acesse a guia
Properties

3) Clique sobre
o boto Events

4) D um duplo clique
sobre o evento Click

Codificao das rotinas de converso


Surgir a janela de edio. A figura abaixo mostra a aparncia da
janela aps a digitao do cdigo (no prximo slide voc encontrar o
cdigo em formato texto):
Nosso cdigo dever ser
digitado entre a abertura e
fechamento das chaves da
rotina cmdbindec_Click

Codificao das rotinas de converso


private: System::Void cmdbindec_Click(...
{ String ^bin=txtbin2->Text;
int i,aux=0,ex=0,valor=0;
for(i=bin->Length-1; i>=0; i--) {
aux=Int16::Parse(bin->Substring(i,1));
ex=(bin->Length-1)-i;
valor=valor+(aux * System::Math::Pow(2,ex));
}
txtdec2->Text=valor.ToString();
}

Comentrios sobre algumas instrues utilizadas


na rotina cmdbindec _Click
String ^bin=txtbin2->Text;
Declara a varivel bin como String (cadeia de caracteres) e
lhe atribui o contedo da propriedade Text da caixa de texto
txtbin2.

bin->Length
Retorna o comprimento da string bin (quantidade de
caracteres)

bin->Substring(i,1)
Retorna a parte da string bin que se inicia em i e tem o
tamanho de 1 (i,1).

Comentrios sobre algumas instrues utilizadas


na rotina cmdbindec _Click
System::Math::Pow(2,ex)
Retorna o valor da potncia ex elevado a 2 (2,ex).

bin->Length
Retorna o comprimento da string bin (quantidade de
caracteres)

txtdec2->Text=valor.ToString();
Armazena na propriedade Text da caixa de texto txtdec2
(txtdec2->Text) o contedo da varivel valor convertido em
string (valor.ToString())

Testando a aplicao
Para finalizar, teste sua aplicao usando os camandos
Build Solution (F7) e em seguida Start debugging (F5).