Você está na página 1de 25

Engenharia de Processamento Digital II

AGOSTO DE 2007

BY LUIS FERNANDO ESPINOSA COCIAN


ENGENHEIR O ELETRICI STA, M E. - Pr ofessor d o Curso de Engenharia Eltrica da Universidade Luterana do Brasil

Rev. 10

Sumrio
Sumrio............................................................................................2 1. Introduo ................................................................................5
Objetivos Bsicos ............................................................................ 5 Habilidades Bsicas ........................................................................ 5 O que voc ir aprender................................................................... 5 Atividades Prticas de Laboratrio ................................................... 6 O que um computador? ................................................................ 6 Utilidade dos Computadores para a Engenharia ............................... 7 Linguagens e Aplicaes na Engenharia ........................................... 7 Encontrando a Soluo para os Problemas ....................................... 8 A Soluo dos Problemas ................................................................. 9 Ferramentas para o desenvolvimento de Programas ........................ 15 Os Fluxogramas ............................................................................ 18 Problemas Tpicos nos Projetos que podem ser Evitados.................. 24 1.1. 1.2. 1.3. 1.4. 1.5. 1.6. 1.7. 1.8. 1.9. 1.10. 1.11. 1.12.

2.

O C++ Builder e O IDE Ambiente de Desenvolvimento Integrado 26


C++ Builder - Conhecimentos Bsicos ............................................ 26 O IDE do C++ Builder .................................................................... 26 Uma Viso Geral do IDE do C++ Builder......................................... 27 Um Estudo mais Detalhado do IDE do C++ Builder......................... 30 O Sistema de Ajuda ....................................................................... 47 Estrutura e Configurao de um projeto......................................... 58

2.1. 2.2. 2.3. 2.4. 2.5. 2.8.

3.

Os Objetos Componentes ..........................................................63


As Pginas de componentes ........................................................... 63 Propriedades, Mtodos e Gestores de Eventos................................. 77 Os Componentes Visuais e No-visuais .......................................... 82

3.1. 3.2. 3.3.

4.

A VCL - Biblioteca de Componentes Visuais..............................84


Detalhes da VCL............................................................................ 86 Classes de Quadros e Aplicaes.................................................... 89 Classes de Componentes ............................................................... 94 Restries de uso da VCL no C++ Builder ....................................... 97 Exerccio - Quadro Negro ............................................................... 98 Exerccio - Construo de uma Aplicao usando o componente TEdit 100

4.1. 4.2. 4.3. 4.4. 4.5. 4.6.

I I

4.7.

Exerccio - Um Editor de Textos ................................................... 104

5.

Programao Orientada a Objetos em C++ .............................116


O Paradigma da POO em C++ ...................................................... 118 Criao e Destruio de Objetos................................................... 118 Encapsulamento ......................................................................... 120 Construtores e Destrutores.......................................................... 122 Herana ...................................................................................... 123 Abstrao.................................................................................... 130 Polimorfismo ............................................................................... 135

5.1. 5.2. 5.3. 5.4. 5.5. 5.6. 5.7.

6.

Tratamento de Excees........................................................140
Emisso de Excees................................................................... 147 Especificao de Excees ........................................................... 148 Captura de Excees ................................................................... 149 Excees no Tratadas ................................................................ 151 Excees da VCL ......................................................................... 152

6.1. 6.2. 6.3. 6.4. 6.5.

7.

Programao com Threads ....................................................159


Introduo .................................................................................. 159 A Classe Tthread ......................................................................... 160 Inicializao dos Threads ............................................................. 161 Execuo das Threads ................................................................. 163 Controle da execuo de uma Thread ........................................... 164 Coordenao entre as Threads ..................................................... 166 Uso de Recursos Compartilhados ................................................. 166 Sincronizao entre Threads ........................................................ 169

7.1. 7.2. 7.3. 7.4. 7.5. 7.6. 7.7. 7.8.

8.

Criando DLLs.........................................................................171
Tipos de Enlace Dinmico............................................................ 172 DLL e Gerenciamento de Memria................................................ 172 Vantagens do Enlace Dinmico .................................................... 172 Funo Entrada .......................................................................... 173 Quando usar Packages e DLLs..................................................... 173 Criando DLLs no C++Builder ....................................................... 174 Usando DLLs no C++Builder........................................................ 177 Criando DLLs contendo componentes VCL ................................... 180

8.1. 8.2. 8.3. 8.4. 8.5. 8.6. 8.7. 8.8.

8.9. Criando uma Aplicao que chama funes da DLL contendo componentes VCL ..................................................................................... 186

9.

Exerccios e Testes ................................................................189 3

9.1. 9.2. 9.3. 9.4. 9.5. 9.6. 9.7. 9.8. 9.9.

