214
Mecatrônica Linguagens de programação

Linguagens de Programacao

Embed Size (px)

Citation preview

Page 1: Linguagens de Programacao

MecatrônicaLinguagens de programação

Page 2: Linguagens de Programacao
Page 3: Linguagens de Programacao

Linguagens de programação

© SENAI-SP, 2009

3a edição.

Avaliação dos capítulos assinalados no cabeçalho da primeira página do capítulo por Comitê Técnico. O crédito aos avaliadores encontra-se na última página do capítulo.

Coordenação editorial Gilvan Lima da Silva

2a Edição, 2003. Organizada, atualizada e editorada por Meios Educacionais da Gerência de Educação e CFPs 1.01, 1.09, 1.23, 3.01, 4.02, 5.01 e 6.01 da Diretoria Técnica do SENAI-SP, 2006.

Coordenação Airton Almeida de Moraes (GED) Organização Paulo José Rodolpho (CFP 6.01)

Ricardo Jardim (CFP 6.01) Validação Marcel Adriano Pereira Porto (CFP1.01)

Ricardo Jardim (CFP 6.01)

1a Edição, 2000. Trabalho elaborado pela Faculdade SENAI de Tecnologia Mecatrônica do Departamento Regional do SENAI-SP.

Coordenação Airton Almeida de Moraes Elaboração Antônio Carlos de Lourenço

Adaptação de conteúdos Marcos José Sanvidotti Revisão de texto Armando Olivetti Ferreira

Page 4: Linguagens de Programacao

SENAI Serviço Nacional de Aprendizagem Industrial Departamento Regional de São Paulo Av. Paulista, 1313 - Cerqueira César São Paulo – SP CEP 01311-923

Telefone Telefax

SENAI on-line

(0XX11) 3146-7000 (0XX11) 3146-7230 0800-55-1000

E-mailHome page

[email protected] http://www.sp.senai.br

Page 5: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

Sumário

Introdução à linguagem de programação 9Fundamentos da linguagem de computador 10Sistema binário 11Os dígitos binários 12

Hardware 15Memória secundária 17

Sistema operacional 21MS-DOS 21Ambiente gráfico (Windows) 22Formatando disquetes 28

Editores 31Turbo C 31Seu primeiro programa 34

Lógica de programação 39Algoritmo 39Diagrama de bloco (Fluxograma) 42

Estrutura de programas 45Linguagem C 45O padrão ANSI 46A evolução da linguagem C 46Sintaxes das funções 50Os primeiros passos 52

Dados e variáveis 57Tipos de dados 57Conceito de variável 59Variáveis 59

Operadores aritméticos 63Operadores aritméticos 63Manipuladores de formatação de impressão 65Manipuladores de base numérica 65

Comandos de controle de fluxo 69

Page 6: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

Comandos de estruturas 77Comandos de loop (repetição) 77Comandos break e continue 80

Funções 83Criando suas próprias funções 83Abrindo parênteses (revisão) 84

Matrizes e ponteiros 89Matrizes 89Estruturas de dados 94Ponteiros 96

C++ Builder 99Linguagens de programação do computador 99Linguagem C++builder 101File menu – menu de arquivos 104Edit menu 105Search menu 106View menu 107Project menu 108Run menu 109Component menu 110Database menu 110Tools menu 111Window menu 111Help menu 112

Menu de arquivos 117Edit menu 118Search menu 119View menu 120Project menu 121Run menu 122Component menu 123Database Menu 123Tools menu 124Window menu 124Help menu 125

Eventos 129Processadores de eventos mais comuns 129

Aplicativos 133

Page 7: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

Paleta de componentes 134Página Standard 134Página adicional 136Página Win32 138Página System 140Página Data Access 141Página Data Controls 141Página BDE 143Página Internet 144Página QReport 146Página Dialogs 148Página WIN 3.1 150Página Samples 151Página ActiveX 153Janela de códigos 154

Criação de aplicativo 157Criação de aplicativo 157Código-fonte 162Contador 165

Disposição de imagens em formulários 169Editor de textos 173

Etapas de operação 174Banco de dados 181

Formulário para acesso ao banco de dados 183Interface do formulário 185

Porta paralela 187Registrador de dados SPP 0x378 – Saída 189Registrador de status SPP 0x379 – Entrada 190Registrador de controle SPP 037A – Saída 191

Porta serial 197Pinos da porta serial 198

Anexo 205Código fonte 206Funções 207Mensagens 210

Referências 213

Page 8: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

Page 9: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

9

Introdução à linguagem de programação

A evolução dos microcomputadores causou enorme impacto no mundo. Estudantes, diretores de empresas, cientistas, todos hoje, de alguma forma fazem uso dessas máquinas.

A Intel quando fabricou o primeiro chip em 1971, não tinha noção de que essa evolução seria tão rápida e tão marcante. Na verdade, o mercado de microprocessadores e microcomputadores surpreendeu o mundo, provocando acontecimentos e fatos marcantes ao longo dos anos.

A disposição do ser humano em fazer contas vem evoluindo desde a pré-história. Quando o homem deixou seus hábitos nômades e passou a viver em aldeias e tribos fixas, desenvolveu a lavoura e os rebanhos. Para isso, teve necessidade de criar um método 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 cálculo de que o homem teve necessidade para suas atividades foram se complicando e aumentando.

Tem-se notícia de diferentes instrumentos de calcular desenvolvidos ao longo da história da Humanidade. O ábaco, por exemplo, um instrumento básico para calcular, foi criado há cerca de 2.500 anos.

Cientistas, filósofos e matemáticos, em diferentes épocas, colaboraram para essa evolução como: William Oughtred Napier que desenvolveu a régua de cálculos; Blaise Pascal que aos dezoito anos desenvolveu uma máquina de calcular para

auxiliar no seu trabalho; O matemático e engenheiro inglês Charles Babbage que projetou, entre 1802 e

1822, uma máquina diferencial tornando-se, para muitos, o pai dos computadores modernos.

Page 10: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

10

Depois da 2a Guerra Mundial, na Universidade da Pennsylvania, nos Estados Unidos, foi criado o computador ENIAC que fazia muitos tipos de cálculos. Tratava-se de um computador enorme, do tamanho de uma sala, que tinha mais de 800.000 peças.

A evolução caminhou a passos largos. Passou pela invenção do transistor nos Laboratórios da Bell em 1948, pelo primeiro PC em 1981 até que chegou aos dias de hoje em que os computadores são muito rápidos e pequenos.

Fundamentos da linguagem de computador

Nossa percepção do mundo baseia-se, dentre outras coisas, em analogia: comparamos coisas pelos nossos sentidos e identificamos pontos de semelhança entre coisas diferentes.

Por exemplo, fazemos distinção 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 relação entre os dois termos usados. Há correspondência entre os dois conceitos. O conceito de um termo não existe sem o conceito do outro, e vice-versa.

Desse modo, não existe cor escura, sem existir a clara. Nem som mais alto, sem o mais baixo. E assim por diante. A grandeza física é fornecida explicitamente pela medida de uma segunda grandeza que tem com a primeira uma relação biunívoca.

Relação biunívoca é a relação, ou a correspondência, entre dois objetos em que cada elemento do primeiro corresponde a apenas um elemento do segundo, e vice-versa.

As informações que obtemos do meio ambiente em que nos situamos por meio de relações biunívocas chamam-se informações analógicas.

As informações analógicas podem ser fornecidas por instrumentos ao observador. O espectrômetro, por exemplo, mede comprimentos de onda de cor. O audiômetro mede o poder de audição e o fotômetro mede a quantidade de luz de um ambiente.

Page 11: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

11

Sistema binário

Em um circuito eletrônico é inviável utilizar informações analógicas pois não é possível estabelecer relações de correspondência da informação que um dispositivo manda para outro.

Os modernos sistemas de informação derivam da eficácia em representar a informação eletronicamente, como sinais digitais e de manipulá-la a níveis de alta velocidade.

A informação é armazenada em esquemas binários que são os componentes básicos da tecnologia digital. É chamado binário porque só tem duas unidades que correspondem a dois estados: presença ou ausência de energia que é o pulso elétrico.

Como nesse esquema há somente em dois estados, a informação é representada neles como a ausência ou como a presença de energia - pulso elétrico. Os dois estados do esquema binário são designados dígitos binários, ou bits: 0 e 1.

Desse modo, os símbolos alfabéticos de linguagem verbal podem ser representados digitalmente como combinações de 0 (sem pulso) e 1 (pulso). A partir dessas combinações são montadas tabelas de equivalência.

As tabelas de equivalência são compostas de: Caracteres alfanuméricos - codificação em que se combinam letras do alfabeto e

algarismos; Uma série de dígitos binários.

Essas tabelas são chamadas sistemas de códigos.

A combinação de três dígitos binários pode representar até 8 caracteres de linguagem verbal.

A combinação de quatro dígitos binários pode representar até 16 caracteres de linguagem verbal. E assim segue.

A escolha de um código 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 padrões americanos, o teclado convencional que

Page 12: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

12

contém alfabeto, numerais e certa quantidade de caracteres especiais é baseado em um código de representação de sete ou oito bits.

A representação digital de um caractere por oito dígitos é chamada de byte.

Muitos tipos de linguagem de programação foram desenvolvidos ao longo dos anos. Inicialmente os programadores tinham que escrever instruções na linguagem da máquina - tudo em combinações matemáticas.

Os sistemas de códigos, de que falamos anteriormente, que podem ser entendidos e executados diretamente pelo computador sem conversão ou tradução consiste de dígitos binários representando códigos de operação e endereços de memória.

Como eles são compostos de 1 e 0, a linguagem da máquina é difícil para seres humanos usarem. Houve necessidade de os programadores expressarem suas instruções em símbolos alfabéticos - como ADD para adicionar ou SUB para subtrair - ao invés de números.

Como uma linguagem mista com código fácil de reter na memória humana era mais fácil de usar que a linguagem da máquina, era desejável desenvolver linguagens de programação que fossem mais relacionadas à comunicação humana.

Desse modo então surgiram as diferentes linguagens hoje conhecidas.

Os dígitos binários

Matematicamente estamos acostumados a representar os números em função da potência de sua base, uma base muito utilizada é a decimal.

Para um número 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.

Page 13: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

13

Entendendo a formação dos números em base decimal, fica fácil entender os números na base binária. Cada casa binária terá um peso individual, sempre relativo à potência 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 binárias recebem nomes especiais conforme a quantidade de bits utilizada pelas mesmas, representando uma variação de números bem definida: Nible: 4 bits (24 = 16 combinações); Byte: 8 bits (28 = 256 variações); Word: 16 bits (216 = 65.536 variações); Double Word: 64 bits (232 = 4.294.967.296 variações).

Em decimal, a abreviação quilo representa 1.000 vezes a unidade, por exemplo 1kg é igual a 1.000 gramas, já em binário 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

Page 14: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

14

Page 15: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

15

Hardware

Hardware é um componente, ou conjunto de componentes físicos de um computador. Computador é a máquina capaz de receber, armazenar e enviar dados, e de efetuar, sobre estes, seqüências previamente programadas de operações:

Aritméticas como cálculos, eLógicas como comparações, com o objetivo de resolver problemas.

O computador pode também ser definido como um sistema para gerenciar e tratar dados.

Dados são fornecidos à máquina, para serem processados. Processar significa manipular dados, seguindo seqüência de instruções codificada num programa, de acordo com a intenção do usuário do computador, para solução de seus problemas.

A partir daí, com análise e combinação dos resultados, estrutura-se conhecimento amplo e bem fundamentado. Os dados são, então, transformados em informações. Passam a fazer parte do conhecimento, ou da informação.

Conhecimento significa apropriação de um tema ou assunto pelo pensamento, podendo manifestar-se como conceituação, percepção clara, apreensão completa, análise, etc.

Já informação é uma mensagem ou enunciado em que se reduz a medida da incerteza sobre alguma coisa.

Portanto, o computador trata e gerencia dados que fornecem sustentação ao surgimento de informação e conhecimento.

Page 16: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

16

Para que o computador execute tratamento e gerenciamento de dados para sustentar conhecimento e informação, ele dispõe basicamente de 5 unidades de operação:

Dispositivos de entrada: responsáveis pela entrada de dados; Dispositivos de saída: responsáveis pela saída de dados; UCP - sigla de unidade central de processamento: responsável pelo processamento dos dados; Memória primária: armazenamento de dados e programas que estão sendo processados e executados, respectivamente, pela UCP; Memória secundária: responsável pelo armazenamento de dados e programas que não estão sendo utilizados no momento.

Observe o esquema demonstrativo da interação dessas cinco unidades operacionais:

UCP ou CPU (Central Processing Unit) são circuitos integrados que podem ser programados para executar tarefas predefinidas, têm como finalidade receber dados, processá-los e devolver o resultado.

Os processadores são programados por instruções. Um grupo delas forma um programa ou software. Em sistemas dedicados, como microprocessadores, forno de microondas, injeção eletrônica de carros, DVDs e outros aparelhos eletrônicos, o programa utilizado é sempre o mesmo.

Os processadores não têm capacidade de armazenamento muito grande. Isso significa que são adequados apenas aos dedicados. Em relação a outros programas mais extensos, o armazenamento não é feito no processador e sim na memória, que tem a função de introduzir dados em dispositivo físico com o objetivo de posterior recuperação.

Page 17: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

17

Existem dois tipos de memória: RAM (Random Access Memory) e ROM (Read Only Memory).

A RAM permite que os dados que estão presentes nela sejam modificados enquanto a ROM não. A RAM é volátil. Se cortarmos sua alimentação elétrica os dados que estão armazenados nela são perdidos. Já a ROM, não. Por isso, em sistemas dedicados utiliza-se memória ROM.

Muitas vezes, mesmo a memória RAM pode ser pequena para armazenar o programa de que necessitamos para processar dados. Além disso, é volátil, e por isso está sempre vazia quando ligamos o computador.

Por todos esses problemas os dados e programas são armazenados em um sistema chamado de memória secundária ou memória de massa, como discos rígidos, disquetes, CDs-ROM, onde os dados não são apagados quando desligamos o microcomputador.

Mas esses sistemas, por serem de acesso mecânico, têm velocidade muito inferior à do processador. Por isso, quando você quiser rodar um programa, ele é sempre carregado do disco rígido para a memória RAM onde o processador vai buscar os dados para serem processados.

Como o processador também é mais rápido que a memória RAM - memória dinâmica, a solução mais plausível para combinar as coisas, foi a utilização de uma pequena quantidade de memória RAM de alto desempenho que se chama memória cache - memória estática. Ela atua como intermediária na leitura e escrita de dados na memória RAM. Com isso, o micro melhora seu desempenho, pois o processador pode trocar dados com essa memória em sua velocidade máxima.

Memória secundária

Existem dois dispositivos de armazenamento de massa que são utilizados em computador: o disco rígido (HD) e o disquete (floppy disk). Temos ainda outros dispositivos de armazenamento como: unidades de fita magnética, CD-ROM, Zip Disk e outros.

Page 18: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

18

Disquete - floppy disk O disquete é um disco de material plástico revestido por uma camada de óxido de ferro que lhe garante receptividade de campo magnético, tal qual uma fita cassete. Esse disco é colocado e fechado dentro de uma proteção chamada jaqueta.

Existem dois tipos de disquete: os de 8 polegadas (5 ¼) que já estão em desuso, com capacidade de 360 kbytes e 1,2 Mbytes; e os de 3 ½ que são mais utilizados, pois são menores e possuem uma maior capacidade de armazenamento (de 720 kbytes e 1,44 Mbytes).

Melhor uniformidade de fabricação e maior capacidade são conseguidas com material de revestimento diferente como o dióxido de cromo. Os discos de 3½ polegadas são protegidos contra poeira com uma tampa que se abre quando inserido no acionador.

Observe o aspecto externo de um disquete de 3 ½:

Para organização dos dados em um disco, durante a formatação, são gravados no disco trilhas e setores, cujas posições dependem do tipo de formatação própria de cada computador.

No caso do padrão 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 próximo ao furo de fixação 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.

Page 19: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

19

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

Cada lado do disco pode ser identificado como head ou cabeça. Temos, portanto no disquete, head 0 e head 1. Na head 1 é que estão gravados os dados.

Durante a leitura do disquete pelo computador acontece o seguinte: uma vez identificada a formatação, é consultado o diretório. O diretório é o conjunto de dados que informa a lógica de controle, arquivos gravados no disco, bem como trilhas e setores em que se localizam. Determinado o local, a cabeça de leitura é movimentada sobre a trilha correspondente e o dado gravado e lido.

Hard disk - disco rígido A forma de operação do disco rígido é parecida com a dos disquetes.

Os discos são formados por uma base de alumínio sobre a qual encontra-se uma camada magnética. Sua grande diferença em relação ao disquete está na quantidade de dados que pode armazenar.

Por ter alta capacidade, os dados ficam extremamente concentrados. Para isso, as trilhas são finas e próximas umas das outras. Devido a essas características, seu mecanismo é de alta precisão e tem que ser operado em um ambiente isento de qualquer partícula de pó.

Durante alguns anos chegou-se a chamar o disco rígido de Winchester , denominação que caiu em desuso posteriormente. A relação com rifles era feita com base no fato de que a princípio, o disco rígido foi chamado de 3030 por ter dois lados, cada um deles com capacidade para armazenar 30 Mbytes.

Page 20: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

20

Como esse código lembrava diretamente o famoso rifle de repetição Winchester 3030, acabou sendo incorporado à unidade de disco. O apelido fez tanto sucesso que acabou sendo generalizado e passou a identificar a própria tecnologia com a qual a unidade foi construída.

Observe a representação esquemática do interior de um disco rígido:

A capacidade de armazenamento de um HD é relativa à quantidade de discos que ele contém. Quanto maior a área de armazenamento, ou quanto mais discos magnéticos contiver, maior será sua capacidade.

Page 21: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

21

Sistema operacional

O sistema operacional é um conjunto de programas que gerenciam todos os recursos de um computador: processadores, memórias, dispositivos de E/S, execução de programas entre outras. Podemos dizer que é ele que faz a interface entre a máquina e os outros programas.

Existem vários tipos de Sistemas Operacionais, os mais conhecidos são: MS-DOS, Windows, Unix, Linux, OS2. Aqui, veremos os comandos básicos de dois deles, o MS-DOS e o Windows.

MS-DOS

Durante muitos anos foi um dos mais utilizados nos computadores pessoais. Tem como características a execução de comandos por meio de um prompt, capacidade de executar somente um programa por vez.

Com o passar do tempo os sistemas operacionais evoluíram para sistemas de padrão gráficos que utilizam o mouse e as janelas. Nas versões 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.

