Você está na página 1de 214

Mecatrnica

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

Gilvan Lima da Silva

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

Airton Almeida de Moraes (GED)


Paulo Jos Rodolpho (CFP 6.01)
Ricardo Jardim (CFP 6.01)
Marcel Adriano Pereira Porto (CFP1.01)
Ricardo Jardim (CFP 6.01)

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

Airton Almeida de Moraes


Antnio Carlos de Loureno
Marcos Jos Sanvidotti
Armando Olivetti Ferreira

SENAI

Telefone
Telefax
SENAI on-line
E-mail
Home page

Servio Nacional de Aprendizagem Industrial


Departamento Regional de So Paulo
Av. Paulista, 1313 - Cerqueira Csar
So Paulo SP
CEP 01311-923
(0XX11) 3146-7000
(0XX11) 3146-7230
0800-55-1000
senai@sp.senai.br
http://www.sp.senai.br

Linguagens de programao

Sumrio

Introduo linguagem de programao

Fundamentos da linguagem de computador

10

Sistema binrio

11

Os dgitos binrios

12

Hardware

15

Memria secundria

17

Sistema operacional

21

MS-DOS

21

Ambiente grfico (Windows)

22

Formatando disquetes

28

Editores

31

Turbo C

31

Seu primeiro programa

34

Lgica de programao

39

Algoritmo

39

Diagrama de bloco (Fluxograma)

42

Estrutura de programas

45

Linguagem C

45

O padro ANSI

46

A evoluo da linguagem C

46

Sintaxes das funes

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

Manipuladores de formatao de impresso

65

Manipuladores de base numrica

65

Comandos de controle de fluxo

69
SENAI-SP INTRANET
CT080-09

Linguagens de programao

Comandos de estruturas

77

Comandos de loop (repetio)

77

Comandos break e continue

80

Funes

83

Criando suas prprias funes

83

Abrindo parnteses (reviso)

84

Matrizes e ponteiros

89

Matrizes

89

Estruturas de dados

94

Ponteiros

96

C++ Builder

99

Linguagens de programao do computador

99

Linguagem C++builder

101

File menu menu de arquivos

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

Processadores de eventos mais comuns


Aplicativos

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

Pgina Data Access

141

Pgina Data Controls

141

Pgina BDE

143

Pgina Internet

144

Pgina QReport

146

Pgina Dialogs

148

Pgina WIN 3.1

150

Pgina Samples

151

Pgina ActiveX

153

Janela de cdigos

154

Criao de aplicativo

157

Criao de aplicativo

157

Cdigo-fonte

162

Contador

165

Disposio de imagens em formulrios

169

Editor de textos

173

Etapas de operao

174

Banco de dados

181

Formulrio para acesso ao banco de dados

183

Interface do formulrio

185

Porta paralela

187

Registrador de dados SPP 0x378 Sada

189

Registrador de status SPP 0x379 Entrada

190

Registrador de controle SPP 037A Sada

191

Porta serial

197

Pinos da porta serial

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

A evoluo dos microcomputadores causou enorme impacto no mundo. Estudantes,


diretores de empresas, cientistas, todos hoje, de alguma forma fazem uso dessas
mquinas.
A Intel quando fabricou o primeiro chip em 1971, no tinha noo de que essa
evoluo seria to rpida e to marcante. Na verdade, o mercado de
microprocessadores e microcomputadores surpreendeu o mundo, provocando
acontecimentos e fatos marcantes ao longo dos anos.
A disposio do ser humano em fazer contas vem evoluindo desde a pr-histria.
Quando o homem deixou seus hbitos nmades e passou a viver em aldeias e tribos
fixas, desenvolveu a lavoura e os rebanhos. Para isso, teve necessidade de criar um
mtodo para a contagem do tempo, demarcar as pocas de plantio e colheita, controlar
quantidade de animais, etc.
Com o correr do tempo, os tipos de clculo de que o homem teve necessidade para
suas atividades foram se complicando e aumentando.
Tem-se notcia de diferentes instrumentos de calcular desenvolvidos ao longo da
histria da Humanidade. O baco, por exemplo, um instrumento bsico para calcular,
foi criado h cerca de 2.500 anos.
Cientistas, filsofos e matemticos, em diferentes pocas, colaboraram para essa
evoluo como:

William Oughtred Napier que desenvolveu a rgua de clculos;

Blaise Pascal que aos dezoito anos desenvolveu uma mquina de calcular para
auxiliar no seu trabalho;

O matemtico e engenheiro ingls Charles Babbage que projetou, entre 1802 e


1822, uma mquina diferencial tornando-se, para muitos, o pai dos computadores
modernos.
SENAI-SP INTRANET
CT080-09

Linguagens de programao

Depois da 2a Guerra Mundial, na Universidade da Pennsylvania, nos Estados Unidos,


foi criado o computador ENIAC que fazia muitos tipos de clculos. Tratava-se de um
computador enorme, do tamanho de uma sala, que tinha mais de 800.000 peas.
A evoluo caminhou a passos largos. Passou pela inveno do transistor nos
Laboratrios da Bell em 1948, pelo primeiro PC em 1981 at que chegou aos dias de
hoje em que os computadores so muito rpidos e pequenos.

Fundamentos da linguagem de computador


Nossa percepo do mundo baseia-se, dentre outras coisas, em analogia:
comparamos coisas pelos nossos sentidos e identificamos pontos de semelhana
entre coisas diferentes.
Por exemplo, fazemos distino de uma cor mais escura que outra, um som mais alto
que outro, um ambiente mais iluminado que outro, uma pessoa mais alta ou mais
gorda que outra.
Note que existe sempre uma relao entre os dois termos usados. H correspondncia
entre os dois conceitos. O conceito de um termo no existe sem o conceito do outro, e
vice-versa.
Desse modo, no existe cor escura, sem existir a clara. Nem som mais alto, sem o
mais baixo. E assim por diante. A grandeza fsica fornecida explicitamente pela
medida de uma segunda grandeza que tem com a primeira uma relao biunvoca.
Relao biunvoca a relao, ou a correspondncia, entre dois objetos em que cada
elemento do primeiro corresponde a apenas um elemento do segundo, e vice-versa.
As informaes que obtemos do meio ambiente em que nos situamos por meio de
relaes biunvocas chamam-se informaes analgicas.
As informaes analgicas podem ser fornecidas por instrumentos ao observador. O
espectrmetro, por exemplo, mede comprimentos de onda de cor. O audimetro mede
o poder de audio e o fotmetro mede a quantidade de luz de um ambiente.

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:

Caracteres alfanumricos - codificao em que se combinam letras do alfabeto e


algarismos;

Uma srie de dgitos binrios.

Essas tabelas so chamadas sistemas de cdigos.


A combinao de trs dgitos binrios pode representar at 8 caracteres de linguagem
verbal.
A combinao de quatro dgitos binrios pode representar at 16 caracteres de
linguagem verbal. E assim segue.
A escolha de um cdigo particular para um sistema de escrita depende do tamanho do
conjunto de caracteres a ser representado. Para os computadores que usamos hoje e
que derivam, em sua maioria, de padres americanos, o teclado convencional que
SENAI-SP INTRANET
CT080-09

11

Linguagens de programao

contm alfabeto, numerais e certa quantidade de caracteres especiais baseado em


um cdigo de representao de sete ou oito bits.
A representao digital de um caractere por oito dgitos chamada de byte.
Muitos tipos de linguagem de programao foram desenvolvidos ao longo dos anos.
Inicialmente os programadores tinham que escrever instrues na linguagem da
mquina - tudo em combinaes matemticas.
Os sistemas de cdigos, de que falamos anteriormente, que podem ser entendidos e
executados diretamente pelo computador sem converso ou traduo consiste de
dgitos binrios representando cdigos de operao e endereos de memria.
Como eles so compostos de 1 e 0, a linguagem da mquina difcil para seres
humanos usarem. Houve necessidade de os programadores expressarem suas
instrues em smbolos alfabticos - como ADD para adicionar ou SUB para subtrair ao invs de nmeros.
Como uma linguagem mista com cdigo fcil de reter na memria humana era mais
fcil de usar que a linguagem da mquina, era desejvel desenvolver linguagens de
programao que fossem mais relacionadas comunicao humana.
Desse modo ento surgiram as diferentes linguagens hoje conhecidas.

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:

Nible: 4 bits (24 = 16 combinaes);

Byte: 8 bits (28 = 256 variaes);

Word: 16 bits (216 = 65.536 variaes);

Double Word: 64 bits (232 = 4.294.967.296 variaes).

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

Hardware um componente, ou conjunto de componentes fsicos de um computador.


Computador a mquina capaz de receber, armazenar e enviar dados, e de efetuar,
sobre estes, seqncias previamente programadas de operaes:

Aritmticas como clculos, e

Lgicas como comparaes, com o objetivo de resolver problemas.

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

Para que o computador execute tratamento e gerenciamento de dados para sustentar


conhecimento e informao, ele dispe basicamente de 5 unidades de operao:

Dispositivos de entrada: responsveis pela entrada de dados;

Dispositivos de sada: responsveis pela sada de dados;

UCP - sigla de unidade central de processamento: responsvel pelo


processamento dos dados;

Memria primria: armazenamento de dados e programas que esto sendo


processados e executados, respectivamente, pela UCP;

Memria secundria: responsvel pelo armazenamento de dados e programas


que no esto sendo utilizados no momento.

Observe o esquema demonstrativo da interao dessas cinco unidades operacionais:

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

Existem dois tipos de memria:

RAM (Random Access Memory) e

ROM (Read Only Memory).

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

Disquete - floppy disk


O disquete um disco de material plstico revestido por uma camada de xido de ferro
que lhe garante receptividade de campo magntico, tal qual uma fita cassete. Esse
disco colocado e fechado dentro de uma proteo chamada jaqueta.
Existem dois tipos de disquete: os de 8 polegadas (5 ) que j esto em desuso, com
capacidade de 360 kbytes e 1,2 Mbytes; e os de 3 que so mais utilizados, pois so
menores e possuem uma maior capacidade de armazenamento (de 720 kbytes e 1,44
Mbytes).
Melhor uniformidade de fabricao e maior capacidade so conseguidas com material
de revestimento diferente como o dixido de cromo. Os discos de 3 polegadas so
protegidos contra poeira com uma tampa que se abre quando inserido no acionador.
Observe o aspecto externo de um disquete de 3 :

Para organizao dos dados em um disco, durante a formatao, so gravados no


disco trilhas e setores, cujas posies dependem do tipo de formatao prpria de
cada computador.
No caso do padro IBM-PC, um disco de 360 kb dividido em 40 trilhas, 9 setores e
dois lados. A trilha zero fica na parte mais externa do disco, o setor zero encontrado
a partir de um furo prximo ao furo de fixao do disco, chamado ndex ou furo de
ndice. Para imaginar uma trilha, lembre-se dos sulcos de um disco de vinil. No caso
dos setores, lembre-se de um bolo redondo fatiado. Cada fatia seria um setor.

18

SENAI-SP INTRANET
CT080-09

Linguagens de programao

Observe, esquematicamente, como se distribuem trilhas e setores num disquete:

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:

A capacidade de armazenamento de um HD relativa quantidade de discos que ele


contm. Quanto maior a rea de armazenamento, ou quanto mais discos magnticos
contiver, maior ser sua capacidade.

20

SENAI-SP INTRANET
CT080-09

Linguagens de programao

Sistema operacional

O sistema operacional um conjunto de programas que gerenciam todos os recursos


de um computador: processadores, memrias, dispositivos de E/S, execuo de
programas entre outras. Podemos dizer que ele que faz a interface entre a mquina
e os outros programas.
Existem vrios tipos de Sistemas Operacionais, os mais conhecidos so: MS-DOS,
Windows, Unix, Linux, OS2. Aqui, veremos os comandos bsicos de dois deles, o MSDOS e o Windows.

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

Lista diretrio e arquivos.

DIR

CD

Caminha na rvore de diretrio

CD\<nome do diretrio>

MD

Cria diretrio. MD

<nome do diretrio>

RD

Exclui diretrio vazio. RD

<nome do diretrio>

Del

Exclui arquivos. DEL

<nome do arquivo>

Deltree

Exclui diretrios, subdiretrios e arquivos.

DELTREE <nome do diretrio>

Edit

Chama o editor de texto

EDIT <nome do arquivo>

CLS

Limpa a tela

CLS

COPY

Copia o arquivo especificado para uma


outra unidade ou diretrio

COPY <origem> <destino>

SENAI-SP INTRANET
CT080-09

21

Linguagens de programao

MOVE

Move um arquivo para uma outra


unidade ou diretrio

MOVE <origem><destino>

EXIT

Fecha a janela do prompt do DOS e


retorna ao ambiente grfico

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:

EXE Arquivos executveis;

DOC Arquivos do tipo documento;

XLS Arquivos do tipo planilha eletrnica (EXCEL);

BAT Arquivos de lote;

CPP Arquivos fonte de programao em C;

ZIP Arquivos compactados.

Existem muitos outros que se pode verificar.

Ambiente grfico (Windows)


O Windows um dos principais sistemas operacionais da atualidade. Ele possui uma
interface grfica que facilita sua utilizao. O uso das janelas faz com que o trabalho
de gerenciamento fique mais agradvel.
Os aplicativos desenvolvidos para Windows tm sua estrutura de utilizao e de
gerenciamento usando os mesmos tipos de menus, criando assim um padro.
Vamos conhecer algumas das principais janelas desse sistema:
rea de trabalho
a tela principal onde podemos encontrar os cones para acesso a determinados
programas ou janelas de controle e a barra de tarefas.

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.

Barra de tarefas do menu iniciar


A barra de tarefas pode ser personalizada conforme o gosto do usurio atravs da
opo Configuraes - Barra de Tarefas, que fica disponvel quando clicamos sobre o
Boto Iniciar. Podemos modificar as opes existentes na janela Propriedades de
Barra de Tarefas para personalizar a Barra de Tarefas.

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

Quando trabalhamos em janelas preciso conhecermos alguns dos principais botes


que servem para control-las.
Botes fechar e redimensionar
Sempre aparecem no canto superior direito das janelas. O primeiro boto minimiza a
tela, fazendo com que fique reduzida a um boto de janela. O segundo boto maximiza
a janela, fazendo com que ela ocupe toda a rea de trabalho. O terceiro boto serve
para fechar a janela.

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.

Atravs do Windows Explorer ou simplesmente Explorer, pode-se manipular arquivos e


pastas com facilidade. A janela do Explorer dividida em duas partes, uma que
visualiza os recursos e pastas disponveis (parte da esquerda) e outra que visualiza o
contedo de uma pasta ou recurso selecionado (parte da direita).
Os arquivos so utilizados para armazenamento de informaes e trabalhos criados
pelo usurio, geralmente criado por um aplicativo. As pastas so locais utilizados
para armazenarmos os arquivos.
SENAI-SP INTRANET
CT080-09

27

Linguagens de programao