Engenharia de Processamento Digital II Teste 1 de 7 .................. 189 Engenharia de Processamento Digital II Teste 2 de 7 .................. 192 Engenharia de Processamento Digital II Teste 3 de 7 .................. 194 Engenharia de Processamento Digital II Teste 4 de 7 .................. 196 Engenharia de Processamento Digital II Teste 5 de 7 .................. 199 Engenharia de Processamento Digital II Teste 6 de 7 - A............. 203 Engenharia de Processamento Digital II Teste 6 de 7 - B............. 207 Engenharia de Processamento Digital II Teste 6 de 7 - C............. 211 Engenharia de Processamento Digital II Teste 7 de 7 .................. 216

10.
10.1. 10.2. 10.3. 10.4. 10.5. 10.6.

Circuito RL - Tutorial ..........................................................227


Tutorial....................................................................................... 228 Etapa 1 Definio do Problema.................................................. 228 Etapa 2 - A Interface Visual ......................................................... 228 Etapa 3 Fluxogramas ................................................................ 237 Etapa 4 A Programao ............................................................. 240 Exerccios ................................................................................... 244

11. 12. 13. 14.

Consideraes Finais ..........................................................246 Bibliografia ........................................................................247 Anexos - Notao Hngara ..................................................248 Anexos - Slides ....................................................................250

I I

1. Introduo
1.1. Objetivos Bsicos
O material contido neste documento projetado para ajudar o estudante a:
Entender a engenharia. Integrar conhecimentos de vrias disciplinas. Experimentar o processo do projeto. Aprender e praticar habilidades fundamentais. Aprender sobre aplicaes computacionais e grficas. Desenvolver estudos, treinar o trabalho em equipe e praticar as suas habilidades de comunicao.

1.2. Habilidades Bsicas


Este material ir permitir que voc:
Resolva problemas de engenharia. Desenvolva algoritmos computacionais. Adquira conhecimento til da linguagem C e C++. Experimente algumas atividades prticas de laboratrio de engenharia. Atividades Prticas

O ponto principal no escopo da disciplina resolver problemas de engenharia, particularmente queles que podem apresentar soluo pelo uso de sistemas computacionais.

1.3. O que voc ir aprender


O processo de soluo de problemas de engenharia. A linguagem de programao C++. A usar o compilador C++ Builder. A implementar rotinas de I/O e comunicao serial. As convenes de programao. A implementar aplicaes computacionais. A elaborar relatrios das atividades de laboratrio.

Algumas consideraes e suposies sobre os acadmicos so descritas a seguir:


1. Considera-se que o acadmico tenha domnio completo da linguagem de programao C desde antes do incio da disciplina (obtido na disciplina EPD I ou

2.

3. 4.

5.

equivalente) e que tenha tempo disponvel reservado para efetuar o projeto alm das suas outras atividades. Presume-se que o aluno estudar a linguagem C++ ao longo do semestre e que no final do mesmo demonstrar completo domnio da linguagem e da programao orientada a objetos. Considera-se que o aluno tenha acesso a um computador pessoal com sistema operacional Windows e exercite a matria tambm fora do horrio da aula. Presume-se que o acadmico se exercitar de acordo com as apostilas e listas de exemplos colocados no site da disciplina at o primeiro dia do segundo ms de aulas no mximo. Presume-se tambm que o acadmico no faltar s aulas e que assistir com pontualidade (entrada e sada).

1.4. Atividades Prticas de Laboratrio


Aprender os fundamentos da aquisio de dados. Medir e analisar sistemas fsicos. Coletar dados com sistemas de aquisio simples em tempo real. Aprender conceitos bsicos de circuitos lgicos digitais. Programar um microprocessador para controlar dispositivos do mundo-real.

1.5. O que um computador?


Ento, o que um computador? Uma definio pode ser: O computador um sistema ou dispositivo que executa clculos e toma decises lgicas a velocidades de bilhes de vezes por segundo. bom ter sempre presente que um computador no nada alm de um peso morto para segurar porta a menos que algum diga a ele o que fazer. Para isso necessrio de um programador que coloque o conjunto de instrues que o computador ir utilizar para efetuar alguma coisa til. Os computadores processam datas sob o controle de um conjunto de instrues chamadas programas de computador e quem os escreve so chamados de programadores. Os vrios dispositivos fsicos de que compem os computadores so chamados de hardware. A coleo de programas (conjuntos de instrues com fins especficos) chamada de software.

I I

1.6. Utilidade dos Computadores para a Engenharia


Os engenheiros usam computadores para:
Aquisio de dados. Controle de dispositivos. Comunicaes. Jogos. Sistemas expertos. Controle de processos. Anlise de dados. Clculos. Simulaes. Armazenamento de informaes. Automao de processos. Grficos. Segurana. Robtica.

Algumas aplicaes dos chips microprocessados so:


Controle de motores em veculos. Relgios. Sistemas ABS1 Elevadores. Cmeras. Bombas de gasolina. Termostatos. Telefones celulares. Calculadoras. Secretrias eletrnicas. Computadores pessoais. Instrumentos de medio.

1.7. Linguagens e Aplicaes na Engenharia