Definição Sintaxe DIR Lista diretório e arquivos. DIR CD Caminha na árvore de diretório CD\<nome do diretório> MD Cria diretório. MD <nome do diretório> RD Exclui diretório vazio. RD <nome do diretório> Del Exclui arquivos. DEL <nome do arquivo>

Deltree Exclui diretórios, subdiretórios e arquivos. DELTREE <nome do diretório> 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 diretório COPY <origem> <destino>

Page 22: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

22

MOVE Move um arquivo para uma outra unidade ou diretório MOVE <origem><destino>

EXIT Fecha a janela do prompt do DOS e retorna ao ambiente gráfico EXIT

Existem uma centena de comandos que podemos utilizar no prompt, aqui estão descritos os mais utilizados. Caso tenha dúvida 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 são exibidos no padrão antigo que consiste em um nome básico de até oito caracteres, seguido de uma extensão de até três caracteres.

Essas extensões dizem respeito ao tipo de arquivo, por exemplo: EXE Arquivos executáveis; DOC Arquivos do tipo documento; XLS Arquivos do tipo planilha eletrônica (EXCEL); BAT Arquivos de lote; CPP Arquivos fonte de programação em C; ZIP Arquivos compactados.

Existem muitos outros que se pode verificar.

Ambiente gráfico (Windows)

O Windows é um dos principais sistemas operacionais da atualidade. Ele possui uma interface gráfica que facilita sua utilização. O uso das janelas faz com que o trabalho de gerenciamento fique mais agradável.

Os aplicativos desenvolvidos para Windows têm sua estrutura de utilização e de gerenciamento usando os mesmos tipos de menus, criando assim um padrão.

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.

Page 23: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

23

Meu ComputadorExibe todas as unidades de discos, recursos para configurar impressoras e outros elementos. Para acioná-lo basta clicar duas vezes com o botão esquerdo do mouse sobre seu ícone presente na área de trabalho.

Page 24: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

24

LixeiraServe como armazenamento temporário para arquivos excluídos. Nela você poderá recuperar arquivos excluídos por algum descuido. Quando não existe nenhum arquivo excluído o ícone fica parecendo uma lixeira vazia e quando existe arquivos apagados o ícone fica parecendo uma lixeira cheia, ao ser excluído 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 botão iniciar e a referência para todas as aplicações que estão em uso.

Botão iniciarÉ por ele que começamos a trabalhar com os recursos do Windows ou abrimos um aplicativo desejado. Clicamos no botão iniciar para abrir um documento, acionar um aplicativo, modificar configurações, etc.

Barra de tarefas do menu iniciarA barra de tarefas pode ser personalizada conforme o gosto do usuário através da opção Configurações - Barra de Tarefas, que fica disponível quando clicamos sobre o Botão Iniciar. Podemos modificar as opções existentes na janela Propriedades de Barra de Tarefas para personalizar a Barra de Tarefas.

Page 25: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

25

Para personalizar a Barra de Tarefas, deveremos clicar uma vez sobre a guia de opção "Opções da Barra de Tarefas". As opções podem ser ativadas ou desativadas. Para ativar ou desativar uma opção, deve-se clicar sobre o "quadradinho branco" que existe ao lado de cada opção. O nome correto deste "quadradinho branco" é Caixa de Verificação. Uma Caixa de Verificação pode estar "ligada" ou "desligada".

As opções mostradas nesta janela são as seguintes: Sempre visível: Com esta opção ativa, a sua Barra de Tarefas estará sempre visível em sua tela, não importando quantas janelas novas sejam abertas;Auto ocultar: Com esta opção ativa, a Barra de Tarefas fica reduzida a uma linha fina quando algum programa for executado;Mostrar ícones pequenos no menu Iniciar: Com esta opção ativa, diminui o espaço ocupado pelo menu que aparece quando se clica no Botão Iniciar;Mostrar relógio: Com esta opção ativa, será mostrado um relógio digital na Área de Notificação.

Assim que terminar de efetuar as modificações desejadas, clique sobre o Botão OK, disponível na parte inferior da janela para que estas modificações sejam gravadas.

Page 26: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

26

Quando trabalhamos em janelas é preciso conhecermos alguns dos principais botões que servem para controlá-las.

Botões fechar e redimensionarSempre aparecem no canto superior direito das janelas. O primeiro botão minimiza a tela, fazendo com que fique reduzida a um botão de janela. O segundo botão maximiza a janela, fazendo com que ela ocupe toda a área de trabalho. O terceiro botão serve para fechar a janela.

Barras de rolagem Pode ser horizontal ou vertical. Quando não é possível visualizar a informação disponível em uma única janela, é possível percorrê-las clicando nas setas que se encontram nas extremidades de uma barra de rolagem.

Caixas de verificação Servem para definir a utilização ou não de uma opção. Ela pode ficar ligada ou desligada.

Page 27: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

27

Botões de opção Ao pressionar um botão de opção, você sai da janela ativa e determina se os valores definidos são válidos (ex: Botão OK) ou não (Botão cancelar).

Guia de opções Quando vários grupos de informações têm que ser mostrados em uma mesma janela, normalmente são separados em guias, para facilitar o trabalho do usuário. Para ter acesso a um dos grupos disponíveis, 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 opção programas.

Através 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 disponíveis (parte da esquerda) e outra que visualiza o conteúdo de uma pasta ou recurso selecionado (parte da direita).

Os arquivos são utilizados para armazenamento de informações e trabalhos criados pelo usuário, geralmente é criado por um aplicativo. As pastas são locais utilizados para armazenarmos os arquivos.

Page 28: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

28

Na barra de ferramentas podemos executar diversos comandos bastando clicar em seus botões.

Na modificação da exibição podemos escolher entre: Lista: O conteúdo da janela é exibido em forma de lista; Lista com detalhes: O conteúdo é exibido em forma de listagem com informações detalhadas; Ícones pequenos: Exibe o conteúdo da janela em forma de ícones pequenos; Ícones grandes: Exibe o conteúdo da janela em forma de ícones grandes.

Formatando disquetes

Muitas vezes para podermos gravar dados em um disquete é necessário formatá-lo antes. Para o uso dessa ferramenta é preciso muita atenção, 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 botão direito do mouse; 4. Escolher a opção formatar; 5. Selecionar a capacidade do disquete; 6. Escolher o tipo de formatação; 7. Clicar no botão iniciar; 8. Após a formatação será exibida uma caixa de diálogo com os resultados.

Page 29: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

29

Um outro cuidado que devemos tomar, é em desligar corretamente nosso micro. Temos que escolher a opção desligar no menu iniciar e nunca desligá-lo direto no botão.

Page 30: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

30

Após selecionarmos desligar aparecerá uma caixa de diálogo onde podemos escolher se desejamos colocar o computador em modo de espera, desligá-lo , reiniciá-lo ou reiniciá-lo em modo MS-DOS.

Estas explicações nos mostra apenas algumas ferramentas para que possamos trabalhar melhor com um Sistema Operacional e para termos uma base mais sólida no uso da linguagem de programação.

Page 31: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

31

Editores

Editor é um programa para criar ou modificar arquivos.

Para programarmos em linguagem C, é necessário primeiramente um editor. O bom de trabalharmos com linguagem C é que podemos usar qualquer editor de texto para escrevermos o código fonte.

Em nosso caso, vamos tratar de dois deles: Bloco de notas que está presente em todas as distribuições do Windows e o Turbo C que além de ser um editor é também um compilador.

Turbo C

O editor e compilador Borland TURBO C++ é um ambiente de desenvolvimento de software. Você aprenderá a usar muitas das funções de desenvolvimento, incorporadas ao programa, com algumas características próprias de linguagem C++.

Page 32: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

32

A janela principal A janela principal do aplicativo Turbo C++ tem o seguinte aspecto:

O compilador compõe-se de: janelas, controles, barras de scroll (rolagem), teclas de função e muitos menus.

Na parte superior da janela estão as opções do menu principal: '' '' (Menu do sistema), ''File'' (Arquivo), ''Edit'' (Editar), ''Search'' (Procurar), “Run” (Executar), ''Compile''(Compilar), ''Debug'' (Depurar), ''Project'' (Projetar), ''Options'' (Opções), ''Windows'' (Janela) e ''Help'' (Ajuda).

Na parte inferior da janela localizam-se várias teclas de função: F1-Help (ajuda – ativada no momento), F2-Save (Armazenamento), F3-Open (Abrir), F9 (Compilar), ALT-F9-MAKE (Executar) e F10 (Menu).

Ajuda (Help) É a ferramenta para auxiliá-lo nas horas de dificuldade. A utilização 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 tópico de ajuda pedido, você

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

Page 33: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

33

o botão direito do mouse ou aperte a tecla CRTL-F1. Caso necessite voltar à janela anterior, aperte a Tecla ALT-F1.

Page 34: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

34

Seu primeiro programa

Chegamos ao ponto de apresentar-lhe as condições básicas necessárias para digitar, editar, compilar, processar, depurar, armazenar e recarregar um programa simples. Antes de iniciar seu primeiro programa, é preciso tomar algumas decisões.

Condição mínima Para que todos os arquivos criados pelo TURBO C++ possam ser salvos em um único diretório, é necessário definir as localizações de arquivos de saída (*EXE, *OBJ).

Para isso, a opção é usar ALT-O, do menu principal e em seguida, digitar D para ''Directories'' ou então clicar com o mouse o quadro designado ''Output Directory''. Outra opção é tabular até a localização.

Definida essa base de trabalho para elaboração de um programa, você poderá, caso queira, transportá-lo para qualquer computador. Trabalhando de outro modo, faltarão arquivos necessários para execução.

Não esqueça, também, de salvar o programa a ser editado no caminho especificado.

Na figura a seguir, observe como está sendo salvo um programa em que o usuário está trabalhando:

Page 35: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

35

Criação 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 opções apresentadas.

Deve aparecer uma janela de cor azul, totalmente vazia. Caso apareça outro programa nessa tela, você deve fechá-lo, clicando e repetir a operação para começar um programa novo.

Armazenamento de arquivos É muito difícil 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 segurança, salve sempre a parte do programa que for sendo editada.

Compilação 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 compilação, o no de linhas, juntamente com algumas mensagens de erros, caso haja, e avisos associados. Para retornar ao processo de edição aperte qualquer tecla, corrija os erros e então, compile novamente.

Page 36: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

36

Observe uma tela com a janela de compilação:

O utilitário Make Após 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 executável, ou seja, um programa que poderá ser levado para outros computadores sem necessidade da instalação de compilador, utilize a opção ''MAKE'', que está localizada no menu principal dentro de Compile. Esta opção criará um arquivo com extensão tipo .EXE.

Page 37: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

37

Corte e cópia Quando você estiver editando seu programa, pode haver necessidade de copiar ou colar linhas para facilitar a edição. Para isso, você pode utilizar no menu principal a opção ''Edit''. Nela estão incorporadas várias opções para esse fim. Observe:

As opções apresentadas pela opção Edit são as seguintes: Undo – desfaz uma ação; Cut – corta trechos selecionados; Copy – copia trechos selecionados; Paste – cola aquilo que está na área de transferência; Clear – limpa trecho selecionado.

ObservaçãoNeste capítulo foi exposto somente o necessário para a perfeita elaboração e execução de um programa. Para maiores detalhes de como utilizar o TURBO C++, consulte o Help do Compilador.

Page 38: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

38

Page 39: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

39

Lógica de programação

Para podermos trabalhar com a linguagem de programação C, ou qualquer outro tipo, temos antes que ter uma boa base em lógica de programação.

Lógica de programação é a técnica de encadear pensamentos para atingirmos determinados objetivos. Esses pensamentos devem ser executados em uma seqüência lógica, em que temos que determinar passo a passo todas as nossas ações. Ela define uma seqüência correta para o desenvolvimento de sistemas e programas em informática.

O conhecimento da lógica de programação é necessária para pessoas que desejam trabalhar com desenvolvimento de sistemas e programas, pois permite definir a seqüência correta para tal desenvolvimento.

Na linguagem comum, entende-se por instrução ''um conjunto de regras ou normas definidas para a realização ou emprego de algo''. Em informática, porém, instrução é a informação que indica a um computador uma ação elementar a executar. É importante ressaltar que uma ordem isolada não permite realizar o processo completo, para isso é necessário um conjunto de instruções colocadas em ordem seqüencial adequada.

Algoritmo

Algoritmo é uma seqüência finita de passos que levam a execução de uma determinada tarefa. Podemos pensar em algoritmo como uma receita, uma seqüência de instruções que resolvem um determinado problema. Esses passos não podem ser redundantes nem subjetivos na sua definição, devem ser claros e precisos.

Page 40: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

40

Podemos citar como exemplos de algoritmos os das operações básicas: adição, subtração, multiplicação, divisão. Os manuais de aparelhos eletrônicos, por exemplo, o de um forno de microondas, que explicam passo-a-passo como usar cada função, também são 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 são descritos em uma linguagem chamada pseudocódigo. Este nome é uma alusão à posterior implementação em uma linguagem de programação, isto é, quando formos programar em uma linguagem, por exemplo C, estaremos gerando código em C. Por isso, os algoritmos são independentes das linguagens de programação.

O algoritmo deve ser fácil de interpretar e fácil de codificar. Ele deve ser intermediário entre a linguagem falada e a linguagem de programação.

Regras para construção do algoritmo: Usar somente um verbo por frase; Imaginar que está desenvolvendo um algoritmo para pessoas que não trabalham

com informática; Usar frases curtas e simples; Ser objetivo; Procurar usar palavras que não tenham sentido dúbio.

Entretanto, ao montar um algoritmo, precisamos primeiro dividir o problema apresentado em três fases fundamentais:

Page 41: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

41

Entrada: são os dados de entrada do algoritmo. Processamento: são os procedimentos utilizados para chegar ao resultado final. Saída: são os dados já processados.

Imaginemos o seguinte problema: Calcular a média final de um aluno que fez quatro provas (P1, P2, P3, P4).

Onde a média é calculada pela fórmula:

44P3P2P1PM

Para podermos montar corretamente este algoritmo, temos que fazer três perguntas: 1. Quais são 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 divisão do resultado por quatro.

3. Quais serão os dados de saída? R.: Média 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 divisão.

Programas Os programas de computadores nada mais são do que algoritmos escritos em uma linguagem de computador (Pascal, C, C++, Cobol, Fortran, Visual Basic, entre outras) e que são interpretados e executados por uma máquina.

Page 42: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

42

Diagrama de bloco (Fluxograma)

O diagrama de bloco é uma forma padronizada e eficaz para representar os passos lógicos de um determinado processamento. Podemos definir uma seqüência de símbolos, com significado bem definido, mas sua principal função é a de facilitar a visualização dos passos desse processamento.

Símbolo Função

Indica início ou fim de um processamento.

Processamento em geral.

Indica entrada e saída de dados.

Mostra informações ou resultados.

Estrutura condicional.

Saída de dados no vídeo.

Conector.

Conector indicado para troca de página.

Dentro dos símbolos sempre terá algo escrito, pois, somente eles, não nos dizem nada.

Page 43: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

43

Veja: Calcular a soma de dois números:

Vejamos um exemplo mais complexo: Um triângulo é isósceles 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 é equilátero quando possui todos os lados iguais, sendo A=B e B=C.

Para isso temos que seguir os seguintes passos: 1. Ler três valores para os lados do triângulo: 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 triângulo é equilátero. Se não, verificar se A=B ou se A=C, ou se B=C, sendo verdade o triângulo é equilátero. Se não verificar se A=B ou se A=C ou se B=C, sendo verdade o triângulo é isósceles, caso contrário o triângulo é escaleno.

Page 44: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

44

Caso os lados fornecidos não caracterizem um triângulo, avisar a ocorrência.

Page 45: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

45

Estrutura de programas

Abordaremos aqui a estrutura básica de um programa em C++, a sintaxe de funções, os arquivos de biblioteca mais comuns, o ambiente integrado de desenvolvimento e o conceito de portabilidade.

Linguagem C

A linguagem de programação C nasceu na década 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 programação C é uma linguagem genérica que pode ser utilizada para criação de diversos tipos de programas, tais como: Processadores de texto; Planilhas eletrônicas; Sistemas operacionais; Programas de comunicação; Programas para a automação industrial; Programas para solução de problemas da Engenharia, entre outras possibilidades.

Por volta de 1983, um comitê foi formado para estabelecer um padrão 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 cópia foi disponibilizada no início de 1990. Esse padrão foi adotado pela ISO (International Standards Organization), e ficou referido como ANSI/ISO.

Page 46: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

46

A C é uma linguagem de programação estruturada, mas ela não permite que uma sub-rotina seja definida dentro de outra.

Um grande trunfo dessa linguagem é sua portabilidade, ou seja, é possível escrever um programa para rodar em um determinado Sistema Operacional e em uma determinada máquina, e transportar seu código fonte para outro tipo de máquina e sistema operacional sem muitas modificações.

O padrão ANSI

Sua popularidade fez com que vários compiladores de C surgissem no mercado, cada um caminhando em uma direção diferente, o que poderia estragar a linguagem. Para evitar isso, o American National Standards Institute (ANSI) formou uma subcomissão especial chamada X3J11 para elaborar uma versão padrão da C.

Esse desenvolvimento garantiu que aquela linguagem, que caminhava em várias direções 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 diferenças entre os vários tipos de computadores, como a maneira que cada um trata a memória.

Assim, os compiladores incorporaram todos os padrões do C ANSI, mas se diferenciam nas particularidades de cada computador para o qual foram desenvolvidos.

Um exemplo é a manipulação da tela gráfica, que é muito diferente entre um PC, um Macintosh ou um computador com plataforma RISC.

A evolução da linguagem C

Em informática, a evolução é rápida e natural, a linguagem C evoluiu da mesma forma. Bjarne Stroustrup desenvolveu entre 1983 e 1985 nos laboratórios Bell (AT&T) a linguagem C++ que inicialmente foi chamada de ''C com classes'', pois ela havia combinado as classes e a orientação a objetos.

Page 47: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

47

Esta popularidade se deve a um bom motivo: ao contrário de muitas outras linguagens, C oferece ao programador um grande poder sobre o computador. C permite que você realize coisas que outras linguagens não permitem.

Mas, com o poder da linguagem, veio a responsabilidade, pois pode-se fazer com C coisas que destruirão seu programa ou afetarão o funcionamento do computador. Entretanto, desta vez, os programadores encontraram uma linguagem que é uma ferramenta e não um obstáculo.