Na barra de ferramentas podemos executar diversos comandos bastando clicar em


seus botes.

Na modificao da exibio podemos escolher entre:

Lista: O contedo da janela exibido em forma de lista;

Lista com detalhes: O contedo exibido em forma de listagem com informaes


detalhadas;

cones pequenos: Exibe o contedo da janela em forma de cones pequenos;

cones grandes: Exibe o contedo da janela em forma de cones grandes.

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

Editor um programa para criar ou modificar arquivos.


Para programarmos em linguagem C, necessrio primeiramente um editor. O bom de
trabalharmos com linguagem C que podemos usar qualquer editor de texto para
escrevermos o cdigo fonte.
Em nosso caso, vamos tratar de dois deles:

Bloco de notas que est presente em todas as distribuies do Windows e o

Turbo C que alm de ser um editor tambm um compilador.

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:

O compilador compe-se de: janelas, controles, barras de scroll (rolagem), teclas de


funo e muitos menus.
Na parte superior da janela esto as opes do menu principal: '''' (Menu do sistema),
''File'' (Arquivo), ''Edit'' (Editar), ''Search'' (Procurar), Run (Executar), ''Compile''
(Compilar), ''Debug'' (Depurar), ''Project'' (Projetar), ''Options'' (Opes), ''Windows''
(Janela) e ''Help'' (Ajuda).
Na parte inferior da janela localizam-se vrias teclas de funo: F1-Help (ajuda
ativada no momento), F2-Save (Armazenamento), F3-Open (Abrir), F9 (Compilar), ALTF9-MAKE (Executar) e F10 (Menu).
Ajuda (Help)
a ferramenta para auxili-lo nas horas de dificuldade. A utilizao do Help pode ser
feita da seguinte maneira:

Para abrir a janela de Help, pressione a tecla F1 ou clique Help com o mouse no
menu principal;

Ao trabalhar com as janelas do Help, dependendo do tpico de ajuda pedido, voc


poder ser remetido a uma janela adicional. Para isso, clique a palavra-chave com

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

Seu primeiro programa


Chegamos ao ponto de apresentar-lhe as condies bsicas necessrias para digitar,
editar, compilar, processar, depurar, armazenar e recarregar um programa simples.
Antes de iniciar seu primeiro programa, preciso tomar algumas decises.
Condio mnima
Para que todos os arquivos criados pelo TURBO C++ possam ser salvos em um nico
diretrio, necessrio definir as localizaes de arquivos de sada (*EXE, *OBJ).
Para isso, a opo usar ALT-O, do menu principal e em seguida, digitar D para
''Directories'' ou ento clicar com o mouse o quadro designado ''Output Directory''.
Outra opo tabular at a localizao.
Definida essa base de trabalho para elaborao de um programa, voc poder, caso
queira, transport-lo para qualquer computador. Trabalhando de outro modo, faltaro
arquivos necessrios para execuo.
No esquea, tambm, de salvar o programa a ser editado no caminho especificado.
Na figura a seguir, observe como est sendo salvo um programa em que o usurio
est trabalhando:

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

Observe uma tela com a janela de compilao:

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:

As opes apresentadas pela opo Edit so as seguintes:

Undo desfaz uma ao;

Cut corta trechos selecionados;

Copy copia trechos selecionados;

Paste cola aquilo que est na rea de transferncia;

Clear limpa trecho selecionado.

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

Para podermos trabalhar com a linguagem de programao C, ou qualquer outro tipo,


temos antes que ter uma boa base em lgica de programao.
Lgica de programao a tcnica de encadear pensamentos para atingirmos
determinados objetivos. Esses pensamentos devem ser executados em uma
seqncia lgica, em que temos que determinar passo a passo todas as nossas aes.
Ela define uma seqncia correta para o desenvolvimento de sistemas e programas
em informtica.
O conhecimento da lgica de programao necessria para pessoas que desejam
trabalhar com desenvolvimento de sistemas e programas, pois permite definir a
seqncia correta para tal desenvolvimento.
Na linguagem comum, entende-se por instruo ''um conjunto de regras ou normas
definidas para a realizao ou emprego de algo''. Em informtica, porm, instruo a
informao que indica a um computador uma ao elementar a executar. importante
ressaltar que uma ordem isolada no permite realizar o processo completo, para isso
necessrio um conjunto de instrues colocadas em ordem seqencial adequada.

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

Podemos citar como exemplos de algoritmos os das operaes bsicas: adio,


subtrao, multiplicao, diviso. Os manuais de aparelhos eletrnicos, por exemplo, o
de um forno de microondas, que explicam passo-a-passo como usar cada funo,
tambm so exemplos de algoritmos. Enfim, coisas muito simples podem ser exemplos
de algoritmo:
''Ir para a escola''
1. colocar uniforme;
2. preparar o material;
3. dirigir-se escola;
4. entrar na escola;
5. aguardar o sinal;
6. entrar na sala de aula.
Os algoritmos so descritos em uma linguagem chamada pseudocdigo. Este nome
uma aluso posterior implementao em uma linguagem de programao, isto ,
quando formos programar em uma linguagem, por exemplo C, estaremos gerando
cdigo em C. Por isso, os algoritmos so independentes das linguagens de
programao.
O algoritmo deve ser fcil de interpretar e fcil de codificar. Ele deve ser intermedirio
entre a linguagem falada e a linguagem de programao.
Regras para construo do algoritmo:

Usar somente um verbo por frase;

Imaginar que est desenvolvendo um algoritmo para pessoas que no trabalham


com informtica;

Usar frases curtas e simples;

Ser objetivo;

Procurar usar palavras que no tenham sentido dbio.

Entretanto, ao montar um algoritmo, precisamos primeiro dividir o problema


apresentado em trs fases fundamentais:

40

SENAI-SP INTRANET
CT080-09

Linguagens de programao

Entrada: so os dados de entrada do algoritmo.


Processamento: so os procedimentos utilizados para chegar ao resultado final.
Sada: so os dados j processados.
Imaginemos o seguinte problema:
Calcular a mdia final de um aluno que fez quatro provas (P1, P2, P3, P4).
Onde a mdia calculada pela frmula:

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:

Receba a nota da prova 1;

Receba a nota da prova 2;

Receba a nota da prova 3;

Receba a nota da prova 4;

Some os valores das quatro provas;

Divida o resultado por quatro;

Mostre o resultado da diviso.

Programas

Os programas de computadores nada mais so do que algoritmos escritos em uma


linguagem de computador (Pascal, C, C++, Cobol, Fortran, Visual Basic, entre outras)
e que so interpretados e executados por uma mquina.

SENAI-SP INTRANET
CT080-09

41

Linguagens de programao

Diagrama de bloco (Fluxograma)

O diagrama de bloco uma forma padronizada e eficaz para representar os passos


lgicos de um determinado processamento. Podemos definir uma seqncia de
smbolos, com significado bem definido, mas sua principal funo a de facilitar a
visualizao dos passos desse processamento.
Smbolo

Funo

Indica incio ou fim de um processamento.

Processamento em geral.

Indica entrada e sada de dados.

Mostra informaes ou resultados.

Estrutura condicional.

Sada de dados no vdeo.

Conector.

Conector indicado para troca de pgina.

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:

Vejamos um exemplo mais complexo:


Um tringulo issceles quando possui dois lados iguais, sendo A=B ou A=C ou B=C;
escaleno quando possui todos os lados diferentes, sendo A<>B e B<>C e
equiltero quando possui todos os lados iguais, sendo A=B e B=C.
Para isso temos que seguir os seguintes passos:
1. Ler trs valores para os lados do tringulo: A, B e C;
2. Verificar se cada lado maior que a soma dos outros dois. Se sim, saber se A = B
e se B = C, sendo verdade o tringulo equiltero. Se no, verificar se A=B ou se
A=C, ou se B=C, sendo verdade o tringulo equiltero. Se no verificar se A=B
ou se A=C ou se B=C, sendo verdade o tringulo issceles, caso contrrio o
tringulo escaleno.

SENAI-SP INTRANET
CT080-09

43

Linguagens de programao

Caso os lados fornecidos no caracterizem um tringulo, avisar a ocorrncia.

44

SENAI-SP INTRANET
CT080-09

Linguagens de programao

Estrutura de programas

Abordaremos aqui a estrutura bsica de um programa em C++, a sintaxe de funes,


os arquivos de biblioteca mais comuns, o ambiente integrado de desenvolvimento e o
conceito de portabilidade.

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;

Programas para a automao industrial;

Programas para soluo de problemas da Engenharia, entre outras possibilidades.

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

Esta popularidade se deve a um bom motivo: ao contrrio de muitas outras linguagens,


C oferece ao programador um grande poder sobre o computador. C permite que voc
realize coisas que outras linguagens no permitem.
Mas, com o poder da linguagem, veio a responsabilidade, pois pode-se fazer com C
coisas que destruiro seu programa ou afetaro o funcionamento do computador.
Entretanto, desta vez, os programadores encontraram uma linguagem que uma
ferramenta e no um obstculo.
Cada vez mais aplicativos eram escritos nessa linguagem, e cada vez mais complexos
ficaram os aplicativos. Percebeu-se que as construes lgicas disponveis em C no
correspondiam mais s necessidades.
Eram precisas construes que permitissem particionar o programa cada vez mais,
para facilitar a escrita de programas complexos e livrar o programador da necessidade
de controlar centenas de variveis e funes.
Nessa poca, a idia de objeto j comeava a se destacar. J existiam linguagens que
permitiam uma programao orientada a objetos.
Em essncia, C++ muito semelhante a C. Ou melhor, C um subconjunto de C++.
Tudo que se faz em C pode-se fazer em C++. Foi incorporado linguagem, o potencial
da programao orientada a objetos, introduzindo-se as classes.
Mas, no s isto, em C++ pode-se, tambm, fazer o que se chama de sobrecarga
de funes, ou seja, pode-se fazer com que uma mesma funo trabalhe de maneiras
diferentes, de acordo com o nmero de parmetros que ela recebe e/ou o tipo de
parmetro, alm de poder sobrecarregar os operadores.
Por exemplo, pode-se fazer com que o operador & (E lgico) tenha outra funo, alm
de realizar a operao E.
Mas, sem dvida nenhuma, a orientao a objetos o grande trunfo de C++. Ela
permitiu que os programas fossem modularizados de maneira estruturada e natural.
Diz-se que programar com objetos imitar a vida. Isto pode parecer um exagero.
Mas, se voc se dedicar, poder verificar que isso mesmo.

SENAI-SP INTRANET
CT080-09

47

Linguagens de programao

Os computadores no so capazes de entender as instrues e comandos das


linguagens utilizadas para program-los. Eles s entendem a linguagem de mquina
(0s e 1s). Portanto, para que seja possvel utilizar programas em linguagens do tipo
BASIC, Pascal, C, C++ etc., necessrio, depois de ter escrito os programas,
chamados programas-fonte, transform-los em linguagem de mquina.
E alm disto, adaptar os programas para serem executados no hardware do
computador, j que esse pode ter vrias configuraes.
A transformao do programa escrito nestas linguagens para o programa escrito em
linguagem de mquina chamada de compilao e feita por um programa chamado
compilador. O compilador gera um arquivo que possui os cdigos das instrues do
programa-fonte, escritos em linguagem de mquina. Este arquivo chamado de
arquivo-objeto.
Aps a compilao, pode ser necessrio acrescentar ao programa compilado outros
arquivos-objeto (por exemplo, em projetos feitos de forma particionada, em que cada
equipe de desenvolvimento produz uma parte do aplicativo). Ou, at, acrescentar
bibliotecas de funes que foram utilizadas no programa-fonte. S depois disto que
possvel gerar o arquivo executvel.
Esse processo de ''agrupar'' arquivos-objeto e gerar o arquivo executvel chamado
de link-edio e feito por um programa chamado link-editor. Pode-se, ento,
esquematizar o processo da seguinte forma:

48

SENAI-SP INTRANET
CT080-09

Linguagens de programao

Estrutura bsica de um programa


Diz-se que um programa em linguagem C++ uma parede construda com vrios
tijolos. A parede o programa aplicativo e os tijolos so as funes. Assim, as funes
so a base da linguagem C++. Um programa simples em linguagem C++ em 90%
um conjunto de funes.
Algumas dessas funes so fornecidas pelo fabricante do compilador/link-editor e
outras so escritas pelo prprio programador. As funes fornecidas pelo fabricante do
compilador/link-editor podem ser utilizadas como uma ''caixa preta'', enquanto as
escritas pelo programador devem ser desenvolvidas dentro do corpo do programa.
Em C++, o nome funo se confunde com o nome programa, j que um programa em
C++ ter pelo menos uma funo.
cabealho
funo 1
funo 2
...
funo N

Cabealho
composto basicamente por:

Diretivas para o pr-processador (#include, #define etc.);

Declarao de variveis globais;

Prottipo das funes;

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.

Sintaxes das funes


As funes em C++ tm o seguinte aspecto, em termos de sintaxe:
Tipo_do_valor_de_retorno nome (tipo_dos_paramteros_formais
{
declaracao de variaveis locais
...
corpo da funcao (comandos e outras funcoes);
...
}

parametros_formais)

Exemplo
Float

Tipo de valor de retorno

Divisao

Nome da funo

(float n1, float n 2)

Tipo e nome dos parmetros formais

Chave de abertura

Float res;
Res = n1/n2;

Declarao de variveis locais

return (res);

Corpo da funo

Chave de fechamento

Detalhes:

O nome de uma funo segue as mesmas regras prticas para os nomes das
variveis;

O que diferencia as funes das variveis so os parnteses. Alis, eles as


identificam;

Os parmetros formais so as variveis receptoras dos parmetros passados para


as funes;

As variveis declaradas dentro das funes so locais, ou seja, s so visveis


dentro da funo;

O corpo da funo composto por qualquer comando da linguagem C++, por


chamadas s outras funes, por instncias de classes etc;

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.

De todas as caractersticas de uma funo, apenas trs so obrigatrias:

Nome seguido de parnteses;

As chaves de abertura e fechamento;

E seu prottipo no cabealho do programa.

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()
{
}

Embora este programa no faa nada, ele um programa vlido.


Uma caracterstica importante na sintaxe das funes que a posio dos elementos,
na maioria dos casos, no importante, mas sim, a seqncia com que eles
aparecem. Portanto, todos os programas a seguir so vlidos:
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"

Na 1a opo o compilador procura pelo arquivo em um diretrio padro. Normalmente


o diretrio path:\include. Na 2a opo o compilador procura pelo arquivo no caminho
especificado.
Alm dos prottipos das funes, os fabricantes colocam nos arquivos headers
algumas definies de constantes de uso comum e at mesmo definies de classes e
objetos.
A seguir apresenta-se alguns dos headers mais comuns.
conio.h
dos.h

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

So possveis duas sintaxes para os comentrios:

Na primeira, chamada comentrios de linha, utilizam-se duas barras seguidas, //,


para indicar que o que est depois dessas barras at o final da linha apenas um
comentrio e deve ser desprezado pelo compilador;

Na segunda forma, os comentrios devem ficar dentro de dois conjuntos de


smbolos que indicam o incio e o fim do comentrio. Os smbolos so: /* e */.

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

As instrues que controlam o microprocessador e o hardware bsico so colocadas


em bibliotecas escritas em cdigo de mquina, e, para cada tipo de hardware,
comparam-se o compilador e as bibliotecas adequadas.
Assim, o mesmo programa-fonte, compilado com o compilador adequado, pode ser
executado em vrios tipos de mquinas.
Mas, e os perifricos?
O acesso aos perifricos vdeo, teclado, unidades de disco, etc. muito
interessante. Foram criados perifricos ''virtuais'' chamados stream. A palavra stream
significa uma fila de dados.
O programador, quando quer escrever ou ler em um desses perifricos, faz isso num
stream que durante a compilao do programa vai ser ''ligado'' ao perifrico
especfico. Assim, os dados da fila sero enviados ao perifrico ou dele recebidos.
Foram definidos alguns streams padres, que esto associados aos perifricos mais
comuns.
Perifrico

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

objetos stream 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

Inicialmente, falaremos sobre os tipos de dados que a linguagem manipula, como so


endereados, o seu conceito, seus tipos bsicos e seus modificadores de tipo.

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"

string de comprimento zero/nulo.

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:

Deve comear com letra ou sublinhado (_);

No deve conter smbolos especiais, exceto o sublinhado;

Deve lembrar o que ela guarda;

O compilador case sensitive, ou seja, diferencia letras maisculas das minsculas


(Nome diferente de nome).

Exemplos
n1, n2, N1, N2

correto

1ano, 2ano

incorreto

nome 1, nome 2

incorreto

nome_1, nome_2

correto

media, nota, recup

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]

inteiro sem sinal

02

0 a 65.535

Unsigned long

[int]

longo sem sinal

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

Nesta seo, veremos os operadores aritmticos e alguns exemplos, funes de


formatao de impresso, manipuladores de base numrica, como declarar constantes
em C++ e converses de tipo usando cast.

Operadores aritmticos
Operador

Ao

Atribuio

Soma

Subtrao

Multiplicao

Diviso

Mdulo da diviso ou resto

++

Incremento

--

Decremento

Soma, subtrao, multiplicao e diviso, funcionam como na matemtica.


Atribuio
Atribui o valor da expresso que est do lado direito para a expresso que est do lado
esquerdo.
Exemplo
a = b+c primeiro calcula o resultado da soma para depois atribu-lo varivel a.

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>
)

int peras, frutas;


clrscr( );
printf ( Digite o numero de peras que estao dentro da cesta: );
scanf (%d,&peras);
printf ( peras = %d ,peras);
printf ( \ n ++ peras = %d,++ peras);
printf ( \ n -peras = %d, -- peras);
printf ( \ n peras ++ = %d , peras ++);
printf ( \ n peras -- = %d, peras --);
}

64

SENAI-SP INTRANET
CT080-09

Linguagens de programao

Manipuladores de formatao de impresso


Manipulador

Ao
Fixa em n o nmero de casas a serem utilizadas para a

setw(int n)

impresso do prximo dado.

setprecision(int p)

setfill(char ch)

Fixa em p o nmero de casas decimais do prximo dado


a ser impresso (float).
Fixa em ch o caractere de preenchimento das colunas
em branco do prximo nmero a ser impresso.

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.

Manipuladores de base numrica


Manipulador
Dec

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

"<< setw(8) << setprecision(2) << setfill('.') <<

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();
}

Converso forada de tipo usando cast (molde)


Em determinadas situaes desejvel imprimir um dado em um formato diferente do
que foi especificado na declarao de variveis. Para isto, foramos o formato da
impresso desse dado.
Exemplo
// Exemplo 016
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>
void main ()
{
char letra;
clrscr();
cout << "Digite uma letra da tabela ASCII:";
cin >> letra;
cout << "\n \n";
cout << "Seu equivalente numerico e " << int(letra);
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 ();
}

Leitura de caracteres com as funes getch() e getche()


O objeto de stream cin ou scanf no se adapta perfeitamente em todas as situaes.
Por exemplo, ele espera que seja digitado ENTER depois de digitado o valor no
teclado. Em determinadas situaes no desejvel ficar esperando que se digite
ENTER.
Os fabricantes de compiladores oferecem, em suas bibliotecas de funes, duas
funes que lem um caractere do teclado assim que apertada a tecla, sem esperar
ENTER.
Exemplo
// Exemplo 018
// Uso das funcoes getche() e getch()
#include <iostream.h>
#include <conio.h>
void main ()
{
char tecla;
clrscr();
cout << "Digite uma letra:";
tecla = getche();
cout << "\n \n";
cout << "O quarto caracter ASCII, apos o que voce digitou e " << char(tecla+4);
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

Vejamos o seguinte exemplo:


//

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();
}

Ento o computador representa verdadeiro como 1 e falso como 1.


Lembre-se: o computador realiza a operao pedida, aritmtica ou relacional, e coloca
no lugar da operao o seu resultado. , por isso, que podemos mandar cout imprimir
10>2, porque o computador realiza a operao e coloca no seu lugar o resultado 1 e
cout imprime este 1.
Vejamos um exemplo mais complicado:
//

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 ();
}

Quando desejamos que as operaes sejam feitas em uma determinada seqncia


devemos, se for o caso, forar a seqncia. Mas, existe uma hierarquia entre os
operadores, e o computador respeita essa hierarquia. A hierarquia chamada de
precedncia de operadores.

70

SENAI-SP INTRANET
CT080-09

Linguagens de programao

Operadores em ordem decrescente


de hierarquia (precedncia)
*
/
%
+
<
<=
>
>=
==
!=

Assim, podemos afirmar que no exerccio anterior o computador realizaria primeiro a


soma, depois a subtrao e depois a comparao. Observe que os operadores
aritmticos tm precedncia em relao aos relacionais. Mas, se desejssemos que o
computador fizesse a comparao primeiro, para depois realizar as operaes
aritmticas, deveramos forar a realizao da comparao. Para isso usam-se os
parnteses:
a+(23<4)-b
Pois, o computador realizar sempre em primeiro lugar o que estiver dentro dos
parnteses, para depois realizar o que est fora. Costuma-se dizer, para fixar o
conceito, que o computador realiza as operaes de dentro para fora. O que significa
de dentro dos parnteses para fora deles.
Pode-se, tambm, utilizar vrios nveis de parnteses:
((10+(a+(23<4)-b))-(5!=4))

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 ();
}

Comando de deciso if else


O comando de deciso if/else representa uma tomada de deciso do tipo se faa isso
seno faa aquilo. Sintaxe:
if(teste) comando;
else comando;
ou
if(teste)
{
lista de comandos;
}
else
{
lista de comandos;
}

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 (||)

Operador Negao (!)

SENAI-SP INTRANET
CT080-09

73

Linguagens de programao

Assim, esses operadores devolvem 1 ou 0 conforme o resultado, seguindo as tabelas


acima.
Exemplo
//

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 ();
}

Comando switch case


O comando switch case um if mltiplo que permite vrias comparaes e vrios
caminhos no fluxo do programa. Ele pode ser comparado com uma chave seletora.
Sintaxe:
switch (variavel)
{
case opao1: { lista de comandos;break;}
case opao2: { lista de comandos;break;}
.....
case opaoN: { lista de comandos;break;}
default: { lista de comandos;}
}

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();
}

" << setprecision(2) <<op1+op2;break;


" << setprecision(2) <<op1- op2;break;
" << setprecision(2) <<op1*op2;break;
" << setprecision(2) <<op1/op2;break;
\a \a Operacao invalida, sinto muito";

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.

Comandos de loop (repetio)


A estrutura de loop permite a repetio de um comando ou blocos de comandos em
funo do resultado de um teste feito.
Loop while
Sintaxe:
while (teste)
{
comando1;
comando2;
.....
comandoN;
}

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

//
//

Uso do comando while


Contador de 0 a 20

#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

//
//

Uso do comando while


Jogo da adivinhacao

#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

//
//

Uso do comando do / while


/Um contador simples

#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

//

Uma moldura para tela


SENAI-SP INTRANET
CT080-09

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();
}

Comandos break e continue


Algumas vezes necessrio sair de um loop em razo da ocorrncia de um
determinado evento. O comando break tem dois usos diferentes: para sair de um case
do comando switch ou para sair imediatamente de um loop while, do while ou for, ou
seja, quebrar a execuo do loop.
Exemplo
//

Exemplo
//

Lanamento do onibus Espacial

# include < iostream . h>


# include < stdio .h >
# include < conio . h>
# include < dos . h >
void main ()
{
int count = 10;
clrscr();
cout << Space Shuttle Launch \ n ;
cout << Count Down ... \ n \ n;
cout << To break press ENTER \ n;
while (cout > -1);
{
if (Kbhit());
}
getch ();
break;
}
cout << \ n << count;
delay (1000);
count --;
}
if (count == -1);
{
cout << \ n Space Shuttle launched;

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

Como criar nossas prprias funes, definio de tipos, recebendo parmetros e


retornando valores, so os assuntos que sero tratados neste texto.

Criando suas prprias funes


Os programas descritos at agora usaram funes como clrscr(), getch(), kbhit(), etc.
Essas, e aproximadamente outras 400 funes, j esto definidas e compiladas nas
bibliotecas de funes do compilador da BORLAND. Para us-las, basta incluir o
arquivo header apropriado no programa e checar no help do compilador qual a sintaxe
de cada uma.
Agora chegou a hora de escrever funes. E lembre-se, elas so a base da linguagem
C++. Mas por que a base?
Para que os programas fiquem estruturados e fceis de serem desenvolvidos, eles
devem ser quebrados em pequenos blocos lgicos. a que entram as funes.
Cada um deles pode ser uma funo que recebe valores dos outros, trabalha esses
valores e devolve um resultado para outro bloco. Com isso teremos blocos
independentes, pequenos e fceis de serem desenvolvidos.
Usaremos inicialmente um exemplo simples e a partir dele mostraremos todas as
caractersticas e o potencial das funes.
Uma funo vazia
Uma funo totalmente vazia aquela que no recebe parmetros e no devolve
nenhum valor. Tudo feito dentro da prpria funo.

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

Prottipo da funo mostrando ao compilador que ela vazia;

Corpo da funo pode estar depois ou antes de main();

As funes tm a mesma sintaxe que a funo main().

Dessa maneira, pode-se criar suas funes e montar uma biblioteca com elas.

Abrindo parnteses (reviso)


Varivel global e varivel local
Uma varivel global no perde seu valor ao longo da execuo do programa, ou seja,
uma vez declarada ela tem um espao na memria garantido, independentemente do
que est acontecendo no programa.
J as variveis do tipo local s existem enquanto o programa est sendo executado,
dentro da funo onde elas foram declaradas. Quando o programa sai dessa funo
tais variveis so destrudas, ou seja, o espao na memria ocupado por elas
liberado.

84

SENAI-SP INTRANET
CT080-09

Linguagens de programao

importante manter na memria apenas as variveis que realmente interessam.


Aquelas que so de uso momentneo podem ser destrudas e recriadas conforme a
necessidade.
Uma funo recebendo parmetros
Vamos ver a mesma funo do exemplo anterior, s que agora recebendo da funo
main () os valores a serem somados.
Exemplo
/ Exemplo
// Funcao recebendo parametros
# include <iostream.h>
# include <stdio.h>
# include <conio.h>
void soma (float,float); // prototipo da funcao
void main ()
// programa principal
{
float a, b;
clrscr();
cout << " Digite o primeiro numero:";
cin >> a;
cout << " Digite o segundo numero:" ;
cin >> b;
soma (a,b);
// chamada da funcao passando parametros
getch();
}
void soma ( float n1, float n2 )
// funcao soma ()
{
cout << " \ n O resultado da soma dos dois numeros e" << n1 + n2;
}

Observaes

No prottipo da funo no necessrio colocar o nome dos parmetros, apenas


seus tipos;

A funo continua sendo vazia porque no retorna nenhum valor;

Os nomes dos parmetros passados no podem ser os mesmos de parmetros


recebidos, pois as variveis a e b sero destrudas quando a execuo do
programa passar para a funo soma();

Na hora de escrever a funo, praticamente rescrevemos seu prottipo;

Depois de executada a funo, o programa volta para a funo que o chamou e


continua executando o programa.

Funo recebendo parmetros e retornando um valor


//
//

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;

S possvel retornar um valor para cada funo;

Como a funo se transforma no valor de retorno, preciso reservar espao na


memria para armazenar esse valor. por isso que preciso fazer o prottipo da
funo declarando que a funo do tipo do 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

# include < iostream . h>


# include < stdio . h >
# include < conio . h>
float media(float, float)

86

// funcao media()

// prototipo da funcao
SENAI-SP INTRANET
CT080-09

Linguagens de programao

char conceito ( float );


void main ()

// 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

>
>
>
>
>

=
=
=
=
=

90) return ('A');


75 && m< 89) return ('B');
50 && m< 74) return ('C');
35 && m< 49) return ('D');
34) return ('E');

}
//

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

>
>
>
>
>

=
=
=
=
=

90) return ('A');


75 && m< 89) return ('B');
50 && m< 74) return ('C');
35 && m< 49) return ('D');
34) return (E);

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:

Cada elemento uma varivel independente e pode ser acessado usando os


comandos que estudamos at agora. Mas a matriz pode ser acessada como um todo,
usando a sintaxe adequada.
Cada varivel da matriz chamada de elemento da matriz, sendo que para diferencilos devemos criar ndices.

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:

Observe que o primeiro elemento sempre o de ndice 0 (zero).


Exemplos
Int n [30]

Matriz unidimensional de 30 elementos inteiros.


Elementos: n[0], n[1], n[2], n[3], n[4], n[5], ........n[29]

Char letras [20]

Matriz unidimensional de 20 elementos do tipo char.


Elementos: letras[0], letras[1], letras[2], ........... letras[19]

Float xy [10] [15]

Matriz bidimensional de 150 elementos sendo 10 linhas por 15 colunas.


Elementos: xy[0][0], xy[0[[1], xy[0[[2], ........xy[0][14]
xy[1][0], xy[1[[1], xy[1[[2], ........xy[1][14]
...
xy[9][0], xy[9[[1], xy[9[[2], ........xy[9][14]

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

Quando devemos usar matrizes?


Imagine a seguinte situao: Precisamos elaborar um programa para calcular e
armazenar a mdia de 1.000 alunos de uma escola. Como voc faria isto sem as
matrizes?
Sem as matrizes teramos que declarar 1.000 variveis para armazenar as primeiras
notas, depois mais 1.000 variveis para as segundas notas e finalmente mais 1.000
variveis para armazenar as mdias. Isso tornaria o trabalho invivel.
Uma das vantagens em se utilizar uma matriz que com apenas uma declarao,
podemos declarar quantas variveis forem necessrias para as partes do problema. No
exemplo das mdias, poderamos declarar uma matriz para as primeiras notas, outra
para as segundas notas e ainda outra para as mdias. Observe, seriam no mximo
trs declaraes, ao passo que sem as matrizes teramos 3.000 declaraes.
Outra vantagem a possibilidade de colocar variveis no lugar dos ndices. Para
efetuarmos a leitura das notas, o clculo das mdias e a impresso basta colocarmos
as instrues corretas dentro de um loop for e indexar a matriz utilizando a varivel
contadora do loop.
Exemplo
// Exemplo
// Calculo de 20 medias utilizando matrizes
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
void main ()
{
float p1[20], p2[20], med[20];
int i;
clrscr ();
for (i =0; i<20; i++)

// loop de leitura das notas e calculo da

media
{
cout << " Digite as notas p1 e p2 do"
cin >> p1[i] >> p2[i];
med[i] = (p1[i] + p2[i])/2;

<< i + 1 << "o aluno";

}
clrscr();
for (i = 0; i<20; i++)

// loop de impressao das medias

{
cout << "A media do aluno numero " << i+1 << "e" << med[i] <<"\n";
}
getch();
}

SENAI-SP INTRANET
CT080-09

91

Linguagens de programao

Matrizes como parmetros de funo


Quando se deseja passar uma matriz como parmetro para uma funo, se quer
passar a matriz como um todo. Portanto, existe uma sintaxe adequada para isto.
Exemplo
/ Exemplo
// Calculo de medidas usando funcoes e matrizes
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
void calculo_das_medidas (float, float);
void main ()
{
float p1[20], p2[20];
int i;
clrscr();
for(i = 0; i< 20; i++)
// loop de leitura das notas e calculo da media
{
cout << " Digite as notas p1 e p2 do " << i+1 << "o aluno";
cin >> p1[i]>>p2[i];
}
calculo_das_medidas;
getch();
}
calculo_das_medidas (float p1[], float p2[])
{
float med[20];
int i;
for (i=0; i<20; i++)
{
med[i] =(p1[i] + p2[i])/2;
cout << " Amedia do aluno numero" << i+1 << "e" << med[i];
}
}

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

cout << " Seu nome e: " << nome;


getch();
}

Neste exemplo teramos:

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);

strlen (string) - devolve o nmero de caracteres que compem a string;

strcat (string1 , string2) - concatena as strings 1 e 2 e o resultado armazenado


em string1;

strcpy (string1 , string2) - copia o contedo de string2 em string1;

strcmp (string1 , string2) - compara as duas strings. Se forem iguais, devolve 0


(zero).

As funes de manipulao de strings esto definidas em string.h


Exemplos
// Exemplo
// uso da funcao strien()
#include
#include
#include
#include

<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

< iostream . h>


< stdio . h >
< conio . h>
< string . h>
()

{
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

Sintaxe da criao de uma estrutura:


struct
{

nome_da_estrutura
tipo e nome do elemento 1;
tipo e nome do elemento 2;
...
tipo e nome do elemento N;

Vale ressaltar ao definir uma estrutura, nenhum espao de memria ocupado.


Apenas quando criamos uma varivel do tipo da estrutura que os espaos
necessrios de memria so criados.
Exemplo
//

Exemplo
// uso de
# include <
# include <
# include <

estruturas para definir novos tipos de dados


iostream . h>
stdio . h >
conio . h>

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

=" << antonio.peso


Altura =" << antonio.altura;
=" << jose.peso
Altura =" << jose.altura;

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

fazer uma consulta (s/n)? ; cin >> resp;


or resp == 'N') break;
o numero do telefone: " ; cin << fone;
<5, 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

Outro operador utilizado para manipulao de ponteiros o operador contedo (*).


Exemplo
//

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 = &numero; // 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 ();

" << numero


" << pnumero
" << pnumero;

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 >

void datahora (int, int, int);


void datahora()
void main ()
{
int m, d,a;
clrscr();
cout << "Digite o dia do mes (1-31):" cin >> d;
cout << "Digite o mes (1-12):"; cin >> m;
cout << "Digite o ano (19XX)"; cin >> a;
data hora (d,m,a);
data hora ();
getch ();
}
void datahora (int dia, int mes, int ano)
{
cout << \n \n \t \t" << dia << "/" << mes << "/" << ano << "\n \n";
}
void data hora();
{
struct date d;
getdate (&d);
cout << "\ n Hoje e dia: " << (int)d.da_day;
<< "\ n
mes: " << (int)d. da_mon
<< "\ n
ano: " << (int)d. da_year;
}

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.

Linguagens de programao do computador


Existem muitos tipos de linguagem que foram desenvolvidos ao longo dos anos para
expressar um conjunto de instrues detalhadas ao computador.
Uma linguagem com essa finalidade consta de um conjunto de caracteres e regras
para combin-los, tornando-os smbolos e palavras.
Quando o trabalho de estruturar linguagens de programao comeou, os
programadores tinham que escrever instrues na linguagem da prpria mquina.
SENAI-SP INTRANET
CT080-09

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

A janela do menu principal


A janela superior a janela principal do IDE. Contm vrios menus que dizem ao IDE
para executar alguma ao, como por exemplo, abrir um arquivo, compilar um
programa ou configurar uma opo. O Menu de Ferramentas - as Barras de
Ferramentas - aparece sempre na janela principal quando voc inicia o C++ Builder.

As barras de ferramentas individuais so fixas na Janela Principal e podem ser


separadas se voc desejar. Para estud-las uma a uma, sero mantidas separadas.
Barra de ferramentas padro
A barra de ferramentas padro contm botes de atalho para operaes como:

Barra de ferramentas de visualizao


A barra de ferramentas de visualizao contm botes de atalhos para operaes
como:

102

SENAI-SP INTRANET
CT080-09

Linguagens de programao

Barra de ferramentas de depurao


A barra de ferramentas Debug contm botes de atalho para executar e depurar sua
aplicao:

Barra de ferramentas Desktop


A barra de ferramentas Desktop pode ser usada para salvar as configuraes da rea
de trabalho corrente com um nome.

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

File menu 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

Cria um novo formulrio no projeto.

New Date Module

Cria um formulrio de data mdulo para o projeto.

Open

Abre projetos. Pode abrir tambm Units, Forms e texto no editor de cdigo.

ReOpen

Abre um projeto, listando os ltimos abertos.

Save

Salva o arquivo aberto no editor de cdigo.

Save Project As

Salva o projeto com um outro nome ou em outro local.

Save All

Salva todas as Units, Forms, projetos e mdulos.

Close

Fecha um projeto.

Close All

Fecha todos os arquivos abertos.

Includi Unit Hdr

Permite inserir instrues #include na unidade atual no editor.

Exit

Sai do C++ Buider.

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

Desfaz a ltima ao de deleo.

Redo

Refaz um Undo.

Cut

Copia item selecionado para o ClipBoard (e depois o apaga).

Copy

Copia item selecionado para o ClipBoard (e no apaga).

Paste

Cola/copia o contedo do ClipBoard para o formulrio.

Delete

Apaga item selecionado.

Select All

Seleciona todos os componentes do formulrio.

Align to Grind

Alinha o componente com relao grade do formulrio.

Bring to Front

Move o componente para a frente de outros.

send to Back

Move o componente para trs.

Align

Alinha o componente selecionado.

Size

Altera o tamanho de componente.

Tab Order

Modifica a ordem do componente no formulrio, quando no uso da tecla TAB.

Creation Order

Modifica a ordem de componente no visual.

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

Procura um texto dentro de um arquivo.

Find in Files

Procura texto em um conjunto de arquivo.

Replace

Procura e substitui um texto.

Search Again

Repete a ltima procura de texto.

Incremental Search

Procura Incremental. Digita-se o cdigo automaticamente.

Go to Line Number

Move o cursor para uma determinada linha.

Go to Address

Code Editor localiza o arquivo.

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

Mostra o gerenciador de projetos.

Project Source

Mostra o cdigo do projeto.

Object Inspector

Mostra o Object Inspector.

Alignment Pallete

Exibe a paleta do alinhamento.

Browser

Exibe o visualizador de objetos.

Breakpoints

Exibe a lista de pontos de parada.

Call Stack

Mostra a lista de chamadas.

Watches

Mostra a lista de visualizao.

Modules

Mostra as janelas de mdulos.

Threads

Mostra ao threads status.

Componente List

Exibe a lista de componentes.

Windows List

Exibe as janelas abertas.

Toggle Form/Unit

Alterna entre o forme a Unit.

Units

Mostra o cdigo fonte de um Unit ou do projeto a partir de uma lista.

Forms

Seleciona um Form a partir de um lista.

Type Library

Exibe o editor de Library.

New Edit Windows

Abre um novo editor de cdigo.

SpeedBar

Exibe ou oculta a SpeedBar.

Component Pallete

Exibe ou oculta a componente Pallete.


SENAI-SP INTRANET
CT080-09

107

Linguagens de programao

Project menu
Ao clicar a opo Project, ativado o menu suspenso correspondente.

Add to Project

Adiciona o arquivo ao projeto.

Remove from Project

Retira arquivo do projeto.

Import Type Library

Exibe as bibliotecas de tipos registrados em seu computador de modo que


um tipo registrado possa ser importado para projeto.

Add to Repository

Permite criar modelos para adicionar no repositrio.

View Source

Traz a janela de cdigo onde para o primeiro plano.

Edit Option Source

Permite exibir/editar o arquivo de opes de projeto (bpr) para o projeto


atual.

Export Makefile

Cria um makefile para o projeto atual.

Add New Project

Permite que voc crie um novo projeto de sua escolha.

Add Existing Project

Carrega um projeto existente.

Compile Unit

Compila o cdigo que est na janela ativa.

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.

Information for Project1

Exibe informaes sobre o projeto.

Make All Projects

Idem ao Make; porm executa para todos os projetos.

Build All Projects

Idem ao Build; porm executa para todos os projetos.

Options

Opes do projeto, como: cone executvel, nome da aplicao ou opes


de compilao.

108

SENAI-SP INTRANET
CT080-09

Linguagens de programao

Run menu
Clicando na opo Run ativado o menu suspenso correspondente:

Run

Compila e executa o projeto.

Attach to Process
Parameters

Configura parmetros a serem passados ao programa.

Register ActiveX Server


Unregister ActiveX Server
Step Over

Executa linha a linha (sem entrar em sub-rotinas).

Trace Into

Executa linha a linha (entrando em sub-rotinas).

Trace to Next Source Line

Executa um programa normalmente, at encontrar um ponto de


interrupo.

Run to Cursor

Roda o programa at chegar ao cursor.

Show Execute Point

Posiciona o cursor na prxima/Coloca o cursor na linha a ser executada


(execution point).

Program Pause

Executa pausa no programa.

Program Reset

Para a execuo do programa.

Evaluate/Modify

Permite colocar um valor ou trocar um valor de uma varivel no projeto.

Add Watch

Permite a visualizao de variveis.

Add Breakpoint

Adiciona um ponto de interrupo na linha em que estiver cursor.


SENAI-SP INTRANET
CT080-09

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

Permite escolher um componente predefinido para adicionar ao seu projeto.

Install ActiveX Control

Abre uma caixa de dilogo onde voc pode selecionar um controle


registrado para ser adicionado ao seu projeto.

Create Componente
Template

Permite criar componentes de modelo que podem ser configurados com


valores especficos e adicionados ao seu projeto.

Install Packages

Permite que um pacote ou componente seja selecionado.

Configure Pallete

um atalho para o item Tools/Environment Options.

Database menu

Explore

Executa o Database Explorer.

Form Wizard

Cria aplicativo de acesso a banco de dados.

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

Configura o Editor, o browser e customiza a aparncia da Component.

Editor Options

Fornece uma maneira de configurar as funes do IDE.

Debugger Options

Personaliza as opes do depurador.

Repository

Remove e renomeia as pginas no Object Repository.

Configure Tools

Configura quais ferramentas aparecem no menu Tools.

Database Desktop

Abre o Database Desktop.

Image Editor

Abre o editor de imagens da Borland para manipulao de cones, bitimap,


arquivos de cursor, arquivos de recurso (resouse files).

Window menu

SENAI-SP INTRANET
CT080-09

111

Linguagens de programao

Help menu

Contents

Abre o index do help.

About

Sobre o Borland C++Buider, verso etc.

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

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.
Para melhor entendimento o Object Inspector ser dividido em trs figuras.
No seletor de objetos da figura ao lado podemos
selecionar o objeto (formulrio ou componente)
que desejamos modificar, atribuir valores s
propriedades ou ainda criar um manipulador de
eventos.
As pginas de propriedades destacada. A coluna
da esquerda d acesso lista de propriedades
relativas ao objeto selecionado, e na coluna da
direita podemos especificar valores para cada uma
dessas propriedades.
Cada objeto tem sua propriedade especfica. No sero abordadas todas; apenas as
mais comuns, mais importantes e de maior utilizao.

SENAI-SP INTRANET
CT080-09

113

Linguagens de programao

Align

Determina o alinhamento do componente.

+ Anchors

Define uma posio para fixa ncora do objeto.

AutoScroll

Permite o formulrio rodar na tela automaticamente.

AutoSize

Ajusta o tamanho automaticamente.

+ BorderIcons

Define os cones na parte alta direita da tela.

BorderStyle

Define o tipo de borda.

Caption

Legenda do componente (& indica tecla de atalho para alguns


Componentes).

Color

Cor do componente.

Cursor

Define o tipo de cursor.

Ctl3D

Define a aparncia 3D do componente.

Enabled

Define se o componente est ativo, se pode ser usado.

+ Font

Fonte utilizada no componente.

FormStyle

Define o tipo de Form (fsNormal, fsMDIChild, fsMDIForm)

Height

Altura do objeto.

HelpContext

Nmero Utilizado para chamar o Help on-line.

Hint

String utilizada em dicas instantneas.

Icon

Define o cone que aparecer no lado esquerdo a da tela.

Left

Posio esquerda.

Name

Nome do componente.

Position

Define a posio do Form na tela.

PopupMenu

Menu de contexto do componente.

ShowHint

Define se o Hint ser mostrado.

TabOrder

A ordem de tabulao do componente, Usada quando o usurio tecla TAB.

TabStop

Indica se o componente ser selecionado quando o usurio tecla TAB.

Tag

Propriedade no utilizada pelo Delphi, que pode ser usada como


propriedade personalizada.

Text

Insere texto nos objetos (Edit, RichEdit, Memo).

Top

Posio superior

Visible

Define se o componente est visvel.

Whidth

Largura.

WindowState

Define a forma que o Form aparecer na tela.

Quando houver necessidade de utilizao de outras propriedades que no constam


nesta lista, pode-se utilizar o help do C++ Builder.
114

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.

Ao clicarmos na rea em branco do lado direito do evento escolhido, geramos um


processador de eventos que ir executar o cdigo digitado dentro dele toda vez que o
evento ligado a ele, acontecer.
Por exemplo:
Criamos um boto e, em seguida, criamos um evento OnClick. Toda vez que
apertamos este boto, ele executar uma tarefa (um cdigo) que est registrado dentro
do evento OnClick.

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

Cria um novo formulrio no projeto.


Cria um formulrio de data mdulo para o projeto.
Abre projetos. Pode abrir tambm Units, Forms e texto no editor de cdigo.
Abre um projeto, listando os ltimos abertos.
Salva o arquivo aberto no editor de cdigo.
Salva o projeto com outro nome ou em outro local.
Salva todas as Units, Forms, projeto e mdulos.
Fecha um projeto.
Fecha todos os arquivos abertos.
Permite inserir instrues #include na unidade atual no editor.
Sai do C++ Builder.
SENAI-SP INTRANET
CT080-09

117

Linguagens de programao

Edit menu
A opo Edit realiza vrias operaes de editor. A figura a seguir mostra trs sees
disponveis:

Undelete

Desfaz a ltima ao de deleo.

Redo

Refaz um Undo.

Cut

Copia item selecionado para o Clipboard (e depois o apaga).

Copy

Copia item selecionado para o Clipboard (e no apaga)

Paste

Cola/copia o contedo do Clipboard para o formulrio.

Delete

Apaga item selecionado.

Select All

Seleciona todos os componentes do formulrio

Align to Grid

Alinha o componente selecionado com relao grade do formulrio

Bring to Front

Move o componente para frente de outros.

Send to Back

Move o componente para trs.

Align

Alinha o componente selecionado.

Size

Altera tamanho de componente.

Tab Order

Modifica a ordem do componente no formulrio, quando no uso da tecla TAB.

Creation Order

Modifica a ordem de componente no visual.

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

Procura um texto dentro de um arquivo.

Find in Files

Procura texto em um conjunto de arquivo.

Replace

Procura e substitui um texto.

Search Again

Repete a ltima procura de texto.

Incremental Search

Procura incremental. Digita-se o cdigo automaticamente.

Go to Line Number

Move o cursor para uma determinada linha.

Go to Address

Code Editor localiza-o no arquivo.

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

Mostra o gerenciador de projeto.

Project Source

Mostra o cdigo do projeto.

Object Inspector

Mostra o Object Inspector.

Alignment Pallete

Exibe a paleta do alinhamento.

Browser

Exibe o visualizador de objetos.

Breakpoints

Exibe a lista de pontos de paradas.

Call Stack

Mostra a lista de chamada.

Watches

Mostra a lista de visualizao.

Modules

Mostra as janelas de mdulos.

Threads

Mostra ao threads status.

Componente List

Exibe a lista de componentes.

Windows List

Exibe as janelas abertas.

Toggle Form/Unit

Alterna entre o Form e a Unit.

Units

Mostra o cdigo fonte de uma Unit ou do projeto a partir de uma lista.

Forms

Seleciona um Form a partir de uma lista.

Type Library

Exibe o editor de Library.

New Edit Windows

Abre um novo editor de cdigo.

SpeedBar

Exibe ou oculta a Speedbar.

Component Pallete

Exibe ou oculta a 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

Adiciona arquivo ao projeto.

Remove From Project

Retira arquivo do projeto.

Import Type Library

Exibe as bibliotecas de tipos registrados em seu computador de modo que


um tipo registrado possa ser importado para projeto.

Add to Repository

Permite criar modelos para adicionar no repositrio.

View Source

Traz a janela de cdigo-fonte para o primeiro plano.

Edit Option Source

Permite exibir/editar o arquivo de opes de projeto (.bpr) para o projeto


atual.

Export Makefile

Cria um makefile para o projeto atual.

Add New Project

Permite que voc crie um novo projeto de sua escolha.

Add Existing Project

Carrega um projeto existente.

Compile Unit

Compila o cdigo que esta na janela ativa.

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

Exibe informaes sobre o projeto.

Make All

Idem ao Make, porm executa para todos os projetos.

Build All

Idem ao Build, porm executa para todos os projetos.

Options

Opes do projeto, como: cone do executvel, nome


da aplicao ou opes de compilao.

SENAI-SP INTRANET
CT080-09

121

Linguagens de programao

Run menu
Clicando a opo Run ativado o menu suspenso correspondente:

Run

Compila e executa o projeto.

Attach to Process
Parameters

Configura parmetros a serem passados ao programa.

Register ActiveX Server


Unregister ActiveX
Server
Step over

Executa linha a linha (sem entrar em sub-rotinas).

Trace Into

Executa linha a linha (entrando em sub-rotinas).

Trace to Next Source


Line

Executa o programa normalmente, at encontrar um ponto de interrupo.

Run to Cursor

Roda o programa at chegar ao cursor.

Show Execution Point

Posiciona o cursor na prxima /coloca o cursor na linha a ser executada


(execution point).

Program Pause

Executa pausa no programa.

Program Reset

Para a execuo do programa.

Evaluate/Modify

Permite colocar um valor ou trocar um valor de uma varivel no projeto.

Add Watch

Permite a visualizao de variveis.

Add Breakpoint

Adiciona um ponto de interrupo na linha em que estiver o cursor.

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

Permite escolher um componente predefinido para adicionar ao seu projeto.

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

Permite que um pacote ou componente seja selecionado.

Configure Pallete

uma atalho para o item Tools/Environment Options.

Install ActiveX Control

Database Menu

Explore

Executa o Database Explorer.

Form Wizard

Cria aplicativo de acesso a banco de dados.

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

Configura o Editor, o Browser e customiza a aparncia da Component


Pallete.

Editor Options

Fornece um maneira de configurar as funes do IDE

Configure Tools

Exibe o Tools Options dialog box.

Debugger Options

Personaliza as opes do depurador.

Repository

Remove e renomeia as pginas no Object Repository.

Configure Tools

Configura quais ferramentas aparecem no meu Tools.

Database Desktop

Abre o Database Desktop.

Image Editor

Abre o editor de imagens da Borland para manipulao de icones, bitmap,


arquivos de cursor, arquivos de recurso (resouse files).

Window menu

124

SENAI-SP INTRANET
CT080-09

Linguagens de programao

Help menu

Contents

Abre o index do help.

About

Sobre o Borland C++ Builder, verso etc.

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

Para melhor entendimento, o object Inspector ser dividido em trs figuras:


No seletor de objetos da figura a seguir podemos selecionar o objeto (formulrio ou
componente) que desejamos modificar, atribuir valores s propriedades ou ainda criar
um manipulador de eventos.

A pgina de propriedades destacada. A coluna da esquerda d acesso lista de


propriedades relativas ao objeto selecionado, e na coluna da direita podemos
especificar valores para cada uma dessas propriedades.
Cada objeto tem sua propriedade especfica. No sero abordadas todas; apenas as
mais comuns, mais importantes e de maior utilizao.

126

SENAI-SP INTRANET
CT080-09

Linguagens de programao

Align

Determina o alinhamento do componente.

+ Anchors

Define uma posio para fixar ncora do objeto.

AutoScroll

Permite o formulrio rodar na tela automaticamente.

AutoSize

Ajusta tamanho automaticamente.

+ BorderIcons

Define os cones na parte alta direita da tela.

BorderStyle

Define o tipo de borda.

Caption

Legenda do componente (& indica tecla de atalho para alguns


componentes).

Color

Cor do componente.

Cursor

Define o tipo de cursor.

Ctl3D

Define a aparncia 3D do componente.

Enabled

Define se o componente est ativo, se pode ser usado.

+ Font

Fonte utilizada no componente.

FormStyle

Define o tipo de Form (fsNormal, fsMDIChild, fsMDIForm.

Height

Altura do objeto.

HelpContext

Nmero utilizado para chamar o Help on-line.

Hint

String utilizada em dicas instantneas.

Icon

Define o cone que aparecer no lado esquerdo da tela.

Left

Posio esquerda.

Name

Nome do componente.

Position

Define a posio do Form na tela.

PopupMenu

Menu de contexto do componente.

ShowHint

Define se o Hint ser mostrado.

TabOrder

A ordem de tabulao do componente, usada quando o usurio tecla TAB.

TabStop

Indica se o componente ser selecionado quando o usurio teclar TAB.

Tag

Propriedade no utilizada pelo Delphi, que pode ser usada como


propriedade personalizada.

Text

Insere texto nos objetos (Edit, RichEdit, Memo)

Top

Posio superior.

Visible

Define se o componente est visvel.

Width

Largura.

WindowState

Define a forma que o Form aparecer na tela.

Quando houver necessidade de utilizao de outras propriedades que no constam


nesta lista, pode-se utilizar o help do C++ Builder.

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.

Ao clicarmos na rea em branco do lado direito do evento escolhido, geramos um


processador de eventos que ir executar o cdigo digitado dentro dele toda vez que o
evento ligado a ele, acontecer.
Por exemplo, criamos um boto e, em seguida, criamos um evento OnClick. Toda vez
que apertarmos este boto, ele executar uma tarefa (um cdigo) que est registrado
dentro do evento OnClick.

128

SENAI-SP INTRANET
CT080-09

Linguagens de programao

Eventos

Evento qualquer acontecimento relativo a operaes realizadas pelo programa.


Numa operao, o conjunto de eventos definido a priori provisoriamente.
Considerando que os eventos devem ser disparados por apenas um comando do
usurio por vez, imperativo ter claro como realizar a ordem em que eles ocorrem.
O componente do programa que possui atributos para realizar a programao de
eventos o processador de eventos.
Nesta parte do curso so comentados os eventos mais comuns e apresentados seus
processadores.

Processadores de eventos mais comuns


Evento OnActivate
//------------------------------------------------------------------void __fastcall TForm1::FormActivate(TObject *Sender)
{
rea onde digitamos o nosso codigo
}
//-------------------------------------------------------------------

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

Cria um novo aplicativo Windows. Um aplicativo consiste em um formulrio,


janelas de cdigo e um arquivo de projeto.
Quaisquer arquivos .c, .cpp, .h ou .hpp so chamados de unidades. O
arquivo projeto ter uma extenso bpr.

Batch File

Cria um arquivo de lote.

C File

Cria um arquivo novo .c.

Component

Cria um novo componente ou um objeto.

Console Wizard

Cria um novo aplicativo de console baseado em DOS.

CPP File

Cria um novo arquivo .cpp.

Data Module

Cria um mdulo de dados. Esse um formulrio especial para organizar


diferentes mdulos de dados dentro de uma ferramenta.

DLL Wizard

Cria um arquivo DLL ou aplicativo.

Form

Cria um formulrio em branco para o projeto atual.

Frame

Cria um novo frame para o projeto atual.

Header File

Cria um novo arquivo .h ou hpp.

Library

Cria um novo arquivo de biblioteca ou arquivo.

Package

Cria um novo pacote e o adiciona ao projeto.

Project Group

Cria um super grupo de projeto que agrupa projetos relacionado. Tendo


mltiplos projetos unidos em um super grupo, voc pode criar todos os
projetos com um comando.

Text

Cria um novo arquivo texto.

Thread Object

Cria um novo objeto encadeado.

Unit

Cria e adiciona uma nova unidade ao projeto. Uma unidade composta do


arquivo.cpp e seu arquivo de cabealho.

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

Neste caso, os componentes da paleta de componentes ou da pgina standard so


elementos de controle no padro Windows, disponveis para a criao de suas
aplicaes em C++ Builder.
Os componentes so os seguintes:
Componente MainMenu
Permite criarem-se menus exatamente iguais ao do Windows.
Componente PopupMenu
Permite criarem-se menus flutuantes quando os usurios do um clik no boto
direito do mouse.
Componente Label
Permite a exibio de textos em componentes para efeito de identificao.
Componente Edit
Permite criar uma caixa de edio com uma linha de texto.
Componente Memo
Permite criar uma caixa de edio com vrias linhas de texto.
Componente Button
Permite criar botes.
Componente CheckBox
Permite criar uma caixa de seleo de opes.
Componente RadioButton
Permite criar uma caixa de seleo de opes em que somente uma das
opes valida.

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:

Os componentes da pgina adicional da paleta de componentes so elementos de


controle especficos para o padro Windows, disponveis para a criao de suas
aplicaes em C++ Builder. Sucessivamente, sero descritos todos os componentes
das demais pginas, na seqncia em que aparecem na paleta de componentes.
Os componentes da pgina adicional so:
Componente BitBtn
Permite a criao de botes com uma imagem do tipo bitmap atribuda a eles, a
qual ser apresentada ao lado esquerdo da legenda.

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

Os componentes na pgina Win32 da paleta de componentes so:


Tab Control
Cria uma pgina com guias ou componentes de tipo notebook.
Page Control
Cria mltiplos componentes de uma caixa dilogo.
Image List
Cria uma lista do tipo coleo de imagens. Ajuda a organizar e gerenciar todas
as suas imagens para seu projeto em uma localizao
Rich Edit
Cria um componente memorando RTF. Esse tipo de caixa de edio suporta
mais propriedades de texto, como fontes, face de tipos, tamanho e cores.
Track Bar
Cria um track bar vertical ou horizontal. Uma track bar utilizada como um
controle do tipo ajustador, como uma barra de ampliar e reduzir imagens e
outros itens.
Progress Bar
Cria uma barra de progresso. A maioria dos programas de instalao utiliza
esse tipo de barra para mostrar o progresso da atividade de instalao

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

Os componentes da pgina system so:


Componente Timer
Permite cronometrar eventos em um intervalo de tempo regular.
Componente PaintBox
Permite exibir um desenho em uma rea especificada no formulrio.
Componente MediaPlayer
Permite criar um painel de controle de udio e vdeo para a reproduo de sons
e de vdeo.
Componente OleContainer
Permite criar uma rea no formulrio de ligao entre a aplicao e um servidor
OLE.
Componente DdeClientConv
Permite estabelecer uma ligao do tipo cliente com uma aplicao Servidora
DDE.
Componente DdeClientItem
Especifica o item de uma aplicao cliente em uma converso DDE.
Componente DdeServerConv
Estabelece uma conversao Servidora - Cliente DDE.
Componente DdeServerItem
Especifica os dados DDE a serem enviados ao cliente DDE.
140

SENAI-SP INTRANET
CT080-09

Linguagens de programao

Pgina Data Access

Apresenta os seguintes componentes:


Componente DataSource
Tem como objetivo fornecer um ligao com uma tabela, com uma consulta ou
entre componentes usados para manipulao de dados.
Componente ClienteDataSet
Tem como objetivo fornecer um ligao com uma tabela, com uma consulta ou
entre componentes usados para manipulao de dados.
Componente DataSetProvider
Tem como objetivo fornecer um ligao com uma tabela, com uma consulta ou
entre componentes usados para manipulao de dados.

Pgina Data Controls

Os componentes da pgina Data Controls da paleta de componentes so:


Componente DBGrid
Permite a criao de uma grade para exibio de dados em forma de tabela.
Componente DBNavigator
Permite realizarem-se operaes de edio, insero, eliminao e navegao
em um banco de dados.
Componente DBText
Permite visualizar um texto dentro de um campo de registro de um banco de
dados.

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

Os componentes da pgina BDE da paleta de componentes so:


Componente Table
Permite o acesso a uma tabela de base de dados dentro de uma aplicao.
Componente Query
Permite a construo e execuo de consultas em um banco de dados do tipo
SQL.
Componente StoredProc
Permite que a aplicao tenha acesso a procedimentos SQL armazenados em
um servidor SQL.
Componente DataBase
Tem por objetivo criar uma conexo entre o banco de dados e a aplicao.
Componente Session
Tem por objetivo propiciar um controle sobre as conexes entre a aplicao e o
banco de dados.
SENAI-SP INTRANET
CT080-09

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

Os componentes da pgina Internet (somente na verso C++ Builder Cliente/Servidor)


da paleta de componentes oferece uma variedade de protocolos de acesso Internet
para a sua aplicao no C++ Builder:
Componente Client Socket
Acrescenta um componente client socket no seu Form criando uma aplicao
TCP/IP, permitindo especificar o servidor e o tipo de servio oferecido pelo
servidor.
Componente Server Socket
Adiciona um componente Server socket em um servidor TCP/IP permitindo
especificar o tipo de servio ou o porto de acesso para as requisies da
aplicao cliente, aceitando ou no a conexo requisitante.
Componente NMDayTime

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

O Componente Quick Report da paleta de componentes possibilitam projetar relatrios


visualmente. Pode-se criar relatrios com faixas, adicionar ttulos, pginas de
cabealho e rodaps, configurar mltiplos detalhes, sumrios e grupos de cabealhos
e rodaps. Voc poder tambm criar relatrios a partir de registros de banco de
dados e usar o comando on-screen preview para checar os resultados.
Os componentes so:
Componente QuickReport
Acrescenta recursos de impresso de dados em um formulrio transformando-o
em relatrio.
Componente QRSubDetail
Cria uma ligao entre um registro de um banco de dados e um relatrio.
Componente QRBand
Permite confeccionarem-se relatrios acrescentando ou removendo
componentes que sero impressos.
Componente QRChildBand
Cria um formulrio-filho em que podemos acrescentar ou do qual podemos
remover componentes usados para a impresso.
Componente QRGroup
Componente QRLabel
Permite a criao de grupos de dados a serem impressos; o texto dever ser
exibido pela propriedade Caption, podendo ser dividido em mltiplas linhas e at
mesmo em mltiplas pginas.
146

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

Os componentes da pgina Dialogs da paleta de componentes contm janelas do


padro do Windows que podem ser utilizadas em suas aplicaes.
As janelas-padro fornecem uma interface segura para operaes com arquivos para
abertura, salvamento e impresso.
Ao abrir-se uma janela como caixa de dilogo, esse componente possibilita que ao
executar um procedimento o usurio possa ter alternativas de sada em valores
booleanos - falso ou verdadeiro.
Cada componente padro da caixa de dilogo (exceto o componente PrinterSetup) tem
uma configurao de propriedades agrupada na tabela do Object Inspector.
As opes de propriedades afetam a aparncia e o comportamento das caixas de
dilogo. Para exibir as opes das propriedades, d um duplo click em Options na
tabela Object Inspector. Para fechar uma caixa de dilogo dentro de um programa,
utilize o comando CloseDialog. Para modificar a posio de uma caixa de dilogo em
tempo de execuo, use o Handle, Left, Top, e a propriedade Position.
Os componentes da pgina Dialogs so:
Componente Open Dialogs
Exibe uma janela padro Windows onde o usurio pode especificar o nome de
um arquivo para ser aberto.
Componente SaveDialogs
Exibe uma janela padro Windows onde o usurio pode especificar o nome de
um arquivo para que este seja salvo.
148

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

Pgina WIN 3.1

O componentes da pgina Windows 3.1 da paleta de componentes fornecem


elementos de controle para aplicaes em Windows 3.1, para manter a compatibilidade
com aplicaes de verses anteriores.
Muitos destes controles se assemelham aos controles atuais de 32 bits.
Observao
Na criao de novas aplicaes, no use estes controles.
A seguir, observe uma tabela indicativa de uso de controles:
Controle Win3.1

Substitua por

Pgina da paleta do novo controle

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

Observe agora, os componentes da pgina WIN 3.1:


Componente DBLookupList
Cria uma caixa de listagem de dados para a execuo de pesquisas associadas
em um registro de um banco de dados.
Componente DBLookupCombo
Cria uma caixa de combinao para a execuo de pesquisas associadas em
um registro de um banco de dados.
Componente TabSet
Permite a criao de palhetas onde o usurio pode selecionar opes
determinadas; utilizado em conjunto com o Notebook.
150

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

Os componentes da pgina Samples da paleta de componentes so, como o nome


indica, exemplos de componentes incorporados a essa pgina, que permitem ao
SENAI-SP INTRANET
CT080-09

151

Linguagens de programao

usurio montar seus prprios objetos, recorrendo a componentes j disponveis para


uso.
O cdigo fonte destes componentes pode ser encontrado na pasta:
CBUILDER3\EXAMPLES\CONTROLS\SOURCE.
Os componentes da pgina Samples so:
Componente Pie
Exibe um grfico do tipo torta em uma aplicao.
Componente Performance Graph
Exibe um grfico do tipo ponto a ponto em uma aplicao.
Componente CspinButton
muito parecido com o componente UpDown exceto por podermos escolher as
imagens que representam as setas.
Componente CspinEdit
Funciona como um componente associado UpDown+Edit, mas no possui todas
as propriedades do componente Edit.
Componente Cgauge
Permite ao usurio criar indicadores de acompanhamento de processos, sendo
a sua exibio feita em cinco formas diferentes.
Componente CdirectoryOutline
Exibe uma estrutura de pastas de um determinado driver.
Componente CcolorGrid
Permite ao usurio selecionar cores atravs de um gride de 16 cores.

152

SENAI-SP INTRANET
CT080-09

Linguagens de programao

Pgina ActiveX

Os componentes da pgina ActiveX da paleta de componentes so objetos ActiveX,


completos, utilizados em aplicaes portteis.
Para usar estes componentes, deve-se primeiramente abrir um formulrio com
biblioteca ActiveX ativada. Aps localizar um componente ActiveX no formulrio, devese clicar com o boto direito do mouse para exibir as propriedades e outros comandos
ou caixas de dilogos. Desse modo, pode-se configurar componentes ou modificar
valores.
As propriedades das caixas de dialogo ou outros comandos possuem botes de ajuda
que exibem informaes sobre o componente.
Os componentes da pgina ActiveX so:
Componente Chartfx
Permite ao usurio a criao de reas grficas altamente personalizadas; voc
pode definir valores e aparncia dentro de um aplicao.
Componente VSSpell
Permite acrescentar recursos de correo ortogrfica em uma aplicao.
Componente F1Book
Acrescenta uma planilha dentro de uma aplicao.
Componente VtChart
Permite criar grficos em 3 dimenses dentro de um aplicao.
Componente Graph
Exibe um grfico do tipo grfico de pinos, como uma outra forma de implementar
grficos em 2 dimenses.

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.

Em outra janela digitam-se as funes e comandos em linguagemC++: Como se pode


ver a seguir, existem alguns cdigos nesta janela que so inseridas pelo prprio
C++Builder. A designao da janela indica Unit1. Cpp que um cdigo do prprio
programa.

154

SENAI-SP INTRANET
CT080-09

Linguagens de programao

Paralelamente criao do editor de cdigo, criado o arquivo .h - h de header,


cabealho. Nele so declarados todos os objetos e organizados os prottipos das
funes. O cdigo criado no arquivo .h um cdigo implementado na forma de
orientao a objetos. O prprio programa o implementa. Para isso criada uma classe
Tform1:

SENAI-SP INTRANET
CT080-09

155

Linguagens de programao

156

SENAI-SP INTRANET
CT080-09

Linguagens de programao

Criao de aplicativo

Nesta parte de nosso estudo da Linguagem C aprenderemos a criar um aplicativo.


Trata-se do Win32 GUI (Graphic User Interface).
So apresentados todos os passos necessrios para desenvolver um aplicativo e para
salv-lo corretamente.
A exposio ser ampliada com a incluso de exemplos, a partir dos quais voc
aprender, por meios prticos, a usar os conceitos de objetos, propriedades, mtodos
e eventos em programas visuais.

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:

Em um sistema computacional, o conjunto de componentes que no fazem parte


do equipamento fsico propriamente dito e que incluem instrues e programas
com dados a eles associados, empregados durante a utilizao do sistema;

Qualquer programa ou conjunto de programas de computador;

Produto que oferece um conjunto de programas e dados para uso em computador.

Tanto o software quanto o aplicativo no fazem parte do equipamento fsico mas


diferem quanto ao nvel de abrangncia de cada um. O conceito de software diz
SENAI-SP INTRANET
CT080-09

157

Linguagens de programao

respeito a elementos computacionais mais complexos que um aplicativo que se destina


a utilizao em tarefas especficas.
Para criar o aplicativo Win32 GUI (Graphic User Interface) procede-se do modo
descrito a seguir.
Inicie o C++ Builder , clicando na Barra de Ferramentas na opo File/New/Application,
como mostra a figura:

158

SENAI-SP INTRANET
CT080-09

Linguagens de programao

Quando uma aplicao iniciada, aparecer sempre a janela de Edio de Cdigos


Unit.cpp e seu editor formulrio correspondente.
Observe:

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

Como salvar o aplicativo


Ao clicar em SaveAll aparecer uma janela como esta:

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

Exemplo de montagem de formulrio


Em Informtica, formulrio a janela ou documento que apresenta informaes de
forma diagramada. As informaes so dispostas de acordo com estrutura
predeterminada indicando campos a serem preenchidos ou modificados. Desse modo,
o usurio pode introduzir ou modificar informaes. O formulrio especialmente
usado em programas de bancos de dados e na Web.
Nesta parte de nosso curso, aprenderemos a montar um formulrio com o auxlio do
aplicativo da linguagem C++builder.
O exemplo bsico inicial apresenta a identificao do formulrio e um boto que
oferece possibilidade de encerrar ou interromper a sua apresentao. para fazer esse
exerccio, deve-se localizar na tela, o boto Form e utilizar as alternativas de
construo que a janela oferece.
O aspecto final a que se pretende chegar o seguinte:

Clicando-se o boto Fechar, encerra-se o aplicativo.


Terminado esse exerccio, passamos aos prximos passos da montagem de um
formulrio. A janela Form do C++builder coloca as opes necessrias para incluso
de componentes do formulrio. No quadro a seguir vem-se as opes de objetos
apresentados pela janela na coluna Objeto, as propriedades que possuem e na coluna
valor deve ser especificada a designao a ser usada pelo usurio.

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();
}
//

Exemplo de uma calculadora simples


Nesse exemplo trabalharemos com um formulrio, um objeto Edit para visualizao
dos valores e botes que permitam a entrada de valores via mouse.

162

SENAI-SP INTRANET
CT080-09

Linguagens de programao

O aspecto final a que se pretende chegar o seguinte:

A configurao dos objetos fica, ento, como mostra o seguinte quadro:


Objeto
Form1
Edit
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button

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

O exemplo bsico inicial apresenta a identificao da janela de um contador com todos


os seus atributos, o que oferece a possibilidade de defini-lo de acordo com as
necessidades requeridas.
A janela de um contador com seus atributos a seguinte:

Os prximos passos da montagem de um contador so feitos na janela do contador do


C++builder, que apresenta opes para incluso de componentes do contador.
No quadro abaixo so mostrados os objetos existentes no projeto, as propriedades que
possuem e na coluna valor deve ser especificada a designao a ser usada pelo
usurio.
A configurao dos objetos fica, ento, como mostra o seguinte quadro:
Objeto
From 1
Label 1
Label 2
Label 3
Label 4
Button 1
Button 2

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

Muitos formulrios apresentam, alm de informaes em linguagem verbal-escrita,


informaes em linguagem no-verbal como: fotos, desenhos, esquemas, tabelas,
grficos, etc. Essas imagens precisam ser dispostas em locais adequados, para que o
usurio possa introduzir ou modificar informaes na janela de modo eficaz.
Nesta parte de nosso curso, aprenderemos a montar um formulrio com incluso
controlada de imagens. Para isso, continuaremos a contar com o auxlio do aplicativo
da linguagem C++builder.
Utilizaremos no processo de trabalho, objetos que o C++builder apresenta disponveis
para controle do posicionamento correto de uma imagem no arquivo Form.
Em nosso caso, o formulrio a ser montado dever conter os seguintes objetos:
MainMenu, PopupMenu, Timer, SpeedButton, ImageList, Image e ToolBar. Na paleta de
componentes do Builder encontraremos os componentes necessrios para incluso no
FORM:

SENAI-SP INTRANET
CT080-09

169

Linguagens de programao

Iniciaremos colocando no Form, o componente Main Menu da guia standart. Depois


selecione o componente e d-lhe um duplo clique. Aparecer, ento, como mostra a
figura a seguir, o editor de menu. Nele, configuraremos o menu principal:

Toda a configurao do MainMenu feita por meio do Object Inpector.


Os procedimentos para incluso dos demais objetos seguem sempre a mesma
seqncia usada para incluso do MainMenu.
Para configurarmos o PopupMenu tambm procedemos como no caso do MainMenu.
Os objetos, suas propriedades e indicaes acham-se enunciados no quadro a seguir:
Objeto
Form1
MainMenu1
PopupMenu1
ToolBar1
SpeedButton1

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

void __fastcall TFrmImagem::Img1MouseMove(TObject *Sender, TShiftState Shift,


int X, int Y)
{
Img1->Visible=false;
Img2->Visible=true;
}
//-------------------------------------------------------------------void __fastcall TFrmImagem::FormMouseMove(TObject *Sender,
TShiftState Shift, int X, int Y)
{
Img1->Visible=true;
Img2->Visible=false;
}
//--------------------------------------------------------------------

172

SENAI-SP INTRANET
CT080-09

Linguagens de programao

Editor de textos

Em continuao a nosso curso aprenderemos a montar um novo aplicativo - um editor


de texto.
Em nosso trabalho continuaremos a empregar o programa da linguagem C++builder.
Na montagem do editor de texto usaremos os componentes da DialogBox desse
programa.
Editor de texto um programa com recursos bsicos para redao e edio de textos
tais como: insero e excluso de caracteres por digitao, quebras de linha, e opes
para gravar e carregar texto como um arquivo em disco. No h recurso de formatao
nesse tipo de editor.
Trabalharemos com duas janelas interconectadas: numa ser feita a edio de texto e
na outra, montado o formulrio Form.
Os elementos de configurao dos formulrios relacionados a essas duas janelas
devem ser acionados na opo FormStyle da DialogBox.

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

Configure, em seguida, os Main Menus como aprendido anteriormente e, logo aps, os


objetos e os dois formulrios conforme o quadro abaixo:
Configurao do Form1
Objeto

Propriedade

Valor

Name

EditForm

Caption

Editor de Texto C++

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

Aps a configurao desses objetos devemos configurar na DialogBox , as opes


OpenFileDialog e o SaveFileDialog.
Selecione o componente OpenFileDialog e no Object Inspector a propriedade
DefaultExt. Coloque o valor TXT que define a extenso padro do arquivo texto.

SENAI-SP INTRANET
CT080-09

175

Linguagens de programao

Na propriedade Filter clique o boto reticncias. A caixa Filter Editor ser, ento,
exibida:

Repita os mesmos passos para o SaveFileDialog.


Aps feita toda a configurao digite o cdigo fonte do programa, mostrado a seguir.
Cdigo fonte Form1 (MDIFrame)
//-------------------------------------------------------------------------#include <vcl.h>
#pragma hdrstop
#include "MDIFrame.h"
#include "MDIEdit.h"
//-------------------------------------------------------------------------#pragma resource "*.dfm"
TFrameForm *FrameForm;
//-------------------------------------------------------------------------__fastcall TFrameForm::TFrameForm(TComponent* Owner)
: TForm(Owner)
{
}
//-------------------------------------------------------------------------void __fastcall TFrameForm::Exit1Click(TObject *Sender)
{
Close();
}
//--------------------------------------------------------------------void __fastcall TFrameForm::Tile1Click(TObject *Sender)
{
Tile();
}
//--------------------------------------------------------------------void __fastcall TFrameForm::Cascade1Click(TObject *Sender)
{
Cascade();
}
//--------------------------------------------------------------------void __fastcall TFrameForm::Arrangeicons1Click(TObject *Sender)
{
ArrangeIcons();
}
//--------------------------------------------------------------------void __fastcall TFrameForm::New1Click(TObject *Sender)
{
EditForm = new TEditForm(this);
}
//-------------------------------------------------------------------------void __fastcall TFrameForm::Open1Click(TObject *Sender)
{
if(OpenFileDialog->Execute()){

176

SENAI-SP INTRANET
CT080-09

Linguagens de programao

EditForm=new TEditForm(this);
EditForm->Open(OpenFileDialog->FileName);
}
}
//--------------------------------------------------------------------------

Cdigo fonte form2 (MDIEdit)


//-------------------------------------------------------------------------#include <vcl.h>
#pragma hdrstop
#include "MDIEdit.h"
#include "MDIFrame.h"
//-------------------------------------------------------------------------#pragma resource "*.dfm"
TEditForm *EditForm;
//-------------------------------------------------------------------------const AnsiString DefaultFileName = AnsiString("Untitled");
__fastcall TEditForm::TEditForm(TComponent* Owner)
: TForm(Owner)
{
}
//-------------------------------------------------------------------------void __fastcall TEditForm::Open(const AnsiString AFileName)
{
PathName = AFileName;
Caption = ExtractFileName(AFileName);
Editor->Lines->LoadFromFile(PathName);
Editor->SelStart = 0;
Editor->Modified = false;
}
void __fastcall TEditForm::New1Click(TObject *Sender)
{
FrameForm->New1Click(Sender);
}
//--------------------------------------------------------------------void __fastcall TEditForm::Open1Click(TObject *Sender)
{
FrameForm->Open1Click(Sender);
}
//--------------------------------------------------------------------void __fastcall TEditForm::Close1Click(TObject *Sender)
{
Close();
}
//--------------------------------------------------------------------void __fastcall TEditForm::Exit1Click(TObject *Sender)
{
FrameForm->Exit1Click(Sender);
}
//--------------------------------------------------------------------void __fastcall TEditForm::Save1Click(TObject *Sender)
{
if(Caption == DefaultFileName){
Saveas1Click(Sender);
}
else{
Editor->Lines->SaveToFile(PathName);
Editor->Modified = false;
}
}
//--------------------------------------------------------------------void __fastcall TEditForm::Saveas1Click(TObject *Sender)
{
SaveFileDialog->FileName = PathName;
if (SaveFileDialog->Execute() ){
PathName= SaveFileDialog->FileName;
Caption = ExtractFileName(PathName);
Save1Click(Sender);
}
}
SENAI-SP INTRANET
CT080-09

177

Linguagens de programao

//--------------------------------------------------------------------void __fastcall TEditForm::Print1Click(TObject *Sender)


{
if (PrintDialog1->Execute()){
try {
Editor->Print(PathName);
}
catch(...){
Printer()->EndDoc();
throw;
}
}
}
//--------------------------------------------------------------------void __fastcall TEditForm::Printersetup1Click(TObject *Sender)
{
PrinterSetupDialog1->Execute();
}
//--------------------------------------------------------------------void __fastcall TEditForm::Cut1Click(TObject *Sender)
{
Editor->CutToClipboard();
}
//--------------------------------------------------------------------void __fastcall TEditForm::Copy1Click(TObject *Sender)
{
Editor->CopyToClipboard();
}
//--------------------------------------------------------------------void __fastcall TEditForm::Paste1Click(TObject *Sender)
{
Editor->PasteFromClipboard();
}
//--------------------------------------------------------------------void __fastcall TEditForm::Delete1Click(TObject *Sender)
{
Editor->ClearSelection();
}
//--------------------------------------------------------------------void __fastcall TEditForm::Selectall1Click(TObject *Sender)
{
Editor->SelectAll();
}
//--------------------------------------------------------------------void __fastcall TEditForm::Left1Click(TObject *Sender)
{
Left1->Checked
= false;
Right1->Checked = false;
Center1->Checked = false;
if( dynamic_cast<TMenuItem *>(Sender) !=0)
dynamic_cast <TMenuItem *>(Sender) ->Checked = true;
{
if (Left1->Checked )
Editor->Paragraph->Alignment = taLeftJustify;
else if (Right1->Checked)
Editor->Paragraph->Alignment= taRightJustify;
else if (Center1->Checked)
Editor->Paragraph->Alignment = taCenter;
}
}
//--------------------------------------------------------------------void __fastcall TEditForm::Wordwrap1Click(TObject *Sender)
{
Editor->WordWrap = !Editor->WordWrap; //toggle word wrapping
if (Editor->WordWrap)
Editor->ScrollBars = ssVertical;
else
Editor->ScrollBars = ssBoth;
Wordwrap1->Checked = Editor->WordWrap; // set menu item check
}
//--------------------------------------------------------------------void __fastcall TEditForm::Font1Click(TObject *Sender)
{
FontDialog1->Font= Editor->Font;

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:

Para nosso exemplo de como operar na montagem de um banco de dados, vamos


criar uma agenda pessoal.

Inicialmente, preciso ter uma tabela de registros em um banco de dados ou


utilizar o DataBase Desktop no C++builder.

SENAI-SP INTRANET
CT080-09

181

Linguagens de programao

Para criao da nossa tabela no C++builder operamos do seguinte modo:


1. No C++builder v ao menu tools e selecione o item DataBase Desktop. Em seguida
o monitor exibe a seguinte tela:

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.

Formulrio para acesso ao banco de dados


A seguir, vamos montar um formulrio de acesso a esse banco de dados criado. Para
isso deve-se utilizar o DataBase Form Wizard.
A seqncia de procedimentos a seguinte:
1.

No menu DataBase selecione o item Form Wizard. apresentada a seguinte tela:

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.

Na etapa seguinte preciso decidir se o acesso ao formulrio ser feito por:

TQuery que quer dizer por comandos do SQL ou por;

Tabele, ou seja, por funes e comandos implementados por programao.

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

3. Na prxima tela apresentada devemos informar quais campos poderemos


visualizar no formulrio. Podemos trabalhar selecionando os campos um a um, ou
todos de uma s vez pelos botes > ou >>. Em nosso caso, selecionamos todos os
campos e clicamos o boto Next:

Interface do formulrio
O programa oferece as seguintes opes para apresentao do formulrio na interface:

Horizontal;

Vertical e

Grid grade.

Como a opo Vertical possibilita a insero de labels - rtulos, selecionamos essa


opo e em seguida clicamos o boto Next:

SENAI-SP INTRANET
CT080-09

185

Linguagens de programao

E na opo de disposio dos labels selecionamos a opo Left. Em seguida, clicamos


o boto Next novamente:

Na prxima tela definimos se ser um formulrio principal ou um Datamodules


mdulos de dados. Selecionamos a opo de formulrio principal e em seguida o
boto Finish. Veremos em seguida o formulrio pronto. Observe a seqncia a seguir:

186

SENAI-SP INTRANET
CT080-09

Linguagens de programao

Porta paralela

A comunicao de dados entre o computador e equipamentos externos ocorre por


meios de conectores existentes na parte traseira dos PCs.
Esses conectores so denominados:

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

Indica que a impressora est preparada


para receber dados.
Indica que a impressora no est
preparada para receber dados.
Indica que a impressora est sem papel
para impresso.
Indica que a impressora est no estado
on line, pronta para receber
informao.
O papel avana para o comeo da
prxima linha.
Indica quando ocorre algum tipo de erro:
termino do papel, impressora
desativada...
Reinicializa a impressora e limpa o
buffer de impresso.
Os dados s podem ser transferidos
para a impressora quando esta linha
estiver em nvel lgico baixo.

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

Apresenta-se, a seguir, a localizao fsica de cada pino no conector DB25:

Registrador de dados SPP 0x378 Sada


Esse registrador utilizado todas as vezes que precisamos:

Enviar sinais para fora do computador;

Ligar e desligar dispositivos e para transferncia de dados.

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

Registrador de status SPP 0x379 Entrada


A Porta Paralela, no modo padro (SPP), tem cinco entradas. Isso til quando ns
precisamos capturar sinais externos para dentro do computador, como por exemplo:
sabermos se um sensor est ativo; se um alarme foi disparado, etc.
A seguir, apresenta-se o esquema de um Registrador de status SPP 0x379:

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

Registrador de controle SPP 037A Sada


Por intermdio desse registrador pode-se controlar, a partir da Porta Paralela, mais
quatro aparelhos eletroeletrnicos, enviando sinais para o registrador 37Ah. Ao
enviarmos um byte para este registrador, deveremos manter os quatro ltimos bits
(nibble alto) inalterados, para no interferir no registrador 378h.
Observe o esquema de um registrador de controle SPP 0x37A Sada:

Quando se trabalha com o endereo do registrador 37Ah, preciso ter sempre em


mente que, para ativar os sinais Slct In, AutoFeed e Strob, necessrio colocar os bits
em 0 (zero), porque eles trabalham de forma invertida.
0 (zero) ativa; 1 (um) desativa. Somente o Init trabalha na sua forma normal.
Os bits do byte de CONTROLE tambm so conhecidos como C3 (Slct In), C2 (Init),
C1 (Auto Feed) e C0 (Strob). A letra C significa registrador de CONTROLE, e o nmero
significa a posio do bit no byte. Observe, no esquema, a correspondncia entre o bit
3 e o C3, bit 2 com C2 e assim por diante.
importante observar que quando a identificao de um bit de Controle apresentar um
trao acima dela, o sinal ser ativo com 0 (zero).
Exemplo

C3 (Slct In), C1(Auto Feed) e C0 (Strob).

SENAI-SP INTRANET
CT080-09

191

Linguagens de programao

Exemplo para acionamento da porta paralela em Turbo C

Para entender como acionada a porta paralela em Turbo C, apresenta-se a seguir


um modelo bsico de circuito a partir do qual se far a programao para
funcionamento.
O modelo apresentado difere do que ser apresentado em aula porque neste caso, o
que se pretende explicar conceitos bsicos de funcionamento do circuito e de
programao para acionar a porta paralela em Turbo C.
Observe a estrutura bsica de um circuito a partir da qual se far a programao que
vista em seguida.

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 ();
}

Exemplo de acionamento da porta paralela em Builder

Para entender como acionada a porta paralela em Builder apresenta-se a seguir um


modelo bsico de aplicativo a partir do qual se far a programao para
funcionamento.

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

R9 R10 R11 R12


330R 330R 330R 330R

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

Avaliado pelo Comit Tcnico de


Eletroeletrnica/2007.

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

Relao dos sinais TTL e RS232C


TTL

RS232C

Tenso

Lgico

Tenso

Lgico

0V

+12V

ON

5V

-12V

OFF

Endereos
Porta

Endereo

COM1

3F8h

COM2

2F8h

COM3

3E8h

COM4

2E8h

Pinos da porta serial


Para se ter acesso a informaes nos micro computadores por intermdio de
dispositivos computacionais, postos em comunicao entre si, usa-se um conector do
tipo DB de 9 ou 25 pinos.

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

RTS Request to send

sada

CTS Clear to send

entrada

DSR Data send ready

entrada

GND - Ground

terra

CD Carrier detect

entrada

20

DTR Data terminal ready

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

Exemplo de como acionar a porta RS232C


No exemplo a seguir, apresenta-se o modo de criar uma aplicao que transmita
caracteres pela interface RS232C.
Inicia-se com a criao de uma biblioteca para o acesso aos registradores, como
mostrado logo a seguir. Para isso utilizam-se as opes Header File em New Itens e
salva-se com o nome ioport. h no mesmo diretrio em que ser salvo nosso aplicativo.
//Biblioteca
void Outport(unsigned int Address, unsigned int Data)
{
_DX=Address;
_AL=Data;
_emit_(0xEE)
}
//
unsigned int Inport (unsigned int Address)
{
_DX=Address;
_emit_(0XEC);
return (_AL);
}

A partir de agora pode-se implementar o aplicativo.


A interface deve ter o seguinte aspecto final:

SENAI-SP INTRANET
CT080-09

199

Linguagens de programao

A configurao dos objetos fica como mostra o seguinte quadro:


Objeto

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

//Declaracao das variaveis locais


AnsiString Texto;
char letra;
unsigned int i;
//Verifica se a tecla ESC foi pressionada
if (Key==0x1B) EdtSerial->Text=;
else
{
//Verifca se a tecla ENTER foi pressionada
if (Key==0x0D)
{
Texto=EdtSerial->Text.c_str();;
//Envia todos os caracteres digitados
for (i=1;i<=(strlen(Texto.c_str()));i++)
{
letra=Texto[i];
Outport (Porta, letra);
Sleep(10);
}
//envia o caracter de retorn do carro
Outport (Porta, \r);
}
}
}
//void__fastcall Tfrmserial::BBtnLimparClick(TObject *Sender)
{
//Limpa caixa de recepcao
REdtSerial-> Text=;
}
//void__fastcall TFrmSerial::RBtnCom1Click(TObject *Sender)
{
//Define o endereco da Porta de Comunicacao
Porta=0x3F8;
//Porta COM1
Programa_Porta();
}
//
void__fastcall TFrmSerial::RBtnCom2Click (TObject *Sender)
{
//Define o endereco da Porta de Comunicacao
Porta=0x2F8;
//Porta COM2
Programa_Porta();
}
//
void_fastcall TSparky Thread::Execute()
{
//Declarao de variaveis locais
unsigned int ModStatus;
unsigned int ByteLido;
while(1)
{
//Faz a leitura do registrador Status do Modem
ModStatus=Inport (Porta+5);
ModStatus=ModStatus&0x01;
//Verifica se exixte dado no buffer para ser lido
if (ModStatus==1)
{
//Le o Byte da porta
ByteLido=Import(Porta);
Frmserial->REdtSerial ->Text= FrmSerial ->REdtSerial->Text
+ByteLido;
}
}
}
//-

202

SENAI-SP INTRANET
CT080-09

Linguagens de programao

void__fastcall TFrmSerial::FormClose(TObject *Sender,


TcloseAction &Action)
{
//Fecha o Thread
SparkyThread->Terminate();
}
//
void__fastcall TFrmSerial::FormActivate(TObject *Sender)
{
BtnAbrir->setFocus();
}
//void__fastcall TFrmSerial::BtnAbrirClick(TObject *Sender)
{
if(BtnAbrir->Caption==Abrir)
{
//SparkyThread->Resume();
BtnAbrir->Caption==Fechar;
EdtSerial->Enabled=true;
}
else if (BtnAbrir->Caption==Fechar)
{
//SparkyThread->Suspend();
BtnAbrir->Caption==Abrir;
EdtSerial->Enabled=false;
}
}
//-

SENAI-SP INTRANET
CT080-09

203

Linguagens de programao

Crditos
Elaborador:
Ilustrador:

204

Comit Tcnico de Eletroeletrnica/2007


Sergio Luiz Volpiano
Jos Luciano de Souza Filho
Priscila Ferri

Antonio Marcos Costa


Etelmir Arraez Lopes Junior
Jair Pereira da Silva
Julio Csar Caetano
Marcos Antonio Felizola
Marcos Zucareli Reno
Mario Yagami Filho
Nilton Serigioli
Srgio Luiz Volpiano
SENAI-SP INTRANET
CT080-09

Linguagens de programao

Anexo

Arquivos usados e produzidos pelo sistema


Extenso
BMP, ICO, WMF,

Tipo

Descrio

Arquivos grficos

Arquivos de imagens nos formatos bitmap e cone

DFM

Arquivo de formulrio
grfico

Arquivo binrio, contendo as propriedades e


componentes de um formulrio.

~DF

Backup de DFM

Backup de um arquivo DFM.

BPR

Arquivo de Projeto

Contm os componentes de um projeto e permite


uso de cdigo de inicializao do mesmo.

~CP

Backup de Projeto

Backup de um arquivo DPR.

EXE

Arquivo executvel link


editado

Arquivo executvel, contendo as unidades, recursos


e formulrios compilados de um projeto.

CPP

Cdigo fonte de uma


unidade

Arquivo contendo o cdigo fonte de uma Unit uma


unidade em C++, o qual pode ser de um formulrio
ou arquivo fonte independente. Sendo de um
formulrio , contm a sua definio de classe e o
cdigo dos seus manipuladores de eventos.

~CP

Backup de um CPP

Backup de um arquivo CPP.

RES

Arquivo de recursos
compilado

Arquivo binrio associado ao projeto contendo


recursos compilados; por padro, contm o cone
do projeto.

Arquivos de cabealho

Este arquivo super importante, e essencial, pois


usado constantemente nas aplicaes. Ele contm
informaes sobre cada arquivo CPP e pode
tambm conter funes, procedimentos etc.

JPG, JPEG, EMF

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

8 bits com sinal

Unsigned Char

0 a 255

8 bits sem sinal

Signed char

-127 a 127

8 bits com sinal

Int

-32.767 a 32.767

16 bits com sinal

Unsigned int

0..65535

16 bits sem sinal

Signed int

-32.767 a 32.767

16 bits com sinal

Short int

-32.767 a 32.767

16 bits com sinal

Unsigned short int

0.65535

16 bits sem sinal

Signed short int

0.65535

16 bits sem sinal

Long int

-2.147.483.647 a 147.483.647

32 bits com sinal

Signed long int

-2.147.483.647 a 147.483.647

32 bits com sinal

Unsigned long int

0 a 4.294.967.295

32 bits com sinal

Float

Seis dgitos de preciso

32

Double

Dez dgitos de preciso

64

Long double

Dez dgitos de preciso

80

Os mtodos comuns so descritos na tabela abaixo:


Mtodo

Descrio

Create

Cria um novo objeto de uma classe.

Free

Destri um objeto e libera a memria ocupada por ele.

Show

Torna o componente visvel.

Hide

Torna o componente invisvel.

SetFocus

Coloca o foco no componente.

Focused

Determina se o componente tem o foco.

BringToFront

Coloca o componente na frente dos outros.

SendToBack

Coloca o componente atrs dos outros.

ScrollBy

Move o componente.

ScaleBy

Gradua o componente em determinada escala.

SetBounds

Muda a posio e o tamanho do componente.

206

SENAI-SP INTRANET
CT080-09

Linguagens de programao

Funes
Aqui sero mostradas apenas algumas.
Funo (Function)

Descrio

Abs

Retornar um valor absoluto, que na matemtica um nmero


positivo.
Ex: ABS(3) = 3.

AnsiCompareFileName

Faz comparao de nomes de arquivos.

AnsiCompareStr

Faz comparao de Strings. sensitvel, ou seja, maisculas e


minsculas so diferentes.

AnsiCompareText

Idem, s que no sensitvel.

AnsiExtractQuoteStr

Tira as aspas simples de uma String.

AnsiLowerCase

Faz a converso de uma String maiscula para minscula.

AnsiLowerCaseFileName

Faz a converso do nome de arquivo para minscula.

AnsiPos

Retorna a posio de uma SubString em uma String.


Ex: AnsiPos (a, Casa)=2.

AnsiStrLower

Faz a converso de uma String para minscula.

AnsiStrPos

Localiza uma SubString em uma String.

AnsiStrUpper

Faz a converso de uma String para maiscula.

Bof

Incio de um arquivo.

Ceil

Arredonda um no para cima.

Char

Retorna o caracter ASCII de um valor.

CompareStr

Compara Strings (sensitivo).

CompareText

Compara Strings (no sensitivo).

Copy

Copia uma SubString de uma String.

CreateDir

Cria um novo diretrio.

CurrToStr

Converte valor em moeda (currency) para String.

Date

Retorna a data atual.

DateTimeToFileDate

Faz a converso de uma data e hora para o padro DOS.

DateTimeToStr

Faz a converso de uma data e hora para String.

DateToStr

Faz a converso de uma data para String.

DayOfweek

Retorna o dia da semana.

DeleteFile

Apaga um arquivo do disco.

DiskFree

Retorna o espao vazio no disco.

DirectoryExists

Retorna, se o diretrio existe.

DiskSize

Retorna o tamanho do disco.

Eof

Fim do arquivo.

ExtractFileDir

Retorna o nome do arquivo.

ExtractFileDrive

Retorna o drive de localizao do arquivo.

ExtractExt

Retorna a extenso do arquivo.


SENAI-SP INTRANET
CT080-09

207

Linguagens de programao

ExtractFileName

Retorna a extenso e o nome do arquivo.

ExtractFilePath

Retorna o caminho e o disco de localizao do arquivo.

FileCreate

Cria um novo arquivo.

FileDateToDateTime

Converte uma data do DOS para o formato TdataTime.

FileExists

Verifica se o arquivo que foi especificado existe.

FileOpen

Abre um arquivo.

FileRead

L um arquivo.

FileSearch

Procura por um arquivo.

FileSetAttr

Indica os atributos de um arquivo.

FileSetDate

Data do arquivo.

FileSize

Retorna o tamanho do arquivo.

FileWrite

Grava um arquivo.

FindFisrt

Procura por um arquivo.

FindNext

Continua a procurar arquivos.

FloatToDecimal

Converte um no tipo float para decimal.

FloatToStr

Converte um no tipo float para String.

FloatToStrF

Converte um no tipo float para String formatada.

FloatToText

Converte um no tipo float para String.

FloatToTextFmt

Converte um no tipo float para String formatada.

Floor

Arredonda um no para baixo.

Format

Formata uma String.

FormatCurr

Formata valores em moeda (currency).

FormatDateTime

Formata data e hora.

FormatFloat

Formata um valor tipo float.

FormatMaskText

Formata uma String usando o Edit Mask.

GetCurrentDir

Retorna o nome do diretrio atual.

GetDir

Retorna o nome de um diretrio.

InputBox

L uma String na tela.

InputQuery

L uma String de consulta.

IntTostr

Converte uma String em inteiro, s que a String tem que ser


nmero.

IsLeapYar

Retorna se o ano bissexto.

LowerCase

Retorna uma String em minsculo.

MessageDlg

Mostra uma caixa de mensagem e permite escolha de resposta.

MessageDlgPos

Determina a posio da caixa de mensagem na tela.

NewMenu

Um novo menu (main menu).

NewPopMenu

Um novo menu Popup.

Now

Retorna a data e hora atual.

Odd

Verifica se o nmero mpar.

Pos

Retorna a posio de uma SubString em uma String.

208

SENAI-SP INTRANET
CT080-09

Linguagens de programao

Random

Gera um nmero randnico.

RemoveDir

Elimina um diretrio vazio.

RenameFile

Muda o nome de um arquivo.

SelectDirectory

Mostra uma caixa de dilogo para seleo de um diretrio.

SetCurrentDir

Muda de diretrio.

Str

Faz a converso de um nmero (inteiro) em String.

StrComp

Compara duas Strings.

strCopy

Copia um SubString em uma String.

STRLCopy

Copia um SubString em uma String.

StrLen

Retorna o tamanho da String.

StrLower

Retorna String em minscula.

StrMovie

Copia bytes de uma String para outra.

StrToCurr

Faz a converso de String para Currency.

StrToDate

Faz a converso de String para Data.

StrToDateTime

Faz a converso de String para Data e Hora.

StrToFloat

Faz a converso de String para Float.

StrToInt

Faz a converso de String para Inteiro.

StrToInDef

Faz a converso de String para Inteiro, de modo default.

StrToTime

Faz a converso String para Hora.

StrUpper

Faz a converso de String para maiscula.

Sum

Soma os elementos de um array.

AppendStr

Acrescenta uma String no fim de outra.

AssingFile

D o nome para um texto na memria na hora de salvar.

Append

Adiciona uma linha de texto a um arquivo j existente.

Beep

Executa um beep (sonoro).

Break

Interrompe a execuo de um lao (For, While e o Repeat).

ChDir

Troca de diretrio.

Delete

Apaga uma SubString em uma String.

FmtStr

Formata uma String.

FileClose

Fecha um arquivo.

Exit

Sai de uma procedure.

Insert

Insere uma SubString em uma String.

New

Cria uma varivel dinamicamente.

Read

L dados em um arquivo.

Randomize

Prepara a CPU para gerar nmeros aleatrios.

Rename

Troca o nome de um arquivo.

Resset

Abre um arquivo existente.

Rewrite

Cria e abre um arquivo novo.

ShowException

Exibe uma mensagem de erro, personalizada pelo programador.

ShowMessage

Mostra uma mensagem simples.

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).

No - identifica se a mensagem ser de modo Modal (o usurio tem que responder


para acessar a janela) e os tipos de botes e cones que sero usadas na
mensagem;

Mensagem - o texto da mensagem propriamente dito;

Ttulo - o ttulo da mensagem.

Uma mensagem com botes Sim, No, Cancelar dever ser assim:
MessageBox ( 0, Voc quer realmente sair? , Teste , 3+32+8192 ).

Segue a tabela de parmetros da funo MessageBox:


No

Pode ser usado no


o
lugar do n

Mostra

Mostra o boto OK.

mb_OK ou nada

OK e Cancela

mb_OKCancel

Anular, Repetir e Ignorar

mb_AbortRetryIgnore

Sim, No e Cancelar

mb_YesNoCancel

Sim e No

mb_YesNo

Repetir e Cancel

mb_RetryCancel

16

cone de parada crtica

mb_IconStop

32

cone de interrogao (?)

mb_IconQuestion

48

cone de exclamao (!)

mb_IconExclamation

64

cone de informao (i)

mb_IconInformation

0
256

mb_DefButton1

mb_DefButton2

1 boto com foco


2 boto com foco

512

3 boto com foco

mb_DefButton3

O usurio tem que responder mensagem

mb_ApplModal

4096
8192

A mensagem no ser moda, o

mb_SystemModal

usurio ter acesso janela


Idem ao zero, s que o parmetro do no tem que ser zero

Verificar qual o boto foi pressionado na resposta.

210

SENAI-SP INTRANET
CT080-09

mb_TaskModal

Linguagens de programao

Para isso, a funo usa nmeros inteiros, que so retornados. A seqncia :


1. Boto Ok pressionado;
2. Boto Cancelar pressionado;
3. Boto Anular pressionado;
4. Boto Repetir pressionado;
5.

Boto Ignorar pressionado;

6.

Boto Sim pressionado;

7.

Boto No pressionado.

1.
2.

MessageBox ( 0, Voce entrou em area restrital!!, Informacao, 0+48+8192);


MessageBox ( 0 , Deseja realmente sair? , Questionamento, 4+32+8192).

Como saber qual boto foi pressionado?


A funo retorna valores para cada boto, indicando que ele foi pressionado. Veja a
instruo dada anteriormente. Vamos ver a resposta do exemplo em andamento. Se o
usurio pressionar o boto Sim ser retornado o valor 6, se for No ser retornado
o valor 7. Vejamos:
If ( MessageBox (0, Deseja realmente sair?, Questionamento, 4+32+8192) =6) {
// se for pressionado, p resultado for 6 , entao
ShowMessage ( Foi pressionado o botao < Sim>!) ;
{
else
// se for pressionado, o resultado for 7 , entao
ShowMessage ( Foi pressionado o botao <No>!) ;

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

Ela deve ser usada nesta ordem: MessageDlg

(mensagem, cone, boto, ajuda):

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);

Passando o valor para outra mensagem:


AnsiString a;
a=InputBox (tese de InputBox, entre com uma palavra ,casa);
ShowMessage (Voce digitou a palavra +a);

212

SENAI-SP INTRANET
CT080-09

Linguagens de programao

Referncias

SENAI-SP. Tcnico em mecatrnica - Linguagens de programao 1. Por Antnio


Carlos de Loureno e Marcos Jos Sanvidotti. So Paulo, 2000.
SENAI-SP. Tcnico em mecatrnica - Linguagens de programao 2. Por Marcos
Jos Sanvidotti. So Paulo, 2000.
HOLZNER, Steven, Makron Books Editora. C++Black Book.
ALVES, William Pereira. C++Builder 6. rica Editora.
DEITEL, H. M.; DEITEL,P. J. C++ Como programar. 3. ed. Bookman Editora.
ZELENOVSKY, Ricardo; MENDONA, Alexandre. Hardware e interfaceamento.
3. ed. MZ Editora.

SENAI-SP INTRANET
CT080-09

213

Linguagens de programao

214

SENAI-SP INTRANET
CT080-09