Existem vrias linguagens de programao, entretanto depois de entender a sintaxe de uma nica linguagem de programao, as outras so fceis de entender. As linguagens a serem utilizadas nesta disciplina incluem a linguagem C e C++. Uso geral: C, C++, Java, Pascal, Fortran, Basic.
1

ABS: Anti-Lock Brake Systems.

Uso especial: MathCad, Matlab, Mathematica, Maple. Aplicaes: Excel, Word, Powerpoint, LabView.

1.8. Encontrando a Soluo para os Problemas


A soluo para um problema envolve a execuo de uma srie de aes em uma ordem determinada. O procedimento da soluo de problemas expresso em termos de aes a serem executadas e pela ordem em que elas devero acontecer chamado de algoritmo. No nosso escopo a busca da soluo no envolve somente a escrita de cdigo, mas tambm o desenvolvimento de uma soluo lgica para o problema.

1.8.1. Estruturas de Controle


As estruturas de controle da ordem da execuo so:
Seqncia: completar as tarefas em certa ordem. Seleo: escolha do conjunto de tarefas a serem completadas baseadas em expresses lgicas (sim ou no). Repetio: completar a mesma tarefa mais de uma vez. Abstrao: usando um conjunto de tarefas simples para completar uma tarefa maior. Por exemplo: a leitura de um byte de um disco requer de um algoritmo que determina onde o byte est, o coloca a cabea leitora na posio correta e ento l o byte quando o disco estiver na posio correta.

1.8.2. A Arte da Programao


A coisa mais importante na vida ser participativo. Woody Allen. A coisa mais importante na programao dos computadores a Sintaxe Mike Miller Programar no um esporte espectador. Para ser bom voc tem que praticar, praticar e praticar. Rick Freuler A aprendizagem da programao entra mais pelos dedos do que pelos olhos Luis Fernando Espinosa Cocian

I I

Para ser bem sucedido nesta disciplina voc dever ser participativo e atento. Se voc faltar a um nico dia, faltar a um tpico inteiro do programa. Cada dia de aula constri mais conhecimento acima da aula anterior e requer do conhecimento adquirido tratado nela. Caso voc tenha que faltar a vrias aulas importante que voc se d conta do que est perdendo. A programao funciona como a operao dos computadores, na forma binria. Isto voc pode estar certo ou estar errado. Voc dever prestar ateno na forma em que as linhas de cdigo so colocadas e prestar especial ateno aos detalhes. A falta de um simples ponto-e-vrgula ou de uma vrgula pode determinar o sucesso ou fracasso dos seus programas. Assim como para aprender a tocar um instrumento musical ou a falar uma lingual estrangeira, voc deve se envolver dedicando tempo para a prtica e sendo hbil em aprender dos seus prprios erros. Qualquer um pode aprender a programar, e algumas pessoas precisam de mais prtica do que de outras.

1.9. A Soluo dos Problemas


1.9.1. Introduo Soluo de Problemas
Os engenheiros devem analisar e resolver uma grande faixa de problemas tcnicos. Alguns desses problemas podem ser simples e de nica soluo, enquanto que outros podem no ter soluo conhecida requerendo de uma equipe de engenheiros de vrias especialidades. Muitos dos problemas de engenharia podem no ter soluo clara. A maioria dos problemas tem mais de uma soluo, de forma que o programador dever baseado na sua experincia tentar adquirir o conhecimento e o entendimento do problema para produzir a soluo que resolve o problema de forma mais eficiente. A soluo de problemas uma arte na qual o engenheiro sintetiza a sua nica soluo. O foco desta disciplina a de resolver problemas que fazem o melhor uso da programao de computadores. A soluo de problemas envolve:
Experincia Conhecimento Processamento Arte

O nosso foco: a soluo de problemas de engenharia assistida por computador. Os computadores so excelentes ferramentas para a soluo de problemas baseados em regras bem determinadas.

1.9.2. Cincia e Arte


Como mencionamos anteriormente, a soluo de problemas requer de uma combinao de cincia e arte. Olhando pelo lado tcnico voc tem a Matemtica, Qumica, Eletricidade, Mecnica, etc., e pelo lado artstico temos assuntos tais como o julgamento, experincia anterior, senso comum, know-how e outros.

Cincia Matemtica Fsica Qumica Eletricidade Mecnica ...

Arte Julgamento Experincia Senso comum Know-how ...

1.9.3. O Mtodo de Engenharia


O uso do mtodo de engenharia uma boa maneira de comear a desenvolver algoritmos de programao e por isso a maioria dos problemas desta disciplina sero resolvidos usando este mtodo. Ele envolve o reconhecimento e entendimento do problema, a coleta dos dados exatos quando necessrio, a seleo dos modelos, teorias e princpios aplicveis natureza do problema, a fazer suposies vlidas e seguras quando no se tiver 100% de certeza de todas as variveis que podem interferir no problema e na sua soluo. Logo ento, se tentar resolver o problema verificando posteriormente os resultados e o desempenho da soluo. No caso em que os resultados no so os esperados, voc dever voltar alguns passos atrs para melhorar a soluo. Para concluir, voc geralmente dever apresentar a soluo para o seu chefe, seus colegas, famlia, amigos ou para qualquer um que pediu para voc resolver o problema. O mtodo de engenharia implementado atravs dos seguintes passos:
Reconhecer e entender o problema. Coletar dados (e verificar a sua exatido). Selecionar as teorias, modelos e princpios aplicveis ao problema.