Cada vez mais aplicativos eram escritos nessa linguagem, e cada vez mais complexos ficaram os aplicativos. Percebeu-se que as construções lógicas disponíveis em C não correspondiam mais às necessidades.

Eram precisas construções 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 variáveis e funções.

Nessa época, a idéia de objeto já começava a se destacar. Já existiam linguagens que permitiam uma programação orientada a objetos.

Em essência, 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 programação orientada a objetos, introduzindo-se as classes.

Mas, não é só isto, em C++ pode-se, também, fazer o que se chama de sobrecargade funções, ou seja, pode-se fazer com que uma mesma função trabalhe de maneiras diferentes, de acordo com o número de parâmetros que ela recebe e/ou o tipo de parâmetro, além de poder sobrecarregar os operadores.

Por exemplo, pode-se fazer com que o operador & (E lógico) tenha outra função, além de realizar a operação E.

Mas, sem dúvida nenhuma, a orientação 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.

Page 48: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

48

Os computadores não são capazes de entender as instruções e comandos das linguagens utilizadas para programá-los. Eles só entendem a linguagem de máquina(0s e 1s). Portanto, para que seja possível utilizar programas em linguagens do tipo BASIC, Pascal, C, C++ etc., é necessário, depois de ter escrito os programas, chamados programas-fonte, transformá-los em linguagem de máquina.

E além disto, adaptar os programas para serem executados no hardware do computador, já que esse pode ter várias configurações.

A transformação do programa escrito nestas linguagens para o programa escrito em linguagem de máquina é chamada de compilação e é feita por um programa chamado compilador. O compilador gera um arquivo que possui os códigos das instruções do programa-fonte, escritos em linguagem de máquina. Este arquivo é chamado de arquivo-objeto.

Após a compilação, pode ser necessário 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 funções que foram utilizadas no programa-fonte. Só depois disto é que é possível gerar o arquivo executável.

Esse processo de ''agrupar'' arquivos-objeto e gerar o arquivo executável é chamado de link-edição e é feito por um programa chamado link-editor. Pode-se, então, esquematizar o processo da seguinte forma:

Page 49: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

49

Estrutura básica de um programa Diz-se que um programa em linguagem C++ é uma parede construída com vários tijolos. A parede é o programa aplicativo e os tijolos são as funções. Assim, as funções são a base da linguagem C++. Um programa simples em linguagem C++ é em 90% um conjunto de funções.

Algumas dessas funções são fornecidas pelo fabricante do compilador/link-editor e outras são escritas pelo próprio programador. As funções 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 função se confunde com o nome programa, já que um programa em C++ terá pelo menos uma função.

cabeçalho

função 1

função 2

...

função N

CabeçalhoÉ composto basicamente por: Diretivas para o pré-processador (#include, #define etc.); Declaração de variáveis globais; Protótipo das funções; Declaração de classes.

FunçõesComo dissemos, são a base dos programas. Possuem um header (cabeçalho) e um body (corpo).

cabeçalho

corpofunção

Page 50: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

50

No cabeçalho, temos a definição do tipo de função (podem ser do mesmo tipo que as variáveis), seu nome e seus parâmetros. No corpo, temos a declaração de variáveis locais e seus comandos. Pode-se também, a partir de uma função, fazer uma chamada para outra função.

Como as funções são a base, começaremos por elas.

Sintaxes das funções

As funções em C++ têm o seguinte aspecto, em termos de sintaxe: Tipo_do_valor_de_retorno nome (tipo_dos_paramteros_formais parametros_formais) {declaracao de variaveis locais ...corpo da funcao (comandos e outras funcoes); ...}

Exemplo

Float Tipo de valor de retorno

Divisao Nome da função

(float n1, float n 2) Tipo e nome dos parâmetros formais

{ Chave de abertura

Float res; Res = n1/n2; Declaração de variáveis locais

return (res); Corpo da função

} Chave de fechamento

Detalhes: O nome de uma função segue as mesmas regras práticas para os nomes das

variáveis; O que diferencia as funções das variáveis são os parênteses. Aliás, eles as

identificam; Os parâmetros formais são as variáveis receptoras dos parâmetros passados para

as funções; As variáveis declaradas dentro das funções são locais, ou seja, só são visíveis

dentro da função; O corpo da função é composto por qualquer comando da linguagem C++, por

chamadas às outras funções, por instâncias de classes etc;

Page 51: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

51

Uma função em C++ pode retornar um valor para a função que a chamou. Isto é feito através do comando return;

Se uma função não vai retornar nenhum valor dizemos que ela é vazia e deve-se declará-la como do tipo void.

De todas as características de uma função, apenas três são obrigatórias: Nome seguido de parênteses; As chaves de abertura e fechamento; E seu protótipo no cabeçalho do programa.

ObservaçãoIremos, no início, usar funções simples, que não apresentam todas as suas características.

Em alguns compiladores não é obrigatória a prototipagem das funções, porém é necessária a sua criação antes de utilizá-la.

Outro detalhe é que uma função é obrigatória em todos os programas em C++. Esta função se chama main(). Ela é o ponto inicial do programa e não precisa de protótipo.

Assim, um programa mínimo em C++ seria:

main() { }

ou void main() { }

Embora este programa não faça nada, ele é um programa válido.

Uma característica importante na sintaxe das funções é que a posição dos elementos, na maioria dos casos, não é importante, mas sim, a seqüência com que eles aparecem. Portanto, todos os programas a seguir são válidos:

main ( ) { }

main(){} main() {}

main () { }

Page 52: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

52

E os seguintes são inválidos:

()main {} main{} ()

ObservaçãoA melhor opção é aquela que garante uma boa legibilidade do programa.

Os primeiros passos

Alguns detalhes precisam ser estudados antes de se começar a escrever os programas.

Vale repetir que um programa em C++ é composto por várias funções, declaração de classes, instâncias de classes (objetos), etc. Os fabricantes de compiladores para C++ oferecem aos programadores uma vasta gama de funções, classes e objetos prontos, não sendo necessário desenvolvê-los.

Isso facilita o trabalho e permite ao programador criar funções, classes e objetos mais complexos, utilizando os que já estão prontos, como base. Alguns desses elementos prontos fazem parte do conjunto de elementos do padrão ANSI e, portanto, são oferecidos por praticamente todos os compiladores. E outros são específicos de cada fabricante.

Um detalhe importante na sintaxe das funções em C++ é a obrigatoriedade da prototipagem das funções. Prototipar uma função é declará-la ao compilador. No protótipo de uma função declara-se de que tipo é a função (valor de retorno) e de que tipo são seus parâmetros formais. Assim, no cabeçalho dos programas, devemos ter os protótipos das funções.

Neste momento pode surgir uma dúvida. Como fazer o protótipo das funções 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 protótipo das funções oferecidas ao programador. Esses arquivos são chamados de headers e devem ser incluídos no seu programa caso se utilize funções prontas. Como é praticamente impossível não usá-las, todo programa terá esses arquivos incluídos.

Page 53: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

53

Os protótipos estão divididos por tipo de função. Então será necessário incluir um ou mais arquivos headers em seus programas, dependendo das funções 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 opção o compilador procura pelo arquivo em um diretório padrão. Normalmente o diretório é path:\include. Na 2a opção o compilador procura pelo arquivo no caminho especificado.

Além dos protótipos das funções, os fabricantes colocam nos arquivos headers algumas definições de constantes de uso comum e até mesmo definições de classes e objetos.

A seguir apresenta-se alguns dos headers mais comuns.

conio.h stdio.h math.h iostream.h dos.h stdlib.h iomanip.h bios.h

ObservaçãoA diretiva #include não 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 é possível incluir programas-fonte dentro de outro programa-fonte.

Exemplo#include <conio.h> void main() {clrscr(); // funcao que limpa a tela do DOS (clear screen) ----}

ObservaçãoOs arquivos headers têm extensão .h

ComentáriosUma parte importante nos programas em C++ é a colocação de linhas de comentários nos blocos lógicos do programa para explicar para outro programador, que porventura vier a ler o programa, como aquele bloco funciona. Isso serve também para documentar o programa.

Page 54: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

54

São possíveis duas sintaxes para os comentários: Na primeira, chamada comentários de linha, utilizam-se duas barras seguidas, //,

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

Na segunda forma, os comentários devem ficar dentro de dois conjuntos de símbolos que indicam o início e o fim do comentário. Os símbolos são: /* e */.

ObservaçãoNão se deve aninhar comentários, ou seja, colocar um comentário 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 portável, já que os sistemas computacionais estavam se multiplicando.

Uma linguagem portável é aquela que permite que se escrevam programas que podem ser executados em vários tipos de computadores, com as mais diversas plataformas de hardware e software, ou seja, o mesmo programa em máquinas diferentes. Como isto seria possível?

Na verdade, o que é portável é o programa-fonte escrito em linguagem C, e não o programa executável.

A dificuldade de tornar um código portável é que cada máquina tem seus próprios sistemas de acesso ao hardware interno e aos periféricos. Então, como compatibilizar isto?

A idéia é simples, mas muito inteligente.

Esconde-se do programador, ou seja, da linguagem, o acesso ao hardware.

Page 55: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

55

As instruções que controlam o microprocessador e o hardware básico são colocadas em bibliotecas escritas em código de máquina, 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 vários tipos de máquinas.

Mas, e os periféricos?

O acesso aos periféricos – vídeo, teclado, unidades de disco, etc. – é muito interessante. Foram criados periféricos ''virtuais'' chamados stream. A palavra stream significa uma fila de dados.

O programador, quando quer escrever ou ler em um desses periféricos, faz isso num stream que durante a compilação do programa vai ser ''ligado'' ao periférico específico. Assim, os dados da fila serão enviados ao periférico ou dele recebidos.

Foram definidos alguns streams padrões, que estão associados aos periféricos mais comuns.

Periférico stream padrão em C

Vídeo stdout

Teclado stdin

Impressora stdprn

Vídeo stdaux

Vídeo stderr

Toda esta filosofia foi absorvida pela linguagem C++, e além destes streams padrões foram acrescentados outros, só que na forma de objetos de stream.

Periférico stream padrão em C objetos stream em C++

Vídeo stdout cout

Teclado stdin cin

Impressora stdprn

Vídeo stdaux

Vídeo stderr cerr

Page 56: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

56

Page 57: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

57

Dados e variáveis

Inicialmente, falaremos sobre os tipos de dados que a linguagem manipula, como são endereçados, o seu conceito, seus tipos básicos e seus modificadores de tipo.

Tipos de dados

Apesar de, a princípio, um computador só entender 0s e 1s, é possível, utilizando-se alguns controles, fazer com que um computador manipule vários tipos de informação.

Na verdade, o compilador esconde do programador as dificuldades de manipulação do formato dos dados, permitindo que ele se preocupe com o processamento do dado propriamente dito. Em C++ podem-se utilizar vários tipos de dados.

NuméricosPodem ser inteiros, reais (ponto flutuante) ou reais de dupla precisão.

LiteraisEstão divididos em dois tipos: Strings e Caracteres.

StringsSão seqüências de caracteres contendo letras, dígitos e/ou símbolos especiais que fazem parte da tabela ASCII. São também conhecidas como dado alfanumérico ou cadeia de caracteres. Normalmente, nos algoritmos e nas linguagens de programação, uma string é delimitada no início e no fim por um caractere aspas (").

Diz-se que o comprimento de uma string é dado pelo número de caracteres nela contido mais um caractere nulo 0 ao fim da string.

Page 58: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

58

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.

ObservaçãoEspaço também é um caractere.

CaracteresSão diferentes das strings por possuírem apenas um caractere, e serão tratados pelas linguagens de maneira diferente de uma string de comprimento 1. Para diferenciar os dois, utiliza-se, no caso dos caracteres, o símbolo apóstrofo (‘) para identificar um caractere.

Exemplos'A' 'a' '1' '@'

LógicosEste tipo de dado está intimamente ligado ao funcionamento dos computadores. São também chamados de dados booleanos em razão das contribuições de George Boole à área da lógica matemática. Este tipo de dado pode assumir apenas dois valores, que são representados por verdadeiro ou falso (true or false), sim ou não, 1 ou 0.

Resumo

Caracter RealStringChar

Page 59: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

59

Conceito de variável

A memória de um computador Pode-se entender a memória de um computador como se fosse uma pilha de caixas onde é guardada uma informação (instrução ou dado) em cada. Para que o computador possa tratar essas informações sem cometer erros, é preciso que cada caixa tenha um endereço.

Nos computadores, esses endereços são números. Nos computadores atuais, cada informação é codificada por um número binário de 8 dígitos (BYTE). Assim, a memória dos computadores está organizada em bytes.

Variáveis

Variáveis são posições de memória nas quais os programas podem armazenar (ler e/ou escrever) valores importantes, ou não, durante a execução de um programa. Como esses valores normalmente variam durante a execução do programa, daí o nome variável.

Para acessar individualmente cada uma dessas informações, é necessário saber o tipo de dado e o seu respectivo endereço. Imagine um programador tendo de memorizar o endereço das dezenas de variáveis que seu programa usa, ou tendo de consultar uma tabelinha escrita para saber os endereços.

Percebe-se que é difícil trabalhar com esta sistemática de acesso. Para contornar isto, pode-se associar às variáveis um nome, uma etiqueta, um apelido que, tecnicamente, é chamado por um nome - o nome da variável.

Page 60: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

60

Portanto, uma variável possui 3 atributos: um nome, um tipo de dado que ela armazena e o conteúdo propriamente dito. Todas as variáveis possuem um nome e em cada linguagem de programação existem regras para nomeá-las.

Por exemplo, em C++ tem-se as seguintes regras (práticas) básicas: Deve começar com letra ou sublinhado (_); Não deve conter símbolos especiais, exceto o sublinhado; Deve lembrar o que ela guarda; O compilador é case sensitive, ou seja, diferencia letras maiúsculas das minúsculas

(Nome é diferente de nome).

Exemplosn1, n2, N1, N2 correto1ano, 2ano incorretonome 1, nome 2 incorretonome_1, nome_2 corretomedia, nota, recup corretoa * b, $c, dado!, ac@et incorreto_salario correto

Declarar é preciso Em C++ é preciso declarar uma variável antes de utilizá-la. A declaração é utilizada pelo compilador para reservar na memória do computador o espaço necessário para armazenar os valores desta variável. A declaração de variáveis é um item importante nos programas e deve ser feita com muito cuidado e critério.

Tabela de tipos básicos A linguagem C++ possui um grande número de tipos, e para declarar cada tipo é utilizada uma palavra diferente. Essa palavra é que indica ao compilador o tipo de dado que será utilizado.

Nome do tipo Tipo Bytes ocupados na memória 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 precisão 08 ± 1,7x10-308 a ± 1,7x10+308

Void Vazia 00 ------------------

Page 61: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

61

Modificadores de tipo É possível, acrescentando-se palavras-chaves à frente dos nomes dos tipos, modificar suas faixas de valores. Os modificadores de tipo são: long, short e unsigned. Assim, a tabela fica:

Modificadores de tipo

Nome do tipo Tipo Bytes Faixa de valores

char caractere 01 -128 a + 127

Unsigned 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 precisão 08 ± 1,7x10-308 a ± 1,7x10+308

Long double dupla precisão 10 ± 3,4x10-4.932 a ± 3,4x10+4.932

void vazia 00 -------------------

Observação [ ] significa opcional.

Page 62: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

62

Page 63: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

63

Operadores aritméticos

Nesta seção, veremos os operadores aritméticos e alguns exemplos, funções de formatação de impressão, manipuladores de base numérica, como declarar constantes em C++ e conversões de tipo usando cast.

Operadores aritméticos

Operador Ação

= Atribuição

+ Soma

- Subtração

* Multiplicação

/ Divisão

% Módulo da divisão ou resto

++ Incremento

- - Decremento

Soma, subtração, multiplicação e divisão, funcionam como na matemática.

AtribuiçãoAtribui o valor da expressão que está do lado direito para a expressão que está do lado esquerdo.

Exemploa = b+c primeiro calcula o resultado da soma para depois atribuí-lo à variável a.

Page 64: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

64

MóduloRetorna o resto da divisão.

Exemplodiv = 10 % 3 primeiro faz a divisão e depois atribui o resto (1) a div. Observe que a divisão é inteira, senão não haveria resto.

Incremento e decremento Incrementam ou decrementam a variável que é seu operando. Podem ser pré-fixados ou pós-fixados.

Exemplosmaçãs = 4 frutas = maçãs ++ (pós-fixado) primeiro atribui 4 a frutas, depois incrementa maçãs; maçãs = 4 frutas = ++ maçãs primeiro incrementa maçãs, depois atribui maçãs (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 011 // Uso dos operadores ++ e-- # include < stdio.h . h> # include < conio . h>void main ( ) {

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

Page 65: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

65

Manipuladores de formatação de impressão

Manipulador Ação

setw(int n) Fixa em n o número de casas a serem utilizadas para a impressão do próximo dado.

setprecision(int p) Fixa em p o número de casas decimais do próximo dado a ser impresso (float).

setfill(char ch) Fixa em ch o caractere de preenchimento das colunas em branco do próximo número 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 (); }

ObservaçãoOs manipuladores estão definidos no arquivo header iomanip.h.

Manipuladores de base numérica

Manipulador Ação

DecImprime o próximo valor no formato decimal (default).

HexImprime o próximo valor no formato hexadecimal.

oct Imprime o próximo valor no formato octal.

Page 66: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

66

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 numero inteiro:"; cin >> numero; cout << " \n \n "; cout << " \nNumero em decimal:" << numero; cout << " \nNumero em hexadecimal:" << hex << numero; cout << " \nNumero em octall:" << oct << numero; getch();}

Outros detalhes Três outras características devem ser estudadas antes de prosseguirmos.

Declaração de constantes É muito comum o uso de constantes em programas. Constantes numéricas, caracteres ou até mesmo constantes do tipo string (mensagens de erro, por exemplo).

Page 67: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

67

A C++ oferece duas formas de definir constantes: usando a diretiva para o pré-processador #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 memória.

Na diretiva #define não 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(); }

Conversão forçada de tipo usando cast (molde) Em determinadas situações é desejável imprimir um dado em um formato diferente do que foi especificado na declaração de variáveis. Para isto, forçamos o formato da impressão 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 forçar uma impressão para qualquer tipo válido da linguagem C++: int, char, float etc. Para isto, basta colocar o tipo desejado na frente da variável entre parênteses.

Page 68: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

68

Usando o printf e scanf seria mais fácil 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 funções getch() e getche() O objeto de stream cin ou scanf não se adapta perfeitamente em todas as situações. Por exemplo, ele espera que seja digitado ENTER depois de digitado o valor no teclado. Em determinadas situações não é desejável ficar esperando que se digite ENTER.

Os fabricantes de compiladores oferecem, em suas bibliotecas de funções, duas funções que lêem 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 diferença entre getch() e getche() é que a segunda ecoa na tela a tecla apertada, enquanto a primeira não ecoa, apenas armazena a tecla apertada na variável.

Page 69: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

69

Comandos de controle de fluxo

Aqui, veremos como é feito o controle de fluxo dos dados através dos comandos if, else, switch case, e apresentaremos os operadores relacionais e lógicos que serão utilizados por tais funções.

Os comandos de controle de fluxo permitem implementar as diversas estruturas lógicas da linguagem C++. O estudo destes comandos será acumulativo. Uma vez aprendido um comando, ele será utilizado nos programas seguintes. Assim, os programas irão ficando cada vez mais complexos.

Comandos de decisão Os comandos de decisão são 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 decisão são 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 aritméticos, só que eles não devolvem o resultado da operação e sim a resposta de uma comparação. Esta resposta pode ter dois valores, verdadeiro ou falso, mas como será que o computador processa as palavras verdadeiro e falso?

Page 70: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

70

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

Então o computador representa verdadeiro como 1 e falso como 1.

Lembre-se: o computador realiza a operação pedida, aritmética ou relacional, e coloca no lugar da operação o seu resultado. É, por isso, que podemos mandar cout imprimir 10>2, porque o computador realiza a operação 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 operações sejam feitas em uma determinada seqüência devemos, se for o caso, forçar a seqüência. Mas, existe uma hierarquia entre os operadores, e o computador respeita essa hierarquia. A hierarquia é chamada de precedência de operadores.

Page 71: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

71

Operadores em ordem decrescente de hierarquia (precedência)

*

/

%

+

-

<

<=

>

>=

==

!=

Assim, podemos afirmar que no exercício anterior o computador realizaria primeiro a soma, depois a subtração e depois a comparação. Observe que os operadores aritméticos têm precedência em relação aos relacionais. Mas, se desejássemos que o computador fizesse a comparação primeiro, para depois realizar as operações aritméticas, deveríamos forçar a realização da comparação. Para isso usam-se os parênteses:

a+(23<4)-b

Pois, o computador realizará sempre em primeiro lugar o que estiver dentro dos parênteses, para depois realizar o que está fora. Costuma-se dizer, para fixar o conceito, que o computador realiza as operações de dentro para fora. O que significa de dentro dos parênteses para fora deles.

Pode-se, também, utilizar vários níveis de parênteses:

((10+(a+(23<4)-b))-(5!=4))

Page 72: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

72

Comando de decisão if O comando de decisão if representa uma tomada de decisão 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 decisão if else O comando de decisão if/else representa uma tomada de decisão do tipo “se” faça isso “senão” faça 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") ;

Page 73: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

73

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 operação 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 lógicos Os operadores lógicos são utilizados para realizar operações lógicas entre dois operandos, um do lado esquerdo do operador e outro do lado direito. Os operandos podem ser também expressões.

Os operadores lógicos da linguagem C++ são: && (operador E), || (operador OU) e ! (operador negação). As operações lógicas estão intimamente ligadas ao funcionamento do computador, já que os resultados de cada operação podem assumir apenas dois valores: verdadeiro (1) ou falso (0).

Costuma-se representar o funcionamento desses operadores na forma de tabelas.

Essas tabelas são denominadas tabelas-verdade:

Operador E (&&) Operador OU (||) Operador Negação (!)

A B R A B R A R

F F F F F F F V

F V F F V V V F

V F F V F V

V V V V V V

Page 74: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

74

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 múltiplo que permite várias comparações e vários caminhos no fluxo do programa. Ele pode ser comparado com uma chave seletora. Sintaxe: switch (variavel) { case opçao1: { lista de comandos;break;} case opçao2: { lista de comandos;break;} ..... case opçaoN: { lista de comandos;break;} default: { lista de comandos;} }

Page 75: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

75

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: " << setprecision(2) <<op1+op2;break; case '-': cout << "\nResultado: " << setprecision(2) <<op1- op2;break; case '*': cout << "\nResultado: " << setprecision(2) <<op1*op2;break; case '/': cout << "\nResultado: " << setprecision(2) <<op1/op2;break; default: cout << "\n \n \n \a \a \a Operacao invalida, sinto muito"; } getch(); }

Page 76: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

76

Page 77: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

77

Comandos de estruturas

Nesta parte, falaremos sobre comandos que controlam estruturas de repetição tais como while, do while, for, break e continue.

Comandos de loop (repetição)

A estrutura de loop permite a repetição de um comando ou blocos de comandos em função do resultado de um teste feito.

Loop while Sintaxe: while (teste) { comando1; comando2; ..... comandoN; }

Enquanto o teste for verdadeiro, o bloco de comandos é repetido. É fácil perceber que o controle da repetição deve ser feito dentro do bloco de comandos, por exemplo, através de uma variável que vai mudando de valor, até que em determinado momento a variável 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 () {

Page 78: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

78

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 errou!! \n"; i=i+1; } 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 diferença 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.

Page 79: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

79

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 repetição de um bloco de comandos. Mas o controle da repetição é feito dentro do comando, e não por instruções dentro do bloco que vai ser repetido. Sintaxe: for(valor inicial ; teste ; variação) { comando1; comando2; ...... comandoN; }

Exemplo// Exemplo

// Loop for #include <iostream.h> #include <stdio.h> #include <conio.h> #include <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

Page 80: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

80

#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 é necessário sair de um loop em razão da ocorrência 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 execução do loop.

Exemplo// Exemplo

// Lançamento 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”;

Page 81: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

81

} else; { cout << “ \ n Warning received” ; cout << “ \ n Count down held at t - ” << count; } getch (); }

O comando continue, como o break, causa a saída do loop. Só que o comando break termina o loop, enquanto o comando continue “pula” as instruções que estão à sua frente e vai direto para o próximo 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();}

