Professional Documents
Culture Documents
Linguagens de programao
Linguagens de programao
SENAI-SP, 2009
3a edio.
Avaliao dos captulos assinalados no cabealho da primeira pgina do captulo por Comit Tcnico. O
crdito aos avaliadores encontra-se na ltima pgina do captulo.
Coordenao editorial
2a Edio, 2003. Organizada, atualizada e editorada por Meios Educacionais da Gerncia de Educao e
CFPs 1.01, 1.09, 1.23, 3.01, 4.02, 5.01 e 6.01 da Diretoria Tcnica do SENAI-SP, 2006.
Coordenao
Organizao
Validao
1a Edio, 2000. Trabalho elaborado pela Faculdade SENAI de Tecnologia Mecatrnica do Departamento
Regional do SENAI-SP.
Coordenao
Elaborao
Adaptao de contedos
Reviso de texto
SENAI
Telefone
Telefax
SENAI on-line
E-mail
Home page
Linguagens de programao
Sumrio
10
Sistema binrio
11
Os dgitos binrios
12
Hardware
15
Memria secundria
17
Sistema operacional
21
MS-DOS
21
22
Formatando disquetes
28
Editores
31
Turbo C
31
34
Lgica de programao
39
Algoritmo
39
42
Estrutura de programas
45
Linguagem C
45
O padro ANSI
46
A evoluo da linguagem C
46
50
Os primeiros passos
52
Dados e variveis
57
Tipos de dados
57
Conceito de varivel
59
Variveis
59
Operadores aritmticos
63
Operadores aritmticos
63
65
65
69
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Comandos de estruturas
77
77
80
Funes
83
83
84
Matrizes e ponteiros
89
Matrizes
89
Estruturas de dados
94
Ponteiros
96
C++ Builder
99
99
Linguagem C++builder
101
104
Edit menu
105
Search menu
106
View menu
107
Project menu
108
Run menu
109
Component menu
110
Database menu
110
Tools menu
111
Window menu
111
Help menu
112
Menu de arquivos
117
Edit menu
118
Search menu
119
View menu
120
Project menu
121
Run menu
122
Component menu
123
Database Menu
123
Tools menu
124
Window menu
124
Help menu
125
Eventos
129
129
133
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Paleta de componentes
134
Pgina Standard
134
Pgina adicional
136
Pgina Win32
138
Pgina System
140
141
141
Pgina BDE
143
Pgina Internet
144
Pgina QReport
146
Pgina Dialogs
148
150
Pgina Samples
151
Pgina ActiveX
153
Janela de cdigos
154
Criao de aplicativo
157
Criao de aplicativo
157
Cdigo-fonte
162
Contador
165
169
Editor de textos
173
Etapas de operao
174
Banco de dados
181
183
Interface do formulrio
185
Porta paralela
187
189
190
191
Porta serial
197
198
Anexo
205
Cdigo fonte
206
Funes
207
Mensagens
210
Referncias
213
SENAI-SP INTRANET
CT080-09
Linguagens de programao
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Introduo linguagem de
programao
Blaise Pascal que aos dezoito anos desenvolveu uma mquina de calcular para
auxiliar no seu trabalho;
Linguagens de programao
10
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Sistema binrio
Em um circuito eletrnico invivel utilizar informaes analgicas pois no possvel
estabelecer relaes de correspondncia da informao que um dispositivo manda
para outro.
Os modernos sistemas de informao derivam da eficcia em representar a
informao eletronicamente, como sinais digitais e de manipul-la a nveis de alta
velocidade.
A informao armazenada em esquemas binrios que so os componentes bsicos
da tecnologia digital. chamado binrio porque s tem duas unidades que
correspondem a dois estados: presena ou ausncia de energia que o pulso eltrico.
Como nesse esquema h somente em dois estados, a informao representada
neles como a ausncia ou como a presena de energia - pulso eltrico. Os dois
estados do esquema binrio so designados dgitos binrios, ou bits: 0 e 1.
Desse modo, os smbolos alfabticos de linguagem verbal podem ser representados
digitalmente como combinaes de 0 (sem pulso) e 1 (pulso). A partir dessas
combinaes so montadas tabelas de equivalncia.
As tabelas de equivalncia so compostas de:
11
Linguagens de programao
Os dgitos binrios
Matematicamente estamos acostumados a representar os nmeros em funo da
potncia de sua base, uma base muito utilizada a decimal.
Para um nmero decimal de cinco algarismos, cada um ter o seguinte peso:
104 103 102 101 100.
Por exemplo:
10 = 1x101 + 0x100;
100 = 1x102 + 0x101 + 0x100;
297 = 2x102 + 9x101 + 7x100.
12
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Entendendo a formao dos nmeros em base decimal, fica fcil entender os nmeros
na base binria. Cada casa binria ter um peso individual, sempre relativo
potncia 2: 27 26 25 24 23 22 21 20.
Por exemplo:
0 = 0x20 - equivalente ao valor 0 em decimal;
1 = 1x20 - equivalente ao valor 1 em decimal;
110 = 1x22 + 1x21 + 0x20 - equivalente ao valor 6 em decimal;
10011 = 1x24 + 0x23 + 0x22 + 1x21 + 1x20 - equivalente ao valor 19 em decimal;
101101 = 1x25 + 0x24 + 1x23 + 1x22 + 0x21 + 1x20 - equivalente ao valor 45 em decimal.
Palavras binrias recebem nomes especiais conforme a quantidade de bits utilizada
pelas mesmas, representando uma variao de nmeros bem definida:
Em decimal, a abreviao quilo representa 1.000 vezes a unidade, por exemplo 1kg
igual a 1.000 gramas, j em binrio representa-se quilo como sendo 210 que igual a
1.024, portanto 1 kbyte igual a 1.024 bytes, 2 kbytes igual a 2.048 bytes.
Sufixo
Quantidade
Quilo (k)
210 = 1.024
Mega (M)
220 = 1.048.576
Giga (G)
230 = 1.073.741.824
Tera (T)
240 = 1.099.511.627.776
Peta (P)
250 = 1.125.899.906.843.624
Exa (E)
260 = 1.152.921.504.607.870.976
SENAI-SP INTRANET
CT080-09
13
Linguagens de programao
14
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Hardware
O computador pode tambm ser definido como um sistema para gerenciar e tratar
dados.
Dados so fornecidos mquina, para serem processados. Processar significa
manipular dados, seguindo seqncia de instrues codificada num programa, de
acordo com a inteno do usurio do computador, para soluo de seus problemas.
A partir da, com anlise e combinao dos resultados, estrutura-se conhecimento
amplo e bem fundamentado. Os dados so, ento, transformados em informaes.
Passam a fazer parte do conhecimento, ou da informao.
Conhecimento significa apropriao de um tema ou assunto pelo pensamento,
podendo manifestar-se como conceituao, percepo clara, apreenso completa,
anlise, etc.
J informao uma mensagem ou enunciado em que se reduz a medida da
incerteza sobre alguma coisa.
Portanto, o computador trata e gerencia dados que fornecem sustentao ao
surgimento de informao e conhecimento.
SENAI-SP INTRANET
CT080-09
15
Linguagens de programao
UCP ou CPU (Central Processing Unit) so circuitos integrados que podem ser
programados para executar tarefas predefinidas, tm como finalidade receber dados,
process-los e devolver o resultado.
Os processadores so programados por instrues. Um grupo delas forma um
programa ou software. Em sistemas dedicados, como microprocessadores, forno de
microondas, injeo eletrnica de carros, DVDs e outros aparelhos eletrnicos, o
programa utilizado sempre o mesmo.
Os processadores no tm capacidade de armazenamento muito grande. Isso significa
que so adequados apenas aos dedicados. Em relao a outros programas mais
extensos, o armazenamento no feito no processador e sim na memria, que tem a
funo de introduzir dados em dispositivo fsico com o objetivo de posterior
recuperao.
16
SENAI-SP INTRANET
CT080-09
Linguagens de programao
A RAM permite que os dados que esto presentes nela sejam modificados enquanto a
ROM no. A RAM voltil. Se cortarmos sua alimentao eltrica os dados que esto
armazenados nela so perdidos. J a ROM, no. Por isso, em sistemas dedicados
utiliza-se memria ROM.
Muitas vezes, mesmo a memria RAM pode ser pequena para armazenar o programa
de que necessitamos para processar dados. Alm disso, voltil, e por isso est
sempre vazia quando ligamos o computador.
Por todos esses problemas os dados e programas so armazenados em um sistema
chamado de memria secundria ou memria de massa, como discos rgidos,
disquetes, CDs-ROM, onde os dados no so apagados quando desligamos o
microcomputador.
Mas esses sistemas, por serem de acesso mecnico, tm velocidade muito inferior
do processador. Por isso, quando voc quiser rodar um programa, ele sempre
carregado do disco rgido para a memria RAM onde o processador vai buscar os
dados para serem processados.
Como o processador tambm mais rpido que a memria RAM - memria dinmica,
a soluo mais plausvel para combinar as coisas, foi a utilizao de uma pequena
quantidade de memria RAM de alto desempenho que se chama memria cache memria esttica. Ela atua como intermediria na leitura e escrita de dados na
memria RAM. Com isso, o micro melhora seu desempenho, pois o processador pode
trocar dados com essa memria em sua velocidade mxima.
Memria secundria
Existem dois dispositivos de armazenamento de massa que so utilizados em
computador: o disco rgido (HD) e o disquete (floppy disk). Temos ainda outros
dispositivos de armazenamento como: unidades de fita magntica, CD-ROM, Zip Disk
e outros.
SENAI-SP INTRANET
CT080-09
17
Linguagens de programao
18
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Cada lado do disco pode ser identificado como head ou cabea. Temos, portanto no
disquete, head 0 e head 1. Na head 1 que esto gravados os dados.
Durante a leitura do disquete pelo computador acontece o seguinte: uma vez
identificada a formatao, consultado o diretrio. O diretrio o conjunto de dados
que informa a lgica de controle, arquivos gravados no disco, bem como trilhas e
setores em que se localizam. Determinado o local, a cabea de leitura movimentada
sobre a trilha correspondente e o dado gravado e lido.
Hard disk - disco rgido
A forma de operao do disco rgido parecida com a dos disquetes.
Os discos so formados por uma base de alumnio sobre a qual encontra-se uma
camada magntica. Sua grande diferena em relao ao disquete est na quantidade
de dados que pode armazenar.
Por ter alta capacidade, os dados ficam extremamente concentrados. Para isso, as
trilhas so finas e prximas umas das outras. Devido a essas caractersticas, seu
mecanismo de alta preciso e tem que ser operado em um ambiente isento de
qualquer partcula de p.
Durante alguns anos chegou-se a chamar o disco rgido de Winchester , denominao
que caiu em desuso posteriormente. A relao com rifles era feita com base no fato de
que a princpio, o disco rgido foi chamado de 3030 por ter dois lados, cada um deles
com capacidade para armazenar 30 Mbytes.
SENAI-SP INTRANET
CT080-09
19
Linguagens de programao
Como esse cdigo lembrava diretamente o famoso rifle de repetio Winchester 3030,
acabou sendo incorporado unidade de disco. O apelido fez tanto sucesso que
acabou sendo generalizado e passou a identificar a prpria tecnologia com a qual a
unidade foi construda.
Observe a representao esquemtica do interior de um disco rgido:
20
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Sistema operacional
MS-DOS
Durante muitos anos foi um dos mais utilizados nos computadores pessoais. Tem como
caractersticas a execuo de comandos por meio de um prompt, capacidade de
executar somente um programa por vez.
Com o passar do tempo os sistemas operacionais evoluram para sistemas de padro
grficos que utilizam o mouse e as janelas. Nas verses mais novas dos SOs como no
Windows 95, 98, 2000, existe uma janela chamada Prompt do MS-DOS, nela tem-se
quase todos os recursos que o antigo DOS tinha.
Definio
Sintaxe
DIR
DIR
CD
CD\<nome do diretrio>
MD
Cria diretrio. MD
<nome do diretrio>
RD
<nome do diretrio>
Del
<nome do arquivo>
Deltree
Edit
CLS
Limpa a tela
CLS
COPY
SENAI-SP INTRANET
CT080-09
21
Linguagens de programao
MOVE
MOVE <origem><destino>
EXIT
EXIT
Existem uma centena de comandos que podemos utilizar no prompt, aqui esto
descritos os mais utilizados. Caso tenha dvida na forma de utilizar os comandos basta
usar a ajuda digitando o comando seguido de /?. Por exemplo: DIR /?.
Ao se trabalhar no prompt do MS-DOS, os arquivos so exibidos no padro antigo que
consiste em um nome bsico de at oito caracteres, seguido de uma extenso de at
trs caracteres.
Essas extenses dizem respeito ao tipo de arquivo, por exemplo:
22
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Meu Computador
Exibe todas as unidades de discos, recursos para configurar impressoras e outros
elementos. Para acion-lo basta clicar duas vezes com o boto esquerdo do mouse
sobre seu cone presente na rea de trabalho.
SENAI-SP INTRANET
CT080-09
23
Linguagens de programao
Lixeira
Serve como armazenamento temporrio para arquivos excludos. Nela voc poder
recuperar arquivos excludos por algum descuido. Quando no existe nenhum arquivo
excludo o cone fica parecendo uma lixeira vazia e quando existe arquivos apagados o
cone fica parecendo uma lixeira cheia, ao ser excludo um arquivo o sistema faz uma
pergunta se realmente deseja envia-lo para a lixeira.
Barra de tarefas
uma barra horizontal localizada na parte inferior da rea de trabalho. nela que se
encontra o boto iniciar e a referncia para todas as aplicaes que esto em uso.
Boto iniciar
por ele que comeamos a trabalhar com os recursos do Windows ou abrimos um
aplicativo desejado. Clicamos no boto iniciar para abrir um documento, acionar um
aplicativo, modificar configuraes, etc.
24
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Para personalizar a Barra de Tarefas, deveremos clicar uma vez sobre a guia de opo
"Opes da Barra de Tarefas". As opes podem ser ativadas ou desativadas. Para
ativar ou desativar uma opo, deve-se clicar sobre o "quadradinho branco" que existe
ao lado de cada opo. O nome correto deste "quadradinho branco" Caixa de
Verificao. Uma Caixa de Verificao pode estar "ligada" ou "desligada".
As opes mostradas nesta janela so as seguintes:
Sempre visvel: Com esta opo ativa, a sua Barra de Tarefas estar sempre
visvel em sua tela, no importando quantas janelas novas sejam abertas;
Auto ocultar: Com esta opo ativa, a Barra de Tarefas fica reduzida a uma linha
fina quando algum programa for executado;
Mostrar cones pequenos no menu Iniciar: Com esta opo ativa, diminui o
espao ocupado pelo menu que aparece quando se clica no Boto Iniciar;
Mostrar relgio: Com esta opo ativa, ser mostrado um relgio digital na rea
de Notificao.
Assim que terminar de efetuar as modificaes desejadas, clique sobre o Boto OK,
disponvel na parte inferior da janela para que estas modificaes sejam gravadas.
SENAI-SP INTRANET
CT080-09
25
Linguagens de programao
Barras de rolagem
Pode ser horizontal ou vertical. Quando no possvel visualizar a informao
disponvel em uma nica janela, possvel percorr-las clicando nas setas que se
encontram nas extremidades de uma barra de rolagem.
Caixas de verificao
Servem para definir a utilizao ou no de uma opo. Ela pode ficar ligada ou
desligada.
26
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Botes de opo
Ao pressionar um boto de opo, voc sai da janela ativa e determina se os valores
definidos so vlidos (ex: Boto OK) ou no (Boto cancelar).
Guia de opes
Quando vrios grupos de informaes tm que ser mostrados em uma mesma janela,
normalmente so separados em guias, para facilitar o trabalho do usurio. Para ter
acesso a um dos grupos disponveis, basta clicar sobre a guia correspondente.
Uma das principais ferramenta que o Windows nos fornece o Windows Explorer. Ele
est localizado no menu iniciar na opo programas.
27
Linguagens de programao
Formatando disquetes
Muitas vezes para podermos gravar dados em um disquete necessrio format-lo
antes. Para o uso dessa ferramenta preciso muita ateno, principalmente na
escolha do driver a ser formatado.
Para isso, devemos seguir os seguintes passos:
1. Colocar o disquete na unidade de disco;
2. Selecionar o cone da unidade de disco;
3. Clicar com o boto direito do mouse;
4. Escolher a opo formatar;
5. Selecionar a capacidade do disquete;
6. Escolher o tipo de formatao;
7. Clicar no boto iniciar;
8. Aps a formatao ser exibida uma caixa de dilogo com os resultados.
28
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Um outro cuidado que devemos tomar, em desligar corretamente nosso micro. Temos
que escolher a opo desligar no menu iniciar e nunca deslig-lo direto no boto.
SENAI-SP INTRANET
CT080-09
29
Linguagens de programao
Aps selecionarmos desligar aparecer uma caixa de dilogo onde podemos escolher
se desejamos colocar o computador em modo de espera, deslig-lo , reinici-lo ou
reinici-lo em modo MS-DOS.
Estas explicaes nos mostra apenas algumas ferramentas para que possamos
trabalhar melhor com um Sistema Operacional e para termos uma base mais slida no
uso da linguagem de programao.
30
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Editores
Turbo C
O editor e compilador Borland TURBO C++ um ambiente de desenvolvimento de
software. Voc aprender a usar muitas das funes de desenvolvimento, incorporadas
ao programa, com algumas caractersticas prprias de linguagem C++.
SENAI-SP INTRANET
CT080-09
31
Linguagens de programao
A janela principal
A janela principal do aplicativo Turbo C++ tem o seguinte aspecto:
Para abrir a janela de Help, pressione a tecla F1 ou clique Help com o mouse no
menu principal;
32
SENAI-SP INTRANET
CT080-09
Linguagens de programao
o boto direito do mouse ou aperte a tecla CRTL-F1. Caso necessite voltar janela
anterior, aperte a Tecla ALT-F1.
SENAI-SP INTRANET
CT080-09
33
Linguagens de programao
34
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Criao de um programa
Para iniciar um programa, clique com o mouse a palavra ''FILE'' no menu de controle.
Em seguida, a palavra ''NEW'', dentre as opes apresentadas.
Deve aparecer uma janela de cor azul, totalmente vazia. Caso aparea outro programa
nessa tela, voc deve fech-lo, clicando g e repetir a operao para comear um
programa novo.
Armazenamento de arquivos
muito difcil perder um arquivo quando se trabalha no compilador. Para armazenar
um arquivo, pressione F2 ou clique ''Save'' com o mouse, em File, no Menu Principal.
Para maior segurana, salve sempre a parte do programa que for sendo editada.
Compilao do programa
Para compilar um programa, pressione F9 ou clique Compile no Menu Principal e em
seguida, o comando Compile.
Ao pressionar F9, uma janela se abre, indicando a compilao, o no de linhas,
juntamente com algumas mensagens de erros, caso haja, e avisos associados. Para
retornar ao processo de edio aperte qualquer tecla, corrija os erros e ento, compile
novamente.
SENAI-SP INTRANET
CT080-09
35
Linguagens de programao
O utilitrio Make
Aps compilar o programa, voc poder execut-lo pressionando as teclas ALT F9.
Desse modo, o programa que foi editado, executado. Caso voc queira criar um
arquivo executvel, ou seja, um programa que poder ser levado para outros
computadores sem necessidade da instalao de compilador, utilize a opo ''MAKE'',
que est localizada no menu principal dentro de Compile. Esta opo criar um arquivo
com extenso tipo .EXE.
36
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Corte e cpia
Quando voc estiver editando seu programa, pode haver necessidade de copiar ou
colar linhas para facilitar a edio. Para isso, voc pode utilizar no menu principal a
opo ''Edit''. Nela esto incorporadas vrias opes para esse fim. Observe:
Observao
Neste captulo foi exposto somente o necessrio para a perfeita elaborao e
execuo de um programa. Para maiores detalhes de como utilizar o TURBO C++,
consulte o Help do Compilador.
SENAI-SP INTRANET
CT080-09
37
Linguagens de programao
38
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Lgica de programao
Algoritmo
Algoritmo uma seqncia finita de passos que levam a execuo de uma
determinada tarefa. Podemos pensar em algoritmo como uma receita, uma seqncia
de instrues que resolvem um determinado problema. Esses passos no podem ser
redundantes nem subjetivos na sua definio, devem ser claros e precisos.
SENAI-SP INTRANET
CT080-09
39
Linguagens de programao
Ser objetivo;
40
SENAI-SP INTRANET
CT080-09
Linguagens de programao
M=
P1+ P2 + P3 + P4
4
Para podermos montar corretamente este algoritmo, temos que fazer trs perguntas:
1. Quais so os dados de entrada?
R.: P1, P2, P3, P4 (Os valores das provas).
2. Qual ser o processamento a ser feito?
R.: Soma dos valores das provas e a diviso do resultado por quatro.
3. Quais sero os dados de sada?
R.: Mdia final.
O algoritmo fica:
Programas
SENAI-SP INTRANET
CT080-09
41
Linguagens de programao
Funo
Processamento em geral.
Estrutura condicional.
Conector.
Dentro dos smbolos sempre ter algo escrito, pois, somente eles, no nos dizem
nada.
42
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Veja:
Calcular a soma de dois nmeros:
SENAI-SP INTRANET
CT080-09
43
Linguagens de programao
44
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Estrutura de programas
Linguagem C
A linguagem de programao C nasceu na dcada de 70, criada por Dennis Ritchi, que
a implementou pela primeira vez usando um DEC PDP-11 com o sistema operacional
UNIX. A linguagem C derivada da linguagem B, criada por Ken Thompson, que por
sua vez derivada da linguagem BCPL, inventada por Martin Richards.
Podemos dizer que a linguagem de programao C uma linguagem genrica que
pode ser utilizada para criao de diversos tipos de programas, tais como:
Processadores de texto;
Planilhas eletrnicas;
Sistemas operacionais;
Programas de comunicao;
Por volta de 1983, um comit foi formado para estabelecer um padro para a C, o ANSI
(American National Standards Institute).
Esse processo levou seis anos e foi realmente adotado no final de 1989, e a primeira
cpia foi disponibilizada no incio de 1990. Esse padro foi adotado pela ISO
(International Standards Organization), e ficou referido como ANSI/ISO.
SENAI-SP INTRANET
CT080-09
45
Linguagens de programao
A C uma linguagem de programao estruturada, mas ela no permite que uma subrotina seja definida dentro de outra.
Um grande trunfo dessa linguagem sua portabilidade, ou seja, possvel escrever
um programa para rodar em um determinado Sistema Operacional e em uma
determinada mquina, e transportar seu cdigo fonte para outro tipo de mquina e
sistema operacional sem muitas modificaes.
O padro ANSI
Sua popularidade fez com que vrios compiladores de C surgissem no mercado, cada
um caminhando em uma direo diferente, o que poderia estragar a linguagem. Para
evitar isso, o American National Standards Institute (ANSI) formou uma subcomisso
especial chamada X3J11 para elaborar uma verso padro da C.
Esse desenvolvimento garantiu que aquela linguagem, que caminhava em vrias
direes diferentes ao mesmo tempo, se tornasse novamente padronizada e coerente.
O objetivo final do ANSI era padronizar C para todos os tipos de computadores. Mas
existem muitas diferenas entre os vrios tipos de computadores, como a maneira que
cada um trata a memria.
Assim, os compiladores incorporaram todos os padres do C ANSI, mas se diferenciam
nas particularidades de cada computador para o qual foram desenvolvidos.
Um exemplo a manipulao da tela grfica, que muito diferente entre um PC, um
Macintosh ou um computador com plataforma RISC.
A evoluo da linguagem C
Em informtica, a evoluo rpida e natural, a linguagem C evoluiu da mesma forma.
Bjarne Stroustrup desenvolveu entre 1983 e 1985 nos laboratrios Bell (AT&T) a
linguagem C++ que inicialmente foi chamada de ''C com classes'', pois ela havia
combinado as classes e a orientao a objetos.
46
SENAI-SP INTRANET
CT080-09
Linguagens de programao
SENAI-SP INTRANET
CT080-09
47
Linguagens de programao
48
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Cabealho
composto basicamente por:
Declarao de classes.
Funes
Como dissemos, so a base dos programas. Possuem um header (cabealho) e um
body (corpo).
cabealho
corpo
funo
SENAI-SP INTRANET
CT080-09
49
Linguagens de programao
No cabealho, temos a definio do tipo de funo (podem ser do mesmo tipo que as
variveis), seu nome e seus parmetros. No corpo, temos a declarao de variveis
locais e seus comandos. Pode-se tambm, a partir de uma funo, fazer uma chamada
para outra funo.
Como as funes so a base, comearemos por elas.
parametros_formais)
Exemplo
Float
Divisao
Nome da funo
Chave de abertura
Float res;
Res = n1/n2;
return (res);
Corpo da funo
Chave de fechamento
Detalhes:
O nome de uma funo segue as mesmas regras prticas para os nomes das
variveis;
50
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Uma funo em C++ pode retornar um valor para a funo que a chamou. Isto
feito atravs do comando return;
Se uma funo no vai retornar nenhum valor dizemos que ela vazia e deve-se
declar-la como do tipo void.
Observao
Iremos, no incio, usar funes simples, que no apresentam todas as suas
caractersticas.
Em alguns compiladores no obrigatria a prototipagem das funes, porm
necessria a sua criao antes de utiliz-la.
Outro detalhe que uma funo obrigatria em todos os programas em C++. Esta
funo se chama main(). Ela o ponto inicial do programa e no precisa de
prottipo.
Assim, um programa mnimo em C++ seria:
main()
{
}
ou
void main()
{
}
main(){}
main()
{}
main
)
{
}
SENAI-SP INTRANET
CT080-09
51
Linguagens de programao
E os seguintes so invlidos:
()main {}
main{}
()
Observao
A melhor opo aquela que garante uma boa legibilidade do programa.
Os primeiros passos
Alguns detalhes precisam ser estudados antes de se comear a escrever os
programas.
Vale repetir que um programa em C++ composto por vrias funes, declarao de
classes, instncias de classes (objetos), etc. Os fabricantes de compiladores para C++
oferecem aos programadores uma vasta gama de funes, classes e objetos prontos,
no sendo necessrio desenvolv-los.
Isso facilita o trabalho e permite ao programador criar funes, classes e objetos mais
complexos, utilizando os que j esto prontos, como base. Alguns desses elementos
prontos fazem parte do conjunto de elementos do padro ANSI e, portanto, so
oferecidos por praticamente todos os compiladores. E outros so especficos de cada
fabricante.
Um detalhe importante na sintaxe das funes em C++ a obrigatoriedade da
prototipagem das funes. Prototipar uma funo declar-la ao compilador.
No prottipo de uma funo declara-se de que tipo a funo (valor de retorno) e de
que tipo so seus parmetros formais. Assim, no cabealho dos programas, devemos
ter os prottipos das funes.
Neste momento pode surgir uma dvida. Como fazer o prottipo das funes prontas
fornecidas pelo fabricante do compilador?
Para evitar que o programador tenha muito trabalho, afinal o objetivo exatamente o
oposto, os fabricantes oferecem, junto com o compilador, arquivos contendo o prottipo
das funes oferecidas ao programador. Esses arquivos so chamados de headers e
devem ser includos no seu programa caso se utilize funes prontas. Como
praticamente impossvel no us-las, todo programa ter esses arquivos includos.
52
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Os prottipos esto divididos por tipo de funo. Ento ser necessrio incluir um ou
mais arquivos headers em seus programas, dependendo das funes utilizadas. Para
incluir um arquivo em um programa, utiliza-se uma diretiva para o pr-processador,
chamada #include. Sua sintaxe a seguinte:
#include <nome do arquivo> ou #include "path:\nome do arquivo"
stdio.h
stdlib.h
math.h
iomanip.h
iostream.h
bios.h
Observao
A diretiva #include no serve apenas para os arquivos headers. Pode-se incluir
qualquer tipo de arquivo no seu programa, desde que ele tenha uma sintaxe que o
compilador entenda. Perceba que possvel incluir programas-fonte dentro de outro
programa-fonte.
Exemplo
#include <conio.h>
void main()
{
clrscr();
// funcao que limpa a tela do DOS (clear screen)
---}
Observao
Os arquivos headers tm extenso .h
Comentrios
Uma parte importante nos programas em C++ a colocao de linhas de comentrios
nos blocos lgicos do programa para explicar para outro programador, que porventura
vier a ler o programa, como aquele bloco funciona. Isso serve tambm para
documentar o programa.
SENAI-SP INTRANET
CT080-09
53
Linguagens de programao
Observao
No se deve aninhar comentrios, ou seja, colocar um comentrio dentro de outro.
Exemplo
//
//
//
#
Exemplo 000.0.
Programa que mostra o uso de comentarios de linha
curso C++ - Professor Ant. Carlos - curso C++
include <stdio.h>
void main ()
{
}
Portabilidade e streams
Os criadores da linguagem C estavam em busca de uma linguagem que fosse
portvel, j que os sistemas computacionais estavam se multiplicando.
Uma linguagem portvel aquela que permite que se escrevam programas que podem
ser executados em vrios tipos de computadores, com as mais diversas plataformas de
hardware e software, ou seja, o mesmo programa em mquinas diferentes. Como isto
seria possvel?
Na verdade, o que portvel o programa-fonte escrito em linguagem C, e no o
programa executvel.
A dificuldade de tornar um cdigo portvel que cada mquina tem seus prprios
sistemas de acesso ao hardware interno e aos perifricos. Ento, como compatibilizar
isto?
A idia simples, mas muito inteligente.
Esconde-se do programador, ou seja, da linguagem, o acesso ao hardware.
54
SENAI-SP INTRANET
CT080-09
Linguagens de programao
stream padro em C
Vdeo
stdout
Teclado
stdin
Impressora
stdprn
Vdeo
stdaux
Vdeo
stderr
Toda esta filosofia foi absorvida pela linguagem C++, e alm destes streams padres
foram acrescentados outros, s que na forma de objetos de stream.
Perifrico
stream padro em C
Vdeo
stdout
cout
Teclado
stdin
cin
Impressora
stdprn
Vdeo
stdaux
Vdeo
stderr
cerr
SENAI-SP INTRANET
CT080-09
55
Linguagens de programao
56
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Dados e variveis
Tipos de dados
Apesar de, a princpio, um computador s entender 0s e 1s, possvel, utilizando-se
alguns controles, fazer com que um computador manipule vrios tipos de informao.
Na verdade, o compilador esconde do programador as dificuldades de manipulao do
formato dos dados, permitindo que ele se preocupe com o processamento do dado
propriamente dito. Em C++ podem-se utilizar vrios tipos de dados.
Numricos
Podem ser inteiros, reais (ponto flutuante) ou reais de dupla preciso.
Literais
Esto divididos em dois tipos:
Strings e
Caracteres.
Strings
So seqncias de caracteres contendo letras, dgitos e/ou smbolos especiais que
fazem parte da tabela ASCII. So tambm conhecidas como dado alfanumrico ou
cadeia de caracteres. Normalmente, nos algoritmos e nas linguagens de programao,
uma string delimitada no incio e no fim por um caractere aspas (").
Diz-se que o comprimento de uma string dado pelo nmero de caracteres nela
contido mais um caractere nulo 0 ao fim da string.
SENAI-SP INTRANET
CT080-09
57
Linguagens de programao
Exemplos
"!Qual ?0"
string de comprimento 6;
"0"
string de comprimento 1;
"qUaL ?!@#0"
string de comprimento 9;
"1230"
string de comprimento 3;
"0"
Observao
Espao tambm um caractere.
Caracteres
So diferentes das strings por possurem apenas um caractere, e sero tratados pelas
linguagens de maneira diferente de uma string de comprimento 1. Para diferenciar os
dois, utiliza-se, no caso dos caracteres, o smbolo apstrofo () para identificar um
caractere.
Exemplos
'A'
'a'
'1'
'@'
Lgicos
Este tipo de dado est intimamente ligado ao funcionamento dos computadores. So
tambm chamados de dados booleanos em razo das contribuies de George Boole
rea da lgica matemtica. Este tipo de dado pode assumir apenas dois valores, que
so representados por verdadeiro ou falso (true or false), sim ou no, 1 ou 0.
Resumo
Caracter Real
String
Char
58
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Conceito de varivel
A memria de um computador
Pode-se entender a memria de um computador como se fosse uma pilha de caixas
onde guardada uma informao (instruo ou dado) em cada. Para que o
computador possa tratar essas informaes sem cometer erros, preciso que cada
caixa tenha um endereo.
Nos computadores, esses endereos so nmeros. Nos computadores atuais, cada
informao codificada por um nmero binrio de 8 dgitos (BYTE). Assim, a memria
dos computadores est organizada em bytes.
Variveis
Variveis so posies de memria nas quais os programas podem armazenar (ler
e/ou escrever) valores importantes, ou no, durante a execuo de um programa.
Como esses valores normalmente variam durante a execuo do programa, da o
nome varivel.
Para acessar individualmente cada uma dessas informaes, necessrio saber o tipo
de dado e o seu respectivo endereo. Imagine um programador tendo de memorizar o
endereo das dezenas de variveis que seu programa usa, ou tendo de consultar uma
tabelinha escrita para saber os endereos.
Percebe-se que difcil trabalhar com esta sistemtica de acesso. Para contornar isto,
pode-se associar s variveis um nome, uma etiqueta, um apelido que, tecnicamente,
chamado por um nome - o nome da varivel.
SENAI-SP INTRANET
CT080-09
59
Linguagens de programao
Portanto, uma varivel possui 3 atributos: um nome, um tipo de dado que ela
armazena e o contedo propriamente dito. Todas as variveis possuem um nome e
em cada linguagem de programao existem regras para nome-las.
Por exemplo, em C++ tem-se as seguintes regras (prticas) bsicas:
Exemplos
n1, n2, N1, N2
correto
1ano, 2ano
incorreto
nome 1, nome 2
incorreto
nome_1, nome_2
correto
correto
* b, $c, dado!,
ac@et
incorreto
correto
_salario
Declarar preciso
Em C++ preciso declarar uma varivel antes de utiliz-la. A declarao utilizada
pelo compilador para reservar na memria do computador o espao necessrio para
armazenar os valores desta varivel. A declarao de variveis um item importante
nos programas e deve ser feita com muito cuidado e critrio.
Tabela de tipos bsicos
A linguagem C++ possui um grande nmero de tipos, e para declarar cada tipo
utilizada uma palavra diferente. Essa palavra que indica ao compilador o tipo de dado
que ser utilizado.
60
Nome do tipo
Tipo
Bytes ocupados na
memria
Faixa de valores
Char
Caractere
01
-128 a +127
Int
Inteiro
02
-32.768 a +32.767
Float
Ponto flutuante
04
3,4x10-38 a 3,4x10+38
Double
Dupla preciso
08
1,7x10-308 a 1,7x10+308
Void
Vazia
00
------------------
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Modificadores de tipo
possvel, acrescentando-se palavras-chaves frente dos nomes dos tipos, modificar
suas faixas de valores. Os modificadores de tipo so: long, short e unsigned. Assim, a
tabela fica:
Modificadores
de tipo
Nome do
tipo
Tipo
Bytes
char
caractere
01
-128 a + 127
char
caractere
01
0 a 255
int
inteiro
02
-32.768 a +32.767
Long
[int]
inteiro longo
04
-2.147.483.648 a +2.147.483.647
Unsigned
[int]
02
0 a 65.535
Unsigned long
[int]
04
0 a 4.294.967.295
Short
[int]
inteiro curto
02
-32.768 a +32.767
float
ponto flutuante
04
3,4x10-38 a 3,4x10+38
double
dupla preciso
08
1,7x10-308 a 1,7x10+308
double
dupla preciso
10
3,4x10-4.932 a 3,4x10+4.932
void
vazia
00
-------------------
Unsigned
Long
Faixa de valores
Observao
[ ] significa opcional.
SENAI-SP INTRANET
CT080-09
61
Linguagens de programao
62
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Operadores aritmticos
Operadores aritmticos
Operador
Ao
Atribuio
Soma
Subtrao
Multiplicao
Diviso
++
Incremento
--
Decremento
SENAI-SP INTRANET
CT080-09
63
Linguagens de programao
Mdulo
Retorna o resto da diviso.
Exemplo
div = 10 % 3 primeiro faz a diviso e depois atribui o resto (1) a div. Observe que a
diviso inteira, seno no haveria resto.
Incremento e decremento
Incrementam ou decrementam a varivel que seu operando. Podem ser pr-fixados
ou ps-fixados.
Exemplos
mas = 4
frutas = mas ++ (ps-fixado) primeiro atribui 4 a frutas, depois incrementa mas;
mas = 4
frutas = ++ mas primeiro incrementa mas, depois atribui mas (5) a frutas.
Exemplos
// Exemplo 010
// Uso dos operadores *e/
# include <stdio.h>
# include <conio.h>
void main ()
{
float idade, dias, horas, minutos;
clrscr();
printf ( Digite sua idade: );
scanf(%f ,&idade);
dias = idade *365;
horas = dias *24;
minutos = horas *60;
printf ( \ n Sua idade em dias e %f , dias);
printf ( \ n em horas e %f ,horas);
printf ( \ n em minutos e %f , minutos);
printf ( \ n \n em Venus voce teria %f anos venusianos , idade/0.8);
}
// Exemplo
// Uso dos
# include <
# include <
void main (
{
011
operadores ++ e-stdio.h . h>
conio . h>
)
64
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Ao
Fixa em n o nmero de casas a serem utilizadas para a
setw(int n)
setprecision(int p)
setfill(char ch)
Exemplo
// Exemplo 012
// Uso do manipulador setw()
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>
void main ()
{
int andre, carlos, mauro, luis;
clrscr();
cout << " Notas (0 a 100) para os alunos Andre, Carlos, Mauro e Luis:";
cin
>> andre >> carlos >> mauro >> luis;
cout<< " \n \n \n"
<< " \n Andre ="<<setw(3) << andre
<< " \n Carlos = "<< setw(12) << carlos
<< " \n Mauro = "<< setw (5) << mauro
<< " \n Luis = "<< setw (14) << luis;
getch ();
}
Observao
Os manipuladores esto definidos no arquivo header iomanip.h.
Hex
oct
Ao
Imprime o prximo valor no formato decimal
(default).
Imprime o prximo valor no formato
hexadecimal.
Imprime o prximo valor no formato octal.
SENAI-SP INTRANET
CT080-09
65
Linguagens de programao
Exemplo
// Exemplo 013
// Uso do manipulador setprecision() e setfill()
# include <iostream.h>
# include <iomanip.h>
# include <conio.h>
void main ()
{
float video, teclado, mouse, cpu, winchester;
clrscr();
cout <<" \n Digite o preco do video ";
cin >> video;
cout << " \n Digite o preco do teclado ";
cin >> teclado;
cout << " \n Digite o preco do mouse ";
cin >> mouse;
cout << " \n Digite o preco da CPU ";
cin >> cpu;
cout << " \n Digite o preco do winchester ";
cin >> winchester;
cout << " \n Video
"<< setw(8) << setprecision(2) << setfill('.') << video
<< " \n Teclado
"<< setw(8) << setprecision(2) << setfill('.') <<
teclado
<< " \n Mouse
mouse
<< " \n CPU
"<< setw(8) << setprecision(2) << setfill('.') << cpu
<< " \n Winchester "<< setw(8) << setprecision(2) << setfill('.') <<
winchester ;
getch();
}
// Exemplo 014
// Uso dos manipuladores de base numerica
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>
void main ()
{
int numero;
clrscr();
cout << "Digite um
cin >> numero;
cout << " \n \n ";
cout << " \nNumero
cout << " \nNumero
cout << " \nNumero
getch();
}
numero inteiro:";
em decimal:" << numero;
em hexadecimal:" << hex << numero;
em octall:" << oct << numero;
Outros detalhes
Trs outras caractersticas devem ser estudadas antes de prosseguirmos.
Declarao de constantes
muito comum o uso de constantes em programas. Constantes numricas, caracteres
ou at mesmo constantes do tipo string (mensagens de erro, por exemplo).
66
SENAI-SP INTRANET
CT080-09
Linguagens de programao
A C++ oferece duas formas de definir constantes: usando a diretiva para o prprocessador #define ou a palavra chave const (qualifier). Usaremos a palavra chave
const por ela permitir que se declare o tipo de constante, fazendo com que desta forma
o compilador trabalhe melhor com estes tipos de dados na memria.
Na diretiva #define no se especifica o tipo de constante, apenas seu valor.
Exemplo
//
Exemplo 015
#include<stdio.h>
#include<conio.h>
const float pi = 3.141592;
const char alerta = '/a';
void main ()
{
float raio;
clrscr();
printf ("Digite o raio da circunferencia em milimetros: ");
scanf("%f",&raio);
printf (" \n \n");
printf ("\nO perimetro vale %.2f mm ",(2*pi*raio));
printf ("\nA area do circulo equivalente vale %.2f mm2 ",(pi*raio*raio));
getch();
}
Pode-se forar uma impresso para qualquer tipo vlido da linguagem C++: int, char,
float etc. Para isto, basta colocar o tipo desejado na frente da varivel entre
parnteses.
SENAI-SP INTRANET
CT080-09
67
Linguagens de programao
Usando o printf e scanf seria mais fcil imprimir com um controle diferente, no caso o
%i.
Exemplo
//
Exemplo 017
#include <stdio.h>
#include <iomanip.h>
#include <conio.h>
void main ()
{
char letra;
clrscr();
printf ("Digite uma letra da tabela ASCII: ");
scanf ("%c",&letra);
printf("\n \n");
printf ("Seu equivalente numerico e %i",letra);
getch ();
}
A diferena entre getch() e getche() que a segunda ecoa na tela a tecla apertada,
enquanto a primeira no ecoa, apenas armazena a tecla apertada na varivel.
68
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Comandos de controle de
fluxo
Aqui, veremos como feito o controle de fluxo dos dados atravs dos comandos if,
else, switch case, e apresentaremos os operadores relacionais e lgicos que sero
utilizados por tais funes.
Os comandos de controle de fluxo permitem implementar as diversas estruturas
lgicas da linguagem C++. O estudo destes comandos ser acumulativo. Uma vez
aprendido um comando, ele ser utilizado nos programas seguintes. Assim, os
programas iro ficando cada vez mais complexos.
Comandos de deciso
Os comandos de deciso so um dos principais tipos de comandos de controle de
fluxo. Eles podem desviar o fluxo do programa a partir do resultado de um teste
realizado no comando. Se esse teste resultar verdadeiro, o programa executa uma
tarefa; se resultar falso, executa outra.
Para realizar os testes de deciso so utilizados os operadores relacionais.
Operadores relacionais
Operador
Teste
Operador
Teste
>
maior que
<=
menor ou igual a
>=
maior ou igual a
==
igual a
<
menor que
!=
diferente de
Verdadeiro ou falso?
Os operadores relacionais funcionam de forma semelhante aos operadores
aritmticos, s que eles no devolvem o resultado da operao e sim a resposta de
uma comparao. Esta resposta pode ter dois valores, verdadeiro ou falso, mas como
ser que o computador processa as palavras verdadeiro e falso?
SENAI-SP INTRANET
CT080-09
69
Linguagens de programao
Exemplo
#include <iostream.h>
#include <conio.h>
void main ()
{
int a,b,c;
a= 0;
b= 2;
clrscr();
cout << "\nO resultado da comparacao 10>2 e " << (a<b); // parenteses obrig.
c = 30>50;
cout << " \nO resultado da comparacao 30>50 e " << c;
getch();
}
Exemplo
#include <iostream.h>
#include <conio.h>
void main ()
{
int a,b ;
clrscr();
cout << "Digite os valores de a e b";
cin >>a >>b;
cout << "\n \n";
cout << "O resultado de a+23<4-b e" << (a+23<4-b);
getch ();
}
70
SENAI-SP INTRANET
CT080-09
Linguagens de programao
SENAI-SP INTRANET
CT080-09
71
Linguagens de programao
Comando de deciso if
O comando de deciso if representa uma tomada de deciso do tipo se. Sintaxe:
if(teste) comando;
ou
if(teste)
{
comando;
comando;
comando;
...
comando;
}
Exemplo
// Exemplo
#include <stdio.h>
#include <conio.h>
void main ()
{
int numero;
clrscr();
printf ("Digite um numero inteiro ");
scanf ("%d",&numero);
if (numero<=1000)
{
printf ("\n \n");
printf ("Este numero e muito baixo");
}
getch ();
}
Exemplo
//
Exemplo
#include <stdio.h>
#include <conio.h>
void main ()
{
int senha;
clrscr();
printf ("Voce esta entrando no grande castelo da sabedoria \n");
printf (" Digite a senha de acesso (4 digitos) \n \n");
printf ("SENHA : ");
scanf ("%d",&senha);
if (senha == 2573)
printf (" Pode entrar dignissimo senhor") ;
72
SENAI-SP INTRANET
CT080-09
Linguagens de programao
else
printf (" Cai fora seu larapio !! /a/a/a/a");
getch ();
}
//
Exemplo
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>
void main ()
{
char op;
float op1, op2;
clrscr();
cout << "Digite o tipo de operao desejada \n";
cout << " (*) (\\) \n";
cout << "Operacao : ";
cin >>op;
if (op=='*')
{
cout << " digite os dois valores a serem multiplicados ";
cin >> op1 >>op2;
cout <<" O resultado e : " << setprecision(2) << op1*op2;
}
else
{
cout << " digite os dois valores a serem divididos";
cin >>op1>>op2;
cout << " O resultado e : " << setprecision(2) << op1/op2;
}
getch ();
}
Operadores lgicos
Os operadores lgicos so utilizados para realizar operaes lgicas entre dois
operandos, um do lado esquerdo do operador e outro do lado direito. Os operandos
podem ser tambm expresses.
Os operadores lgicos da linguagem C++ so: && (operador E), || (operador OU) e !
(operador negao). As operaes lgicas esto intimamente ligadas ao
funcionamento do computador, j que os resultados de cada operao podem assumir
apenas dois valores: verdadeiro (1) ou falso (0).
Costuma-se representar o funcionamento desses operadores na forma de tabelas.
Essas tabelas so denominadas tabelas-verdade:
Operador E (&&)
Operador OU (||)
SENAI-SP INTRANET
CT080-09
73
Linguagens de programao
Exemplo
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>
void main ()
{
float nota1, nota2, media;
clrscr();
cout << "Digite suas notas: ";
cin >> nota1 >>nota2;
media = (nota1+nota2)/2;
if (media >= 60)
cout << " Parabens, voce foi aprovado !";
if(media >= 50 && media < 60)
cout << " Voce foi aprovado, mas estude mais";
if (media <= 50)
cout << " Sinto muito, mas voce esta reprovado !";
getch ();
}
//
Exemplo 025
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>
void main ()
{
float salario, nsalario;
clrscr();
cout << "Digite o salario atual do funcionario";
cin >> salario;
if (salario >= 4000 && salario <= 5000)
nsalario = salario* 1.10;
if (salario >= 2000 && salario <= 3999)
nsalario = salario * 1.20;
if (salario >= 500 && salario <= 1999)
nsalario = salario * 1.30;
if (salario <= 499)
nsalario = salario * 1.50;
cout << " O novo salario do funcionario e "<< setprecision (2) << nsalario;
getch ();
}
74
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Exemplo
//
Exemplo
// Calculadora de 4 operacoes
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>
void main ()
{
char operacao;
float op1,op2;
clrscr();
cout << "Calculadora de 4 operacoes \n \n";
cout << "Digite os operandos ";
cin >> op1 >>op2;
cout << "\nEscolha a operacao desejada: \n \n";
cout << "\n(+) - Soma";
cout << "\n(-) - Subtracao";
cout << "\n(*) - Multiplicacao";
cout << "\n(//) - Divisao/n";
cout << "\noperacao : ";
cin >> operacao;
switch (operacao)
{
case '+': cout << "\ nResultado:
case '-': cout << "\nResultado:
case '*': cout << "\nResultado:
case '/': cout << "\nResultado:
default:
cout << "\n \n \n \a
}
getch();
}
SENAI-SP INTRANET
CT080-09
75
Linguagens de programao
76
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Comandos de estruturas
Nesta parte, falaremos sobre comandos que controlam estruturas de repetio tais
como while, do while, for, break e continue.
Enquanto o teste for verdadeiro, o bloco de comandos repetido. fcil perceber que
o controle da repetio deve ser feito dentro do bloco de comandos, por exemplo,
atravs de uma varivel que vai mudando de valor, at que em determinado momento
a varivel de controle atinja o valor que esta sendo comparado pelo while.
Exemplo
//
Exemplo
//
//
#include <dos.h>
#include <iostream.h>
#include <conio.h>
void main ()
{
SENAI-SP INTRANET
CT080-09
77
Linguagens de programao
int i=0;
clrscr();
while (i !=20)
{
cout << "\ni =" << i;
delay (500);
i ++;
}
getch();
}
//
Exemplo
//
//
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
void main ()
{
int i,num;
char resp = 0;
while(resp!='n')
{
clrscr();
cout<< " Voce tem 5 tentativas para acertar o numero \n \n";
i=0;
while(i!=5)
{
cout << "\ndigite sua" << i+1 << " a tentativa" ;
cin >> num;
if (num == 3450)
{
cout << " Parabens, voce acertou";
getch();
exit (0);
}
cout << " Voce
i=i+1;
errou!! \n";
}
cout << " Puxa que azar, errou as cinco vezes!!! \n"
<< "Quer tentar novamente? (s/n)";
cin>> resp;
}
}
Loop do while
Sintaxe:
do
{
comando1;
comando2;
.....
comandoN;
}
while(teste);
Observe que neste caso o teste feito no final do loop. A diferena principal entre o
while e o do while que no segundo o bloco de comando executado pelo menos
uma vez, j que o teste feito no final.
78
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Exemplo
//
Exemplo
//
//
#include <iostream.h>
#include <conio.h>
#include <dos.h>
void main ()
{
int i=0, num;
clrscr();
cout << " ************************************** \ n";
cout << " *********** Contador simples ************ \ n";
cout << " ************************************** \ n";
cout << "\n \n \n \n \n";
cout << " Contando:";
do
{
cout <<i<<" ";
delay (200);
i = i + 1;
}
while (i<50);
getch();
}
Loop for
O loop for permite a repetio de um bloco de comandos. Mas o controle da repetio
feito dentro do comando, e no por instrues dentro do bloco que vai ser repetido.
Sintaxe:
for(valor inicial ; teste ; variao)
{
comando1;
comando2;
......
comandoN;
}
Exemplo
//
Exemplo
// Loop
#include
#include
#include
#include
for
<iostream.h>
<stdio.h>
<conio.h>
<dos.h>
void main ()
{
int ascii;
clrscr();
for (ascii = 32; ascii < 256; ascii++)
cout << " \t " << (char) ascii;
if (ascii % 9==0)
cout << "\n";
getch();
}
//
Exemplo
//
79
Linguagens de programao
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
void main ()
{
int col, lin;
clrscr();
lin = 1;
for (col = 1; col < 81; col ++)
{
gotoxy (col,lin);
printf ("#");
gotoxy (col + 79, lin);
printf ("#");
}
col = 1;
for ( lin = 1; lin < 24; lin ++)
{
gotoxy (col,lin);
printf ("#");
gotoxy (col + 79, lin);
printf ("#");
}
getch();
}
Exemplo
//
80
SENAI-SP INTRANET
CT080-09
Linguagens de programao
}
else;
{
cout << \ n Warning received ;
cout << \ n Count down held at t - << count;
}
getch ();
}
O comando continue, como o break, causa a sada do loop. S que o comando break
termina o loop, enquanto o comando continue pula as instrues que esto sua
frente e vai direto para o prximo teste.
Exemplo
//
Exemplo
//
Imprime so os pares
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
void main ()
{
int num = 0;
clrscr();
while (num<=20)
{
num ++;
if (num % 2 != 0)
continue;
cout << num << "\n";
}
getch();
}
//
//
Exemplo
Exemplo de break e continue
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
void main ()
{
int numero;
clrscr();
while (cout << " Digite um numero par" );
{
cin>>numero;
if (numero %2 == 1)
{
continue;
cout << " Eu disse , " ;
}
break;
}
cout << " Obrigado. Eu disse disso ! \ n ";
getch();
}
SENAI-SP INTRANET
CT080-09
81
Linguagens de programao
82
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Funes
SENAI-SP INTRANET
CT080-09
83
Linguagens de programao
Exemplo
//
//
Exemplo
Funcao totalmente vazia
# include <iostream.h>
# include <stdio.h>
# include <conio.h>
void soma(void); // prototipo da funcao
void main ()
// programa principal
{
clrscr();
soma();
// chamada da funcao
getch();
}
//______________________________funcao_______________________________
void soma()
{
// funcao soma()
float a,b;
// variaveis locais da funcao soma()
cout << " Digite o primeiro numero:" ;
cin >> a;
cout << " Digite o segundo numero:" ;
cin >> b;
cout << " \ n O resultado da soma dos dois numeros : "<< a+b;
}
Observaes
Dessa maneira, pode-se criar suas funes e montar uma biblioteca com elas.
84
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Observaes
Exemplo
Funo recebendo parmetros e retomando valor
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
float soma (float, float);
// prototipo da funcao
SENAI-SP INTRANET
CT080-09
85
Linguagens de programao
void main ()
// programa principal
{
float a, b, res;
clrscr();
cout << " Digite o primeiro numero:";
cin >> a;
cout << " Digite o segundo numero:";
cin >> b;
res = soma(a,b);
cout << "/n O resultado da soma e" << res;
getch();
}
float soma (float n1, float n2)
{
return (n1 + n2);
}
// funcao soma ()
Observaes
Como a funo vai retornar um valor, ela deve ser do tipo do valor retornado;
possvel atribuir uma funo a uma varivel, j que o que vai ser atribudo o
seu valor de retorno e no a prpria funo. Costuma-se dizer que a funo se
torna o valor de retorno;
Exemplos
//
//
Exemplo
Calculo da media de um aluno
# include <iostream.h>
# include <stdio.h>
# include <conio.h>
float media(float, float);
// prototipo da funcao
void main ()
// programa principal
{
float n1, n2;
clrscr();
cout << " Digite o primeiro numero:" ;
cin >> n1;
cout << " Digite o segundo numero:" ;
cin >> 2;
cout << " \ n A media deste aluno e" << media (n1, n2);
getch ();
}
float media (float nota 1, float nota 2)
{
return (( nota 1 + nota 2)/2);
}
//
Exemplo
// Transformacao de nota em conceito
86
// funcao media()
// prototipo da funcao
SENAI-SP INTRANET
CT080-09
Linguagens de programao
// programa principal
{
float n1, n2; med;
char con;
clrscr();
cout << " Digite a primeira nota: ", cin >> n1;
cout << " Digite a segunda nota: ", cin >> n2;
med = media (n1, n2);
cout << " \ n media deste aluno e " << med;
com = conceito (med);
cout << " \ n Esta media corresponde o conceito" << con;
getch();
}
float media (float nota 1, float nota 2)
// funcao media();
{
return (( nota 1 + nota 2)/2);
}
char conceito ( float m);
{
if(m
if(m
if(m
if(m
if(m
>
>
>
>
>
=
=
=
=
=
}
//
Exemplo
// Transformacao de nota em conceito
# include < iostream . h>
# include < stdio . h >
# include < conio . h>
float media(float, float);
char conceito (float);
void main ()
// prototipo da funcao
// programa principal
{
float n1,
char con;
clrscr();
cout << "
cout << "
cout << "
cout << "
getch();
n2 med;
Digite a primeira nota: ", cin >> n1;
\ nDigite a segunda nota: ", cin >> n2;
\ n A media deste aluno e " << media (n1, n2)
\ n Esta media' corresponde o conceito" << conceito (media (n1,n2);
}
float media (float nota 1, float nota 2)
// funcao media()
{
return (( nota 1 + nota 2)/2);
}
char conceito ( float m);
{
if(m
if(m
if(m
if(m
if(m
>
>
>
>
>
=
=
=
=
=
SENAI-SP INTRANET
CT080-09
87
Linguagens de programao
88
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Matrizes e ponteiros
A seguir, falaremos sobre matrizes, como e onde us-las, seus tipos, seu uso em
funes, a matriz string e suas funes de manipulao, como criar novas estruturas
de dados e variveis do tipo ponteiro.
Matrizes
Conceito
Em C++ uma matriz um conjunto de variveis do mesmo tipo. Esse conjunto pode ter
uma ou mais dimenses:
SENAI-SP INTRANET
CT080-09
89
Linguagens de programao
Exemplo
a00, a01, a02,
Como uma matriz um conjunto de variveis, ela precisa ser declarada. Quando se
declara uma matriz preciso indicar ao compilador de que tipo so os elementos da
matriz e quantos elementos ela tem.
Sintaxe da declarao de matrizes
A declarao de uma matriz feita como a declarao de uma varivel. Primeiro
indica-se o tipo de variveis que a matriz contm, depois indica-se o nome da matriz e
em seguida o nmero de elementos:
Ao declarar uma matriz, por exemplo do tipo float, estamos declarando que cada
elemento da matriz do tipo float.
90
SENAI-SP INTRANET
CT080-09
Linguagens de programao
media
{
cout << " Digite as notas p1 e p2 do"
cin >> p1[i] >> p2[i];
med[i] = (p1[i] + p2[i])/2;
}
clrscr();
for (i = 0; i<20; i++)
{
cout << "A media do aluno numero " << i+1 << "e" << med[i] <<"\n";
}
getch();
}
SENAI-SP INTRANET
CT080-09
91
Linguagens de programao
Strings
Strings so um conjunto de caracteres controlados como um conjunto. Por exemplo,
uma frase ou linha de um texto etc.
Em linguagem C++, strings so matrizes de caracteres, onde cada elemento da matriz
armazena um dos caracteres e o ltimo elemento da matriz sempre um caractere /0
(terminador de string).
Exemplo
// Exemplo
// Strings
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
void main ()
{
char nome [15];
clrscr();
cout << " Digite seu nome: ";
gets(nome);
92
SENAI-SP INTRANET
CT080-09
Linguagens de programao
nome
/0
10
11
12
13
14
Observao
Devemos sempre reservar um espao a mais nas matrizes de string para o caractere
/0, que marca o trmino de string.
O objeto cin no adequado para ler strings. Para ler uma string deve-se utilizar a
funo gets().
Funes para manipulao de strings
gets (string) - l uma string do teclado (mesmo com espaos entre as palavras);
<iostream.h>
<stdio.h>
<conio.h>
<string.h>
void main ()
{
char frase [81];
int n;
clrscr();
cout << "Digite uma frase com no maximo 80 caracteres:", gets(frase);
n = strlen(frase);
cout << "Esta frase tem : "<< n <<"caracteres";
getch();
}
// Exemplo
// uso da funcao strcat()
SENAI-SP INTRANET
CT080-09
93
Linguagens de programao
#include
#include
#include
#include
<iostream.h>
<stdio.h>
<conio.h>
<string.h>
void main ()
{
char nome[40];
char sobrenome[20];
clrscr();
cout << "Digite seu primeiro nome:";
gets(nome);
cout << "Digite seu sobrenome:";
gets(sobrenome);
strcat(nome, " ");
cout << "Seu nome completo e" << nome;
getch();
}
//
Exemplo
// uso da funcao strcpy()
#
#
#
#
include
include
include
include
<
<
<
<
iostream . h>
stdio . h >
conio . h>
string . h>
void main ()
{
char frase 1 [40] = {"esta e a primeira frase"};
char frase 2 [20] = {"esta e a segunda frase"};
clrscr();
strcpy (frase 1, frase2);
cout << "frase 1 = << "frase 1: ";
cout << "\ nfrase 2 = << "frase 2; ";
//
Exemplo
// uso da funcao strcmp()
# include
# include
# include
# include
void main
{
char senha [10] = {"saracura"};
char palavra [20];
clrscr();
cout << "Digite a senha", gets (palavra);
if (!(strcmp (senha, palavra)) cout << "Pode passar dignissimo senhor ! ";
else cout << "Saia daqui seu larapio";
getch ();
}
Estruturas de dados
Em determinadas situaes til agrupar um conjunto de dados sob o mesmo nome.
Em C++ utiliza-se a palavra reservada struct para definir uma estrutura.
Quando definimos uma estrutura, estamos na verdade definindo um novo tipo de dado,
que acrescido aos j predefinidos: int, float, char etc.
94
SENAI-SP INTRANET
CT080-09
Linguagens de programao
nome_da_estrutura
tipo e nome do elemento 1;
tipo e nome do elemento 2;
...
tipo e nome do elemento N;
Exemplo
// uso de
# include <
# include <
# include <
void main ()
{
strutc medidas
{
float peso;
float altura;
}
struct medidas Antonio, Jose;
clrscr();
antonio.peso = 85,4;
antonio.altura = 1,75;
jose.peso = 70,8;
jose.altura = 1,83;
cout << "Antonio
<< "
cout << "Jose
<< "
getch();
Peso
Peso
Observe que com apenas uma declarao de estrutura podem-se definir inmeras
variveis, sem a necessidade de declarar uma varivel para cada valor. No exemplo
anterior, poderamos ter 100 variveis, onde cada uma guardaria peso e altura de uma
pessoa. Para fazer isto sem o uso de estrutura, deveramos declarar 200 variveis.
Com o uso de estrutura, declaramos uma struct e mais 100 variveis, quase a metade.
Mas o espao ocupado pelos dois mtodos o mesmo.
Existe uma forma de simplificar as declaraes onde necessrio guardar dados na
forma de estruturas de diversas variveis. Pode-se criar uma matriz de estruturas.
SENAI-SP INTRANET
CT080-09
95
Linguagens de programao
Exemplo
//
Exemplo
// uso de matriz de estruturas
#
#
#
#
include
include
include
include
<
<
<
<
iostream . h>
stdio . h >
conio . h>
string . h >
void main ()
{
strutc dados
{
char nome [20];
char endereco [40];
char fone [10];
}
struct dados agenda [5];
char resp;
char fone [10];
clrscr();
for (int a=0; a<5; a++)
{
clrscr ();
cout << "Digite o nome, endereco e fone do % do amigo: " << a;
cin >> agenda[a]. nome >> agenda [a] . endereco >> agenda[a] . fone;
}
clrscr();
do
{
cout << "Deseja
if (resp == 'n'
cout << "Digite
for (int i=0; i
{
if (agenda [i] . fone == fone)
{
cout << agenda [i] . nome << "\ n";
cout << agenda [i] . endereco << "\ n;
cout << agenda [i]. fone;
}
}
} while (1);
getch();
}
Ponteiros
Ponteiros so variveis que armazenam endereos. So utilizados para servir como
referncia (apontadores) a variveis, matrizes, estruturas etc. Em determinadas
situaes, em C++ mais conveniente manipular o endereo de uma varivel, de uma
matriz ou de uma estrutura usando seus nomes, e no manipul-las diretamente.
Existem tipos de ponteiros, como no caso das variveis. Mas, o tipo do ponteiro est
associado com o tipo de varivel para a qual ele aponta. Se a varivel apontada for do
tipo float, o ponteiro tambm ser do tipo float e assim por diante. Os ponteiros
armazenam endereos, que sempre tero dois bytes (16 bits).
96
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Assim, na memria, cada ponteiro ocupa dois bytes, mesmo quando ele aponta para
uma varivel que ocupa 4, como o caso das variveis do tipo float.
Sintaxe no uso de ponteiros
Como ponteiros so variveis, preciso declar-los: tipo *nome.
Observe que o tipo do ponteiro deve ser o mesmo da varivel para a qual ele ir
apontar. O nome de um ponteiro segue as mesmas regras dos nomes das variveis. O
smbolo de asterisco junto ao nome indica que ele um ponteiro.
Depois da declarao, o ponteiro j pode ser utilizado. S que ele ainda no aponta
para nada. preciso inicializ-lo com o endereo da varivel para a qual ele ir
apontar. Para isto utiliza-se o operador endereo (&).
Nome_do_ponteiro = & nome_da_varivel
Exemplo
// uso de ponteiros
# include < iostream . h>
# include < stdio . h >
# include < conio . h>
void main ()
{
int numero = 248;
int *pnumero;
//
ponteiro criado para a variavel numero
pnumero = № // atribuicao do endereco de numero para seu ponteiro
cout << "O conteudo da variavel numero
<< "/nSeu endereco e
<< "/n O conteudo do endereco"
<< "/napontando pelo ponteiro e
getch ();
Sobrecarga de funes
Em linguagem C++, diferentemente da linguagem C, possvel fazer com que uma
funo responda de maneira diferente, dependendo do nmero e do tipo dos
parmetros passados para ela. Diz-se, neste caso, que a funo est sobrecarregada.
SENAI-SP INTRANET
CT080-09
97
Linguagens de programao
Portanto, se for preciso criar uma funo que calcula o cubo de um nmero e este
nmero puder ser um inteiro ou um ponto flutuante, pode-se definir duas funes com
o mesmo nome, mas com argumentos diferentes:
int cubo (int numero); ou float cubo (float numero).
Como os argumentos so diferentes, C++ ir chamar a funo correta para cada tipo
de argumento. Se voc chama cubo (10), a verso int de cubo ser chamada. Mas, se
voc chamar cubo (2.34) a verso float ser chamada.
#
#
#
#
include
include
include
include
<
<
<
<
iostream . h>
conio . h>
dos . h>
stdio . h >
98
SENAI-SP INTRANET
CT080-09
Linguagens de programao
C++ Builder
Nesta parte do curso ser apresentada uma viso geral sobre o desenvolvimento de
diferentes linguagens de programao com algumas notas acerca das mais
conhecidas.
Apresenta-se justificativa do grande uso da linguagem C por seu carter flexvel e
funcional prestando-se feitura de aplicativos para os mais diferentes ramos de
atividade humana.
Em seguida so apresentados elementos bsicos da linguagem C. O ambiente de
desenvolvimento integrado, com descrio de cada elemento componente.
A apresentao feita em estrutura esquemtica, de modo a possibilitar consulta
rpida, remetendo-o a cada parte do sistema com ilustraes referenciais da interface
grfica.
Desse modo, so expostas barras de ferramentas, menus, ferramentas de
visualizao, etc.
99
Linguagens de programao
Essa linguagem codificada, que pode ser entendida e executada diretamente pelo
computador sem converso ou traduo, consiste de dgitos binrios representando
cdigos de operao e endereos de memria.
Como ela composta de uma srie de 1 e 0 em grande quantidade e diferentes
posies, era difcil de ser usada por seres humanos.
Como alternativa foram criadas linguagens mistas que eram convenientes para os
programadores. Possibilitavam instrues em letras ao invs dos nmeros 1 e 0.
Apesar de uma linguagem assim ser mais fcil de usar estava claro que havia
necessidade de criar algo que se assemelhasse mais comunicao humana.
A primeira linguagem da categoria de linguagens de alto nvel surgiu em 1956. Trata-se
da linguagem FORTRAN (Formula Translation) que foi bem aceita por cientistas e
matemticos porque era similar a notaes matemticas. Entretanto, houve
dificuldades de uso por pessoas de reas no orientadas matematicamente.
Como resultado, uma linguagem mais prtica de programao conhecida como
COBOL (Common Business-Oriented Language) surgiu em 1960. Emprega palavras e
sintaxe semelhantes lngua inglesa.
Mais tarde outras linguagens mais fceis de aprender foram introduzidas. Dentre elas,
a BASIC (Beginner's All-Purpose Symbolic Instruction Code) que foi assimilada de
modo mais fcil pela pessoa comum no especializada em Informtica. Com o tempo
passou a ser usada em escolas, empresas e residncias.
A linguagem C uma linguagem de alto nvel que pode funcionar como uma linguagem
mista. Muitos aplicativos (softwares) so desenvolvidos nessa linguagem que bem
flexvel.
Outra linguagem que teve aceitao foi a Pascal. Outras delas surgiram para aplicao
especfica. So linguagens para operao de mquinas industriais, simulao de
modelos, aplicaes de inteligncia artificial.
100
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Linguagem C++builder
A seguir apresenta-se a interface grfica em que operada a linguagem C++builder. A
interface grfica constituda pelo Ambiente de Desenvolvimento Integrado (IDE).
Ambiente de desenvolvimento integrado (IDE)
Quando se inicia C++ Builder IDE, aparecem cinco janelas no desktop do computador:
Menu Principal;
Object TreeView;
Object Inspector;
Form;
Code.
Cada uma delas possui funes especficas que sero abordadas oportunamente. O
conhecimento desse ambiente importante para se obter o mximo de rendimento de
seus atributos.
SENAI-SP INTRANET
CT080-09
101
Linguagens de programao
102
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Barra de Menus
Na barra de menus so encontradas todas as ferramentas necessrias para
elaborao de um aplicativo. Veja, a seguir, alguns dos menus que sero mais
utilizados em nosso curso.
SENAI-SP INTRANET
CT080-09
103
Linguagens de programao
New
Abre um dilogo com novos itens que podem ser adicionados ao project New
Application. Cria um novo projeto.
New Form
Open
Abre projetos. Pode abrir tambm Units, Forms e texto no editor de cdigo.
ReOpen
Save
Save Project As
Save All
Close
Fecha um projeto.
Close All
Exit
104
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Edit menu
A opo Edit realiza vrias operaes de editor. A figura a seguir mostra trs sees
disponveis:
Undelete
Redo
Refaz um Undo.
Cut
Copy
Paste
Delete
Select All
Align to Grind
Bring to Front
send to Back
Align
Size
Tab Order
Creation Order
Lock Controls
Trava um componente.
Add to Interface
Usado para declarar uma interface para ser usada com um componente
Activex.
SENAI-SP INTRANET
CT080-09
105
Linguagens de programao
Search menu
A opo de menu Search realiza vrios tipos de pesquisa e operaes de localizar e
substituir como mostrado:
Find
Find in Files
Replace
Search Again
Incremental Search
Go to Line Number
Go to Address
106
SENAI-SP INTRANET
CT080-09
Linguagens de programao
View menu
Quando clicamos na opo View abrimos o menu suspenso View. este item do menu
possibilita abrir vrias janelas. Trata da visualizao de componentes do IDE descritos
a seguir:
Project Manager
Project Source
Object Inspector
Alignment Pallete
Browser
Breakpoints
Call Stack
Watches
Modules
Threads
Componente List
Windows List
Toggle Form/Unit
Units
Forms
Type Library
SpeedBar
Component Pallete
107
Linguagens de programao
Project menu
Ao clicar a opo Project, ativado o menu suspenso correspondente.
Add to Project
Add to Repository
View Source
Export Makefile
Compile Unit
Make Project1
Build Project1
Compila e Linka o projeto atual, mas somente os links que alteraram desde
a ltima construo.
Reconstri o projeto inteiro independentemente de os arquivos e
formulrios terem sido alterados ou no.
Options
108
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Run menu
Clicando na opo Run ativado o menu suspenso correspondente:
Run
Attach to Process
Parameters
Trace Into
Run to Cursor
Program Pause
Program Reset
Evaluate/Modify
Add Watch
Add Breakpoint
109
Linguagens de programao
Component menu
O menu suspenso Componente oferece maneiras de gerenciar seu projeto:
New Component
Abre uma caixa de dilogo onde voc pode criar novos componentes para
serem adicionados ao seu projeto.
Install Component
Create Componente
Template
Install Packages
Configure Pallete
Database menu
Explore
Form Wizard
110
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Tools menu
O menu suspenso Tools oferece uma maneira conveniente de gerenciar o IDE.
Environment Options
Editor Options
Debugger Options
Repository
Configure Tools
Database Desktop
Image Editor
Window menu
SENAI-SP INTRANET
CT080-09
111
Linguagens de programao
Help menu
Contents
About
Object TreeView
O Object TreeView mostra os objetos inseridos no formulrio. Quando selecionamos
um objeto no Object Tree View podemos verificar as propriedades deste objeto. Elas
aparecem automaticamente no Object Inspector, com sua classe hierrquica
correspondente dentro do seu formulrio.
Object Inspector
O Object Inspector serve para dois propsitos no desenvolvimento de um projeto.
112
SENAI-SP INTRANET
CT080-09
Linguagens de programao
SENAI-SP INTRANET
CT080-09
113
Linguagens de programao
Align
+ Anchors
AutoScroll
AutoSize
+ BorderIcons
BorderStyle
Caption
Color
Cor do componente.
Cursor
Ctl3D
Enabled
+ Font
FormStyle
Height
Altura do objeto.
HelpContext
Hint
Icon
Left
Posio esquerda.
Name
Nome do componente.
Position
PopupMenu
ShowHint
TabOrder
TabStop
Tag
Text
Top
Posio superior
Visible
Whidth
Largura.
WindowState
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Na figura a seguir apresentam-se eventos dos objetos. Para definir atributos a cada
evento, basta dar um duplo-clique no evento da coluna da esquerda. O editor de
cdigo ser mostrado e podero ser inseridos, ento, os atributos.
SENAI-SP INTRANET
CT080-09
115
Linguagens de programao
116
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Menu de arquivos
Quando clicamos na opo File ativado o menu suspenso File, como mostrado a
seguir. Cada item do menu organizado em grupos lgicos. Como voc pode ver na
figura, o menu File dividido em cinco grupos, de que constam: novo, abrir, salvar e
fechar, incluir, imprimir e sair:
New
Abre um dilogo com novos itens que podem ser adicionados ao project
New Application. Cria um novo projeto.
New Form
New Data Module
Open
ReOpen
Save
Save Project As
Save All
Close
Close All
Include Unit Hdr
Exit
117
Linguagens de programao
Edit menu
A opo Edit realiza vrias operaes de editor. A figura a seguir mostra trs sees
disponveis:
Undelete
Redo
Refaz um Undo.
Cut
Copy
Paste
Delete
Select All
Align to Grid
Bring to Front
Send to Back
Align
Size
Tab Order
Creation Order
Lock Controls
Trava um componente.
Add To Interface
Usado para declarar uma interface para ser usada com um componente Activex.
118
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Search menu
A opo de menu Search realiza vrios tipos de pesquisa e operaes de localizar e
substituir, como mostrado.
Find
Find in Files
Replace
Search Again
Incremental Search
Go to Line Number
Go to Address
SENAI-SP INTRANET
CT080-09
119
Linguagens de programao
View menu
Quando clicamos na opo View abrimos o menu suspenso View . Este item do menu
possibilita exibir vrias janelas. Trata da visualizao de componentes do IDE descritos
a seguir:
Project Manager
Project Source
Object Inspector
Alignment Pallete
Browser
Breakpoints
Call Stack
Watches
Modules
Threads
Componente List
Windows List
Toggle Form/Unit
Units
Forms
Type Library
SpeedBar
Component Pallete
120
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Project menu
Ao clicar a opo Project, ativado o menu suspenso correspondente:
Add to Project
Add to Repository
View Source
Export Makefile
Compile Unit
Make Project1
Build Project1
Compila e linka o projeto atual, mas somente os itens que alteraram desde
a ltima construo.
Reconstri o projeto inteiro independentemente de os arquivos e
formulrios terem sido alterados ou no.
Information
Make All
Build All
Options
SENAI-SP INTRANET
CT080-09
121
Linguagens de programao
Run menu
Clicando a opo Run ativado o menu suspenso correspondente:
Run
Attach to Process
Parameters
Trace Into
Run to Cursor
Program Pause
Program Reset
Evaluate/Modify
Add Watch
Add Breakpoint
122
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Component menu
O menu suspenso Componente oferece maneiras de gerenciar seu projeto.
New Component
Abre uma caixa de dilogo onde voc pode criar novos componentes para
serem adicionados ao seu projeto.
Install Component
Create Component
Template
Abre uma caixa dilogo onde voc pode selecionar um controle registrado
para ser adicionado ao seu projeto.
Permite criar componentes de modelo que podem ser configurados com
valores especficos e adicionados ao seu projeto.
Install Packages
Configure Pallete
Database Menu
Explore
Form Wizard
SENAI-SP INTRANET
CT080-09
123
Linguagens de programao
Tools menu
O menu suspenso Tools oferece uma maneira conveniente de gerenciar o IDE.
Environment Options
Editor Options
Configure Tools
Debugger Options
Repository
Configure Tools
Database Desktop
Image Editor
Window menu
124
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Help menu
Contents
About
Object TreeView
O Object TreeView mostra os objetos inseridos no formulrio. Quando selecionamos
um objeto no Object TreeView podemos verificar as propriedades deste objeto. Elas
aparecem automaticamente no Object Inspector, com sua classe hierrquica
correspondente dentro do seu formulrio.
Object Inpector
O Object Inspector serve para dois propsitos no desenvolvimento de um projeto.
Todo objeto - Visual ou No Visual de um projeto em desenvolvimento pode ser
acessado pelo Object Inspector. Alm disso podem ser definidas aes para esses
objetos.
SENAI-SP INTRANET
CT080-09
125
Linguagens de programao
126
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Align
+ Anchors
AutoScroll
AutoSize
+ BorderIcons
BorderStyle
Caption
Color
Cor do componente.
Cursor
Ctl3D
Enabled
+ Font
FormStyle
Height
Altura do objeto.
HelpContext
Hint
Icon
Left
Posio esquerda.
Name
Nome do componente.
Position
PopupMenu
ShowHint
TabOrder
TabStop
Tag
Text
Top
Posio superior.
Visible
Width
Largura.
WindowState
SENAI-SP INTRANET
CT080-09
127
Linguagens de programao
Na figura a seguir apresentam-se eventos dos objetos. Para definir atributos a cada
evento, basta dar um duplo-clique no evento da coluna da esquerda. O editor de
cdigo ser mostrado e podero ser inseridos, ento, os atributos.
128
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Eventos
Separador de eventos
Declarao do evento
Evento OnActivate
Este evento ocorre toda vez que o formulrio for ativado.
//------------------------------------------------------------------void __fastcall TForm1::FormActivate(TObject *Sender)
{
}
//-------------------------------------------------------------------
SENAI-SP INTRANET
CT080-09
129
Linguagens de programao
Evento OnClose
Este evento ocorre toda vez em que o formulrio for fechado
//------------------------------------------------------------------void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction
&Action)
{
}
//-------------------------------------------------------------------
Evento OnCreate
Este evento ocorre toda vez que o formulrio for criado. No se deve confundir este
evento com o evento OnActivate, pois um formulrio pode ter sido criado mas no est
ativo em sua aplicao.
//------------------------------------------------------------------void __fastcall TForm1::FormCreate(TObject *Sender)
{
}
//-------------------------------------------------------------------
Evento OnChange
Este evento ocorre toda vez em que for alterado o valor do objeto.
//------------------------------------------------------------------void __fastcall TForm1::Edit1Change(TObject *Sender)
{
}
//-------------------------------------------------------------------
Evento OnClick
Cada vez que clicarmos sobre o componente, este evento ser executado.
//------------------------------------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender)
{
}
//-------------------------------------------------------------------
Evento OnDblClick
//------------------------------------------------------------------void __fastcall TForm1::Button1DblClick(TObject *Sender)
{
}
//-------------------------------------------------------------------
130
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Evento DragDrop
Quando arrastamos o componente, este evento ser executado.
//------------------------------------------------------------------void __fastcall TForm1::Button1DragDrop(TObject *Sender, TObject
*Source, int X, int Y)
{
Evento OnEnter
//------------------------------------------------------------------void __fastcall TForm1::Edit1Enter(TObject *Sender)
{
}
//-------------------------------------------------------------------
Evento OnExit
Este evento ocorre, quando o objeto perde o foco.
//------------------------------------------------------------------void __fastcall TForm1::Edit1Exit(TObject *Sender)
{
}
//-------------------------------------------------------------------
Evento OnKeyDown
Este evento ocorre, por exemplo, quando o cursor est dentro de um EditBox e uma
tecla baixa.
//------------------------------------------------------------------void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
}
//-------------------------------------------------------------------
Evento OnKeyPress
Este evento ocorre, por exemplo, quando o cursor est dentro de um EditBox e uma
tecla pressionada.
//------------------------------------------------------------------void __fastcall TForm1::Button1KeyPress(TObject *Sender, char &Key)
{
}
//-------------------------------------------------------------------
SENAI-SP INTRANET
CT080-09
131
Linguagens de programao
Evento OnKeyUp
Este evento ocorre, por exemplo, quando o cursor est dentro de um EditBox e uma
tecla solta.
//------------------------------------------------------------------void __fastcall TForm1::Button1KeyUp(TObject *Sender, WORD &Key,
TShiftState Shift)
{
}
//-------------------------------------------------------------------
Evento OnMouseDown
Ocorre quando o ponteiro do mouse est sobre o componente e um de seus botes
pressionado.
//------------------------------------------------------------------void __fastcall TForm1::Button1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
}
//-------------------------------------------------------------------
Evento OnMouseMove
Ocorre quando passamos o ponteiro do mouse sobre o componente.
//------------------------------------------------------------------void __fastcall TForm1::Button1MouseMove(TObject *Sender, TShiftState
Shift, int X, int Y)
{
}
//-------------------------------------------------------------------
Evento OnMouseUp
Ocorre quando um ponteiro do mouse est sobre o componente e um dos botes do
mouse, anteriormente pressionado, solto.
//------------------------------------------------------------------void __fastcall TForm1::Button1MouseUp(TObject *Sender, TMouseButton
Button, TShiftState Shift, int X, int Y)
{
}
//-------------------------------------------------------------------
132
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Aplicativos
Vrios tipos de aplicativos podem ser criados com o IDE. Para criar um aplicativo,
seleciona-se File/New. Ao fazer isso ativa-se a caixa de dilogo New Itens, mostrada
na figura a seguir. H nove guias que podem ser selecionadas. Cada guia oferece
possibilidade de criar diferentes projetos. Em seguida apresentao da guia New,
tem-se a descrio sucinta da funo de cada guia e dos cones correspondentes a
cada uma, que aparecem nesta janela.
SENAI-SP INTRANET
CT080-09
133
Linguagens de programao
Application
Batch File
C File
Component
Console Wizard
CPP File
Data Module
DLL Wizard
Form
Frame
Header File
Library
Package
Project Group
Text
Thread Object
Unit
Paleta de componentes
Uma vez definido o aplicativo a se desenvolver, deve-se montar a paleta de
componentes - component palette - com itens que sero necessrios a construo do
programa. Os objetos constantes dessa montagem que daro suporte a interface
grfica com o usurio - GUI.
Pgina Standard
Chama-se pgina standard a rea em que, na primeira tela de um aplicativo, esto
localizados todos os itens bsicos que compem a paleta de componentes.
134
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Exemplo
SENAI-SP INTRANET
CT080-09
135
Linguagens de programao
Componente ListBox
Permite criar uma caixa de listagem com uma relao de itens.
Componente ComboBox
Permite criar uma caixa de listagem que combina com uma caixa de edio,
sendo possvel editar itens de uma lista.
Componente ScrollBar
Permite criar uma barra de rolagem.
Componente GroupBox
Permite agrupar componentes tais como CheckBox ou RadioButton.
Componente RadioGroup
Permite a criao de grupos de botes de rdio.
Componente Panel
Permite criarem-se barras de controle, barras de ferramentas, barra de status,
paletas de ferramentas entre outras.
Pgina adicional
O prximo item da paleta de componentes o Additional pgina adicional:
136
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Componente SpeedButton
Utilizado para criar botes em barra de ferramentas contendo uma imagem em
sua face.
Componente MaskEdit
Cria uma caixa de edio especial onde o usurio digitar seus dados numa
formatao preestabelecida.
Componente StringGrid
Apresenta dados de strings no formatado linhas e colunas.
Componente DrawGrid
Apresenta dados no strings no formatado linhas e colunas.
Componente Image
Apresenta imagens grficas (cones, bitmaps) em um formulrio.
Componente Shape
Permite desenharem-se figuras geomtricas bsicas como crculos, retngulos.
Componente Bevel
Permite desenharem-se figuras geomtricas tais como quadrados, tringulos,
retngulos, as quais podem ter suas bordas ajustadas para se criarem efeitos do
tipo alto e baixo relevo.
Componente ScrollBox
Permite criar uma rea de exibio cujo contedo possa ter sua posio
modificada por barra de rolagem.
Componente CheckListBox
Cria uma caixa de listagem com uma relao de itens para seleo.
Componente Splitter
Adiciona um divisor entre dois controles alinhados para permitir que o usurio
redimensione esses controles em tempo de execuo clicando e arrastando a
linha divisria.
SENAI-SP INTRANET
CT080-09
137
Linguagens de programao
Componente StaticText
como um componente Label, porm inclui uma janela de manipulao; o
componente StaticText fornece ao usurio um feedback do estado da aplicao.
Componente Chart
Permite a criao de grficos em tempo de execuo.
Pgina Win32
138
SENAI-SP INTRANET
CT080-09
Linguagens de programao
UpDown
Cria um boto up e um down para incrementar e decrementar valores
Hot Key
Cria um anexo de tecla de atalho para qualquer componente. As teclas de
atalho so combinaes de teclas com Crtl-C, que utilizada para copiar o item
selecionado para rea de transferncia.
Animate
Exibe uma janela de controle de animao para gerenciar e exibir arquivos AVI.
DataTimePicket
Cria uma caixa de listagem para inserir datas ou horas.
MonthCalendar
Cria um calendrio mensal para mostrar e tratar meses.
TreeView
Cria um controle que recuado e exibido em um modo de visualizao em
rvores. O Windows Explorer um exemplo de visualizao em rvore.
List View
Cria um componente que exibe listas em uma coluna.
HeaderControl
Cria um cabealho acima do objeto de colunas.
StatusBar
Cria um componente barra de status que normalmente exibido na parte
interior de uma janela.
ToolBar
Cria um componente que permite gerenciar botes e outros objetos. Isso
normalmente colocado logo abaixo da barra de menu principal.
CoolBar
Cria uma barra que contm controles que podem ser movidos e
redimensionados.
SENAI-SP INTRANET
CT080-09
139
Linguagens de programao
PagerScroller
Cria um componente que armazena outros componentes em uma rea de
cliente. Esses componentes podem ser rolados vertical ou horizontalmente.
Pgina System
SENAI-SP INTRANET
CT080-09
Linguagens de programao
SENAI-SP INTRANET
CT080-09
141
Linguagens de programao
Componente DBEdit
Cria uma caixa de edio, permitindo a edio de um campo de registro de um
banco de dados.
Componente DBMemo
Cria uma caixa de edio do tipo memo (vrias linhas) associada a um campo
de registro de um banco de dados.
Componente DBImage
Permite a exibio de imagens armazenadas em um registro de um banco de
dados.
Componente DBListBox
Cria uma caixa de listagem com uma relao de itens associados a um campo
de registro de um banco de dados.
Componente DBCmboBox
Cria uma caixa de listagem combinada com uma caixa de edio associada a
um registro de um banco de dados.
Componente DBCheckBox
Cria uma caixa de verificao permitindo selecionar ou no uma opo
associada a um registro de um banco de dados.
Componente DBRadioGroup
Cria grupos de botes de rdio que representam opes mutuamente
exclusivas associadas a um registro de um banco de dados.
Componente DBLookupListBox
Cria caixa de listagem para a execuo de pesquisas associadas aos campos
de registro de um banco de dados.
Componente DBLookupComboBox
Cria uma caixa de combinao para a execuo de pesquisas associadas aos
campos de registro de um banco de dados.
142
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Componente DBRichEdit
Cria uma caixa de edio do tipo memo (vrias linhas) que permite a exibio e
a edio de um texto do tipo TextRich associado ao um registro de um banco
de dados.
Componente DBCtrlGrid
Semelhante ao DBGrid, cria uma grade para exibio de mltiplos campos
associados a mltiplos registros em formato tabela.
Componente DBChart
Cria uma rea em seu formulrio onde podem ser criados grficos em tempo
de execuo.
Pgina BDE
143
Linguagens de programao
Componente BatchMove
Permite realizar operaes sobre grupos de registros da base de dados.
Componente UpdateSQL
Realiza atualizaes em um banco de dados do tipo SQL.
Pgina Internet
Componente NMEcho
Componente NMFinger
Componente NMFtp
Controle do Tipo ActiveX, que permite fcil acesso ao Servio de Protocolo de
Transferncia de Arquivos (FTP) e dados entre uma mquina remota e outra
local.
144
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Componente NMHTTP
Controle do Tipo ActiveX, que implementa o cliente de protocolo HTTP
permitindo ao usurio acessar documentos do tipo HTML.
Componente NMMSG
Componente NMMSGSERV
Controle do Tipo ActiveX Cliente que permite criarem-se aplicaes para
acessar servidores de notcias.
Componente NMNNTP
Permite criar acesso a grupos de discusses.
Componente NMPOP 3
Permite criarem-se aplicaes de acesso (recebimento de mensagens) a
servidores de e-mail do tipo pop3.
Componente NMUUProcessor
Componente NMSMTP
Permite criarem-se aplicaes para acessar (envio de mensagens) servidores
de e-mail do tipo SMTP.
Componente NMStrm
Componente NMStrmServ
Componente NMTime
Componente NMUDP
Controle ActiveX winsock que permite fcil acesso ao servio rede do tipo
Protocolo Datagrama Usurio (User Datagram Protocol),podendo ser usado
para enviar e receber dados.
Componente PowerSock
SENAI-SP INTRANET
CT080-09
145
Linguagens de programao
Componente NMGeneralServer
Pgina QReport
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Componente QRDBText
Exibe em um relatrio informaes contidas em um registro de banco de dados.
Componente QRExpr
Permite a impresso do contedo de um campo de registro de banco de dados ,
clculos e textos.
Componente QRSysData
Permite a exibio de um relatrio com informaes do sistema.
Componente QRMemo
Permite a impresso de uma grande quantidade de textos - fixos ou que so
alterados durante a execuo de relatrio - o campo pode ser configurado
verticalmente ou dividido em mltiplas pginas se necessrio.
Componente QRRichText
Componente QRDBRichText
Componente QRShape
Permite a criao de desenhos geomtricos tais como retngulos, crculos,
tringulos e linhas em um relatrio.
Componente QRImage
Exibe uma figura no relatrio; pode ser utilizado qualquer tipo de figura
suportada pelo C++ Builder.
Componente QRDBImage
Permite a impresso de imagens armazenadas em campos binrios; todos os
formatos grficos suportados pelo C++ Builder so aceitos.
Componente QRCompositeReport
Componente QRPreview
SENAI-SP INTRANET
CT080-09
147
Linguagens de programao
Componente QRChart
Esses componentes permitem a composio, criao e visualizao de
relatrios dentro de um formulrio.
Pgina Dialogs
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Componente OpenPictureDialogs
Exibe uma janela padro Windows para seleo e abertura de arquivos grficos
de forma idntica ao Opendialog Box, com a diferena de que h uma rea de
visualizao.
Componente SavePictureDialogs
Exibe uma janela padro Windows onde o usurio pode especificar o nome de
um arquivo para que este seja salvo, idntico ao Save Dialogs Box, exceto por
haver uma rea de visualizao.
Componente FontDialog
Exibe uma janela padro Windows onde o usurio pode especificar a fonte, o
tamanho e o estilo dos caracteres a serem utilizados.
Componente ColorDialog
Exibe uma janela padro Windows onde o usurio pode especificar a cor do
componente selecionado.
Componente PrintDialog
Exibe uma janela padro Windows onde o usurio pode especificar informaes
de impresso, tais como tamanho de pgina e nmero de cpias.
Componente PrinterSetupDialog
Exibe uma janela padro Windows onde o usurio pode especificar o tipo de
impressora ou alterar suas configuraes.
Componente FindDialog
Exibe uma janela padro Windows onde o usurio pode especificar uma string
para pesquisa.
Componente ReplaceDialog
Exibe uma janela padro Windows onde o usurio pode especificar uma string
de pesquisa e uma string de substituio.
SENAI-SP INTRANET
CT080-09
149
Linguagens de programao
Substitua por
DBLookupList
BLookupListBox
Data Controls
DBLookupCombo
DBLookupCombo Box
Data Controls
TabSet
TabControl
Win32
Outline
TreeView
Win32
Header
Header Control
Win32
NoteBook
PageControl
Win32
TabbedNoteBook
PageControl
Win32
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Componente Outline
Exibe informaes em vrios nveis.
Componente TabbedNotebook
Cria um componente que pode conter mltiplas pginas, cada uma com a sua
prpria lista de comandos; o usurio pode selecionar uma das pginas clicando
em uma paleta selecionada.
Componente Notebook
Cria um componente que pode conter mltiplas pginas. Permite ao usurio a
mudana de pginas .
Componente Header
Cria uma rea definida para exibio de dados; o usurio pode redimensionar
cada rea de exibio de forma diferente uma das outras.
Componente FileListBox
Exibe uma lista de nomes de arquivos em um diretrio corrente.
Componente DirectoryListBox
Exibe uma estrutura de diretrio de um driver corrente; o usurio pode trocar de
diretrio em uma lista de diretrios.
Componente DriveComboBox
Exibe uma lista de drivers.
Componente FilterComboBox
Especifica um filtro ou mscara para exibio em uma seleo de arquivos.
Pgina Samples
151
Linguagens de programao
152
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Pgina ActiveX
SENAI-SP INTRANET
CT080-09
153
Linguagens de programao
Janela de cdigos
Quando se opera coma a pgina ActiveX, trabalha-se em uma rea com caractersticas
de janela do Windows, que mostrada em seguida. Nela colocam-se todos os
componentes-objeto relacionados aplicao em desenvolvimento.
154
SENAI-SP INTRANET
CT080-09
Linguagens de programao
SENAI-SP INTRANET
CT080-09
155
Linguagens de programao
156
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Criao de aplicativo
Criao de aplicativo
Programa aplicativo aquele destinado a auxiliar o usurio na realizao de
determinadas tarefas ou atividades pessoais, como, p. ex., o processador de texto e a
planilha eletrnica; programa de aplicao especfica. Tambm se diz apenas
aplicativo ou programa utilitrio.
preciso no confundir aplicativo com software.
O software pode ser:
157
Linguagens de programao
158
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Lembre-se de que a primeira coisa que voc deve fazer nesta etapa do trabalho criar
uma pasta para salvar os arquivos de projeto padro. Salvando o projeto em branco,
voc estabelece automaticamente o encaminhamento dele para a pasta
correspondente que voc criou. Alm disso, possvel salvar o projeto apenas clicando
o cone Save.
Para salvar o aplicativo voc deve selecionar File/SaveAll.
Antes de clicar o nome padro dado unidade ou ao arquivo fonte, procure a pasta
que foi criada anteriormente. Voc dever salvar o arquivo de cdigo fonte com um
nome diferente do arquivo do projeto. Caso salve com o mesmo nome, poder vir a
perder seu cdigo fonte.
SENAI-SP INTRANET
CT080-09
159
Linguagens de programao
V at a pasta que voc criou e salve o arquivo fonte. Ele ser o primeiro a aparecer.
Note que a extenso *.cpp.
Aps ter salvo o seu arquivo fonte aparecer outra janela:
nela que voc deve salvar o arquivo de projeto. Note que para diferenciar o arquivo
do cdigo-fonte do arquivo de projeto foram utilizados os nomes Exemplo_Unit para o
cdigo fonte e Exemplo_Prj para o arquivo de projeto.
Lembre-se de que uma boa prtica de programao salvar sempre seu aplicativo
freqentemente, evitando assim possveis perdas de programas.
160
SENAI-SP INTRANET
CT080-09
Linguagens de programao
SENAI-SP INTRANET
CT080-09
161
Linguagens de programao
Objeto
Form1
Label1
Button
Propriedade
Valor
Name
FrmSenai
Caption
SENAI
Name
LblSenai
Caption
SENAI - So Paulo
Name
BtnFechar
Caption
Cdigo-fonte
Alm da possibilidade de montar o formulrio interagindo com o programa, pode-se
recorrer a modalidade de escrever cdigos-fonte para o programa como mostrado a
seguir:
//#include <vcl.h>
#pragma hdrstop
#includeSenai_Unit.h
//
#pragma package(smart_init)
#pragma resource *.dfm
TFrmSenai *FrmSenai;
//
__fastcall TFrmSenai::TFrmSenai (TComponent* Owner)
: TForm(Owner)
{
}
//
void__fastcall TFrmSenai::BtnFecharClick(TObject * Sender)
}
FrmSenai->Close();
}
//
162
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Propriedade
Caption
Name
Text
name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Valor
Calculadora
Form1
Em branco
EdtVisor
SQRT
Btn_Raiz
1/X
Btn_Inverso
CE
Btn_CE
OFF
Btn_OFF
7
Btn_Sete
8
Btn_Oito
9
Btn_Nove
/
Btn_divisor
4
Btn_Quatro
5
Btn_Cinco
6
Btn_Seis
x
Btn_Mult
1
Btn_Um
2
Btn_Dois
3
Btn_Tres
Btn_Menos
0
Btn_Zero
,
Btn_Vrgula
=
Btn_Igual
+
Btn_Mais
SENAI-SP INTRANET
CT080-09
163
Linguagens de programao
Cdigo fonte
#include <vcl.h>
#include <math.h>
#pragma hdrstop
#include Ucalculadora.h
//
#pragma package (smart_init)
#pragma resource *.dfm
TForm1 *Form1;
const mais=0, menos=1, vezes=2, dividir=3;
float mem1, mem2;
char op;
int i=0;
//
__fastcall TForm1:: TForm1(Component* Owner)
:TForm(Owner)
{
}
//
void__fastcall TForm 1::Btn0Click(TObject *Sender)
{
EdtVisor->Text=EdtVisor->Text+ActiveControl->Tag;
}
//
void__fastcall TForm 1::Btn0Click(TObject *Sender)
{
op=mais;
mem1=StrToFloat(EdtVisor->Text);
EdtVisor->Text=;
i=0;
}
//
void__fastcall TForm1:: BtnMaisClick(TObject *Sender)
{
op=menos;
mem1=StrToFloat(EdtVisor->Text);
EdtVisor->Text=;
i=0;
}
//void__fastcall TForm1::BtnMultClick(TObject *Sender)
{
op=vezes;
mem1=Str ToFloat()EdtVisor->Text);
EdtVisor->Text=;
i=0;
}
//
void__fastcall TForm1::BtnDividirClick(TObject *Sender)
{
op=dividir;
mem1=Str ToFloat()EdtVisor->Text);
EdtVisor->Text=;
i=0;
}
//
void__fastcall TForm1::BtnRaizClick(TObject *Sender)
{
mem1=Str ToFloat()EdtVisor->Text);
EdtVisor->Text=;
EdtVisor->Text=FloatToStr(sqrt\(mem1));
}
//
void__fastcall TForm1:: BtnInversoClick(TObject *Sender)
{
mem1=Str ToFloat()EdtVisor->Text);
EdtVisor->Text=;
EdtVisor->Text=FloatToStr(1/mem1);
}
//
void__fastcall TForm1:: BtnIgualClick(TObject *Sender)
{
164
SENAI-SP INTRANET
CT080-09
Linguagens de programao
mem2=Str ToFloat()EdtVisor->Text);
swich(op)
{
case mais:
{
EdtVisor->Text=FloatToStr(mem1+mem2);
break;
}
case menos:
{
EdtVisor->Text=FloatToStr(mem1-mem2);
break;
}
case vezes:
{
EdtVisor->Text=FloatToStr(mem1 *mem2);
break;
}
case dividir:
{
EdtVisor->Text=FloatToStr(mem1/mem2);
break;
}
case dafalt:
{
EdtVisor->Text=ERROR;
}
//
void__fastcall TForm1::BtnVirgulaClick(TObject *Sender)
{
if(i==0)
{
EdtVisor->Text=;
i=1;
}
}
//
void__fastcall TForm1::BtnDesligaClick(TObject *Sender)
{
Close();
}
//
void__fastcall TForm1::BtnLimpaClick(TObject *Sender)
{
EdtVisor->Text=;
}
Contador
um componente interno do computador capaz de receber, armazenar e transferir
uma determinada quantidade de caracteres ou grupo de bits. Trata-se de um
registrador para realizar contagens de processos repetitivos.
Nesta parte do curso trataremos deste tipo de aplicativo. O contador que ser montado
efetuar contagem at valor determinado pelo usurio. Esta contagem poder ainda
ser progressiva ou regressiva dependendo da seleo de opes que se fizer.
Aprenderemos a montar um contador com auxlio da linguagem C++Builder.
SENAI-SP INTRANET
CT080-09
165
Linguagens de programao
166
Propriedade
Valor
Name
FrmContador
Caption
Contador
Name
LbiContador
Caption
CONTADOR
Name
Lbl Contagem
Caption
CONTAGEM
Name
LblPreset
Caption
Preset
Name
LblValor
Caption
Name
BtnSair
Caption
Name
&Sair
BtnReset
Caption
&Reset
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Button 3
Button 4
Edit 1
RadioButton 1
RadioButton 2
Bevel
Timer 1
Timer 2
Name
BtnIniciar
Caption
&Iniciar
Name
BtnPausa
Caption
&Pausa
Name
EdtPreset
Enabled
False
Text
""
Name
RbtnProg
Caption
Progressivo
Name
RBtnRegressivo
Caption
Regressivo
Name
Bevel 1
Name
TimetProg
Enabled
False
Name
TimerRegr
Enabled
False
Cdigo-fonte
Alm da possibilidade de montar o formulrio interagindo com o programa, pode-se
recorrer modalidade de escrever cdigos-fonte para o programa como mostrado a
seguir:
SENAI-SP INTRANET
CT080-09
167
Linguagens de programao
168
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Disposio de imagens em
formulrios
SENAI-SP INTRANET
CT080-09
169
Linguagens de programao
SpeedButton1
SpeedButton1
Image1
Image2
ImageList1
170
Propriedade
Name
Caption
PopupMenu
Name
Name
Name
Images
Name
Caption
Gliphy
Name
Caption
Gliphy
Name
Caption
Gliphy
Name
Transparent
Name
Transparent
Name
Valor
FrmImagem
IMAGEM
Pmenu1
MMenu1
PMenu1
Tbar1
ImageList1
SbtnExecutar
Executar
(TBitmap)
SbtnExecutar
Executar
(TBitmap)
SbtnExecutar
Executar
(TBitmap)
Img1
true
Img2
true
ImgList1
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Cdigo-fonte
Alm da possibilidade de montar o formulrio com incluso controlada de imagens,
interagindo com o programa, pode-se recorrer a modalidade de escrever cdigos-fonte
para o programa como mostrado a seguir:
/--------------------------------------------------------------------#include <vcl.h>
#include <stdlib.h>
#pragma hdrstop
#include "Ex01_Unit.h"
//-------------------------------------------------------------------#pragma package(smart_init)
#pragma resource "*.dfm"
TFrmImagem *FrmImagem;
//-------------------------------------------------------------------__fastcall TFrmImagem::TFrmImagem(TComponent* Owner)
: TForm(Owner)
{
}
//-------------------------------------------------------------------void __fastcall TFrmImagem::FormActivate(TObject *Sender)
{
i=16;
Timer1->Enabled=false;
Img2->Visible=false;
Img1->Visible=true;
//Valor incial de i
//Desabilita o Timer do Sistema
//Torna a imagem1 visivel
}
/--------------------------------------------------------------------void __fastcall TFrmImagem::Timer1Timer(TObject *Sender)
{
if (Img1->Left<=250)
{
Img1->Left=i;
Img2->Left=i;
i=i+4;
FrmImagem->Refresh();
}
}
//-------------------------------------------------------------------void __fastcall TFrmImagem::BBtnExecutarClick(TObject *Sender)
{
Timer1->Enabled=true;
//Habilita o timer do Sistema
}
//-------------------------------------------------------------------void __fastcall TFrmImagem::BBtnPararClick(TObject *Sender)
{
Timer1->Enabled=false; //Desabilita o Timer do Sistema
}
//-------------------------------------------------------------------void __fastcall TFrmImagem::BBtnResetClick(TObject *Sender)
{
Timer1->Enabled=false; //Desabilita o Timer do Sistema
Img1->Left=16;
//Posiciona a Imagem1 em Left=16
Img2->Left=16;
//Posiciona a Imagem2 em Left=16
i=16;
//Atribui 16 em i, para reset
}
//-------------------------------------------------------------------void __fastcall TFrmImagem::Sair1Click(TObject *Sender)
{
Close();
//Fecha o Programa
}
//-------------------------------------------------------------------------SENAI-SP INTRANET
CT080-09
171
Linguagens de programao
172
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Editor de textos
SENAI-SP INTRANET
CT080-09
173
Linguagens de programao
Etapas de operao
Primeiramente abra os dois formulrios em seu aplicativo e coloque os objetos como
mostram as figuras a seguir:
174
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Propriedade
Valor
Name
EditForm
Caption
FormStyle
fsMDIForm
Menu
MainMenu1
MainMenu1
Name
MMenuEdit
OpenFileDialog1
Name
OpenFileDialog
Form1
Configurao do Form2
Objeto
Propriedade
Valor
Name
FrameForm
Caption
Untitled
FormStyle
fsMDIChild
OpenFileDialog1
Name
OpenFileDialog
SaveFileDialog1
Name
SaveFileDialog
FontDialog1
Name
FontDialog
PrinterSetupDialog1
Name
PrinterSetupDialog1
PrintDialog1
Name
PrintDialog1
MainMenu2
Name
MMenuForm
RichEdit1
Name
PopupMenu1
Name
Form2
PMenu1
SENAI-SP INTRANET
CT080-09
175
Linguagens de programao
Na propriedade Filter clique o boto reticncias. A caixa Filter Editor ser, ento,
exibida:
176
SENAI-SP INTRANET
CT080-09
Linguagens de programao
EditForm=new TEditForm(this);
EditForm->Open(OpenFileDialog->FileName);
}
}
//--------------------------------------------------------------------------
177
Linguagens de programao
178
SENAI-SP INTRANET
CT080-09
Linguagens de programao
if (FontDialog1->Execute())
Editor->SelAttributes->Assign(FontDialog1->Font);
}
//--------------------------------------------------------------------void __fastcall TEditForm::Edit1Click(TObject *Sender)
{
bool HasSelection;
Paste1->Enabled = Clipboard()->HasFormat(CF_TEXT);
Paste2->Enabled = Paste1->Enabled;
HasSelection = Editor->SelLength > 0;
Cut1->Enabled = HasSelection;
Cut2->Enabled = HasSelection;
Copy1->Enabled = HasSelection;
Copy2->Enabled = HasSelection;
Delete1->Enabled = HasSelection;
}
//--------------------------------------------------------------------void __fastcall TEditForm::FormClose(TObject *Sender, TCloseAction &Action)
{
Action=caFree;
}
//--------------------------------------------------------------------void __fastcall TEditForm::FormCloseQuery(TObject *Sender,
bool &CanClose)
{
if (Editor->Modified)
{
TMsgDlgButtons temp_set;
temp_set<< mbYes<<mbNo <<mbCancel;
String buffer = "Save changes to " + PathName;
switch(MessageDlg(buffer, mtConfirmation,temp_set,0))
{
case mrYes:
Save1Click(this);
break;
case mrCancel:
CanClose=false;
break;
}
}
}
//--------------------------------------------------------------------void __fastcall TEditForm::FormCreate(TObject *Sender)
{
PathName = DefaultFileName;
}
//---------------------------------------------------------------------
SENAI-SP INTRANET
CT080-09
179
Linguagens de programao
180
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Banco de dados
Nesta parte de nosso curso mostraremos como monta um banco de dados, usando o
assistente DataBase Form Wizard do software da Linguagem C++builder.
Banco de dados uma coleo organizada e inter-relacionada de dados constantes.
Nesse tipo de estrutura, campo e registro so conceitos bsicos de organizao das
informaes.
O banco de dados com que trabalharemos um banco orientado a objetos. Quando se
fala em programao orientada a objetos, refere-se a qualquer mdulo que contenha
rotinas e estruturas de dados, capaz de interagir com outros mdulos similares,
trocando mensagens.
Esse tipo de programao confere grande flexibilidade a um banco de dados quanto
aos tipos de dados que capaz de armazenar.
Para montar o banco de dados devemos seguir a seguinte seqncia:
SENAI-SP INTRANET
CT080-09
181
Linguagens de programao
2. Abra o menu File, selecione o item New e em seguida Table. Ser exibida a caixa
Create Table . Selecione a tabela do tipo Paradox 7. Veja a caixa:
Clique OK.
3. Ser exibida a caixa do Create Paradox 7 Table:
182
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Observe que nessa caixa temos a informar: o nome do campo, tipo, tamanho e se
este campo ou no campo de referencia para chave primria. Campo, em banco
de dados, cada um dos tipos de dados que descreve um registro.
Para acessar cada um dos campos podemos usar o boto direito do mouse. No
campo type para definirmos o nome a escrever. Se for o caso de definirmos o
tamanho do campo clicamos o campo size com o boto direito. Podemos, alm
disso, atribuir valores mnimos e mximos a um determinado campo, caso seja
necessrio.
Aps as definies dos campos devemos salvar clicando Save As. Nesse momento
ser exibida uma caixa de gravao onde informaremos o nome do banco e o local
em que ser gravado.
SENAI-SP INTRANET
CT080-09
183
Linguagens de programao
Nesta tela temos opes para formulrio simples ou formulrio com relacionamento
entre tabelas. No nosso caso trataremos do formulrio simples.
Para o caso de acesso por tabela, selecionamos no quadro anterior, TTable. Clique
em seguida, o boto Next para acessar a prxima janela.
2. Nesta caixa informaremos qual tabela queremos acessar e em seguida clicamos o
boto Next:
184
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Interface do formulrio
O programa oferece as seguintes opes para apresentao do formulrio na interface:
Horizontal;
Vertical e
Grid grade.
SENAI-SP INTRANET
CT080-09
185
Linguagens de programao
186
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Porta paralela
Porta paralela e
Porta serial.
A porta paralela a interface que apresenta uma nica linha para a comunicao de
dados, permitindo a transmisso de apenas um bit de cada vez.
A porta serial a interface que apresenta mais de uma linha de comunicao de
dados, para o envio simultneo de vrios bits.
A porta paralela tambm conhecida como porta de impressora. Entretanto foi
projetada para funcionar, tambm, como uma porta genrica de entrada e sada.
Para a primeira porta paralela encontrada no PC damos o nome de LPT1; para
segunda LPT2 e assim consecutivamente.
Uma porta paralela constituda por trs registradores. Registradores so
componentes internos de computador capazes de receber, armazenar e transferir uma
determinada quantidade de caracteres ou grupo de bits.
Os registradores de uma porta paralela so:
De dados;
De estado e
De controle.
SENAI-SP INTRANET
CT080-09
187
Linguagens de programao
A conexo de uma porta paralela feita por intermdio de pinos que esto,
fisicamente, em um conector tipo DB de 25 pinos DB 25. Na impressora os pinos
esto em um conector Centronics. No quadro a seguir, apresentam-se os pinos de
cada ponto DB25 e Centronics 36, com suas respectivas funes.
Apresentao dos pinos conectores DB25 e Centronics 36
Pinagens
Sinal
STROB
Nome
Strob
DB 25
Centronics
36
1
Descrio
Indica se os dados esto prontos ou no
para serem transmitidos.
0 = Dados prontos
1 = Dados no prontos
ACK
Acknowledge
10
10
Busy
11
11
PE
Paper end
12
12
SELECT OUT
Select out
13
13
AUTO FD
Auto Feed
14
14
Error
15
32
Init
16
31
Select Imput
17
36
D0 a D7
Dados
2-9
2-9
Entrada de dados.
GND
Ground
18-25
19-30
Conexo ao terra.
BUSY
ERROR
INIT
SELECT IN
188
SENAI-SP INTRANET
CT080-09
Linguagens de programao
No modo EEP esse registrador poder tanto enviar como receber 8 bits de dados de
cada vez. Observe, no esquema a seguir, a localizao pinos do registrador no
conector.
SENAI-SP INTRANET
CT080-09
189
Linguagens de programao
As cinco entrada pelo conector DB25 so: Ack no pino 10, Busy no pino 11, Paper end
no pino 12, Slct out no pino 13 e Error no pino 15. Como cada pino desses envia um bit
para o computador, poderemos enviar para o computador cinco bits de uma s vez.
Os bits do byte de STATUS tambm so conhecidos como: S7 (Busy), S6 (Ack), S5
(Paper end), S4 (Slct out), e S3 (Error). A letra S siginifica registrador de STATUS, e o
nmero, significa a posio do bit no byte. Observe que h um correspondncia entre
cada bit e o S localizado acima dele. Desse modo, o bit 3 corresponde a S3, o bit 4 a
S4 e assim por diante.
importante observar que quando a identificao de um bit de Status apresentar um
trao acima dela, o sinal ser ativo com 0 (zero).
Exemplo
S7 (Busy).
190
SENAI-SP INTRANET
CT080-09
Linguagens de programao
SENAI-SP INTRANET
CT080-09
191
Linguagens de programao
5V
+V
U1
74LS641
J1
25
24
23
22
21
20
19
18
17
16
15
14
192
13
12
11
10
9
8
7
6
5
4
3
2
1
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P20
P19
P18
P17
P16
P15
P14
P13
P12
P11
R1 R2 R3 R4 R5 R6 R7 R8
330R 330R 330R 330R 330R 330R 330R 330R
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Cdigo fonte
# include<iostream.h>
# include<conio.h>
# include<dos.h>
#define dados 0x378
void main ( )
{
clrscr ( ) ;
int x=1;
while ( !kbhit () )
{outport (dados, x);
x=x<<1;
if (x==256)
{
x=1;
}
delay (1.000);
}
getch ();
}
SENAI-SP INTRANET
CT080-09
193
Linguagens de programao
Cdigo fonte
#include<vcl.h>
#pragma hdrstop
#include Unit1.h
//
#pragma package(smart_init)
#pragma resource *.dfm
TForm1 *Form1;
int dados, controle, status; //declaracao da variaveis para controle da porta
//
_fastcall TForm1::TForm 1 (Tcomponent* Owner)
: TForm(Owner)
{
}
//
void_fastcall TForm1::BtnSairClick(TObject *Sender)
{
Close(); //fechar o programa
}
//
void__fastcall TForm1::BtnLigar1Click(TObject *Sender)
{
dados=StrTolnt (Edit1->Text);//captura o conteudo do Edit e coloca em dados
_DX=0x378; //endereo do Regist. de dados
_AX=dados;//coloca o valor de variavel dados no regist. AX
_emit_(0xee);//Coloca o conteudo de AX na Porta Paralela
}
//
void_fastcall TForm 1::BtnReset1Click(TObject* Sender)
{
dados=0;//atribui o valor zero para a variavel dados
_DX=0x378;//endereo do Regist. de dados
_AX=dados;//coloca o valor de variavel dados no regist. AX
_emit_(0xee);//Coloca o conteudo de AX na Porta Paralela
}
//
void_fastcall TForm1::BtnLigar2Click(Tobject *Sender)
{
controle=Str ToInt(Edit2->Text);//captura o conteudo do Edit e coloca em controle
_DX=0x37A;//endereo do Regist. de controle
_AX=dados;//coloca o valor de variavel dados no regist. AX
__emit__(0xee);//Coloca o conteudo de AX na Porta Paralela
}
//
void__fastcall TForm1::Btnreset2Click(Tobject *Sender)
{
controle=11;//atribui o valor 11 para a varivel controle
_DX=0x37A;//endereo do regist. de controle
_AX=dados;//coloca o valor de variavel dados no regist. AX
__emit__(0xee);//Coloca o conteudo de AX na Porta Paralela
}
//
void__fastcall TForm1::Timer1Timer(Tobject *Sender)
{
_DX=0x379;//endereo do Regist. de status
__emit__(0xEC);//Le o conteudo da porta paralela e coloca o valor em AL
status=_AL;//Coloca o valor do registr AL na variavel status
Edit3->Text=IntToStr(status);//coloca o valor da variavel sttus no edit
}
194
SENAI-SP INTRANET
CT080-09
Linguagens de programao
5V
+V
U1
74LS641
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P20
P19
P18
P17
P16
P15
P14
P13
P12
P11
R1 R2 R3 R4 R5 R6 R7 R8
330R 330R 330R 330R 330R 330R 330R 330R
+V
5V
J1
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
U2
74LS641
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P20
P19
P18
P17
P16
P15
P14
P13
P12
P11
5V
U3
74LS641
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P20
P19
P18
P17
P16
P15
P14
P13
P12
P11
R13aR18
R19
10k
R20
10k
R21
10k
R22
10k
R23
10k
100R
R18
SENAI-SP INTRANET
CT080-09
+V
S1
S2
S3
S4
S5
195
Linguagens de programao
196
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Porta serial
Porta serial a interface que apresenta uma nica linha para a comunicao de dados,
permitindo a transmisso de um bit de cada vez.
Existem vrios modelos de porta serial, cada uma com seus protocolos e suas
particularidades. Em nosso caso trataremos da interface RS232C encontrada nos
microcomputadores.
Trata-se de porta programvel e trabalha em modo assncrono. possvel programar
bits de paridade, de partida e de parada. Sua taxa de comunicao pode chegar
115.200 bauds. Pode-se transmitir, dependendo da programao efetuada, caracteres
com 5, 6, 7 ou 8 bits, com 1, 1,5 ou 2 bits de parada.
A base da interface serial o circuito 8250 ou seu equivalente funcional. o conector
utilizado o DB que pode ter 9 ou 25 pinos.
Uma sada RS232C, quando inativa fica transmitindo marca (-12V). Quando ativa,
transmite espao (+12V).
Os quadros a seguir mostra dados relacionados conexo da porta digital:
Nveis de transmisso
Sinal
Marca
Espao
Tenso
-12V
+12V
Binrio
SENAI-SP INTRANET
CT080-09
197
Linguagens de programao
RS232C
Tenso
Lgico
Tenso
Lgico
0V
+12V
ON
5V
-12V
OFF
Endereos
Porta
Endereo
COM1
3F8h
COM2
2F8h
COM3
3E8h
COM4
2E8h
DB9
DB25
O quadro a seguir mostra a distribuio dos pinos e sinais nos dois conectores:
198
DB9
DB25
Sinal
PC
TD Transmitted data
sada
RD Received data
entrada
sada
entrada
entrada
GND - Ground
terra
CD Carrier detect
entrada
20
sada
22
RI Ring indicator
entrada
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Para conectarmos dois equipamentos pela porta serial, temos que utilizar um cabo
denominado NULL MODEM CABLE cuja configurao apresentada no seguinte
esquema:
DTE
DTE
9 pinos
25 pinos
25 pinos
9 pinos
(macho)
(macho)
(macho)
(macho)
20
20
SENAI-SP INTRANET
CT080-09
199
Linguagens de programao
Propriedade
Valor
Name
FrmSerial
Caption
Comunicao serial
Edit1
Name
EdtSerial
Edit2
Name
RedtSerial
Name
Timer1
Enabled
False
Interval
10
Name
BvlOpcao
Name
BBtnLimpar
Caption
&Limpar
Name
BtnAbrir
Caption
&Abrir
Name
BBtnSair
Caption
Sair
Name
RBntCom1
Caption
Com1
Name
RBntCom2
Caption
Com2
Form1
Timer1
Bevel
Button1
Button2
Button3
RadioButton1
RadioButton1
Cdigo fonte
#include <vcl.h>
#include <dos.h>
#pragma hdrstop
200
SENAI-SP INTRANET
CT080-09
Linguagens de programao
#include TransRecep_Serial1_Unit.h
#include ioport.h // inclusao da biblioteca criada
//Enderecos-bases das portas
#define COM1 0x3F8
#define COM2 0x2F8
#define COM3 0x3E8
#define COM4 0x2E8
//Declaracao das variaveis
unsigned int Porta;
unsigned int Dados;
int i;
unsigned int out(unsigned int endereco, unsigned dado);
//
#pragma package (smart_init)
#pragma resource *.dfm
TFrmserial *FrmSerial;
TSparkyThread * SparkyThread; // Instancia do Threed
//
__fastcall TfmSerial::TFrmSerial (TComponent* Owner)
: TForm (Owner)
{
}
//
void__fastcallTFrmSerial ::BBtnSairClick (TObject *Sender)
{
//Finaliza o programa
Close();
}
//
__fastcall TSparkyThread :: TSparkyThread(bool CreatedSuspended)
:TThread (CreatedSuspended)
{
}
//
void Programa_Porta(void)
{
/*
Configuracao da Serial
Start Bit = 1
Data Bit = 8
Paridade = Nenhuma
Stop Bit = 1
Baud Rate = 9600 bps
*/
//Define data=8 bits, paridade=nenhuma, stop=1, bit, DLAB = 1
Outport(Porta+3,0x83);
Sleep(10);
//Configura o Divisor latch para 12 = 9600 bps
Outport( Porta, 0x0C); //Parte Baixa do Divisor
Sleep(10);
Outport( Porta+ 1,0x00); //Parte Baixa do Divisor
Sleep(10);
//Faz DLAB = 0
Outport (Porta+3,0x03);
Sleep(10);
}
//
void_fastcall TFrmSerial::FormCreate(TObject *Sender)
{
Porta=0x3F8;
Programa_Porta();
//Faz Leitura da Porta
Sparky Thread = new TSparky Thread (true);
FrmSerial->Show();
}
//void__fastcall TFrmSerial::EdtSerialKeyPress(TObject *Sender, char &Key)
{
SENAI-SP INTRANET
CT080-09
201
Linguagens de programao
202
SENAI-SP INTRANET
CT080-09
Linguagens de programao
SENAI-SP INTRANET
CT080-09
203
Linguagens de programao
Crditos
Elaborador:
Ilustrador:
204
Linguagens de programao
Anexo
Tipo
Descrio
Arquivos grficos
DFM
Arquivo de formulrio
grfico
~DF
Backup de DFM
BPR
Arquivo de Projeto
~CP
Backup de Projeto
EXE
CPP
~CP
Backup de um CPP
RES
Arquivo de recursos
compilado
Arquivos de cabealho
SENAI-SP INTRANET
CT080-09
205
Linguagens de programao
Cdigo fonte
H cinco tipos de dados bsicos em C++, que so caracteres (char), inteiro (int),
ponto flutuante (float), ponto de preciso dupla (double) e sem valor (void).
Tipo
Faixa de Valores
Formato
Char
-128.127
Unsigned Char
0 a 255
Signed char
-127 a 127
Int
-32.767 a 32.767
Unsigned int
0..65535
Signed int
-32.767 a 32.767
Short int
-32.767 a 32.767
0.65535
0.65535
Long int
-2.147.483.647 a 147.483.647
-2.147.483.647 a 147.483.647
0 a 4.294.967.295
Float
32
Double
64
Long double
80
Descrio
Create
Free
Show
Hide
SetFocus
Focused
BringToFront
SendToBack
ScrollBy
Move o componente.
ScaleBy
SetBounds
206
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Funes
Aqui sero mostradas apenas algumas.
Funo (Function)
Descrio
Abs
AnsiCompareFileName
AnsiCompareStr
AnsiCompareText
AnsiExtractQuoteStr
AnsiLowerCase
AnsiLowerCaseFileName
AnsiPos
AnsiStrLower
AnsiStrPos
AnsiStrUpper
Bof
Incio de um arquivo.
Ceil
Char
CompareStr
CompareText
Copy
CreateDir
CurrToStr
Date
DateTimeToFileDate
DateTimeToStr
DateToStr
DayOfweek
DeleteFile
DiskFree
DirectoryExists
DiskSize
Eof
Fim do arquivo.
ExtractFileDir
ExtractFileDrive
ExtractExt
207
Linguagens de programao
ExtractFileName
ExtractFilePath
FileCreate
FileDateToDateTime
FileExists
FileOpen
Abre um arquivo.
FileRead
L um arquivo.
FileSearch
FileSetAttr
FileSetDate
Data do arquivo.
FileSize
FileWrite
Grava um arquivo.
FindFisrt
FindNext
FloatToDecimal
FloatToStr
FloatToStrF
FloatToText
FloatToTextFmt
Floor
Format
FormatCurr
FormatDateTime
FormatFloat
FormatMaskText
GetCurrentDir
GetDir
InputBox
InputQuery
IntTostr
IsLeapYar
LowerCase
MessageDlg
MessageDlgPos
NewMenu
NewPopMenu
Now
Odd
Pos
208
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Random
RemoveDir
RenameFile
SelectDirectory
SetCurrentDir
Muda de diretrio.
Str
StrComp
strCopy
STRLCopy
StrLen
StrLower
StrMovie
StrToCurr
StrToDate
StrToDateTime
StrToFloat
StrToInt
StrToInDef
StrToTime
StrUpper
Sum
AppendStr
AssingFile
Append
Beep
Break
ChDir
Troca de diretrio.
Delete
FmtStr
FileClose
Fecha um arquivo.
Exit
Insert
New
Read
L dados em um arquivo.
Randomize
Rename
Resset
Rewrite
ShowException
ShowMessage
SENAI-SP INTRANET
CT080-09
209
Linguagens de programao
Mensagens
MessageBox
A funo MessageBox usa as caixas padres do Windows. Ela formada no seguinte
estilo: messageBox (No, Mensagem, Ttulo, Tipo).
Uma mensagem com botes Sim, No, Cancelar dever ser assim:
MessageBox ( 0, Voc quer realmente sair? , Teste , 3+32+8192 ).
Mostra
mb_OK ou nada
OK e Cancela
mb_OKCancel
mb_AbortRetryIgnore
Sim, No e Cancelar
mb_YesNoCancel
Sim e No
mb_YesNo
Repetir e Cancel
mb_RetryCancel
16
mb_IconStop
32
mb_IconQuestion
48
mb_IconExclamation
64
mb_IconInformation
0
256
mb_DefButton1
mb_DefButton2
512
mb_DefButton3
mb_ApplModal
4096
8192
mb_SystemModal
210
SENAI-SP INTRANET
CT080-09
mb_TaskModal
Linguagens de programao
6.
7.
Boto No pressionado.
1.
2.
MessageDlg
A funo MessageDlg tambm retorna uma mensagem, porm a funo MessageBox,
nos d retorno de mais itens e o programador pode criar a mensagem toda em
portugus; j a MessageDlg, aceita a mensagem em portugus, mas o ttulo somente
em ingls, quer dizer: o programador fica preso ao criar suas mensagens.
Pessoalmente, raras vezes uso esta funo.
No falarei muito sobre esta funo. Darei apenas uma amostra e o leitor decide qual
funo deve usar.
SENAI-SP INTRANET
CT080-09
211
Linguagens de programao
Mensagem
cone
Texto de mensagem
mtWarning , exclamao ! ateno, aviso
mtErro, stop
mtInformation, informao i
mtConfirmation, interrogao ?
mtCustom, sem cone
[mbOk],[mbCancel],[mbAbort],[mbHelp],[mb
botes YesNoCancel],mbOkCancel] e
[mbAbortRetryIgnore].
Ajuda
caso tenha criado o arquivo de ajuda para o programa, aqui
o programador indica o nmero do helpcontext.
ShowMessage
Esta funo retorna uma mensagem simples, no tem nenhum parmetro. A sntese :
ShowMessage (mensagem);
InputBox
A funo InputBox uma mensagem especial, pois ela permite a entrada de dados
para o programa e pode ser usada em qualquer funo ou procedimento. Veja os
exemplos:
InputBox (titulo, prompt de entrada, valor de entrada);
InputBox (teste de InputBox ,entre com uma palavra ,casa);
212
SENAI-SP INTRANET
CT080-09
Linguagens de programao
Referncias
SENAI-SP INTRANET
CT080-09
213
Linguagens de programao
214
SENAI-SP INTRANET
CT080-09