10

I I

Fazer suposies simplificadoras quando necessrio. Resolver o problema. Verificar os resultados. Apresentar a soluo.

1.9.4. Tipos de Problemas de Engenharia


Os problemas de engenharia podem ser agrupados em vrios tipos. A maioria das pessoas pensa que os problemas de engenharia envolvem a criao de novos produtos. Os engenheiros tambm se envolvem na modificao de produtos existentes. O mercado est sempre procurando por formas de fazer as coisas de forma mais rpida, barata e ao mesmo tempo melhores. Um bom exemplo a evoluo da construo de computadores pessoais nos ltimos trinta anos. Os engenheiros podem estar envolvidos no desenvolvimento ou melhoria de procedimentos ou processos. Por exemplo, ao invs de desperdiar espao para armazenar trs meses de estoque, um engenheiro pode desenvolver um novo processo que produz o produto na demanda (on-demand) e usa o espao do velho almoxarifado para alguma outra coisa. Este tipo de tarefa pode envolver vrios assuntos tais como estatstica, qumica e redes de computadores. Os engenheiros tambm devem levar em conta os fatores humanos. Depois de tudo, se o produto no melhorar a vida das pessoas em geral qual a utilidade dele? Alguns exemplos so o piloto automtico dos carros de passeio, os air-bags de segurana, as escadas rolantes dos aeroportos e ferramentas de gesto. As leis da fsica podem ser discretizadas atravs de modelos matemticos especiais que permitem, junto aos recursos grficos, de simular sistemas reais. Alguns tipos de problemas podem ser:
Criao de novos produtos. o Inveno e conceito. o Reprojeto de um produto existente. Reduo de custos o Fazer mais rpido, barato e melhor. Desenvolvimento e otimizao de processos. o Ex. Processos de Just-in-Time. Fatores humanos. o Melhoria na sade. o Conforto: piloto automtico, escadas rolantes, etc. o Comunicao: telefonia celular, VOIP, etc. Projeto assistido por computador.

11

o o o

Simulaes. Comunicaes. Grficos e diagramas.

1.9.5. Tipos de Informao para a Soluo de Problemas


Parte do processo de soluo de problemas envolve a coleta de informao antes, durante e depois da soluo do problema. Os tipos de informao podem ser agrupados em: levantamentos iniciais, operaes, objetivos, formulao do problema e a soluo escolhida.
Dados iniciais: so informaes sobre as condies iniciais do problema. Operaes: so as vrias aes que podem ser executadas para a soluo. Objetivos: a condio final desejada para o problema. Formulao: o estabelecimento e descrio do problema a qualquer tempo. Soluo: com os dados iniciais, operaes, objetivos e a formulao sendo completamente especificados que permitem alcanar os objetivos definidos.

1.9.6. Passos no Processo da Soluo de Problemas


Agora que se tem uma idia de que tipo de informaes deve ser processado, podem se desenvolver os passos gerais necessrios para a soluo de problemas.
Identificao do problema: primeiro deve se identificar a raiz do problema. No se pode resolver um problema se no se sabe com exatido o que est errado. Voc no poder consertar um aparelho se no identificar o que est estragado nele. 6. Determinar o que requerido para a soluo: o prximo passo olhar para o problema e determinar a soluo requerida usando um pouco de lgica. Listar o que conhecido, o que desconhecido (e se voc pode executar algum teste para coletar maiores informaes), quais sos as restries ou limitaes e, se existem caractersticas especiais que devem ser levadas em conta neste problema. O que conhecido? O que desconhecido? Quais so as restries ou limitaes? Quais so as caractersticas especiais? Desenvolver um plano (algoritmo) de passo-a-passo. 7. Representar a soluo na forma de um diagrama lgico: bastante til representar a soluo de um problema de programao usando diagramas lgicos que mostram como ser resolvido o problema. 8. Executar o planejado: finalmente executar o plano, e enquanto fizer isto revise o que est funcionando e o que no. 9. Analisar a soluo implementada: quando a soluo alcanada, esta pode ficar totalmente como esperado. A soluo implementada deve ser analisada e o plano deve ser revisado e executar novamente quantas vezes for necessrio. Mantenhase no caminho que voc considera como bom e altere as partes consideradas no to boas. 10. Documente os resultados: o processo finaliza quando forem editados os relatrios escritos que descrevem os detalhes da implementao e documenta os

12

I I