Page 82: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

82

Page 83: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

83

Funções

Como criar nossas próprias funções, definição de tipos, recebendo parâmetros e retornando valores, são os assuntos que serão tratados neste texto.

Criando suas próprias funções

Os programas descritos até agora usaram funções como clrscr(), getch(), kbhit(), etc. Essas, e aproximadamente outras 400 funções, já estão definidas e compiladas nas bibliotecas de funções 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 funções. E lembre-se, elas são a base da linguagem C++. Mas por que a base?

Para que os programas fiquem estruturados e fáceis de serem desenvolvidos, eles devem ser “quebrados” em pequenos blocos lógicos. É aí que entram as funções. Cada um deles pode ser uma função que recebe valores dos outros, trabalha esses valores e devolve um resultado para outro bloco. Com isso teremos blocos independentes, pequenos e fáceis de serem desenvolvidos.

Usaremos inicialmente um exemplo simples e a partir dele mostraremos todas as características e o potencial das funções.

Uma função vazia Uma função totalmente vazia é aquela que não recebe parâmetros e não devolve nenhum valor. Tudo é feito dentro da própria função.

Page 84: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

84

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;

}

Observações Protótipo da função mostrando ao compilador que ela é vazia; Corpo da função pode estar depois ou antes de main(); As funções têm a mesma sintaxe que a função main().

Dessa maneira, pode-se criar suas funções e montar uma biblioteca com elas.

Abrindo parênteses (revisão)

Variável global e variável local Uma variável global não perde seu valor ao longo da execução do programa, ou seja, uma vez declarada ela tem um espaço na memória garantido, independentemente do que está acontecendo no programa.

Já as variáveis do tipo local só existem enquanto o programa está sendo executado, dentro da função onde elas foram declaradas. Quando o programa sai dessa função tais variáveis são “destruídas”, ou seja, o espaço na memória ocupado por elas é liberado.

Page 85: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

85

É importante manter na memória apenas as variáveis que realmente interessam. Aquelas que são de uso momentâneo podem ser destruídas e recriadas conforme a necessidade.

Uma função recebendo parâmetros Vamos ver a mesma função do exemplo anterior, só que agora recebendo da função 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; }

Observações No protótipo da função não é necessário colocar o nome dos parâmetros, apenas

seus tipos; A função continua sendo vazia porque não retorna nenhum valor; Os nomes dos parâmetros passados não podem ser os mesmos de parâmetros

recebidos, pois as variáveis a e b serão destruídas quando a execução do programa passar para a função soma();

Na hora de escrever a função, praticamente rescrevemos seu protótipo; Depois de executada a função, o programa volta para a função que o chamou e

continua executando o programa.

Função recebendo parâmetros e retornando um valor // Exemplo // Função recebendo parâmetros e retomando valor

#include <iostream.h> #include <stdio.h> #include <conio.h> float soma (float, float); // prototipo da funcao

Page 86: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

86

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) // funcao soma () { return (n1 + n2); }

Observações Como a função vai retornar um valor, ela deve ser do tipo do valor retornado; É possível atribuir uma função a uma variável, já que o que vai ser atribuído é o

seu valor de retorno e não a própria função. Costuma-se dizer que a função se torna o valor de retorno;

Só é possível retornar um valor para cada função; Como a função se transforma no valor de retorno, é preciso reservar espaço na

memória para armazenar esse valor. É por isso que é preciso fazer o protótipo da função declarando que a função é 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) // funcao media() { 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) // prototipo da funcao

Page 87: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

87

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 = 90) return ('A'); if(m = 75 && m 89) return ('B'); if(m = 50 && m 74) return ('C'); if(m = 35 && m 49) return ('D'); if(m = 34) return ('E'); }

// Exemplo // Transformacao de nota em conceito

# include < iostream . h> # include < stdio . h > # include < conio . h>

float media(float, float); // prototipo da funcao char conceito (float);

void main () // programa principal { float n1, n2 med; char con; clrscr(); cout " Digite a primeira nota: ", cin n1; cout " \ nDigite a segunda nota: ", cin n2; cout " \ n A media deste aluno e " media (n1, n2) cout " \ n Esta media' corresponde o conceito" conceito (media (n1,n2); getch(); } float media (float nota 1, float nota 2) // funcao media() { return (( nota 1 + nota 2)/2); } char conceito ( float m); { if(m = 90) return ('A'); if(m = 75 && m 89) return ('B'); if(m = 50 && m 74) return ('C'); if(m = 35 && m 49) return ('D'); if(m = 34) return (‘E’); }

Page 88: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

88

Page 89: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

89

Matrizes e ponteiros

A seguir, falaremos sobre matrizes, como e onde usá-las, seus tipos, seu uso em funções, a matriz string e suas funções de manipulação, como criar novas estruturas de dados e variáveis do tipo ponteiro.

Matrizes

ConceitoEm C++ uma matriz é um conjunto de variáveis do mesmo tipo. Esse conjunto pode ter uma ou mais dimensões:

Cada elemento é uma variável 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 variável da matriz é chamada de elemento da matriz, sendo que para diferenciá-los devemos criar índices.

Page 90: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

90

Exemploa00, a01, a02,

Como uma matriz é um conjunto de variáveis, ela precisa ser declarada. Quando se declara uma matriz é preciso indicar ao compilador de que tipo são os elementos da matriz e quantos elementos ela tem.

Sintaxe da declaração de matrizes A declaração de uma matriz é feita como a declaração de uma variável. Primeiro indica-se o tipo de variáveis que a matriz contém, depois indica-se o nome da matriz e em seguida o número de elementos:

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

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

Page 91: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

91

Quando devemos usar matrizes? Imagine a seguinte situação: Precisamos elaborar um programa para calcular e armazenar a média de 1.000 alunos de uma escola. Como você faria isto sem as matrizes?

Sem as matrizes teríamos que declarar 1.000 variáveis para armazenar as primeiras notas, depois mais 1.000 variáveis para as segundas notas e finalmente mais 1.000 variáveis para armazenar as médias. Isso tornaria o trabalho inviável.

Uma das vantagens em se utilizar uma matriz é que com apenas uma declaração, podemos declarar quantas variáveis forem necessárias para as partes do problema. No exemplo das médias, poderíamos declarar uma matriz para as primeiras notas, outra para as segundas notas e ainda outra para as médias. Observe, seriam no máximo três declarações, ao passo que sem as matrizes teríamos 3.000 declarações.

Outra vantagem é a possibilidade de colocar variáveis no lugar dos índices. Para efetuarmos a leitura das notas, o cálculo das médias e a impressão basta colocarmos as instruções corretas dentro de um loop for e indexar a matriz utilizando a variável 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" << i + 1 << "o aluno"; cin >> p1[i] >> p2[i]; med[i] = (p1[i] + p2[i])/2; } 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(); }

Page 92: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

92

Matrizes como parâmetros de função Quando se deseja passar uma matriz como parâmetro para uma função, 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 são um conjunto de caracteres controlados como um conjunto. Por exemplo, uma frase ou linha de um texto etc.

Em linguagem C++, strings são 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);

Page 93: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

93

cout << " Seu nome e: " << nome; getch();}

Neste exemplo teríamos:

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

nome A n t o n i o /0

ObservaçãoDevemos sempre reservar um espaço a mais nas matrizes de string para o caractere /0, que marca o término de string.

O objeto cin não é adequado para ler strings. Para ler uma string deve-se utilizar a função gets().

Funções para manipulação de strings gets (string) - lê uma string do teclado (mesmo com espaços entre as palavras); strlen (string) - devolve o número de caracteres que compõem a string; strcat (string1 , string2) - concatena as strings 1 e 2 e o resultado é armazenado em string1; strcpy (string1 , string2) - copia o conteúdo de string2 em string1; strcmp (string1 , string2) - compara as duas strings. Se forem iguais, devolve 0 (zero).

As funções de manipulação de strings estão definidas em string.h

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

#include <iostream.h> #include <stdio.h> #include <conio.h> #include <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()

Page 94: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

94

#include <iostream.h> #include <stdio.h> #include <conio.h> #include <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 < iostream . h> # include < stdio . h > # include < conio . h> # include 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 < iostream . h> # include < stdio . h > # include < conio . h> # include string . h void main (){char senha [10] = {"saracura"}; char palavra [20]; clrscr(); cout "Digite a senha", gets (palavra); if (!(strcmp (senha, palavra)) cout "Pode passar dignissimo senhor ! "; else cout "Saia daqui seu larapio"; getch (); }

Estruturas de dados

Em determinadas situações é ú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.

Page 95: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

95

Sintaxe da criação 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 espaço de memória é ocupado. Apenas quando criamos uma variável do tipo da estrutura é que os espaços necessários de memória são criados.

Exemplo// Exemplo // uso de estruturas para definir novos tipos de dados # include < iostream . h> # include < stdio . h > # include < 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 Peso =" antonio.peso " Altura =" antonio.altura;

cout "Jose Peso =" jose.peso " Altura =" jose.altura;

getch(); }

Observe que com apenas uma declaração de estrutura podem-se definir inúmeras variáveis, sem a necessidade de declarar uma variável para cada valor. No exemplo anterior, poderíamos ter 100 variáveis, onde cada uma guardaria peso e altura de uma pessoa. Para fazer isto sem o uso de estrutura, deveríamos declarar 200 variáveis.

Com o uso de estrutura, declaramos uma struct e mais 100 variáveis, quase a metade. Mas o espaço ocupado pelos dois métodos é o mesmo.

Existe uma forma de simplificar as declarações onde é necessário guardar dados na forma de estruturas de diversas variáveis. Pode-se criar uma matriz de estruturas.

Page 96: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

96

Exemplo// Exemplo // uso de matriz de estruturas

# include < iostream . h> # include < stdio . h > # include < conio . h> # include 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 fazer uma consulta (s/n)? ; cin resp; if (resp == 'n' or resp == 'N') break; cout "Digite o numero do telefone: " ; cin fone; for (int i=0; i 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 são variáveis que armazenam endereços. São utilizados para servir como referência (apontadores) a variáveis, matrizes, estruturas etc. Em determinadas situações, em C++ é mais conveniente manipular o endereço de uma variável, de uma matriz ou de uma estrutura usando seus nomes, e não manipulá-las diretamente.

Existem tipos de ponteiros, como no caso das variáveis. Mas, o tipo do ponteiro está associado com o tipo de variável para a qual ele aponta. Se a variável apontada for do tipo float, o ponteiro também será do tipo float e assim por diante. Os ponteiros armazenam endereços, que sempre terão dois bytes (16 bits).

Page 97: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

97

Assim, na memória, cada ponteiro ocupa dois bytes, mesmo quando ele aponta para uma variável que ocupa 4, como é o caso das variáveis do tipo float.

Sintaxe no uso de ponteirosComo ponteiros são variáveis, é preciso declará-los: tipo *nome.

Observe que o tipo do ponteiro deve ser o mesmo da variável para a qual ele irá apontar. O nome de um ponteiro segue as mesmas regras dos nomes das variáveis. O símbolo de asterisco junto ao nome indica que ele é um ponteiro.

Depois da declaração, o ponteiro já pode ser utilizado. Só que ele ainda não aponta para nada. É preciso inicializá-lo com o endereço da variável para a qual ele irá apontar. Para isto utiliza-se o operador endereço (&).

Nome_do_ponteiro = & nome_da_variável

Outro operador utilizado para manipulação de ponteiros é o operador conteúdo (*).

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 " numero "/nSeu endereco e " pnumero "/n O conteudo do endereco"

"/napontando pelo ponteiro e " pnumero; getch (); }

Sobrecarga de funçõesEm linguagem C++, diferentemente da linguagem C, é possível fazer com que uma função responda de maneira diferente, dependendo do número e do tipo dos parâmetros passados para ela. Diz-se, neste caso, que a função está sobrecarregada.

Page 98: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

98

Portanto, se for preciso criar uma função que calcula o cubo de um número e este número puder ser um inteiro ou um ponto flutuante, pode-se definir duas funções com o mesmo nome, mas com argumentos diferentes:

int cubo (int numero); ou float cubo (float numero).

Como os argumentos são diferentes, C++ irá chamar a função correta para cada tipo de argumento. Se você chama cubo (10), a versão int de cubo será chamada. Mas, se você chamar cubo (2.34) a versão float será chamada.

# include < iostream . h> # include < conio . h> # include dos . h # include < 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;

}

Page 99: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

99

C++ Builder

Nesta parte do curso será apresentada uma visão geral sobre o desenvolvimento de diferentes linguagens de programação com algumas notas acerca das mais conhecidas.

Apresenta-se justificativa do grande uso da linguagem C por seu caráter flexível e funcional prestando-se à feitura de aplicativos para os mais diferentes ramos de atividade humana.