resultados obtidos. nesses documentos que o seu chefe vai conhecer que a sua soluo eficiente e que a sua idia funcionou.

1.9.7. A Falha a Me da Inveno: A Histria da Lata de Bebidas


A seguir contada a histria de um dos dispositivos em que as pessoas usam, mas no pensam muito neles. A idia das latas de bebidas bastante velha e tem mudado drasticamente desde a primeira soluo. A seguir so mostradas algumas poucas iteraes da soluo para esse problema e os problemas conseqentes associados s novas solues. Problema 1: Manter alimentos sem deteriorao. Soluo 1: Em 1809 Nicholas Appert inventou um processo para preservar alimentos em garrafas de vidro enchendo-as com gua para matar as bactrias. Ele ganhou um prmio de 12.000 francos do governo francs. Em 1810 Appert escreveu o livro LArt de Conserver que teve bastante sucesso. Problema 2: As garrafas quebram com facilidade. Soluo 2: O ingls Peter Durand inventou a lata selada de lato. Problema 3: Como abrir a lata? Os soldados usavam facas, baionetas e at tiros de fuzil. Uma das latas levadas por um tripulante da expedio de William Parry ao plo norte tinha as seguintes instrues: Corte ao redor perto da borda superior com martelo e talhadeira. A lata (feita de ferro fundido) tinha 5 mm de espessura e uma massa de1 kg (vazia). Soluo 3: Usar uma lata feita de ao (mais forte podendo ser mais fina e leve), e a criao de uma ferramenta especial para abrir latas (voc deve conhecer alguma). Em 1858 o estadunidense Ezra Warner registrou uma patente para o abridor de latas que foi descrito como parte baioneta, parte foice com uma grande lamina em curva. Em 1870 o tambm estadunidense William Lyman patenteou um abridor de latas com uma roda que rodava ao redor de um furo feito no meio da lata. Problema 4: o abridor de Lyman tinha que ser ajustado para cada tamanho de lata e tinha que ser feito um furo exato no centro da lata para a ferramenta ser eficiente. Soluo 4: O abridor de latas moderno foi patenteado em 1925. Ainda h lugar para melhorias nessa rea.

13

Problema 5: As latas amolecem e empenam. Soluo 5: Adicionar um anel de reforo na parte superior e inferior. Ondular a parte lateral. Problema 6: As latas abertas com o abre-latas ficavam com a abertura com bordas grandes e cortantes. Soluo 6: A criao do abridor de ponta. Problema 7: usualmente quando necessrio voc no tinha ou no achava o abridor. Soluo 7: Latas com abridores embutidos descartveis. Problema 8: O que fazer com os abridores depois da lata ter sido aberta. Jogar no lixo? Artesanato? Coloc-la dentro da lata? Soluo 8: Deixar os anis abridores colados parte superior da lata. Problema 9: Algumas pessoas com unhas compridas ou fracas, dedos artrticos no podem abrir as latas. Soluo 9:...etc.etc. etc.

1.9.8. Exemplo de Soluo de Um Problema


Aqui mostrado um problema a ser resolvido na classe usando o mtodo de engenharia. O problema simplesmente encher uma garrafa com pedras. Descrio do Problema: encher uma garrafa com pedras.
Primeiro devemos documentar qualquer suposio que possa ser requerida e; 11. escrever o procedimento passo-a-passo que resolve o problema.

A seguir devem ser feitas as suposies que sejam consideradas seguras de fazer. Podemos assumir algumas tais como que a garrafa existe. importante no fazer suposies muito amplas como aquelas que evitam o problema tais como uma pessoa sabe como encher a garrafa sem nenhuma ajuda. Suposies:
A garrafa existe e est disponvel. As pedras existem e esto disponveis. Existem pedras suficientes para encher a garrafa. A garrafa est vazia (ou no totalmente cheia). Algumas pedras (ou todas) cabem na abertura da garrafa.

A seguir mostrada uma soluo possvel em seis passos.

14

I I

1. 2. 3. 4. 5. 6.

Algoritmo: Colocar a garrafa de boca para cima perto das pedras. Verificar para saber que a garrafa no est cheia. Se estiver, v ao passo 6. Pegar uma pedra e tentar coloc-la na garrafa. Se a pedra for muito grande para caber, descarte-a, e volte ao passo 3. Se a pedra coube, ento v ao passo 2. Pare de encher.

EXERCCIOS PARA CASA


Escreva um detalhado conjunto de instrues (algoritmo) para a substituio do pneu e da cmara interna da roda dianteira de uma bicicleta de 10 marchas. A bicicleta tem pinas de freios que podem ser danificados caso o pneu no estiver totalmente sem ar. A bicicleta deve ficar pronta para andar quando o trabalho descrito no seu algoritmo estiver completo. Organizar o conjunto detalhado de instrues em tarefas lgicas. Documente qualquer suposio que seja feita. O seu chefe solicitou a voc para instruir um novo empregado no uso dos instrumentos de desenho. A sua tarefa explicar como se constri um polgono usando os instrumentos de desenho. Voc decidiu comear com a construo de um dodecgono regular (polgono com doze lados) usando somente uma caneta, uma rgua e um compasso. Assumir que o novo empregado no tem experincia com o uso dos instrumentos de desenho. Voc deve especificar quais instrumentos sero usados. Pode ser til desenhar diagramas simples para ajudar o novo empregado a entender voc de forma mais fcil.