Em seguida são apresentados elementos básicos da linguagem C. O ambiente de desenvolvimento integrado, com descrição de cada elemento componente.

A apresentação é feita em estrutura esquemática, de modo a possibilitar consulta rápida, remetendo-o a cada parte do sistema com ilustrações referenciais da interface gráfica.

Desse modo, são expostas barras de ferramentas, menus, ferramentas de visualização, etc.

Linguagens de programação do computador

Existem muitos tipos de linguagem que foram desenvolvidos ao longo dos anos para expressar um conjunto de instruções detalhadas ao computador.

Uma linguagem com essa finalidade consta de um conjunto de caracteres e regras para combiná-los, tornando-os símbolos e palavras.

Quando o trabalho de estruturar linguagens de programação começou, os programadores tinham que escrever instruções na linguagem da própria máquina.

Page 100: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

100

Essa linguagem codificada, que pode ser entendida e executada diretamente pelo computador sem conversão ou tradução, consiste de dígitos binários representando códigos de operação e endereços de memória.

Como ela é composta de uma série de 1 e 0 em grande quantidade e diferentes posições, era difícil de ser usada por seres humanos.

Como alternativa foram criadas linguagens mistas que eram convenientes para os programadores. Possibilitavam instruções em letras ao invés dos números 1 e 0. Apesar de uma linguagem assim ser mais fácil de usar estava claro que havia necessidade de criar algo que se assemelhasse mais à comunicação humana.

A primeira linguagem da categoria de linguagens de alto nível surgiu em 1956. Trata-se da linguagem FORTRAN (Formula Translation) que foi bem aceita por cientistas e matemáticos porque era similar a notações matemáticas. Entretanto, houve dificuldades de uso por pessoas de áreas não orientadas matematicamente.

Como resultado, uma linguagem mais prática de programação conhecida como COBOL (Common Business-Oriented Language) surgiu em 1960. Emprega palavras e sintaxe semelhantes à língua inglesa.

Mais tarde outras linguagens mais fáceis de aprender foram introduzidas. Dentre elas, a BASIC (Beginner's All-Purpose Symbolic Instruction Code) que foi assimilada de modo mais fácil pela pessoa comum não especializada em Informática. Com o tempo passou a ser usada em escolas, empresas e residências.

A linguagem C é uma linguagem de alto nível que pode funcionar como uma linguagem mista. Muitos aplicativos (softwares) são desenvolvidos nessa linguagem que é bem flexível.

Outra linguagem que teve aceitação foi a Pascal. Outras delas surgiram para aplicação específica. São linguagens para operação de máquinas industriais, simulação de modelos, aplicações de inteligência artificial.

Page 101: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

101

Linguagem C++builder

A seguir apresenta-se a interface gráfica em que é operada a linguagem C++builder. A interface gráfica é constituída 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 funções específicas que serão abordadas oportunamente. O conhecimento desse ambiente é importante para se obter o máximo de rendimento de seus atributos.

Page 102: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

102

A janela do menu principal A janela superior é a janela principal do IDE. Contém vários menus que dizem ao IDE para executar alguma ação, como por exemplo, abrir um arquivo, compilar um programa ou configurar uma opção. O Menu de Ferramentas - as Barras de Ferramentas - aparece sempre na janela principal quando você inicia o C++ Builder.

As barras de ferramentas individuais são fixas na Janela Principal e podem ser separadas se você desejar. Para estudá-las uma a uma, serão mantidas separadas.

Barra de ferramentas padrão A barra de ferramentas padrão contém botões de atalho para operações como:

Barra de ferramentas de visualização A barra de ferramentas de visualização contém botões de atalhos para operações como:

Page 103: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

103

Barra de ferramentas de depuração A barra de ferramentas Debug contém botões de atalho para executar e depurar sua aplicação:

Barra de ferramentas Desktop A barra de ferramentas Desktop pode ser usada para salvar as configurações da área de trabalho corrente com um nome.

Barra de Menus Na barra de menus são encontradas todas as ferramentas necessárias para elaboração de um aplicativo. Veja, a seguir, alguns dos menus que serão mais utilizados em nosso curso.

Page 104: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

104

File menu – menu de arquivos

Quando clicamos na opção File é ativado o menu suspenso File, como mostrado a seguir. Cada item do menu é organizado em grupos lógicos. 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 diálogo com novos itens que podem ser adicionados ao project New Application. Cria um novo projeto.

New Form Cria um novo formulário no projeto.

New Date Module Cria um formulário de data módulo para o projeto.

Open Abre projetos. Pode abrir também Units, Forms e texto no editor de código.

ReOpen Abre um projeto, listando os últimos abertos.

Save Salva o arquivo aberto no editor de código.

Save Project As Salva o projeto com um outro nome ou em outro local.

Save All Salva todas as Units, Forms, projetos e módulos.

Close Fecha um projeto.

Close All Fecha todos os arquivos abertos.

Includi Unit Hdr Permite inserir instruções #include na unidade atual no editor.

Exit Sai do C++ Buider.

Page 105: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

105

Edit menu

A opção Edit realiza várias operações de editor. A figura a seguir mostra três seções disponíveis:

Undelete Desfaz a última ação de deleção.

Redo Refaz um Undo.

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

Copy Copia item selecionado para o ClipBoard (e não apaga).

Paste Cola/copia o conteúdo do ClipBoard para o formulário.

Delete Apaga item selecionado.

Select All Seleciona todos os componentes do formulário.

Align to Grind Alinha o componente com relação à grade do formulário.

Bring to Front Move o componente para a frente de outros.

send to Back Move o componente para trás.

Align Alinha o componente selecionado.

Size Altera o tamanho de componente.

Tab Order Modifica a ordem do componente no formulário, quando no uso da tecla TAB.

Creation Order Modifica a ordem de componente não visual.

Lock Controls Trava um componente.

Add to Interface Usado para declarar uma interface para ser usada com um componente Activex.

Page 106: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

106

Search menu

A opção de menu Search realiza vários tipos de pesquisa e operações 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 código automaticamente.

Go to Line Number Move o cursor para uma determinada linha.

Go to Address Code Editor localiza o arquivo.

Page 107: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

107

View menu

Quando clicamos na opção View abrimos o menu suspenso View. este item do menu possibilita abrir várias janelas. Trata da visualização de componentes do IDE descritos a seguir:

Project Manager Mostra o gerenciador de projetos.

Project Source Mostra o código 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 visualização.

Modules Mostra as janelas de módulos.

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 código 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 código.

SpeedBar Exibe ou oculta a SpeedBar.

Component Pallete Exibe ou oculta a componente Pallete.

Page 108: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

108

Project menu

Ao clicar a opção 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 repositório.

View Source Traz a janela de código onde para o primeiro plano.

Edit Option Source Permite exibir/editar o arquivo de opções 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 código que está na janela ativa.

Make Project1 Compila e Linka o projeto atual, mas somente os links que alteraram desde a última construção.

Build Project1 Reconstrói o projeto inteiro independentemente de os arquivos e formulários terem sido alterados ou não.

Information for Project1 Exibe informações sobre o projeto.

Make All Projects Idem ao Make; porém executa para todos os projetos.

Build All Projects Idem ao Build; porém executa para todos os projetos.

Options Opções do projeto, como: ícone executável, nome da aplicação ou opções de compilação.

Page 109: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

109

Run menu

Clicando na opção Run é ativado o menu suspenso correspondente:

Run Compila e executa o projeto.

Attach to Process

Parameters Configura parâmetros 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 interrupção.

Run to Cursor Roda o programa até chegar ao cursor.

Show Execute Point Posiciona o cursor na próxima/Coloca o cursor na linha a ser executada (execution point).

Program Pause Executa pausa no programa.

Program Reset Para a execução do programa.

Evaluate/Modify Permite colocar um valor ou trocar um valor de uma variável no projeto.

Add Watch Permite a visualização de variáveis.

Add Breakpoint Adiciona um ponto de interrupção na linha em que estiver cursor.

Page 110: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

110

Component menu

O menu suspenso Componente oferece maneiras de gerenciar seu projeto:

New Component Abre uma caixa de diálogo 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 diálogo 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 específicos 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.

Page 111: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

111

Tools menu

O menu suspenso Tools oferece uma maneira conveniente de gerenciar o IDE.

Environment Options Configura o Editor, o browser e customiza a aparência da Component.

Editor Options Fornece uma maneira de configurar as funções do IDE.

Debugger Options Personaliza as opções do depurador.

Repository Remove e renomeia as páginas 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 manipulação de ícones, bitimap, arquivos de cursor, arquivos de recurso (resouse files).

Window menu

Page 112: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

112

Help menu

Contents Abre o index do help.

About Sobre o Borland C++Buider, versão etc.

Object TreeView O Object TreeView mostra os objetos inseridos no formulário. Quando selecionamos um objeto no Object Tree View podemos verificar as propriedades deste objeto. Elas aparecem automaticamente no Object Inspector, com sua classe hierárquica correspondente dentro do seu formulário.

Object Inspector O Object Inspector serve para dois propósitos no desenvolvimento de um projeto.

Page 113: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

113

Todo objeto – Visual ou Não Visual – de um projeto em desenvolvimento pode ser acessado pelo Object Inspector. Além disso podem ser definidas ações para esses objetos.

Para melhor entendimento o Object Inspector será dividido em três figuras.

No seletor de objetos da figura ao lado podemos selecionar o objeto (formulário ou componente) que desejamos modificar, atribuir valores às propriedades ou ainda criar um manipulador de eventos.

As páginas 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 específica. Não serão abordadas todas; apenas as mais comuns, mais importantes e de maior utilização.

Page 114: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

114

Align Determina o alinhamento do componente.

+ Anchors Define uma posição para fixa âncora do objeto.

AutoScroll Permite o formulário 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 aparência 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 Número Utilizado para chamar o Help on-line.

Hint String utilizada em dicas instantâneas.

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

Left Posição esquerda.

Name Nome do componente.

Position Define a posição do Form na tela.

PopupMenu Menu de contexto do componente.

ShowHint Define se o Hint será mostrado.

TabOrder A ordem de tabulação do componente, Usada quando o usuário tecla TAB.

TabStop Indica se o componente será selecionado quando o usuário tecla TAB.

Tag Propriedade não utilizada pelo Delphi, que pode ser usada como propriedade personalizada.

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

Top Posição superior

Visible Define se o componente está visível.

Whidth Largura.

WindowState Define a forma que o Form aparecerá na tela.

Quando houver necessidade de utilização de outras propriedades que não constam nesta lista, pode-se utilizar o help do C++ Builder.

Page 115: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

115

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 código será mostrado e poderão ser inseridos, então, os atributos.

Ao clicarmos na área em branco do lado direito do evento escolhido, geramos um processador de eventos que irá executar o código digitado dentro dele toda vez que o evento ligado a ele, acontecer.

Por exemplo: Criamos um botão e, em seguida, criamos um evento OnClick. Toda vez que apertamos este botão, ele executará uma tarefa (um código) que está registrado dentro do evento OnClick.

Page 116: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

116

Page 117: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

117

Menu de arquivos

Quando clicamos na opção File é ativado o menu suspenso File, como mostrado a seguir. Cada item do menu é organizado em grupos lógicos. 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 diálogo com novos itens que podem ser adicionados ao project New Application. Cria um novo projeto.

New Form Cria um novo formulário no projeto. New Data Module Cria um formulário de data módulo para o projeto. Open Abre projetos. Pode abrir também Units, Forms e texto no editor de código. ReOpen Abre um projeto, listando os últimos abertos. Save Salva o arquivo aberto no editor de código. Save Project As Salva o projeto com outro nome ou em outro local. Save All Salva todas as Units, Forms, projeto e módulos. Close Fecha um projeto. Close All Fecha todos os arquivos abertos. Include Unit Hdr Permite inserir instruções #include na unidade atual no editor. Exit Sai do C++ Builder.

Page 118: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

118

Edit menu

A opção Edit realiza várias operações de editor. A figura a seguir mostra três seções disponíveis:

Undelete Desfaz a última ação de deleção.

Redo Refaz um Undo.

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

Copy Copia item selecionado para o Clipboard (e não apaga)

Paste Cola/copia o conteúdo do Clipboard para o formulário.

Delete Apaga item selecionado.

Select All Seleciona todos os componentes do formulário

Align to Grid Alinha o componente selecionado com relação à grade do formulário

Bring to Front Move o componente para frente de outros.

Send to Back Move o componente para trás.

Align Alinha o componente selecionado.

Size Altera tamanho de componente.

Tab Order Modifica a ordem do componente no formulário, quando no uso da tecla TAB.

Creation Order Modifica a ordem de componente não visual.

Lock Controls Trava um componente.

Add To Interface Usado para declarar uma interface para ser usada com um componente Activex.

Page 119: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

119

Search menu

A opção de menu Search realiza vários tipos de pesquisa e operações 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 código automaticamente.

Go to Line Number Move o cursor para uma determinada linha.

Go to Address Code Editor localiza-o no arquivo.

Page 120: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

120

View menu

Quando clicamos na opção View abrimos o menu suspenso View . Este item do menu possibilita exibir várias janelas. Trata da visualização de componentes do IDE descritos a seguir:

Project Manager Mostra o gerenciador de projeto.

Project Source Mostra o código 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 visualização.

Modules Mostra as janelas de módulos.

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 código 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 código.

SpeedBar Exibe ou oculta a Speedbar.

Component Pallete Exibe ou oculta a Component Pallete.

Page 121: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

121

Project menu

Ao clicar a opção 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 repositório.

View Source Traz a janela de código-fonte para o primeiro plano.

Edit Option Source Permite exibir/editar o arquivo de opções 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 código que esta na janela ativa.

Make Project1 Compila e linka o projeto atual, mas somente os itens que alteraram desde a última construção.

Build Project1 Reconstrói o projeto inteiro independentemente de os arquivos e formulários terem sido alterados ou não.

Information Exibe informações sobre o projeto.

Make All Idem ao Make, porém executa para todos os projetos.

Build All Idem ao Build, porém executa para todos os projetos.

Options Opções do projeto, como: ícone do executável, nome da aplicação ou opções de compilação.

Page 122: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

122

Run menu

Clicando a opção Run é ativado o menu suspenso correspondente:

Run Compila e executa o projeto.

Attach to Process

Parameters Configura parâmetros 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 interrupção.

Run to Cursor Roda o programa até chegar ao cursor.

Show Execution Point Posiciona o cursor na próxima /coloca o cursor na linha a ser executada (execution point).

Program Pause Executa pausa no programa.

Program Reset Para a execução do programa.

Evaluate/Modify Permite colocar um valor ou trocar um valor de uma variável no projeto.

Add Watch Permite a visualização de variáveis.

Add Breakpoint Adiciona um ponto de interrupção na linha em que estiver o cursor.

Page 123: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

123

Component menu

O menu suspenso Componente oferece maneiras de gerenciar seu projeto.

New Component Abre uma caixa de diálogo 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 diálogo onde você pode selecionar um controle registrado para ser adicionado ao seu projeto.

Create Component Template

Permite criar componentes de modelo que podem ser configurados com valores específicos 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.

Database Menu

Explore Executa o Database Explorer.

Form Wizard Cria aplicativo de acesso a banco de dados.

Page 124: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

124

Tools menu

O menu suspenso Tools oferece uma maneira conveniente de gerenciar o IDE.

Environment Options Configura o Editor, o Browser e customiza a aparência da Component Pallete.

Editor Options Fornece um maneira de configurar as funções do IDE

Configure Tools Exibe o Tools Options dialog box.

Debugger Options Personaliza as opções do depurador.

Repository Remove e renomeia as páginas 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 manipulação de icones, bitmap, arquivos de cursor, arquivos de recurso (resouse files).

Window menu

Page 125: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

125

Help menu

Contents Abre o index do help.

About Sobre o Borland C++ Builder, versão etc.

Object TreeView O Object TreeView mostra os objetos inseridos no formulário. Quando selecionamos um objeto no Object TreeView podemos verificar as propriedades deste objeto. Elas aparecem automaticamente no Object Inspector, com sua classe hierárquica correspondente dentro do seu formulário.

Object Inpector O Object Inspector serve para dois propósitos no desenvolvimento de um projeto.

Todo objeto - Visual ou Não Visual – de um projeto em desenvolvimento pode ser acessado pelo Object Inspector. Além disso podem ser definidas ações para esses objetos.

Page 126: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

126

Para melhor entendimento, o object Inspector será dividido em três figuras:

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

A página 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 específica. Não serão abordadas todas; apenas as mais comuns, mais importantes e de maior utilização.

Page 127: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

127

Align Determina o alinhamento do componente.

+ Anchors Define uma posição para fixar âncora do objeto.

AutoScroll Permite o formulário 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 aparência 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 Número utilizado para chamar o Help on-line.

Hint String utilizada em dicas instantâneas.

Icon Define o ícone que aparecerá no lado esquerdo da tela.

Left Posição esquerda.

Name Nome do componente.

Position Define a posição do Form na tela.

PopupMenu Menu de contexto do componente.

ShowHint Define se o Hint será mostrado.

TabOrder A ordem de tabulação do componente, usada quando o usuário tecla TAB.

TabStop Indica se o componente será selecionado quando o usuário teclar TAB.

Tag Propriedade não utilizada pelo Delphi, que pode ser usada como propriedade personalizada.

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

Top Posição superior.

Visible Define se o componente está visível.

Width Largura.

WindowState Define a forma que o Form aparecerá na tela.

Quando houver necessidade de utilização de outras propriedades que não constam nesta lista, pode-se utilizar o help do C++ Builder.

Page 128: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

128

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 código será mostrado e poderão ser inseridos, então, os atributos.

Ao clicarmos na área em branco do lado direito do evento escolhido, geramos um processador de eventos que irá executar o código digitado dentro dele toda vez que o evento ligado a ele, acontecer.

Por exemplo, criamos um botão e, em seguida, criamos um evento OnClick. Toda vez que apertarmos este botão, ele executará uma tarefa (um código) que está registrado dentro do evento OnClick.

Page 129: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

129

Eventos

Evento é qualquer acontecimento relativo a operações realizadas pelo programa. Numa operação, o conjunto de eventos é definido a priori – provisoriamente. Considerando que os eventos devem ser disparados por apenas um comando do usuário por vez, é imperativo ter claro como realizar a ordem em que eles ocorrem. O componente do programa que possui atributos para realizar a programação de eventos é o processador de eventos.

Nesta parte do curso são 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 Declaração do evento

Evento OnActivate Este evento ocorre toda vez que o formulário for ativado. //-------------------------------------------------------------------void __fastcall TForm1::FormActivate(TObject *Sender) {

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

Page 130: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

130

Evento OnClose Este evento ocorre toda vez em que o formulário for fechado //-------------------------------------------------------------------void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action){

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

Evento OnCreate Este evento ocorre toda vez que o formulário for criado. Não se deve confundir este evento com o evento OnActivate, pois um formulário pode ter sido criado mas não está ativo em sua aplicação. //-------------------------------------------------------------------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) {

}

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