1.10. Ferramentas para o desenvolvimento de Programas


Existem vrias ferramentas e tcnica que podem ser usadas para o desenvolvimento de programas e que so teis na organizao das tarefas na soluo de problemas. Muitas dessas ferramentas esto focadas no

desenvolvimento de algoritmos, na representao desses algoritmos e no refinamento ou estruturao dos algoritmos desenvolvidos. Tcnica de projeto Top-Down: Comear com funes gerais e efetuar vrios passos de refinamento para funes mais especficas.
1. Pseudocdigo: Uso de linguagens artificiais e informais para ajudar o programador a desenvolver os algoritmos. 2. Diagramas lgicos: Representaes alternativas de algoritmos incluindo grficos e diagramas de estados.

15

As tcnicas e ferramentas que sero utilizadas neste documento so: as tcnicas de projeto Top-Down, pseudocdigos e diagramas lgicos. A tcnica mais usada no desenvolvimento de programas (e na soluo dos problemas de engenharia) a tcnica de projeto Top-Down. Esta tcnica comea com a funo global do problema e a sua quebra ou diviso em problemas menores. O pseudocdigo uma ferramenta usada para desenvolver um algoritmo, usualmente numa linguagem escrita informal. Os diagramas lgicos so formas de representao de um algoritmo.

1.10.1. Mtodo Top-Down


Comea com uma formulao simples que descreve a funo global do programa. Esta uma representao completa, embora simples, do programa. A seguir se subdivide a formulao mais ampla em uma srie de tarefas pequenas que so listadas na ordem que devem ser executadas para produzir a primeira formulao. A continuao essas tarefas pequenas so subdivididas em tarefas ainda menores definindo as variveis especficas que possam ser necessrias neste segundo refinamento. Continuam-se subdividindo as tarefas enquanto for necessrio at que o algoritmo esteja completamente desenvolvido. Quando este mtodo for usado combinado com o pseudocdigo, a escrita do programa rpida e direta. Veja o exemplo a seguir: O problema: Os estudantes da turma fizeram o seu primeiro teste. As notas (na faixa de 0 a 10) j esto disponveis. Determinar a mdia das notas da turma para esse teste. Dados: Conjunto de notas e faixa vlida para as mesmas. Desconhecido: Quantidade de notas. Mdia (a ser calculada) Suposies: Uma nota fora da faixa pode ser usada para indicar que todas as notas vlidas foram inseridas. Isto s vezes chamado de flag. Usando pseudocdigo podemos representar o problema global (Top) como:
Determinar a mdia da classe para o teste.

A seguir se efetua o primeiro refinamento:


1. Determinar a mdia da classe para o teste. 1.1. Inicializar as variveis. 1.2. Inserir, Somar e Contar as notas. 1.3. Calcular e Imprimir a mdia da turma.

A seguir continua se refinando cada um dos elementos.

16

I I

2. Determinar a mdia da classe para o teste. 1.4. Inicializar as variveis: 1.4.1. Inicializar o contadores de nmero de inseres com zero. 1.4.2. Inicializar o acumulador de notas com zero. 1.5. Inserir, Somar e Contar as notas: 1.5.1. Inserir a primeira nota. 1.5.2. Enquanto o usurio no inserir o flag de fim: 1.5.2.1. Somar a nota ao acumulador 1.5.2.2. Adicionar um ao contador de notas 1.5.2.3. Inserir a nota seguinte (ou possivelmente o flag) 1.6. Calcular e Imprimir a mdia da turma. 1.6.1. Se o contador de notas for diferente de zero: 1.6.1.1. Calcular a mdia pela diviso entre o valor no acumulador e o nmero de notas inseridas. 1.6.1.2. Imprimir a mdia. 1.6.2. Seno (no caso em que o contador de notas for igual a zero): 1.6.2.1. Imprimir uma mensagem indicando que nenhuma nota for inserida.

MANIPULANDO CASOS ESPECIAIS


Notar a estrutura Se-Seno no problema anterior, que mostra o gerenciamento de um caso especial que tambm chamado de exceo. As excees acontecem tipicamente em avaliaes lgicas, expresses matemticas ou em qualquer entrada permitida ao usurio. As conseqncias de no ter cuidado em manipular todos os casos em geral resultam o desempenho ruim do programa. Voc j deve ter vivenciado a frustrao na presena de uma BSOD2 das verses mais antigas do Windows. A Figura 1-1 mostra uma situao que, a menos que voc seja o piloto do avio, nunca iria esperar acontecer. Desta forma, importante levar sempre em conta as barbaridades que o usurio poder executar quando voc estiver criando um programa ou produto. As excees no vistas pelo programador sero eventualmente criadas pelo usurio final. Por isso, necessrio assegurar que todas as excees possveis esto sendo gerenciadas. Um mtodo bastante popular de teste com usurios finais a liberao de cpias de software beta onde o pblico testa o software e permite fornecer um feedback sobre os problemas encontrados. No caso dos projetos de software de engenharia, isto obviamente nem sempre pode ser feito como no caso de aplicaes militares, controle de reatores nucleares ou em aplicaes em satlites.

BSOD: Blue Screen of Death.

17

Figura 1-1 As possveis excees devem ser gerenciadas.

1.10.2. Alguns Tipos de Diagramas Lgicos


Os mtodos de organizao do pseudocdigo incluem os diagramas lgicos. Alguns tipos de diagramas lgicos so: fluxogramas, mquinas de estado, diagramas de causa-efeito, redes de Petri, diagramas de ao e muitos outros que relacionam informaes mais variadas em seqncias lgicas. Os fluxogramas so representaes grficas de um algoritmo e so apropriados para que os programadores possam visualizar o fluxo dos seus programas. Eles podem ser usados como uma ferramenta auxiliar para escrever os programas e a pesar de no existir um padro formal, existem algumas regras que sero discutidas no seguir deste documento. Os diagramas de ao so baseados numa tcnica mais textual para representar na forma de diagramas as estruturas de controle do programa. O resultado um resumo que lembra a aplicao computacional. Este tipo de diagrama indica que coisas acontecem, onde e quantas vezes. O pseudocdigo mostrado anteriormente pode ser usado como base para um diagrama de ao.

1.11.

Os Fluxogramas

Os fluxogramas podem ser ferramentas teis no desenvolvimento dos programas. Eles no mostram a descrio completa do programa e so usados em combinao com outras ferramentas. Os fluxogramas devem ser feitos antes de escrever o programa, no entanto pode tambm ser usados para que os programadores possam entender o cdigo que outros programadores j escreveram.

18

I I

O programa final pode ser diferente do fluxograma desde que somente so colocadas as declaraes das funes, excluindo a especificidade das mesmas. Os fluxogramas devem incluir todas as rotinas e sub-rotinas que compem o programa. A seguir so detalhados alguns smbolos usados comumente nos fluxogramas com as suas respectivas representaes.

1.11.1. Smbolos dos Fluxogramas INCIO E FIM DE UM PROGRAMA OU SUBROTINA


O incio e fim de um programa so normalmente representados com formas ovais. Pode usar um texto comum como incio ou no caso de uma subrotina: enter, por exemplo. As setas mostram o fluxo do programa apontando para o seguinte bloco seqencial de programa no fluxograma.

Incio

Fim

Figura 1-2 - Blocos de incio e fim de um programa ou sub-rotina.

MENSAGENS
Para indicar o envio de uma mensagem para o usurio usado um bloco com a forma mostrada na Figura 1-3. Notar que o texto no necessariamente precisa indicar com exatido o que ser mostrado na tela (ou enviado para uma outra interface), mas um resumo da mensagem que seja familiar ao programador para lembrar quando estiver desenvolvendo o cdigo do software.

19

Mensagem ao usurio

Resultado

Erro

Figura 1-3 - Bloco para indicar mensagem para o usurio.

ENTRADA DE DADOS DO USURIO


Quando devam ser lidos dados a partir de um teclado, mouse ou outro dispositivo de interao com o usurio, o smbolo do bloco mostrado na Figura 1-4. Neste caso, cada entrada do teclado deve ser precedida de uma mensagem indicando ao usurio que necessria a sua interveno com informaes de entrada. Isto no ocorre necessariamente a cada momento, entretanto comum quando informaes devem ser inseridas pelo teclado.

Temperatura

Figura 1-4 - Bloco de entrada de dados pelo usurio.

LEITURA E ESCRITA EM ARQUIVOS


Para a leitura ou escrita de dados em arquivo utiliza-se os blocos mostrados na Figura 1-5.

Recuperar de arquivo

Armazenar em arquivo

Figura 1-5 - Bloco de armazenamento e recuperao de dados em arquivos.

20

I I

ESTRUTURAS DE DECISO E SELEO


Os pontos de deciso que controlam o fluxo do programa so representados pelo bloco da Figura 1-6. No interior do bloco inserida uma pergunta que decidir o fluxo do programa caso a resposta seja verdadeira ou falsa.

N a > b?

x<0 x

x>0

x=0

Figura 1-6 - Bloco de deciso.

PROCESSAMENTO GERAL
Os comandos gerais, como as equaes matemticas, podem ser colocados dentro de um bloco na forma retangular.

x = sqrt(y)

Figura 1-7 - Bloco de processamento geral.