Page 131: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

131

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 OnExitEste 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 OnKeyPressEste evento ocorre, por exemplo, quando o cursor está dentro de um EditBox e uma tecla é pressionada.

//-------------------------------------------------------------------void __fastcall TForm1::Button1KeyPress(TObject *Sender, char &Key) {

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

Page 132: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

132

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 OnMouseDownOcorre quando o ponteiro do mouse está sobre o componente e um de seus botões é 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 OnMouseUpOcorre quando um ponteiro do mouse está sobre o componente e um dos botões do mouse, anteriormente pressionado, é solto. //-------------------------------------------------------------------void __fastcall TForm1::Button1MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) {

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

Page 133: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

133

Aplicativos

Vários 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 diálogo New Itens, mostrada na figura a seguir. Há nove guias que podem ser selecionadas. Cada guia oferece possibilidade de criar diferentes projetos. Em seguida à apresentação da guia New,tem-se a descrição sucinta da função de cada guia e dos ícones correspondentes a cada uma, que aparecem nesta janela.

Page 134: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

134

Application

Cria um novo aplicativo Windows. Um aplicativo consiste em um formulário, janelas de código e um arquivo de projeto. Quaisquer arquivos .c, .cpp, .h ou .hpp são chamados de unidades. O arquivo projeto terá uma extensão 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 módulo de dados. Esse é um formulário especial para organizar diferentes módulos de dados dentro de uma ferramenta.

DLL Wizard Cria um arquivo DLL ou aplicativo.

Form Cria um formulário 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 múltiplos 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 cabeçalho.

Paleta de componentes

Uma vez definido o aplicativo a se desenvolver, deve-se montar a paleta de componentes - component palette - com itens que serão necessários a construção do programa. Os objetos constantes dessa montagem é que darão suporte a interface gráfica com o usuário - GUI.

Página Standard

Chama-se página standard a área em que, na primeira tela de um aplicativo, estão localizados todos os itens básicos que compõem a paleta de componentes.

Page 135: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

135

Exemplo

Neste caso, os componentes da paleta de componentes ou da página standard são elementos de controle no padrão Windows, disponíveis para a criação de suas aplicações em C++ Builder.

Os componentes são os seguintes: Componente MainMenu Permite criarem-se menus exatamente iguais ao do Windows.

Componente PopupMenu Permite criarem-se menus flutuantes quando os usuários dão um clik no botão direito do mouse.

Componente Label Permite a exibição de textos em componentes para efeito de identificação.

Componente Edit Permite criar uma caixa de edição com uma linha de texto.

Componente Memo Permite criar uma caixa de edição com várias linhas de texto.

Componente Button Permite criar botões.

Componente CheckBox Permite criar uma caixa de seleção de opções.

Componente RadioButton Permite criar uma caixa de seleção de opções em que somente uma das opções é valida.

Page 136: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

136

Componente ListBox Permite criar uma caixa de listagem com uma relação de itens.

Componente ComboBox Permite criar uma caixa de listagem que combina com uma caixa de edição, sendo possível 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 criação de grupos de botões de rádio.

Componente Panel Permite criarem-se barras de controle, barras de ferramentas, barra de status, paletas de ferramentas entre outras.

Página adicional

O próximo item da paleta de componentes é o Additional – página adicional:

Os componentes da página adicional da paleta de componentes são elementos de controle específicos para o padrão Windows, disponíveis para a criação de suas aplicações em C++ Builder. Sucessivamente, serão descritos todos os componentes das demais páginas, na seqüência em que aparecem na paleta de componentes.

Os componentes da página adicional são: Componente BitBtn Permite a criação de botões com uma imagem do tipo bitmap atribuída a eles, a qual será apresentada ao lado esquerdo da legenda.

Page 137: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

137

Componente SpeedButton Utilizado para criar botões em barra de ferramentas contendo uma imagem em sua face.

Componente MaskEdit Cria uma caixa de edição especial onde o usuário digitará seus dados numa formatação preestabelecida.

Componente StringGrid Apresenta dados de strings no formatado linhas e colunas.

Componente DrawGrid Apresenta dados não strings no formatado linhas e colunas.

Componente Image Apresenta imagens gráficas (ícones, bitmaps) em um formulário.

Componente Shape Permite desenharem-se figuras geométricas básicas como círculos, retângulos.

Componente Bevel Permite desenharem-se figuras geométricas tais como quadrados, triângulos, retângulos, as quais podem ter suas bordas ajustadas para se criarem efeitos do tipo alto e baixo relevo.

Componente ScrollBox Permite criar uma área de exibição cujo conteúdo possa ter sua posição modificada por barra de rolagem.

Componente CheckListBox Cria uma caixa de listagem com uma relação de itens para seleção.

Componente Splitter Adiciona um divisor entre dois controles alinhados para permitir que o usuário redimensione esses controles em tempo de execução clicando e arrastando a linha divisória.

Page 138: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

138

Componente StaticText É como um componente Label, porém inclui uma janela de manipulação; o componente StaticText fornece ao usuário um feedback do estado da aplicação.

Componente Chart Permite a criação de gráficos em tempo de execução.

Página Win32

Os componentes na página Win32 da paleta de componentes são:Tab Control Cria uma página com guias ou componentes de tipo notebook.

Page Control Cria múltiplos componentes de uma caixa diálogo.

Image List Cria uma lista do tipo coleção de imagens. Ajuda a organizar e gerenciar todas as suas imagens para seu projeto em uma localização

Rich Edit Cria um componente memorando RTF. Esse tipo de caixa de edição 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 instalação utiliza esse tipo de barra para mostrar o progresso da atividade de instalação

Page 139: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

139

UpDownCria um botão 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 são combinações de teclas com Crtl-C, que é utilizada para copiar o item selecionado para área de transferência.

AnimateExibe uma janela de controle de animação para gerenciar e exibir arquivos AVI.

DataTimePicketCria uma caixa de listagem para inserir datas ou horas.

MonthCalendarCria um calendário mensal para mostrar e tratar meses.

TreeViewCria um controle que é recuado e exibido em um modo de visualização em árvores. O Windows Explorer é um exemplo de visualização em árvore.

List View Cria um componente que exibe listas em uma coluna.

HeaderControlCria um cabeçalho acima do objeto de colunas.

StatusBarCria um componente barra de status que normalmente é exibido na parte interior de uma janela.

ToolBarCria um componente que permite gerenciar botões e outros objetos. Isso normalmente é colocado logo abaixo da barra de menu principal.

CoolBarCria uma barra que contém controles que podem ser movidos e redimensionados.

Page 140: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

140

PagerScrollerCria um componente que armazena outros componentes em uma área de cliente. Esses componentes podem ser rolados vertical ou horizontalmente.

Página System

Os componentes da página system são: Componente Timer Permite cronometrar eventos em um intervalo de tempo regular.

Componente PaintBoxPermite exibir um desenho em uma área especificada no formulário.

Componente MediaPlayerPermite criar um painel de controle de áudio e vídeo para a reprodução de sons e de vídeo.

Componente OleContainer Permite criar uma área no formulário de ligação entre a aplicação e um servidor OLE.

Componente DdeClientConv Permite estabelecer uma ligação do tipo cliente com uma aplicação Servidora DDE.

Componente DdeClientItem Especifica o item de uma aplicação cliente em uma conversão DDE.

Componente DdeServerConv Estabelece uma conversação Servidora - Cliente DDE.

Componente DdeServerItem Especifica os dados DDE a serem enviados ao cliente DDE.

Page 141: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

141

Página Data Access

Apresenta os seguintes componentes: Componente DataSource Tem como objetivo fornecer um ligação com uma tabela, com uma consulta ou entre componentes usados para manipulação de dados.

Componente ClienteDataSet Tem como objetivo fornecer um ligação com uma tabela, com uma consulta ou entre componentes usados para manipulação de dados.

Componente DataSetProvider Tem como objetivo fornecer um ligação com uma tabela, com uma consulta ou entre componentes usados para manipulação de dados.

Página Data Controls

Os componentes da página Data Controls da paleta de componentes são: Componente DBGrid Permite a criação de uma grade para exibição de dados em forma de tabela.

Componente DBNavigator Permite realizarem-se operações de edição, inserção, eliminação e navegação em um banco de dados.

Componente DBText Permite visualizar um texto dentro de um campo de registro de um banco de dados.

Page 142: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

142

Componente DBEdit Cria uma caixa de edição, permitindo a edição de um campo de registro de um banco de dados.

Componente DBMemo Cria uma caixa de edição do tipo memo (várias linhas) associada a um campo de registro de um banco de dados.

Componente DBImage Permite a exibição de imagens armazenadas em um registro de um banco de dados.

Componente DBListBox Cria uma caixa de listagem com uma relação 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 edição associada a um registro de um banco de dados.

Componente DBCheckBox Cria uma caixa de verificação permitindo selecionar ou não uma opção associada a um registro de um banco de dados.

Componente DBRadioGroup Cria grupos de botões de rádio que representam opções mutuamente exclusivas associadas a um registro de um banco de dados.

Componente DBLookupListBox Cria caixa de listagem para a execução de pesquisas associadas aos campos de registro de um banco de dados.

Componente DBLookupComboBox Cria uma caixa de combinação para a execução de pesquisas associadas aos campos de registro de um banco de dados.

Page 143: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

143

Componente DBRichEdit Cria uma caixa de edição do tipo memo (várias linhas) que permite a exibição e a edição de um texto do tipo TextRich associado ao um registro de um banco de dados.

Componente DBCtrlGrid Semelhante ao DBGrid, cria uma grade para exibição de múltiplos campos associados a múltiplos registros em formato tabela.

Componente DBChart Cria uma área em seu formulário onde podem ser criados gráficos em tempo de execução.

Página BDE

Os componentes da página BDE da paleta de componentes são: Componente Table Permite o acesso a uma tabela de base de dados dentro de uma aplicação.

Componente Query Permite a construção e execução de consultas em um banco de dados do tipo SQL.

Componente StoredProc Permite que a aplicação tenha acesso a procedimentos SQL armazenados em um servidor SQL.

Componente DataBase Tem por objetivo criar uma conexão entre o banco de dados e a aplicação.

Componente Session Tem por objetivo propiciar um controle sobre as conexões entre a aplicação e o banco de dados.

Page 144: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

144

Componente BatchMove Permite realizar operações sobre grupos de registros da base de dados.

Componente UpdateSQLRealiza atualizações em um banco de dados do tipo SQL.

Página Internet

Os componentes da página Internet (somente na versão C++ Builder Cliente/Servidor) da paleta de componentes oferece uma variedade de protocolos de acesso Internet para a sua aplicação no C++ Builder:

Componente Client Socket Acrescenta um componente client socket no seu Form criando uma aplicação TCP/IP, permitindo especificar o servidor e o tipo de serviço oferecido pelo servidor.

Componente Server SocketAdiciona um componente Server socket em um servidor TCP/IP permitindo especificar o tipo de serviço ou o porto de acesso para as requisições da aplicação cliente, aceitando ou não a conexão requisitante.

Componente NMDayTime

Componente NMEcho

Componente NMFinger

Componente NMFtp Controle do Tipo ActiveX, que permite fácil acesso ao Serviço de Protocolo de Transferência de Arquivos (FTP) e dados entre uma máquina remota e outra local.

Page 145: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

145

Componente NMHTTP Controle do Tipo ActiveX, que implementa o cliente de protocolo HTTP permitindo ao usuário acessar documentos do tipo HTML.

Componente NMMSG

Componente NMMSGSERV Controle do Tipo ActiveX Cliente que permite criarem-se aplicações para acessar servidores de notícias.

Componente NMNNTP Permite criar acesso a grupos de discussões.

Componente NMPOP 3Permite criarem-se aplicações de acesso (recebimento de mensagens) a servidores de e-mail do tipo pop3.

Componente NMUUProcessor

Componente NMSMTP Permite criarem-se aplicações 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 fácil acesso ao serviço rede do tipo Protocolo Datagrama Usuário (User Datagram Protocol),podendo ser usado para enviar e receber dados.

Componente PowerSock

Page 146: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

146

Componente NMGeneralServer

Página QReport

O Componente Quick Report da paleta de componentes possibilitam projetar relatórios visualmente. Pode-se criar relatórios com faixas, adicionar títulos, páginas de cabeçalho e rodapés, configurar múltiplos detalhes, sumários e grupos de cabeçalhos e rodapés. Você poderá também criar relatórios a partir de registros de banco de dados e usar o comando on-screen preview para checar os resultados.

Os componentes são: Componente QuickReport Acrescenta recursos de impressão de dados em um formulário transformando-o em relatório.

Componente QRSubDetail Cria uma ligação entre um registro de um banco de dados e um relatório.

Componente QRBand Permite confeccionarem-se relatórios acrescentando ou removendo componentes que serão impressos.

Componente QRChildBand Cria um formulário-filho em que podemos acrescentar ou do qual podemos remover componentes usados para a impressão.

Componente QRGroup

Componente QRLabel Permite a criação de grupos de dados a serem impressos; o texto deverá ser exibido pela propriedade Caption, podendo ser dividido em múltiplas linhas e até mesmo em múltiplas páginas.

Page 147: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

147

Componente QRDBText Exibe em um relatório informações contidas em um registro de banco de dados.

Componente QRExpr Permite a impressão do conteúdo de um campo de registro de banco de dados , cálculos e textos.

Componente QRSysData Permite a exibição de um relatório com informações do sistema.

Componente QRMemo Permite a impressão de uma grande quantidade de textos - fixos ou que são alterados durante a execução de relatório - o campo pode ser configurado verticalmente ou dividido em múltiplas páginas se necessário.

Componente QRRichText

Componente QRDBRichText

Componente QRShape Permite a criação de desenhos geométricos tais como retângulos, círculos, triângulos e linhas em um relatório.

Componente QRImage Exibe uma figura no relatório; pode ser utilizado qualquer tipo de figura suportada pelo C++ Builder.

Componente QRDBImage Permite a impressão de imagens armazenadas em campos binários; todos os formatos gráficos suportados pelo C++ Builder são aceitos.

Componente QRCompositeReport

Componente QRPreview

Page 148: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

148

Componente QRChart Esses componentes permitem a composição, criação e visualização de relatórios dentro de um formulário.

Página Dialogs

Os componentes da página Dialogs da paleta de componentes contém janelas do padrão do Windows que podem ser utilizadas em suas aplicações.

As janelas-padrão fornecem uma interface segura para operações com arquivos para abertura, salvamento e impressão.

Ao abrir-se uma janela como caixa de diálogo, esse componente possibilita que ao executar um procedimento o usuário possa ter alternativas de saída em valores booleanos - falso ou verdadeiro.

Cada componente padrão da caixa de diálogo (exceto o componente PrinterSetup) tem uma configuração de propriedades agrupada na tabela do Object Inspector.

As opções de propriedades afetam a aparência e o comportamento das caixas de diálogo. Para exibir as opções das propriedades, dê um duplo click em Options na tabela Object Inspector. Para fechar uma caixa de diálogo dentro de um programa, utilize o comando CloseDialog. Para modificar a posição de uma caixa de diálogo em tempo de execução, use o Handle, Left, Top, e a propriedade Position.

Os componentes da página Dialogs são:Componente Open Dialogs Exibe uma janela padrão Windows onde o usuário pode especificar o nome de um arquivo para ser aberto.

Componente SaveDialogs Exibe uma janela padrão Windows onde o usuário pode especificar o nome de um arquivo para que este seja salvo.

Page 149: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

149

Componente OpenPictureDialogs Exibe uma janela padrão Windows para seleção e abertura de arquivos gráficos de forma idêntica ao Opendialog Box, com a diferença de que há uma área de visualização.

Componente SavePictureDialogsExibe uma janela padrão Windows onde o usuário pode especificar o nome de um arquivo para que este seja salvo, idêntico ao Save Dialogs Box, exceto por haver uma área de visualização.

Componente FontDialogExibe uma janela padrão Windows onde o usuário pode especificar a fonte, o tamanho e o estilo dos caracteres a serem utilizados.

Componente ColorDialogExibe uma janela padrão Windows onde o usuário pode especificar a cor do componente selecionado.

Componente PrintDialogExibe uma janela padrão Windows onde o usuário pode especificar informações de impressão, tais como tamanho de página e número de cópias.

Componente PrinterSetupDialogExibe uma janela padrão Windows onde o usuário pode especificar o tipo de impressora ou alterar suas configurações.

Componente FindDialogExibe uma janela padrão Windows onde o usuário pode especificar uma string para pesquisa.

Componente ReplaceDialogExibe uma janela padrão Windows onde o usuário pode especificar uma string de pesquisa e uma string de substituição.

Page 150: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

150

Página WIN 3.1

O componentes da página Windows 3.1 da paleta de componentes fornecem elementos de controle para aplicações em Windows 3.1, para manter a compatibilidade com aplicações de versões anteriores.

Muitos destes controles se assemelham aos controles atuais de 32 bits.

Observação Na criação de novas aplicações, não use estes controles.

A seguir, observe uma tabela indicativa de uso de controles:

Controle Win3.1 Substitua por Página 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 página WIN 3.1: Componente DBLookupListCria uma caixa de listagem de dados para a execução de pesquisas associadas em um registro de um banco de dados.

Componente DBLookupComboCria uma caixa de combinação para a execução de pesquisas associadas em um registro de um banco de dados.

Componente TabSetPermite a criação de palhetas onde o usuário pode selecionar opções determinadas; é utilizado em conjunto com o Notebook.

Page 151: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

151

Componente OutlineExibe informações em vários níveis.

Componente TabbedNotebook Cria um componente que pode conter múltiplas páginas, cada uma com a sua própria lista de comandos; o usuário pode selecionar uma das páginas clicando em uma paleta selecionada.

Componente NotebookCria um componente que pode conter múltiplas páginas. Permite ao usuário a mudança de páginas .

Componente HeaderCria uma área definida para exibição de dados; o usuário pode redimensionar cada área de exibição de forma diferente uma das outras.

Componente FileListBoxExibe uma lista de nomes de arquivos em um diretório corrente.

Componente DirectoryListBoxExibe uma estrutura de diretório de um driver corrente; o usuário pode trocar de diretório em uma lista de diretórios.

Componente DriveComboBoxExibe uma lista de drivers.