OS LAOS DEFINIDOS
Os laos podem ser representados usando estruturas um pouco mais complexas que incluem um bloco de seleo. Os laos definidos completam uma tarefa certo nmero de vezes e servem para clculos ou operaes iterativas. A execuo comea na seta do topo que inicializa uma varivel de contagem para o seu valor inicial. Enquanto esse valor for menor ou igual que o valor limite o cdigo executado o indicado pela seta S e retorna pela seta da esquerda onde a varivel de contagem incrementada. Este processo continua at que a varivel

21

de contagem seja maior que o valor limite, desviando o fluxo para o cdigo indicado pela seta N.

i=0 i <= 1000 i ++ S

Figura 1-8 - Bloco de lao definido.

OS LAOS INDEFINIDOS
O lao indefinido indica a repetio da execuo de uma tarefa pela execuo de um trecho de cdigo por um nmero indefinido de vezes. Dependendo do resultado da expresso lgica indicada no bloco (verdadeiro ou falso) o fluxo seguir a seta correspondente.

N Faa enquanto: valor < = valor limite

Figura 1-9 - Lao indefinido.

CONECTORES
Quando os fluxogramas ficam muito grandes pode ser necessrio o uso de conectores para conectar as setas entre blocos afastados na mesma pgina ou com blocos em outras pginas. Para manter os fluxogramas simples e legveis deve se evitar ao mximo o uso dos conectores em casos desnecessrios.

Conectores dentro da mesma pgina


Para 1 De

22

I I

Figura 1-10 - Conectores para pontos do fluxograma na mesma pgina.

Conectores para outras pginas


De A B

Para

Figura 1-11 - Conectores para pontos do fluxograma em outras pginas.

CHAMADAS DE SUB-ROTINAS
A chamada de subprogramas ou sub-rotinas representada pelo bloco da Figura 1-12. O nome da sub-rotina deve ser o nome do subprograma que cujo fluxograma pode estar na mesma pgina ou em outra separada.

Figura 1-12 - Bloco para representar a chamada de uma sub-rotina.

1.11.2. Exerccio
Com os assuntos tratados at aqui, sugere-se desenvolver as suas habilidades na elaborao de fluxogramas usando o mtodo Top-Down atravs do seguinte exerccio. Descrio do Problema: Existem vrios componentes eltricos numa caixa que devem ser selecionados pelo tipo e colocados em caixas separadas. So resistores, capacitores, indutores, diodos, transistores e circuitos integrados. Desenvolver um fluxograma ou algoritmo para resolver o problema. Suposies:
Existem 6 caixas identificadas com as seguintes palavras: resistores, capacitores, indutores, diodos, transistores e circuitos integrados. 3. Existem contadores de algum tipo (eletromecnicos ou eletrnicos). 4. A pessoa que vai separar os componentes no cega e sabe distinguir a diferena entre os componentes. 5. No existem outros tipos de componentes alm dos citados na caixa.

23

Quais so os dados desconhecidos? Comear com a formulao geral do problema. Desenvolver os passos para resolver o algoritmo.

1.12. Problemas Tpicos nos Projetos que podem ser Evitados


1.12.1. Problemas Tpicos na Elaborao de Programas de Computador
Excesso de cdigo ineficiente. Excesso no uso de variveis locais. Uso imprprio de funes. Inexistncia de comentrios no cdigo (comentrios no ocupam espao de memria). No uso da metodologia Top-Down. Inexistncia de fluxogramas. No ter um cronograma. No comear a trabalhar o assunto cedo o suficiente. Deixar tudo para ltima hora.

Figura 1-13 - Privar-se do sono por ter deixado o seu projeto para ltiima hora pode acarretar grandes problemas.

1.12.2. Problemas Potenciais do Trabalho em Equipe


Tomar decises de consenso. Como tomar decises. Distribuir as tarefas entre os membros da equipe. O que acontece quando um membro da equipe est com problemas de completar a sua parte do trabalho?

24

I I

1.12.3. Algumas sugestes para evitar problemas


Elabore um cronograma de projeto e mantenha-o atualizado. O cronograma um documento vivo que requer de alteraes dirias e semanais. Faa a previso do que dever ser feito caso um membro da equipe no alcance os objetivos propostos. Defina o que dever ser feito se algum faltar s reunies de integrao. Elaborar planos alternativos e saiba quando devem ser aplicados, Estabelea metas realistas.

Figura 1-14 Estabelea metas realistas.

Aceite riscos calculados. Todas as decises nos projetos de engenharia (assim como na vida) envolvem riscos de alguma natureza. As escolhas e decises devem ser baseadas nas consideraes das conseqncias e resultados. Calcule cuidadosamente os riscos envolvidos nos seus projetos.

Figura 1-15 - Tome riscos calculados.

Mantenha o trabalho sempre em dia. Compartilhe a agenda do projeto com os membros da equipe. Mantenha as informaes atualizadas. Documente as reunies e as decises feitas. Verificar a execuo do cronograma de forma constante. Mantenha os membros da equipe informados do processo.

25

Você também pode gostar