Componente FilterComboBox Especifica um filtro ou máscara para exibição em uma seleção de arquivos.

Página Samples

Os componentes da página Samples da paleta de componentes são, como o nome indica, exemplos de componentes incorporados a essa página, que permitem ao

Page 152: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

152

usuário montar seus próprios objetos, recorrendo a componentes já disponíveis para uso.

O código fonte destes componentes pode ser encontrado na pasta: CBUILDER3\EXAMPLES\CONTROLS\SOURCE.

Os componentes da página Samples são: Componente PieExibe um gráfico do tipo torta em uma aplicação.

Componente Performance GraphExibe um gráfico do tipo ponto a ponto em uma aplicação.

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 não possui todas as propriedades do componente Edit.

Componente Cgauge Permite ao usuário criar indicadores de acompanhamento de processos, sendo a sua exibição feita em cinco formas diferentes.

Componente CdirectoryOutlineExibe uma estrutura de pastas de um determinado driver.

Componente CcolorGridPermite ao usuário selecionar cores através de um gride de 16 cores.

Page 153: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

153

Página ActiveX

Os componentes da página ActiveX da paleta de componentes são objetos ActiveX, completos, utilizados em aplicações portáteis.

Para usar estes componentes, deve-se primeiramente abrir um formulário com biblioteca ActiveX ativada. Após localizar um componente ActiveX no formulário, deve-se clicar com o botão direito do mouse para exibir as propriedades e outros comandos ou caixas de diálogos. Desse modo, pode-se configurar componentes ou modificar valores.

As propriedades das caixas de dialogo ou outros comandos possuem botões de ajuda que exibem informações sobre o componente.

Os componentes da página ActiveX são: Componente Chartfx Permite ao usuário a criação de áreas gráficas altamente personalizadas; você pode definir valores e aparência dentro de um aplicação.

Componente VSSpellPermite acrescentar recursos de correção ortográfica em uma aplicação.

Componente F1BookAcrescenta uma planilha dentro de uma aplicação.

Componente VtChart Permite criar gráficos em 3 dimensões dentro de um aplicação.

Componente GraphExibe um gráfico do tipo gráfico de pinos, como uma outra forma de implementargráficos em 2 dimensões.

Page 154: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

154

Janela de códigos

Quando se opera coma a página ActiveX, trabalha-se em uma área com características de janela do Windows, que é mostrada em seguida. Nela colocam-se todos os componentes-objeto relacionados à aplicação em desenvolvimento.

Em outra janela digitam-se as funções e comandos em linguagemC++: Como se pode ver a seguir, existem alguns códigos nesta janela que são inseridas pelo próprio C++Builder. A designação da janela indica Unit1. Cpp que é um código do próprio programa.

Page 155: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

155

Paralelamente à criação do editor de código, é criado o arquivo .h - h de header, cabeçalho. Nele são declarados todos os objetos e organizados os protótipos das funções. O código criado no arquivo .h é um código implementado na forma de orientação a objetos. O próprio programa o implementa. Para isso é criada uma classe Tform1:

Page 156: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

156

Page 157: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

157

Criação de aplicativo

Nesta parte de nosso estudo da Linguagem C aprenderemos a criar um aplicativo. Trata-se do Win32 GUI (Graphic User Interface).

São apresentados todos os passos necessários para desenvolver um aplicativo e para salvá-lo corretamente.

A exposição será ampliada com a inclusão de exemplos, a partir dos quais você aprenderá, por meios práticos, a usar os conceitos de objetos, propriedades, métodos e eventos em programas visuais.

Criação de aplicativo

Programa aplicativo é aquele destinado a auxiliar o usuário na realização de determinadas tarefas ou atividades pessoais, como, p. ex., o processador de texto e a planilha eletrônica; programa de aplicação específica. Também se diz apenas aplicativo ou programa utilitário.

É preciso não confundir aplicativo com software.

O software pode ser: Em um sistema computacional, o conjunto de componentes que não fazem parte

do equipamento físico propriamente dito e que incluem instruções e programas com dados a eles associados, empregados durante a utilização 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 não fazem parte do equipamento físico mas diferem quanto ao nível de abrangência de cada um. O conceito de software diz

Page 158: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

158

respeito a elementos computacionais mais complexos que um aplicativo que se destina a utilização em tarefas específicas.

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 opção File/New/Application, como mostra a figura:

Page 159: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

159

Quando uma aplicação é iniciada, aparecerá sempre a janela de Edição de Códigos Unit.cpp e seu editor formulário 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 padrão. Salvando o projeto em branco, você estabelece automaticamente o encaminhamento dele para a pasta correspondente que você criou. Além disso, é possível salvar o projeto apenas clicando o ícone Save.

Para salvar o aplicativo você deve selecionar File/SaveAll.

Antes de clicar o nome padrão dado à unidade ou ao arquivo fonte, procure a pasta que foi criada anteriormente. Você deverá salvar o arquivo de código fonte com um nome diferente do arquivo do projeto. Caso salve com o mesmo nome, poderá vir a perder seu código fonte.

Page 160: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

160

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 extensão é *.cpp.

Após 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 código-fonte do arquivo de projeto foram utilizados os nomes Exemplo_Unit para o código fonte e Exemplo_Prj para o arquivo de projeto.

Lembre-se de que é uma boa prática de programação salvar sempre seu aplicativo freqüentemente, evitando assim possíveis perdas de programas.

Page 161: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

161

Exemplo de montagem de formulário Em Informática, formulário é a janela ou documento que apresenta informações de forma diagramada. As informações são dispostas de acordo com estrutura predeterminada indicando campos a serem preenchidos ou modificados. Desse modo, o usuário pode introduzir ou modificar informações. O formulário é especialmente usado em programas de bancos de dados e na Web.

Nesta parte de nosso curso, aprenderemos a montar um formulário com o auxílio do aplicativo da linguagem C++builder.

O exemplo básico inicial apresenta a identificação do formulário e um botão que oferece possibilidade de encerrar ou interromper a sua apresentação. para fazer esse exercício, deve-se localizar na tela, o botão Form e utilizar as alternativas de construção que a janela oferece.

O aspecto final a que se pretende chegar é o seguinte:

Clicando-se o botão Fechar, encerra-se o aplicativo.

Terminado esse exercício, passamos aos próximos passos da montagem de um formulário. A janela Form do C++builder coloca as opções necessárias para inclusão de componentes do formulário. No quadro a seguir vêem-se as opções de objetos apresentados pela janela na coluna Objeto, as propriedades que possuem e na coluna valor deve ser especificada a designação a ser usada pelo usuário.

Page 162: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

162

Objeto Propriedade Valor

Name FrmSenai Form1

Caption SENAI

Name LblSenai Label1

Caption SENAI - São Paulo

Name BtnFechar Button

Caption

Código-fonte

Além da possibilidade de montar o formulário interagindo com o programa, pode-se recorrer a modalidade de escrever códigos-fonte para o programa como é mostrado a seguir://——————————————————————-

#include <vcl.h> #pragma hdrstop #include”Senai_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 formulário, um objeto Edit para visualização dos valores e botões que permitam a entrada de valores via mouse.

Page 163: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

163

O aspecto final a que se pretende chegar é o seguinte:

A configuração dos objetos fica, então, como mostra o seguinte quadro:

Objeto Propriedade Valor Caption Calculadora Form1 Name Form1 Text Em branco Edit name EdtVisor Caption SQRT Button Name Btn_Raiz Caption 1/X Button Name Btn_Inverso Caption CE Button Name Btn_CECaption OFF Button Name Btn_OFFCaption 7 Button Name Btn_Sete Caption 8 Button Name Btn_Oito Caption 9 Button Name Btn_Nove Caption / Button Name Btn_divisor Caption 4 Button Name Btn_Quatro Caption 5 Button Name Btn_Cinco Caption 6 Button Name Btn_Seis Caption x Button Name Btn_Mult Caption 1 Button Name Btn_UmCaption 2 Button Name Btn_Dois Caption 3 Button Name Btn_Tres Caption - Button Name Btn_Menos Caption 0 Button Name Btn_ZeroCaption , Button Name Btn_Vírgula Caption = Button Name Btn_Igual Caption + Button Name Btn_Mais

Page 164: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

164

Código 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) {

Page 165: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

165

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 usuário. Esta contagem poderá ainda ser progressiva ou regressiva dependendo da seleção de opções que se fizer. Aprenderemos a montar um contador com auxílio da linguagem C++Builder.

Page 166: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

166

O exemplo básico inicial apresenta a identificação 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 próximos passos da montagem de um contador são feitos na janela do contador do C++builder, que apresenta opções para inclusão de componentes do contador.

No quadro abaixo são mostrados os objetos existentes no projeto, as propriedades que possuem e na coluna valor deve ser especificada a designação a ser usada pelo usuário.

A configuração dos objetos fica, então, como mostra o seguinte quadro:

Objeto Propriedade Valor Name FrmContador

From 1 Caption Contador Name LbiContador

Label 1 Caption CONTADOR Name Lbl Contagem

Label 2 Caption CONTAGEM Name LblPreset

Label 3 Caption Preset Name LblValor

Label 4 Caption 0 Name BtnSair

Button 1 Caption &Sair Name BtnReset

Button 2 Caption &Reset

Page 167: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

167

Name BtnIniciar Button 3 Caption &Iniciar

Name BtnPausa Button 4 Caption &Pausa

Name EdtPreset Enabled False Edit 1 Text " " Name RbtnProg

RadioButton 1 Caption Progressivo Name RBtnRegressivo

RadioButton 2 Caption Regressivo Bevel Name Bevel 1

Name TimetProg Timer 1 Enabled False

Name TimerRegr Timer 2 Enabled False

Código-fonteAlém da possibilidade de montar o formulário interagindo com o programa, pode-se recorrer à modalidade de escrever códigos-fonte para o programa como é mostrado a seguir:

Page 168: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

168

Page 169: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

169

Disposição de imagens em formulários

Muitos formulários apresentam, além de informações em linguagem verbal-escrita, informações em linguagem não-verbal como: fotos, desenhos, esquemas, tabelas, gráficos, etc. Essas imagens precisam ser dispostas em locais adequados, para que o usuário possa introduzir ou modificar informações na janela de modo eficaz.

Nesta parte de nosso curso, aprenderemos a montar um formulário com inclusão controlada de imagens. Para isso, continuaremos a contar com o auxílio do aplicativo da linguagem C++builder.

Utilizaremos no processo de trabalho, objetos que o C++builder apresenta disponíveis para controle do posicionamento correto de uma imagem no arquivo Form.

Em nosso caso, o formulário 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 necessários para inclusão no FORM:

Page 170: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

170

Iniciaremos colocando no Form, o componente Main Menu da guia standart. Depois selecione o componente e dê-lhe um duplo clique. Aparecerá, então, como mostra a figura a seguir, o editor de menu. Nele, configuraremos o menu principal:

Toda a configuração do MainMenu é feita por meio do Object Inpector.

Os procedimentos para inclusão dos demais objetos seguem sempre a mesma seqüência usada para inclusão do MainMenu.

Para configurarmos o PopupMenu também procedemos como no caso do MainMenu. Os objetos, suas propriedades e indicações acham-se enunciados no quadro a seguir:

Objeto Propriedade ValorName FrmImagem Caption IMAGEM Form1PopupMenu Pmenu1

MainMenu1 Name MMenu1 PopupMenu1 Name PMenu1

Name Tbar1 ToolBar1

Images ImageList1 Name SbtnExecutar Caption Executar SpeedButton1 Gliphy (TBitmap) Name SbtnExecutar Caption Executar SpeedButton1 Gliphy (TBitmap) Name SbtnExecutar Caption Executar SpeedButton1 Gliphy (TBitmap) Name Img1

Image1 Transparent true Name Img2

Image2 Transparent true ImageList1 Name ImgList1

Page 171: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

171

Código-fonteAlém da possibilidade de montar o formulário com inclusão controlada de imagens, interagindo com o programa, pode-se recorrer a modalidade de escrever códigos-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; //Valor incial de i Timer1->Enabled=false; //Desabilita o Timer do Sistema Img2->Visible=false; //Torna a imagem1 visivel Img1->Visible=true;

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

Page 172: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

172

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

Page 173: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

173

Editor de textos

Em continuação 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 básicos para redação e edição de textos tais como: inserção e exclusão de caracteres por digitação, quebras de linha, e opções para gravar e carregar texto como um arquivo em disco. Não há recurso de formatação nesse tipo de editor.

Trabalharemos com duas janelas interconectadas: numa será feita a edição de texto e na outra, montado o formulário – Form.

Os elementos de configuração dos formulários relacionados a essas duas janelas devem ser acionados na opção FormStyle da DialogBox.

Page 174: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

174

Etapas de operação

Primeiramente abra os dois formulários em seu aplicativo e coloque os objetos como mostram as figuras a seguir:

Page 175: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

175

Configure, em seguida, os Main Menus como aprendido anteriormente e, logo após, os objetos e os dois formulários conforme o quadro abaixo:

Configuração do Form1 Objeto Propriedade Valor

Name EditForm

Caption Editor de Texto C++

FormStyle fsMDIForm Form1

Menu MainMenu1

MainMenu1 Name MMenuEdit

OpenFileDialog1 Name OpenFileDialog

Configuração do Form2 Objeto Propriedade Valor

Name FrameForm

Caption Untitled Form2

FormStyle fsMDIChild

OpenFileDialog1 Name OpenFileDialog

SaveFileDialog1 Name SaveFileDialog

FontDialog1 Name FontDialog

PrinterSetupDialog1 Name PrinterSetupDialog1

PrintDialog1 Name PrintDialog1

MainMenu2 Name MMenuForm

RichEdit1 Name

PopupMenu1 Name PMenu1

Após a configuração desses objetos devemos configurar na DialogBox , as opções OpenFileDialog e o SaveFileDialog.

Selecione o componente OpenFileDialog e no Object Inspector a propriedade DefaultExt. Coloque o valor TXT que define a extensão padrão do arquivo texto.

Page 176: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

176

Na propriedade Filter clique o botão reticências. A caixa Filter Editor será, então, exibida:

Repita os mesmos passos para o SaveFileDialog.

Após feita toda a configuração digite o código fonte do programa, mostrado a seguir.

Código 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()){

Page 177: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

177

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

Código 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); } }

Page 178: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

178

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

Page 179: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

179

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

Page 180: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

180

Page 181: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

181

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 coleção organizada e inter-relacionada de dados constantes. Nesse tipo de estrutura, campo e registro são conceitos básicos de organização das informações.

O banco de dados com que trabalharemos é um banco orientado a objetos. Quando se fala em programação orientada a objetos, refere-se a qualquer módulo que contenha rotinas e estruturas de dados, capaz de interagir com outros módulos similares, trocando mensagens.

Esse tipo de programação 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 seqüência: 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.

Page 182: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

182

Para criação 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:

Page 183: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

183

Observe que nessa caixa temos a informar: o nome do campo, tipo, tamanho e se este campo é ou não campo de referencia para chave primária. Campo, em banco de dados, é cada um dos tipos de dados que descreve um registro.

Para acessar cada um dos campos podemos usar o botão 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 botão direito. Podemos, além disso, atribuir valores mínimos e máximos a um determinado campo, caso seja necessário.

Após as definições dos campos devemos salvar clicando Save As. Nesse momento será exibida uma caixa de gravação onde informaremos o nome do banco e o local em que será gravado.

Formulário para acesso ao banco de dados

A seguir, vamos montar um formulário de acesso a esse banco de dados criado. Para isso deve-se utilizar o DataBase Form Wizard.

A seqüência de procedimentos é a seguinte: 1. No menu DataBase selecione o item Form Wizard. É apresentada a seguinte tela:

Page 184: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

184

Nesta tela temos opções para formulário simples ou formulário com relacionamento entre tabelas. No nosso caso trataremos do formulário simples.

Na etapa seguinte é preciso decidir se o acesso ao formulário será feito por: TQuery que quer dizer por comandos do SQL ou por; Tabele, ou seja, por funções e comandos implementados por programação.

Para o caso de acesso por tabela, selecionamos no quadro anterior, TTable. Clique em seguida, o botão Next para acessar a próxima janela.

2. Nesta caixa informaremos qual tabela queremos acessar e em seguida clicamos o botão Next:

Page 185: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

185

3. Na próxima tela apresentada devemos informar quais campos poderemos visualizar no formulário. Podemos trabalhar selecionando os campos um a um, ou todos de uma só vez pelos botões > ou >>. Em nosso caso, selecionamos todos os campos e clicamos o botão Next:

Interface do formulário

O programa oferece as seguintes opções para apresentação do formulário na interface: Horizontal; Vertical e Grid – grade.

Como a opção Vertical possibilita a inserção de labels - rótulos, selecionamos essa opção e em seguida clicamos o botão Next:

Page 186: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

186

E na opção de disposição dos labels selecionamos a opção Left. Em seguida, clicamos o botão Next novamente:

Na próxima tela definimos se será um formulário principal ou um Datamodules – módulos de dados. Selecionamos a opção de formulário principal e em seguida o botão Finish. Veremos em seguida o formulário pronto. Observe a seqüência a seguir:

Page 187: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

187

Porta paralela

A comunicação de dados entre o computador e equipamentos externos ocorre por meios de conectores existentes na parte traseira dos PCs.

Esses conectores são denominados: Porta paralela e Porta serial.

A porta paralela é a interface que apresenta uma única linha para a comunicação de dados, permitindo a transmissão de apenas um bit de cada vez.

A porta serial é a interface que apresenta mais de uma linha de comunicação de dados, para o envio simultâneo de vários bits.

A porta paralela é também conhecida como porta de impressora. Entretanto foi projetada para funcionar, também, como uma porta genérica de entrada e saída.

Para a primeira porta paralela encontrada no PC damos o nome de LPT1; para segunda LPT2 e assim consecutivamente.

Uma porta paralela é constituída por três registradores. Registradores são 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 são: De dados; De estado e De controle.

Page 188: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

188

A conexão de uma porta paralela é feita por intermédio de pinos que estão, fisicamente, em um conector tipo DB de 25 pinos – DB 25. Na impressora os pinos estão em um conector Centronics. No quadro a seguir, apresentam-se os pinos de cada ponto DB25 e Centronics 36, com suas respectivas funções.

Apresentação dos pinos conectores DB25 e Centronics 36 Pinagens

Sinal Nome DB 25 Centronics

36Descrição

STROB Strob 1 1

Indica se os dados estão prontos ou não para serem transmitidos. 0 = Dados prontos 1 = Dados não prontos

ACK Acknowledge 10 10 Indica que a impressora está preparada para receber dados.

BUSY Busy 11 11 Indica que a impressora não está preparada para receber dados.

PE Paper end 12 12 Indica que a impressora está sem papel para impressão.

SELECT OUT Select out 13 13 Indica que a impressora está no estado “on line”, pronta para receber informação.

AUTO FD Auto Feed 14 14 O papel avança para o começo da próxima linha.

ERROR Error 15 32 Indica quando ocorre algum tipo de erro: termino do papel, impressora desativada...

INIT Init 16 31 Reinicializa a impressora e limpa o buffer de impressão.

SELECT IN Select Imput 17 36 Os dados só podem ser transferidos para a impressora quando esta linha estiver em nível lógico baixo.

D0 a D7 Dados 2-9 2-9 Entrada de dados.

GND Ground 18-25 19-30 Conexão ao terra.

Page 189: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

189

Apresenta-se, a seguir, a localização física de cada pino no conector DB25:

Registrador de dados SPP 0x378 – Saída

Esse registrador é utilizado todas as vezes que precisamos: Enviar sinais para fora do computador; Ligar e desligar dispositivos e para transferência 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 localização pinos do registrador no conector.

Page 190: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

190

Registrador de status SPP 0x379 – Entrada

A Porta Paralela, no modo padrão (SPP), tem cinco entradas. Isso é útil quando nós 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 são: 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 também são conhecidos como: S7 (Busy), S6 (Ack), S5 (Paper end), S4 (Slct out), e S3 (Error). A letra S siginifica registrador de STATUS, e o número, significa a posição do bit no byte. Observe que há um correspondência 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 identificação de um bit de Status apresentar um traço acima dela, o sinal será ativo com 0 (zero).

ExemploS7 (Busy).

Page 191: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

191

Registrador de controle SPP 037A – Saída

Por intermédio desse registrador pode-se controlar, a partir da Porta Paralela, mais quatro aparelhos eletroeletrônicos, enviando sinais para o registrador 37Ah. Ao enviarmos um byte para este registrador, deveremos manter os quatro últimos bits (nibble alto) inalterados, para não interferir no registrador 378h.

Observe o esquema de um registrador de controle SPP 0x37A – Saída:

Quando se trabalha com o endereço do registrador 37Ah, é preciso ter sempre em mente que, para ativar os sinais Slct In, AutoFeed e Strob, é necessário 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 também são conhecidos como C3 (Slct In), C2 (Init), C1 (Auto Feed) e C0 (Strob). A letra C significa registrador de CONTROLE, e o número significa a posição do bit no byte. Observe, no esquema, a correspondência entre o bit 3 e o C3, bit 2 com C2 e assim por diante.

É importante observar que quando a identificação de um bit de Controle apresentar um traço acima dela, o sinal será ativo com 0 (zero).

Exemplo3C (Slct In), 1C (Auto Feed) e 0C (Strob).

Page 192: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

192

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 básico de circuito a partir do qual se fará a programação para funcionamento.

O modelo apresentado difere do que será apresentado em aula porque neste caso, o que se pretende é explicar conceitos básicos de funcionamento do circuito e de programação para acionar a porta paralela em Turbo C.

Observe a estrutura básica de um circuito a partir da qual se fará a programação que é vista em seguida.

+V5V

12345678910111213

141516171819202122232425

J1

74LS641P1P2P3P4P5P6P7P8P9P10 P11

P12P13P14P15P16P17P18P19P20

U1

R8330R

R7330R

R6330R

R5330R

R4330R

R3330R

R2330R

R1330R

Page 193: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

193

Código 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 básico de aplicativo a partir do qual se fará a programação para funcionamento.

Page 194: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

194

Código 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; //endereço 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;//endereço 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;//endereço 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 variável controle _DX=0x37A;//endereço 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;//endereço 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 }

Page 195: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

195

S5S4S3S2

+V5V

S1

74LS641P1P2P3P4P5P6P7P8P9P10 P11

P12P13P14P15P16P17P18P19P20

U3

+V5V

74LS641P1P2P3P4P5P6P7P8P9P10 P11

P12P13P14P15P16P17P18P19P20

U2

+V5V

12345678910111213

141516171819202122232425

J1

74LS641P1P2P3P4P5P6P7P8P9P10 P11

P12P13P14P15P16P17P18P19P20

U1

R18

R2310k

R2210k

R2110k

R2010kR13aR18

100R

R1910k

R12330R

R11330R

R10330R

R9330R

R8330R

R7330R

R6330R

R5330R

R4330R

R3330R

R2330R

R1330R

Page 196: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

196

Page 197: Linguagens de Programacao

Linguagens de programação Avaliado pelo Comitê Técnico de Eletroeletrônica/2007.

SENAI-SP – INTRANET CT080-09

197

Porta serial

Porta serial é a interface que apresenta uma única linha para a comunicação de dados, permitindo a transmissão de um bit de cada vez.

Existem vários 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 programável e trabalha em modo assíncrono. É possível programar bits de paridade, de partida e de parada. Sua taxa de comunicação pode chegar á 115.200 bauds. Pode-se transmitir, dependendo da programação 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 saída RS232C, quando inativa fica transmitindo “marca” (-12V). Quando ativa, transmite “espaço” (+12V).

Os quadros a seguir mostra dados relacionados à conexão da porta digital:

Níveis de transmissão Sinal Marca Espaço

Tensão -12V +12V

Binário 1 0

Page 198: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

198

Relação dos sinais TTL e RS232C TTL RS232C

Tensão Lógico Tensão Lógico

0V 0 +12V ON

5V 1 -12V OFF

EndereçosPorta Endereço

COM1 3F8h

COM2 2F8h

COM3 3E8h

COM4 2E8h

Pinos da porta serial

Para se ter acesso a informações nos micro computadores por intermédio de dispositivos computacionais, postos em comunicação entre si, usa-se um conector do tipo DB de 9 ou 25 pinos.

DB9 DB25

O quadro a seguir mostra a distribuição dos pinos e sinais nos dois conectores:

DB9 DB25 Sinal PC

3 2 TD Transmitted data saída

2 3 RD – Received data entrada

7 4 RTS – Request to send saída

8 5 CTS – Clear to send entrada

6 6 DSR – Data send ready entrada

5 7 GND - Ground terra

1 8 CD – Carrier detect entrada

4 20 DTR – Data terminal ready saída

9 22 RI – Ring indicator entrada

Page 199: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

199

Para conectarmos dois equipamentos pela porta serial, temos que utilizar um cabo denominado “NULL – MODEM CABLE” cuja configuração é apresentada no seguinte esquema:

DTE DTE9 pinos (macho)

25 pinos (macho)

25 pinos (macho)

9 pinos (macho)

3 2 2 3

2 3 3 2

7 4 4 7

8 5 5 8

6 6 6 6

4 20 20 4

5 7 7 5

Exemplo de como acionar a porta RS232C No exemplo a seguir, apresenta-se o modo de criar uma aplicação que transmita caracteres pela interface RS232C.

Inicia-se com a criação de uma biblioteca para o acesso aos registradores, como mostrado logo a seguir. Para isso utilizam-se as opções Header File em New Itens e salva-se com o nome ioport. h no mesmo diretório em que será salvo nosso aplicativo.

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

Page 200: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

200

A configuração dos objetos fica como mostra o seguinte quadro:

Objeto Propriedade Valor

Name FrmSerial Form1

Caption Comunicação serial

Edit1 Name EdtSerial

Edit2 Name RedtSerial

Name Timer1

Enabled False Timer1

Interval 10

Bevel Name BvlOpcao

Name BBtnLimpar Button1

Caption &Limpar

Name BtnAbrir Button2

Caption &Abrir

Name BBtnSair Button3

Caption Sair

Name RBntCom1 RadioButton1

Caption Com1

Name RBntCom2 RadioButton1

Caption Com2

Código fonte #include <vcl.h> #include <dos.h> #pragma hdrstop

Page 201: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

201

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

Page 202: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

202

//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() { //Declaração 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; } } } //——————————————————————-

Page 203: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

203

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

} //——————————————————————-

Page 204: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

204

Créditos Comitê Técnico de Eletroeletrônica/2007

Elaborador: Sergio Luiz Volpiano Ilustrador: José Luciano de Souza Filho Priscila Ferri

Antonio Marcos Costa Etelmir Arraez Lopes Junior Jair Pereira da Silva Julio César CaetanoMarcos Antonio Felizola Marcos Zucareli Reno Mario Yagami Filho Nilton Serigioli Sérgio Luiz Volpiano

Page 205: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

205

Anexo

Arquivos usados e produzidos pelo sistemaExtensão Tipo Descrição

BMP, ICO, WMF, JPG, JPEG, EMF

Arquivos gráficos Arquivos de imagens nos formatos bitmap e ícone

DFM Arquivo de formulário gráfico

Arquivo binário, contendo as propriedades e componentes de um formulário.

~DF Backup de DFM Backup de um arquivo DFM.

BPR Arquivo de Projeto Contém os componentes de um projeto e permite uso de código de inicialização do mesmo.

~CP Backup de Projeto Backup de um arquivo DPR.

EXE Arquivo executável link editado

Arquivo executável, contendo as unidades, recursos e formulários compilados de um projeto.

CPP Código fonte de uma unidade

Arquivo contendo o código fonte de uma Unit uma unidade em C++, o qual pode ser de um formulário ou arquivo fonte independente. Sendo de um formulário , contém a sua definição de classe e o código dos seus manipuladores de eventos.

~CP Backup de um CPP Backup de um arquivo CPP.

RES Arquivo de recursos compilado

Arquivo binário associado ao projeto contendo recursos compilados; por padrão, contém o ícone do projeto.

H Arquivos de cabeçalho

Este arquivo é super importante, e essencial, pois é usado constantemente nas aplicações. Ele contém informações sobre cada arquivo CPP e pode também conter funções, procedimentos etc.

Page 206: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

206

Código fonte

Há cinco tipos de dados básicos em C++, que são caracteres (char), inteiro (int), ponto flutuante (float), ponto de precisão 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 dígitos de precisão 32

Double Dez dígitos de precisão 64

Long double Dez dígitos de precisão 80

Os métodos comuns são descritos na tabela abaixo:

Método Descrição

Create Cria um novo objeto de uma classe.

Free Destrói um objeto e libera a memória ocupada por ele.

Show Torna o componente visível.

Hide Torna o componente invisível.

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 atrás dos outros.

ScrollBy Move o componente.

ScaleBy Gradua o componente em determinada escala.

SetBounds Muda a posição e o tamanho do componente.

Page 207: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

207

Funções

Aqui serão mostradas apenas algumas.

Função (Function) Descrição

AbsRetornar um valor absoluto, que na matemática é um número positivo. Ex: ABS(3) = 3.

AnsiCompareFileName Faz comparação de nomes de arquivos.

AnsiCompareStr Faz comparação de Strings. É sensitível, ou seja, maiúsculas e minúsculas são diferentes.

AnsiCompareText Idem, só que não é sensitível.

AnsiExtractQuoteStr Tira as aspas simples de uma String.

AnsiLowerCase Faz a conversão de uma String maiúscula para minúscula.

AnsiLowerCaseFileName Faz a conversão do nome de arquivo para minúscula.

AnsiPosRetorna a posição de uma SubString em uma String.

Ex: AnsiPos (‘a’, ‘Casa’)=2.

AnsiStrLower Faz a conversão de uma String para minúscula.

AnsiStrPos Localiza uma SubString em uma String.

AnsiStrUpper Faz a conversão de uma String para maiúscula.

Bof Início de um arquivo.

Ceil Arredonda um no para cima.

Char Retorna o caracter ASCII de um valor.

CompareStr Compara Strings (sensitivo).

CompareText Compara Strings (não sensitivo).

Copy Copia uma SubString de uma String.

CreateDir Cria um novo diretório.

CurrToStr Converte valor em moeda (currency) para String.

Date Retorna a data atual.

DateTimeToFileDate Faz a conversão de uma data e hora para o padrão DOS.

DateTimeToStr Faz a conversão de uma data e hora para String.

DateToStr Faz a conversão de uma data para String.

DayOfweek Retorna o dia da semana.

DeleteFile Apaga um arquivo do disco.

DiskFree Retorna o espaço vazio no disco.

DirectoryExists Retorna, se o diretório existe.

DiskSize Retorna o tamanho do disco.

Eof Fim do arquivo.

ExtractFileDir Retorna o nome do arquivo.

ExtractFileDrive Retorna o drive de localização do arquivo.

ExtractExt Retorna a extensão do arquivo.

Page 208: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

208

ExtractFileName Retorna a extensão e o nome do arquivo.

ExtractFilePath Retorna o caminho e o disco de localização 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 diretório atual.

GetDir Retorna o nome de um diretório.

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 número.

IsLeapYar Retorna se o ano é bissexto.

LowerCase Retorna uma String em minúsculo.

MessageDlg Mostra uma caixa de mensagem e permite escolha de resposta.

MessageDlgPos Determina a posição 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 número é ímpar.

Pos Retorna a posição de uma SubString em uma String.

Page 209: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

209

Random Gera um número randônico.

RemoveDir Elimina um diretório vazio.

RenameFile Muda o nome de um arquivo.

SelectDirectory Mostra uma caixa de diálogo para seleção de um diretório.

SetCurrentDir Muda de diretório.

Str Faz a conversão de um número (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 minúscula.

StrMovie Copia bytes de uma String para outra.

StrToCurr Faz a conversão de String para Currency.

StrToDate Faz a conversão de String para Data.

StrToDateTime Faz a conversão de String para Data e Hora.

StrToFloat Faz a conversão de String para Float.

StrToInt Faz a conversão de String para Inteiro.

StrToInDef Faz a conversão de String para Inteiro, de modo default.

StrToTime Faz a conversão String para Hora.

StrUpper Faz a conversão de String para maiúscula.

Sum Soma os elementos de um array.

AppendStr Acrescenta uma String no fim de outra.

AssingFile Dá o nome para um texto na memória na hora de salvar.

Append Adiciona uma linha de texto a um arquivo já existente.

Beep Executa um beep (sonoro).

Break Interrompe a execução de um laço (For, While e o Repeat).

ChDir Troca de diretório.

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 variável dinamicamente.

Read Lê dados em um arquivo.

Randomize Prepara a CPU para gerar números aleatórios.

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.

Page 210: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

210

Mensagens

MessageBox A função MessageBox usa as caixas padrões do Windows. Ela é formada no seguinte estilo: messageBox (No, Mensagem, Título, Tipo).

No - identifica se a mensagem será de modo Modal (o usuário tem que responder para acessar a janela) e os tipos de botões e ícones que serão usadas na mensagem; Mensagem - o texto da mensagem propriamente dito; Título - o título da mensagem.

Uma mensagem com botões Sim, Não, Cancelar deverá ser assim: MessageBox ( 0, “Você quer realmente sair?” , “Teste” , 3+32+8192 ).

Segue a tabela de parâmetros da função MessageBox:

No Mostra Pode ser usado no lugar do no

0 Mostra o botão OK. mb_OK ou nada

1 OK e Cancela mb_OKCancel

2 Anular, Repetir e Ignorar mb_AbortRetryIgnore

3 Sim, Não e Cancelar mb_YesNoCancel

4 Sim e Não mb_YesNo

5 Repetir e Cancel mb_RetryCancel

16 Ícone de parada crítica mb_IconStop

32 Ícone de interrogação (?) mb_IconQuestion

48 Ícone de exclamação (!) mb_IconExclamation

64 Ícone de informação (i) mb_IconInformation

0 1o botão com foco mb_DefButton1

256 2o botão com foco mb_DefButton2

512 3o botão com foco mb_DefButton3

0 O usuário tem que responder à mensagem mb_ApplModal

4096 A mensagem não será moda, o usuário terá acesso à janela

mb_SystemModal

8192 Idem ao zero, só que o parâmetro do no tem que ser zero mb_TaskModal

Verificar qual o botão foi pressionado na resposta.

Page 211: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

211

Para isso, a função usa números inteiros, que são retornados. A seqüência é: 1. Botão Ok pressionado; 2. Botão Cancelar pressionado; 3. Botão Anular pressionado; 4. Botão Repetir pressionado; 5. Botão Ignorar pressionado; 6. Botão Sim pressionado; 7. Botão Não pressionado.

1. MessageBox ( 0, “Voce entrou em area restrital!!”, “Informacao”, 0+48+8192); 2. MessageBox ( 0 , “Deseja realmente sair?” , “Questionamento”, 4+32+8192).

Como saber qual botão foi pressionado?

A função retorna valores para cada botão, indicando que ele foi pressionado. Veja a instrução dada anteriormente. Vamos ver a resposta do exemplo em andamento. Se o usuário pressionar o botão “Sim” será retornado o valor 6, se for “Não” 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 <Não>!”) ;

MessageDlg A função MessageDlg também retorna uma mensagem, porém a função MessageBox, nos dá retorno de mais itens e o programador pode criar a mensagem toda em português; já a MessageDlg, aceita a mensagem em português, mas o título somente em inglês, quer dizer: o programador fica preso ao criar suas mensagens. Pessoalmente, raras vezes uso esta função.

Não falarei muito sobre esta função. Darei apenas uma amostra e o leitor decide qual função deve usar.

Page 212: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

212

Ela deve ser usada nesta ordem: MessageDlg (mensagem, ícone, botão, ajuda):Mensagem Texto de mensagem ícone mtWarning , exclamação ! – atenção, aviso mtErro, stop mtInformation, informação i mtConfirmation, interrogação ? mtCustom, sem ícone [mbOk],[mbCancel],[mbAbort],[mbHelp],[mbbotões YesNoCancel],mbOkCancel] e [mbAbortRetryIgnore]. Ajuda caso tenha criado o arquivo de ajuda para o programa, aqui

o programador indica o número do helpcontext.

ShowMessage Esta função retorna uma mensagem simples, não tem nenhum parâmetro. A síntese é: ShowMessage (“mensagem”);

InputBoxA função InputBox é uma mensagem especial, pois ela permite a entrada de dados para o programa e pode ser usada em qualquer função 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);

Page 213: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

213

Referências

SENAI-SP. Técnico em mecatrônica - Linguagens de programação 1. Por Antônio Carlos de Lourenço e Marcos José Sanvidotti. São Paulo, 2000.

SENAI-SP. Técnico em mecatrônica - Linguagens de programação 2. Por Marcos José Sanvidotti. São 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; MENDONÇA, Alexandre. Hardware e interfaceamento.3. ed. MZ Editora.

Page 214: Linguagens de Programacao

Linguagens de programação

SENAI-SP – INTRANET CT080-09

214