You are on page 1of 84

Linguagem de Programao

Unidade Operacional CENTRO DE FORMAO PROFISSIONAL JOS IGNCIO PEIXOTO

Linguagem de Programao

Nvel Tcnico

Linguagem de Programao

Presidente da FIEMG Robson Braga de Andrade Gestor do SENAI Petrnio Machado Zica Diretor Regional do SENAI e Superintendente de Conhecimento e Tecnologia Alexandre Magno Leo dos Santos Gerente de Educao e Tecnologia Edmar Fernando de Alcntara

Elaborao Jeronimo Costa Penha Rodrigo Vilela da Silva Centro de Formao Profissional Jos Igncio Peixoto Unidade Operacional Centro de Formao Profissional Jos Igncio Peixoto

Nvel Tcnico

Linguagem de Programao

Sumrio

Apresentao ..........................................................................................................5 Agradecimentos ......................................................................................................6 Introduo ...............................................................................................................7 Histria da Computao..........................................................................................8


Histria dos computadores ............................................................................................ 8

Definies de Programao..................................................................................17 Lgica, seqncia lgica e instrues...................................................................20 Algoritmo ...............................................................................................................22 Sistema de nomenclatura de componentes no Visual Basic 2008........................25 Variveis e Constantes .........................................................................................26
Identificadores ............................................................................................................. 26

Unidades de medida .............................................................................................28 Tipos de variveis e constantes ............................................................................29 Declaraes de variveis no Visual Basic 2008....................................................30
Escopo das variveis................................................................................................... 30 1 - Procedure Level e Procedure Level Static ............................................................. 30 2 Form and Module Level ......................................................................................... 31 3 Global Level........................................................................................................... 31 Converso de variveis ............................................................................................... 33

Operadores ...........................................................................................................34
Operadores de atribuio ............................................................................................ 34 Operadores matemticos............................................................................................. 34 Operadores relacionais................................................................................................ 35 Operadores lgicos...................................................................................................... 35

Condicionais do Visual Basic (VB Branching).......................................................37


Condicional - IF ........................................................................................................... 37 Condicional Select Case........................................................................................... 39 Condicional Goto ...................................................................................................... 40

Nvel Tcnico

Linguagem de Programao

Estruturas de repetio .........................................................................................42


A capacidade de resolver problemas na vida e na tecnologia...................................... 42 A estratgia Pergunta Resposta Resultado ........................................................... 42 A estratgia da Resoluo Ideal .................................................................................. 43 Visual Basic Looping ................................................................................................... 44 A contagem no Visual Basic (VB Counting) ................................................................. 46

A Ferramenta Message Box..................................................................................48 A porta Paralela: Fundamentos de Hardware e Software .....................................52


Entendendo as Portas Paralelas.................................................................................. 52 Como as portas paralelas Funcionam?........................................................................ 53 SSP - Standard Parallel Port ....................................................................................... 54 EEP Extended Parallel Port ...................................................................................... 55 Porque utilizar uma livraria externa?............................................................................ 57 Livraria Inpout32.dll Interface para a porta paralela .................................................. 58 Kernel mode driver Hwinterface.sys............................................................................. 58 The DLL Inpout32........................................................................................................ 58 Brincando com LEDs e Porta Paralela......................................................................... 61

Manipulao de Arquivos......................................................................................64
Editor de textos simples............................................................................................... 65

Base de dados ......................................................................................................69


Utilizao..................................................................................................................... 69 Apresentao dos dados ............................................................................................. 69 Direitos de Propriedade ............................................................................................... 70 Modelos de base de dados.......................................................................................... 70 Aplicao de banco de dados...................................................................................... 71 Aplicativo de banco de dados ...................................................................................... 72 Segurana em banco de dados ................................................................................... 72 VB.Net 2008 Criando uma aplicao bsica completa de acesso a base de dados.. 72

Bibliografia ............................................................................................................84

Nvel Tcnico

Linguagem de Programao

Apresentao

Muda a forma de trabalhar, agir, sentir, pensar na chamada sociedade do conhecimento. Peter Drucker

O ingresso na sociedade da informao exige mudanas profundas em todos os perfis profissionais, especialmente naqueles diretamente envolvidos na produo, coleta, disseminao e uso da informao. O SENAI, maior rede privada de educao profissional do pas,sabe disso , e ,consciente do seu papel formativo , educa o trabalhador sob a gide do conceito da competncia: formar o profissional com responsabilidade no processo produtivo, com iniciativa na resoluo de problemas, com conhecimentos tcnicos aprofundados, flexibilidade e criatividade, empreendedorismo e conscincia da necessidade de educao continuada. Vivemos numa sociedade da informao. O conhecimento, na sua rea tecnolgica, amplia-se e se multiplica a cada dia. Uma constante atualizao se faz necessria. Para o SENAI, cuidar do seu acervo bibliogrfico, da sua infovia, da conexo de suas escolas rede mundial de informaes internet- to importante quanto zelar pela produo de material didtico.

Isto porque, nos embates dirios,instrutores e alunos , nas diversas oficinas e laboratrios do SENAI, fazem com que as informaes, contidas nos materiais didticos, tomem sentido e se concretizem em mltiplos conhecimentos. O SENAI deseja , por meio dos diversos materiais didticos, aguar a sua curiosidade, responder s suas demandas de informaes e construir links entre os diversos conhecimentos, to importantes para sua formao continuada ! Gerncia de Educao e Tecnologia

Nvel Tcnico

Linguagem de Programao

Agradecimentos

Ao grande estudioso e programador Alex Freitas Silva e VsperSoft Desenvolvimentos pela contribuio na transmisso de seus conhecimentos, sendo grandes fontes de inspirao. Jeronimo Costa Penha Rodrigo Vilela da Silva

Nvel Tcnico

Linguagem de Programao

Introduo

O surgimento do ambientes grficos revolucionou de maneira notvel o mundo dos microcomputadores. Hoje, a maioria das aplicaes que esto surgindo para este tipo de computadores roda sob ambientes grficos. At o surgimento da linguagem visual, os procedimentos eram bastante complexos e utilizando linguagens pouco amigveis como C, C++, turbo pascal, etc. O mundo de programaes visual muito vasto. Existem diversas linguagens que ocupam milhares de pginas em manuais normalmente escritos em ingls como Visual Basic, Delphi, C++ Bilder, etc. Essas linguagens permitem manipular bases de dados, arquivos, grficos, controles tridimensionais, animao de imagens, etc. Alm disso, o programador pode criar suas prprias ferramentas de controle. Tm surgido tambm, numerosas bibliotecas de funes que so comercializadas ou disponibilizadas na Internet em todo o mundo e tornam extremamente flexveis e poderosas suas opes. Para demonstrar como fcil trabalhar com a programao visual e quo rapidamente voc poder aprender a criar aplicativos teis, o prximo captulo o conduzir a um verdadeiro mergulho de cabea, orientando-o a escrever programas simples. Sem dvida, a experimentao com a programao visual a melhor forma de obter uma viso das ferramentas com as quais voc trabalhar, e isso lhe dar um lampejo do potencial excitante que a programao visual. Aps esta pequena experincia prtica, os captulos seguintes oferecero uma viso mais detalhada dos "como e porqus". Propriedades, eventos e mtodos, comandos e funes so inmeros e no seria possvel abord-los todo nessa apostila, por isso vamos explic-los aps cada utilizao dentro dos exemplos. Os demais devero ser consultados nos prprios manuais (Books Online) ou helps. Para isso s usar teclas de atalho F1 para help ou F2 para Object Browser. Se tiver dvidas quanto linguagem, pergunte ao seu instrutor, pois com a experincia que ele possui ir orient-lo no caminho certo. Jeronimo Costa Penha Rodrigo Vilela da Silva Nvel Tcnico 7

Linguagem de Programao

Histria da Computao

Conhecer a histria nos traz uma melhor viso das coisas que fazemos: como elas aconteceram e como evoluram at o que so hoje em dia. Torna-nos mais conscientes de nossa raiz e cultura, e torna nossa conversa mais interessante, cheia de fatos curiosos e acontecimentos divertidos. Histria dos computadores

A capacidade do ser humano em calcular quantidades nos mais variados modos foi um dos fatores que possibilitaram o desenvolvimento da matemtica e da lgica. Nos primrdios da matemtica e da lgebra, utilizavam-se os dedos das mos para efetuar clculos. Na regio do Mar Mediterrneo, surgiram o alfabeto e o baco.

Figura 1 baco.

A primeira ferramenta conhecida para a computao foi o baco, cuja inveno atribuda a habitantes da Mesopotmia, em torno de 2400 a.C

A primeira calculadora capaz de realizar as operaes bsicas de soma e subtrao foi inventada em 1642 pelo filsofo, fsico e matemtico francs Blaise Pascal. Pascal, que aos 18 anos trabalhava com seu pai em um escritrio de coleta de impostos na cidade de Rouen, desenvolveu a mquina para auxiliar o seu trabalho de contabilidade. A calculadora usava engrenagens que a faziam funcionar de maneira similar a um odmetro. Pascal recebeu uma patente do rei da Frana para que lanasse sua mquina no comrcio. A comercializao de suas calculadoras no foi satisfatria devido a seu funcionamento pouco confivel, apesar de Pascal ter construdo cerca de 50 verses.

Nvel Tcnico

Linguagem de Programao

Figura 2 Blaise Pascal e sua calculadora mecnica

A mquina Pascal foi criada com objetivo de ajudar seu pai a computar os impostos em Rouen, Frana. O projeto de Pascal foi bastante aprimorado pelo matemtico alemo Gottfried Von Leibniz (1646-1726), que tambm inventou o clculo, o qual sonhou que, um dia no futuro, todo o raciocnio pudesse ser substitudo pelo girar de uma simples alavanca.

Figura 3 Gottfried Von Leibniz e sua mquina de calcular

Em 1671, o filsofo e matemtico alemo de Gottfried Von Leibniz introduziu o conceito de realizar multiplicaes e divises atravs de adies e subtraes sucessivas. Em 1694, a mquina foi construda, no entanto, sua operao apresentava muita dificuldade e sujeita a erros.

Todas essas mquinas, porm, estavam longe de ser um computador de uso geral, pois no eram programveis. Isto quer dizer que a entrada era feita apenas de nmeros, mas no de instrues a respeito do que fazer com os nmeros.

Foi com Charles Babbage que o computador moderno comeou a ganhar forma. O equipamento, apesar de nunca ter sido construdo com sucesso, possua todas as funcionalidades do computador moderno. Foi descrito originalmente em 1837. O grande diferencial do sistema de Babbage era o fato que seu dispositivo foi projetado para ser programvel, item imprescindvel para qualquer computador moderno. Nvel Tcnico 9

Linguagem de Programao

Tudo comeou com a tentativa de desenvolver uma mquina capaz de calcular polinmios por meio de diferenas, o calculador diferencial. Enquanto projetava seu calculador diferencial, a idia de Jacquard fez com que Babbage imaginasse uma nova e mais complexa mquina, o calculador analtico, extremamente semelhante ao computador atual.

Figura 4 Babage, Calculador Diferencial e Calculador analtico

Durante sua colaborao, a matemtica Ada Augusta (1815-1852) ou Lady Lovelace publicou os primeiros programas de computador em uma srie de notas para o engenho analtico. Por isso, Lovelace popularmente considerada como a primeira programadora.

Figura 5 Lady Ada Augusta Lovelace

Ada Lovelace e Charles Babbage estavam avanados demais para o seu tempo, tanto que at a dcada de 1940, nada se inventou parecido com seu computador analtico. Na poca de Babbage, as tabelas matemticas, tais como funes logartmicas e trigonomtricas, eram geradas por equipes de matemticos que viravam dias e noites trabalhando com calculadoras primitivas.

Nvel Tcnico

10

Linguagem de Programao

Devido ao fato de trabalharem realizando computaes, essas pessoas eram chamadas de "computadores". Na realidade, a palavra computador continuou sendo empregada para designar uma profisso (ao invs de fazer referncia aos aparelhos) at os anos 40. Depois disso, a evoluo fez com que a palavra fosse associada s mquinas e aparelhos que passaram a realizar essa tarefa.

O prximo avano dos computadores foi feito pelo americano Herman Hollerith (1860-1929), que inventou uma mquina capaz de processar dados baseada na separao de cartes perfurados (pelos seus furos). A mquina de Hollerith foi utilizada para auxiliar no censo de 1890, reduzindo o tempo de processamento de dados de sete anos, do censo anterior ( 7 anos), para apenas dois anos e meio. Mais tarde, Hollerith fundou uma companhia para produzir mquinas de tabulao. Anos depois, em 1924, essa companhia veio a se chamar como International Business Machines,ou IBM,como hoje conhecida.

Foi na Segunda Guerra Mundial que realmente nasceram os computadores atuais. A Marinha americana, em conjunto com a Universidade de Harvard, desenvolveu o computador Harvard Mark I, projetado pelo professor Howard Aiken, com base no calculador analtico de Babbage. O Mark I ocupava 120m aproximadamente, conseguindo multiplicar dois nmeros de dez dgitos em trs segundos.

Figura 6 Mark I

Simultaneamente, e em segredo, o Exrcito Americano desenvolvia um projeto semelhante, chefiado pelos engenheiros J. Presper Eckert e John Mauchy, cujo resultado foi o primeiro computador a vlvulas, o Eletronic Numeric Integrator And Calculator (ENIAC)[2], capaz de fazer quinhentas multiplicaes por segundo. Tendo sido projetado para calcular trajetrias balsticas, o ENIAC foi mantido em Nvel Tcnico 11

Linguagem de Programao

segredo pelo governo americano at o final da guerra, quando foi anunciado ao mundo.

Figura 7 ENIAC

Conta-se que os soldados que faziam a manuteno do ENIAC viviam empurrando carrinhos de mo cheios de vlvulas. O calor e a luz emitida pelas vlvulas atraam mariposas e outros insetos que entravam dentro da enorme mquina e causavam curtos-circuitos. Viria da o termo "bug" usado como gria para qualquer defeito do computador (bug, em ingls, significa inseto).

At o final dos anos 70, reinavam absolutos os mainframes, computadores enormes, trancados em salas refrigeradas e operados apenas por alguns poucos privilegiados. Apenas grandes empresas e bancos podiam investir alguns milhes de dlares para tornar mais eficientes alguns processos internos e o fluxo de informaes. A maioria dos escritrios funcionava mais ou menos da mesma maneira que no comeo do sculo. Arquivos de metal, mquinas de escrever, papel carbono e memorandos faziam parte do dia-a-dia.

Segundo o Computer History Museum, o primeiro "computador pessoal" foi o Kenbak-1, lanado em 1971. Tinha 256 bytes de memria e foi anunciado na revista Scientific American por US$ 750; todavia, no possua CPU e era, como outros sistemas desta poca, projetado para uso educativo (ou seja, demonstrar como um "computador de verdade" funcionava). Em 1975, surge o Altair 8800, um computador pessoal baseado na CPU Intel 8080. Vendido originalmente como um kit de montar atravs da revista norte-americana Popular Electronics, os projetistas pretendiam vender apenas algumas centenas de unidades, tendo Nvel Tcnico 12

Linguagem de Programao

ficado surpresos quando venderam 10 vezes mais que o previsto para o primeiro ms. Custava cerca de 400 dlares e se comunicava com o usurio atravs de luzes que piscavam. Entre os primeiros usurios estavam o calouro da Universidade de Harvard, Bill Gates, e o jovem programador, Paul Allen, que juntos desenvolveram uma verso da linguagem "Basic" para o Altair. Pouco tempo depois, a dupla resolveu mudar o rumo de suas carreiras e criar uma empresa chamada Microsoft. muito interessante o que Bill Gates diz sobre aquela poca: "Quando eu estava no ginsio custava cerca de quarenta dlares por hora utilizar um computador em sistema de tempo compartilhado (junto com outras pessoas), usando um teletipo em troca daqueles quarenta dlares voc ganhava uma fatia da preciosa ateno do computador. Isso parece estranho hoje em dia, quando tanta gente tem mais de um microcomputador e no pensa duas vezes em deix-los inativos uma boa parte do dia".

Figura 8 Bill Gates (em p) e Paul Allen

Nos anos seguintes, surgiram dezenas de novos computadores pessoais como o Radio Shack TRS-80 (O TRS-80 foi comercializado com bastante sucesso no Brasil pela Prolgica com os nomes de CP-300 e CP-500), Commodore 64, Atari 400 e outros com sucesso moderado.

Em 1974, a Intel d um passo gigantesco lanando o microprocessador 8080. O novo chip era quase do mesmo tamanho que seu antecessor, mas tinha 2.700 transistores a mais. Ali estava o ncleo de um verdadeiro computador miniaturizado.

Nvel Tcnico

13

Linguagem de Programao

Em 1977 a Apple, Commodore, Radio Shack e Atari entram na disputa do mercado dos microcomputadores Em 1980, a IBM estava convencida de que precisava entrar no mercado da microinformtica e o uso profissional dos micros s deslanchou quando ela entrou nesse mercado. A empresa dominava (e domina at hoje) o mercado de computadores de grande porte e, desde a primeira metade do sculo XX, mquinas de escrever com sua marca estavam presentes nos escritrios de todo mundo. A empresa criou uma fora tarefa especial para desenvolver o novo produto. Assim, um grupo de 12 engenheiros liderados por William C. Lowe foi instalado em um laboratrio em Boca Raton, na Flrida, longe dos principais centros de desenvolvimento da corporao que, at hoje, ficam na Califrnia e em Nova Iorque. O resultado desse trabalho foi o IBM-PC, que tinha um preo de tabela de US$ 2.820, bem mais caro que os concorrentes, mas foi um sucesso imediato. Em 4 meses foram vendidas 35 mil unidades, 5 vezes mais do que o esperado.

Figura 9 Microcomputador IBM

Uma combinao de boa estratgia de marketing, bom suporte de software (conseguido devido dedicao da Microsoft) e fora proporcionada pela solidez da marca entre o mercado profissional das grandes empresas (que realmente detm o controle financeiro do que acontece no mundo), permitiu que a IBM impusesse seu microcomputador como padro. Em poucos anos, ter outro computador significaria andar na contra mo do progresso, mesmo existindo outras arquiteturas mais bem estruturadas em termos de engenharia.

Em 1983 ASCII Corporation e a Microsoft criaram o primeiro computador porttil. Ele foi lanado como Model 100 nos EUA pela Radio Shack, NEC PC-8200 no

Nvel Tcnico

14

Linguagem de Programao

Japo e Olivetti M-10 na Europa. A mquina teve uma boa aceitao, sendo consumida principalmente por empresrios e homens de negcio. No Brasil, em 1983 foi lanado o que pode ser considerado como primeiro microcomputador a atingir o grande pblico. O TK-85 foi lanado pela Microdigital e era baseado no ZX-Spectrum. Tinha sua verso BASIC da Microsoft e usava um gravador K-7 para armazenar dados.

Figura 10 TK85 Ainda em 1983 a IBM lana o IBM PC-XT, o primeiro microcomputador com disco rgido, que tinha uma fabulosa capacidade de armazenagem de 10 Mb. 1983 foi um ano muito importante para a histria dos computadores. A Xerox e a Apple tinham lanado sua primeira linha de computadores grficos - o utilizador podia oper-los atravs de cliques em desenhos na tela (Mouse).

Em 1984 foi lanado o primeiro microcomputador grfico comercialmente vivel. Liderado por Steve Jobs, o Apple Macintosh causou furor no mercado, devido a sua facilidade de operao. Os utilizadores ficavam fascinados com os ambientes repletos de cones e janelas.

Figura 11 Apple Macintosh

Nvel Tcnico

15

Linguagem de Programao

Percebendo que o futuro dos microcomputadores dependia do ambiente grfico, a IBM apressou-se em lanar o seu IBM PC-AT 286, que usava uma nova famlia de processadores Intel, trs vezes mais rpidos que o precedente. Apresentando o OS Windows 3.1, o computador foi um sucesso to grande que comeou a ameaar as vendas dos grandes computadores mainframes. Em 1985, a Intel lana mais uma evoluo do seu processador. Aproveitando a demora da IBM, a recm-formada Compaq adota-o na sua linha de microcomputadores lanando o Compaq PC 386.

Em 1987 os microcomputadores IBM tinham se estabelecido como padro para a indstria da informtica. Centenas de fabricantes pagavam royalties para ter o direito de lanar computadores compatveis aos IBM PC, e o suporte de hardware tornaram-se extremamente vasto e diferenciado - placas grficas, placas de som, placas midi, mouses, impressoras - um paraso para todos os aficionados por computadores. A IBM lana seu IBM PC-AT 486, vrias vezes mais rpido que o 386, e ele tornase o computador mais amplamente usado nas empresas de todo o mundo. Em 1989 a Apple tenta roubar algum mercado do padro PC com o lanamento do seu Power Macintosh. Ele chegou a ter algum sucesso no mundo empresarial, principalmente nos EUA e no Canad, mas no chega a arranhar a hegemonia do padro PC. O ltimo golpe na concorrncia aconteceu com o lanamento da linha Pentium. Esse o padro que prevalece ainda hoje, mesmo com o aparecimento dos processadores AMD. Os computadores PC usam uma arquitetura padro e totalmente compatvel a despeito da tecnologia usada nos processadores - Intel ou AMD.

Figura 12 Computadores modernos

Nvel Tcnico

16

Linguagem de Programao

Definies de Programao Programa o nome dado aos conjuntos de instrues que instruem um computador sobre uma tarefa especfica ou mesmo sobre o funcionamento de seu hardware. Portanto, programao o ato de programar, e programador o profissional ou indivduo que realiza a programao. A programao feita em um formato de lista - tal como a receita de um bolo atravs de um tipo de escrita chamada de linguagem de programao, ou ainda, cdigo. A linguagem essencial da programao denominada Linguagem de Mquina (LM), cuja natureza numrica. A Linguagem de Mquina classificada como uma Linguagem de Baixo Nvel (LBN) - (Low Level Language - LLL em Ingls) e como feita para ser captada por uma mquina, tem um padro repetitivo e pouco compreensivo, tornando-se difcil e tedioso para um ser humano us-la.

Exemplo: Programa em c e em binrio Main(){ Int A,B,C; A=B+C } Resulta em: 00000010001100100100000000100000, em MIPS.

A soluo criar um outro conjunto de instrues que seja mais dirigido s pessoas e menos dirigido mquina, ou seja, linguagens que se aproximam mais da linguagem natural humana. A este novo conjunto de instrues d-se o nome de Linguagem de Alto Nvel (LAN) - (High Level Language - HLL em ingls). A inveno de toda uma srie de HLLs, cada uma delas mais conveniente do que suas predecessoras, podem continuar indefinidamente at que uma adequada seja finalmente conseguida.

Nvel Tcnico

17

Linguagem de Programao

Exemplo: linguagem C Main(){ Int i; i=12; Printf(O valo de i : %d,i); }

Cada linguagem utiliza sua predecessora como base, e assim podemos visualizar um computador que utiliza esta tcnica como uma srie de camadas ou nveis, um sobre o outro. A linguagem de nvel mais baixo a mais simples e a linguagem de nvel mais alto a mais sofisticada. A traduo da linguagem de alto nvel realizada pelos compiladores. De alguma forma, os compiladores traduzem palavras e abreviaturas significativas para as pessoas (programa fonte) em longas sries de dgitos binrios (programa objeto) compreendidos pela mquina. Cdigo fonte o programa escrito em forma de texto utilizando alguma linguagem de programao. Exemplo: Linguagem Visual Basic Private Sub Command1_Click() Dim i As Integer

i = 34512 MsgBox "O nmero digitado foi: " & CStr(i), vbOKOnly, "Valor de i" End Sub

Cdigo objeto ou arquivo objeto o nome dado ao cdigo resultante da compilao do cdigo fonte. Exemplo: Arquivo de extenso .exe, por exemplo: EXCEL.EXE

O Visual Basic uma das linguagens de alto nvel mais usadas na atualidade. Sua inteno tornar o ato de programar uma tarefa mais amigvel, possvel para Nvel Tcnico 18

Linguagem de Programao

qualquer utilizador de computadores, seja profissionalmente ou ocasionalmente, em seus momentos de lazer.

Nvel Tcnico

19

Linguagem de Programao

Lgica, seqncia lgica e instrues A lgica (do grego clssico logos, que significa: palavra, pensamento, idia, argumento, relato, razo lgica ou princpio lgico), uma cincia de ndole matemtica e fortemente ligada Filosofia. J que o pensamento a manifestao do conhecimento, e que o conhecimento busca a verdade, preciso estabelecer algumas regras para que essa meta possa ser atingida. Assim, a lgica o ramo da filosofia que cuida das regras do bem pensar, ou do pensar correto, sendo, portanto, um instrumento do pensar. Podemos dizer que a lgica trata dos argumentos, isto , das concluses a que chegamos atravs da apresentao de evidncias que a sustentam. Um sistema lgico um conjunto de regras de inferncia que visam representar formalmente o raciocnio vlido. Diferentes sistemas de lgica formal foram construdos ao longo do tempo quer no mbito escrito da Lgica Terica, quer em aplicaes prticas na computao e em Inteligncia artificial.

Exemplos: Se o avio chegar atrasado e no houver txis no aeroporto, ento Joo chegar atrasado para sua reunio. Joo no chegou atrasado reunio, mas seu avio chegou atrasado. Portanto, havia txis no aeroporto. O mesmo argumento sem atraso do avio, txi e atraso reunio. Se p (atraso vo) e no q (txi) ento r (atraso reunio). No r(atraso reunio). p(atraso vo). Ento q(txi).

Outro exemplo: Se estiver chovendo e Maria no tiver levado sua sombrinha ela ir se molhar. Maria no se molhou, apesar de estar chovendo. Ento Maria levou sua sombrinha com ela.

Nvel Tcnico

20

Linguagem de Programao

O mesmo argumento sem chuva, sombrinha, molhar. Se p(chovendo) e no q(sombrinha) ento r (molhou). No r(molhou). p(chovendo). Ento q(sombrinha).

Outro exemplo: Se a idade maior ou igual a 7 anos pode andar na garupa da moto. Se est na garupa da moto, a idade maior ou igual a 7 anos.

O mesmo argumento sem idade, garupa. If Idade >= 7 Then Garupa = True Else Garupa = False EndIf

If Garupa = True Then Msgbox Idade >= 7 Else Msgbox Idade < 7 EndIf

Nvel Tcnico

21

Linguagem de Programao

Algoritmo

Um algoritmo uma sequncia finita de instrues bem definidas e no ambguas, cada uma das quais pode ser executada de forma que ao fim das instrues um objetivo predefinido seja atingido.

O conceito de algoritmo freqentemente ilustrado pelo exemplo de uma receita, embora muitos algoritmos sejam mais complexos. Eles podem repetir passos (fazer iteraes) ou necessitar de decises (tais como comparaes ou lgica) at que a tarefa seja completada. Um algoritmo corretamente executado no ir resolver um problema se estiver implementado incorretamente ou se no for apropriado ao problema.

Um algoritmo no representa, necessariamente, um programa de computador, e sim os passos necessrios para realizar uma tarefa. Sua implementao pode ser feita por um computador, por outro tipo de autmato ou mesmo por um ser humano. Diferentes algoritmos podem realizar a mesma tarefa usando um conjunto diferenciado de instrues em mais ou menos tempo, espao ou esforo do que outros. Tal diferena pode ser reflexo da complexidade computacional aplicada, que depende de estruturas de dados adequadas ao algoritmo. Por exemplo, um algoritmo para se vestir pode especificar que voc vista primeiro as meias e os sapatos antes de vestir a cala enquanto outro algoritmo especifica que voc deve primeiro vestir a cala e depois as meias e os sapatos. Fica claro que o primeiro algoritmo mais difcil de executar que o segundo apesar de ambos levarem ao mesmo resultado.

Exemplos de algoritmo:

Instrues que um professor passa para seus alunos em uma academia de ginstica. Por exemplo: 1. Repetir 10 vezes os quatro passos abaixo: a. Levantar e abaixar brao direito; b. Levantar e abaixar brao esquerdo; Nvel Tcnico 22

Linguagem de Programao

c. Levantar e abaixar perna esquerda; d. Levantar e abaixar perna direita.

Bolo simples (retirado do site: http://www.receitassimples.com.br) Ingredientes: 1. 2 colheres (sopa) de margarina; 2. 2 xcaras de acar; 3. 4 gemas; 4. 1 e meia xcara de amido de milho; 5. 1 e meia xcara de farinha de trigo; 6. 1 colher(sopa) rasa de fermento em p; 7. 1 xcara de leite; 8. 4 claras; 9. 1 pitada de sal.

Preparo:

Bata a margarina, o acar e as gemas at ficar cremosa. Junte o amido de milho, a farinha e o fermento peneirados juntamente, alternando com o leite. Misture devagar e acrescente, delicadamente, as claras batidas em neve e o sal. Despeje numa forma de furo central(mdia) untada e polvilhada. Asse em forno moderado durante 25 minutos. Desenforme depois de frio.

No primeiro exemplo podemos observar que os passos de a at d devem ser repetidos 10 vezes constituindo uma estrutura de repetio dos passos de a at d. No segundo exemplo observamos algumas condies para a produo do bolo que so os ingredientes necessrios. Sem eles o bolo no pode ser produzido. Logo aps as condies serem satisfeitas, inicia-se o processo de produo do bolo que a parte do preparo. Nesta parte esto as instrues para a produo propriamente dita do bolo. Nvel Tcnico 23

Linguagem de Programao

As formas mais comuns de representao de algoritmos so as seguintes: 1. Linguagem Natural: Os algoritmos so expressos diretamente em linguagem natural, como nos exemplos anteriores. 2. Fluxograma Convencional: Esta uma representao grfica que emprega formas geomtricas padronizadas para indicar as diversas aes e i decises que devem ser executadas para resolver o problema. Exemplo:

Figura 13 Exemplo de fluxograma

3. Pseudo-linguagem: Emprega uma linguagem intermediria entre a linguagem natural e uma linguagem de programao para descrever os algoritmos. Exemplo: Algoritmo Soma incio inteiro: x,y,soma; leia (x, y); soma x + y; escreva (soma); fim algoritmo.

Nvel Tcnico

24

Linguagem de Programao

Sistema de nomenclatura de componentes no Visual Basic 2008 Todo objeto componente de qualquer programa possui um nome. Esse nome o identificador deste objeto, ele que indica qual boto foi clicado por exemplo. possvel escrever qualquer nome para um objeto, mas isso poderia levar a confuses em programas maiores. Por isso foram convencionadas algumas regras para a nomenclatura de objetos:

Tabela 1 Regras para a nomenclatura de objetos

Nvel Tcnico

25

Linguagem de Programao

Variveis e Constantes

Variveis e constantes so espaos reservados na memria RAM do computador para guardar informaes que sero utilizadas durante o cdigo do programa. Podem ter valores de diversos tamanhos e tipos, tais como nmeros inteiros, nmeros reais, caracteres, frases, enfim, diversas coisas. A diferena bsica entre varivel e constante que as variveis podem ter seu contedo variado durante a execuo do programa e as constantes no. As constantes possuem valores fixos que so definidos na hora da construo do programa pelo programador.

Identificadores

So os nomes dados a variveis, constantes e programas. Regras Para construo de Identificadores: No podem ter nomes de palavras reservadas (comandos da linguagem); Devem possuir como 1 caractere uma letra ou Underscore ( _ ); Ter como demais caracteres letras, nmeros ou Underscore; No possuir espaos em branco; A escolha de letras maisculas ou minsculas indiferente.

A lista de Palavras reservadas do Visual Basic 2008 pode ser vista abaixo:
AddHandler As ByRef Catch CDec CLng CStr Default Each Erase False Friend Handles Inherits Lib Mod AddressOf Assembly Byte CBool CDbl CObj CType Delegate Else Error Finalize Function If Integer Like Module Alias Auto ByVal CByte Char Const Date Dim ElseIf Event Finally Get Implements Interface Long MustInherit And Base Call CChar CInt CShort Decimal Do End Exit Float GetType Imports Is Loop MustOverride Ansi Boolean Case CDate Class CSng Declare Double Enum ExternalSource For Goto In Let Me MyBase

Nvel Tcnico

26

Linguagem de Programao

MyClass Nothing Option Overrides Protected Region Select Single Structure To Until WithEvents instanceof

Namespace NotInheritable Optional ParamArray Public REM Set Static Sub True volatile WriteOnly package

New NotOverridable Or Preserve RaiseEvent RemoveHandler Shadows Step SyncLock Try When Xor Var

Next Object Overloads Private ReadOnly Resume Shared Stop Then TypeOf While eval

Not On Overridable Property ReDim Return Short String Throw Unicode With extends

Tabela 2 Unidades de medidas e valores

Exemplo: A varivel NOME pode ter seu contedo igual a Linguagem de programao em um instante e em outro pode ter seu contedo igual a z. Tudo depende de como essas variveis sero utilizadas no programa.

A constante PI que possui em seu contedo o seguinte valor: 3,14159265358979323846264338327950288419716939937510651237856 47; no ter seu contedo variado em nenhuma hiptese durante a execuo do programa. Pode-se perceber que a varivel do primeiro exemplo possui uma palavra e a constante do segundo exemplo possui um nmero. Isso quer dizer que as variveis e as constantes podem conter palavras ou nmeros. Claro que existem tipos de variveis cada um com suas caractersticas. Estes tipos nos dizem o tipo de dados que cada varivel pode conter, por exemplo, as variveis do tipo String podem conter letras, palavras e frases. As variveis do tipo Integer podem conter nmeros. Os tipos de variveis sero abordados mais pra frente nesta apostila. Se temos tipo de dados diferentes e sabemos que as variveis so espaos de memria ento podemos concluir que os dados possuem um tamanho que a varivel que suporta este dado ter que alocar um tamanho de memria suficiente para o armazenamento deste dado. Tudo bem, mas que tamanhos so esses? So dados em metros? Este o assunto do prximo captulo dessa apostila.

Nvel Tcnico

27

Linguagem de Programao

Unidades de medida

As informaes dentro do computador precisam estar organizadas. Fazendo parte dessa organizao pode-se calcular o tamanho das informaes que nele esto armazenadas. Isto facilita muito os servios de armazenamento de dados fora do computador, ajudando a dimensionar as mdias apropriadas para armazenar determinadas informaes. Veremos a seguir as unidades de medida e seus valores:
Unidade
bit Byte KiloByte MegaByte GigaByte TeraByte

Smbolo
b B KB MB GB TB

Equivalncia
Unidade de informao formada por 0 ou 1 8 Bits 1024 B 1024 KB 1024 MB 1024 GB

Tabela 3 Unidades de medidas e valores

OBS: Um disquete possui a capacidade de 1,44MB. Um CD-ROM possui a capacidade de 426 disquetes Um disco rgido de 40GB possui a capacidade de 51 CD-ROMs.

Nvel Tcnico

28

Linguagem de Programao

Tipos de variveis e constantes

Dados: os dados referem-se a uma recolha de informaes organizadas, normalmente o resultado da experincia ou observao de outras informaes dentro de um sistema de computador, ou um conjunto de instalaes. Os dados podem consistir em nmeros, palavras ou imagens, as medies e observaes de um conjunto de variveis. Sendo assim, podemos perceber que os dados podem assumir vrias formas, formas estas que iro depender do tipo de programa que se est desenvolvendo, por exemplo, um editor de textos trabalharia muito com variveis que suportem texto. Vamos ver abaixo alguns dos tipos de dados (variveis) suportados pelo Visual Basic 2008.
Tipo de dados
Byte Boolean Integer Long Single

Tamanho
1 byte 2 bytes 2 bytes 4 bytes 4 bytes

Intervalo
de 0 a 255 True ou False de -32.768 a 32.767 de -2.147.483.648 a 2.147.483.647 de 3,402823E38 a -1,401298E-45 para valores negativos; de 1,401298E-45 a 3,402823E38 para valores positivos de 1,79769313486231E308 a -4,94065645841247E-324 para valores negativos; de 4,94065645841247E-324 a 1,79769313486232E308 para valores positivos. 79.228.162.514.264.337.593.543.950.335 sem vrgula decimal; 7,9228162514264337593543950335 com 28 casas decimais direita; o menor nmero diferente de zero 0,0000000000000000000000000001. De 1 de janeiro de 100 a 31 de dezembro de 9999 Qualquer referncia Object De 0 a aproximadamente 2 bilhes

Aplicao
Nmeros de 0 a 255 Verdadeiro ou falso Nmeros inteiros Nmeros inteiros longos Nmeros decimais com preciso simples Nmeros decimais com dupla preciso

Double

8 bytes

Decimal

14 bytes

Nmeros decimais com vrios dgitos depois da vrgula Data Nmeros de referncia Frases / palavras

Date Object String

8 bytes 4 bytes 10 bytes + comprimento da seqncia

Tabela 4 Tabela para uso de variveis OBS: As constantes podem possuir os mesmos tipos de dados das variveis, porm, como foi dito anteriormente, estas no podem ter seu contedo alterado durante a execuo do programa.

Nvel Tcnico

29

Linguagem de Programao

Declaraes de variveis no Visual Basic 2008

Existem algumas formas de se declarar variveis no VB208, iremos apresentar uma: Explicit (explcita). Foi escolhido este tipo de declarao porque ele oferece muitas vantagens tais como: Pode-se garantir que os nomes das variveis no sejam escritos erroneamente. O Visual Basic garante cuida automaticamente da consistncia das letras maisculas em minsculas usadas nos nomes das variveis. Garantimos que todas as computaes sero feitas propriamente

Escopo das variveis O escopo das variveis define de onde estas variveis podem ser acessadas, o tempo de vida da mesma dentre outras caractersticas

Existem quatro nveis de scope: Procedure level Procedure level, static Form and module level Global level

1 - Procedure Level e Procedure Level Static As variveis em um procedure so declaradas usando a declarao Dim. Exemplo: Private Sub Minha_Procedure () Dim NomeEmpregado as String Dim SalrioEmpregado as Double End Sub Variveis de Procedure level declaradas desta forma no retm seu valor depois que a procedure finalizada, ou seja, aps o trmino da execuo da procedure, Nvel Tcnico 30

Linguagem de Programao

as variveis que foram declaradas dentro da mesma sero extintas e estas s podem ser acessadas dentro da prpria procedure. A nica forma de evitar a extino das variveis em proedure level substituir a declarao Dim por Static
Exemplo: Private Sub Minha_Procedure () Static NomeEmpregado as String Static SalrioEmpregado as Double End Sub

2 Form and Module Level As variveis declaradas no corpo de um Form (Module) retm seus valores durante a execuo do Form (Module) e so disponveis para todas as procedures contidas dentro daquele Form (Module). A variveis Form and module level so declaradas na parte de declarations (declaraes) dos objetos na janela de cdigo do Form (Module). Exemplo:
Public Class Form1 Dim i As Integer ' Varivel Form and Module Level

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load MsgBox("Hello World") End Sub End Class

3 Global Level As variveis de nvel global retm seu valor e so disponveis para todas as procedures do programa. aconselhvel manter todas as variveis global em um mdulo. So declaradas na parte declarations dos objetos. Utilize a palavra have Public.

Variveis de Global level retm seu valor e so disponveis para todas as procedures da aplicao. Variveis de Module level so declaradas na parte declarations dos objetos gerais (general) da janela de cdigo do modulo. (

Nvel Tcnico

31

Linguagem de Programao

aconselhvel manter todas as variveis global em um mdulo.) Use a palavrachave Public: Exemplo: Public Module Modulo_Teste Public Data As Date End Module ' Varivel Gobal Level

Se duas variveis de mesmo nome forem declaradas em leveis diferentes, a varivel local ser acessadas com preferncia. Por exemplo se duas variveis Salario forem declaradas, uma como Global Level dentro de um mdulo e a outra em Procedure Level em uma procedure chamada Fecha_Salario, durante a execuo da procedure Fecha_Salario, a varivel Salario acessada ser a declarada em Procedure Level. Par o resto da aplicao varivel acessada ser a declarada em Global Level.

Examplo do Variable Scope:

Figura 14 Exemplo de Variable Scope Procedure Routine1 acessa X, Y, e A (que perde seu valor logo que concluda) Procedure Routine2 acessa X, Y, e B (retm seu valor) Procedure Routine3 acessa X, Z, e C (perde seu valor) Nvel Tcnico 32

Linguagem de Programao

Converso de variveis Quando um programa construdo, vrias variveis so declaradas de tipos diferentes. Para que se possa trabalhar com variveis de tipos diferentes, muitas vezes necessrio transform-las para o mesmo tipo. Por exemplo, para se fazer a soma da string 123 com o nmero inteiro 321, no basta apenas fazer 123 + 321, preciso converter as variveis para um mesmo tipo: Cint(123) + 321, como a inteno era somar nmeros, converteu-se a string 123 em inteiro (Cint Converso para inteiro). As converses podem ser feitas atravs dos seguintes comandos:
Cbool
Cbyte Cdate CDbl Cint CLng Cobj CSng CStr Cdec Converte um valor para Boolean Converte um valor Converte um valor Converte um valor Converte um valor Converte um valor Converte um valor Converte um valor Converte um valor Converte um valor para Byte para Date para Double para Integer para Long para Object para Single para String para Decimal

Tabela 5 Tabela de converso de variveis

Nvel Tcnico

33

Linguagem de Programao

Operadores J falamos sobre variveis e constantes e vimos como so importantes, mas, de que adianta criar variveis e constantes se no podemos fazer nada com elas? Por isso o VB oferece um conjunto de funes que podemos usar para fazer algo de til. O VB possui tambm operadores matemticos que podemos usar para realizar clculos outras operaes. Operadores de atribuio

o operador usado para transferir o resultado de uma expresso para uma varivel. Exemplo: soma = a + b pi = 3.1415 Operadores matemticos So utilizados para realizar clculos matemticos e trabalhos com strings. Exemplo: A+B 3/2 A seguir sero exibidos os operadores matemticos mais comumente usados no Visual Basic.
Oper. Utilizao = + * / \ Mod & Atribui um valor a uma varivel ou constantes Soma dois valores Subtrai um valor de outro Multiplica dois valores Divide um valor por outro Divide um valor por outro e retorna somente a parte inteira do resultado Divide um valor por outro e retorna o resto da operao Concatena duas strings Exemplo y = 10 ou Sobrenome = "Silva" x = y + 5 (o valor de x ser igual a 15) x = y - 2 ( o valor de x ser igual a 5) x = y * 2 ( o valor de x ser igual a 20) x = y / 2 ( o valor de x ser igual a 5) x = y \ 3 ( o valor de x ser igual a 3) x = y mod 3 ( o valor de x ser igual a 1) cliente = "Joo " & Sobrenome ( cliente ser igual

Nvel Tcnico

34

Linguagem de Programao

+= -= *= /= &= ^ Sqrt

soma o valor e atribui o resultado subtrai o valor e atribui o resultado multiplica o valor e atribui o resultado divide o valor e atribuiu o resultado concatena a string e atribui o resultado Eleva um valor a um determinado expoente Extrai a raiz quadrada de um valor (Namespace System classe Math)

a Joo Silva) y += 3 (y ser igual a 13) y -= 6 (y ser igual a 7) y *= 2 (y ser igual a 14) y /= 2 (y ser igual a 7) Sobrenome &= ", Joo Carlos" ( Sobrenome ser igual a "Silva , Joo") 3 ^ 3 ( 3 elevado a 3 ; resultado = 27 ) x = Math.Sqrt(81) ( O valor de x ser igual a 9)

Tabela 6 Tabela de operadores matemticos mais comuns.

Obs: A classe Math do namespace System possui diversos mtodos que oferecem um suporte matemtico. (Ex: Atan , Exp , Sign , Sqrt , Pow , Min , Round , Abs , Cos , Sin , Tan , etc.).

Operadores relacionais Os operadores relacionais tm por objetivo fazer comparaes entre nmeros, objetos, strings etc.

Oper. Utilizao > Maior que < Menor que >= Maior ou igual a <= Menor ou igual a <> Diferente de

Exemplo 5 > 4 (Verdadeiro) 5 < 4 (Falso) 4 >= 4 (Verdadeiro) 4 <= 4 (Verdadeiro) 1 <> 3 (Verdadeiro)

Tabela 7 Tabela de operadores relacionais mais comuns. Operadores lgicos

Os operadores lgicos definem as maneiras como as relaes podem ser conectadas. Para simplificar a apresentao destes operadores sero usadas variveis para substituir as relaes. Estas variveis podem assumir dois valores TRUE e FALSE. Observar que, assim como em operaes aritmticas, podemos ter combinaes de mais de vrias variveis em uma nica expresso. Os operadores lgicos so os seguintes: Nvel Tcnico 35

Linguagem de Programao

Operador Not And Or Xor

Modo Unrio Binrio Binrio Binrio

Resultado True se o operador False e False se operador True True se ambos os operadores so True e False se qualquer um operador False True se qualquer operador True False se ambos operadores so False True se exatamente um operador True False se ambos operadores so True ou False

Tabela 8 Tabela de operadores lgicos mais comuns.

Nvel Tcnico

36

Linguagem de Programao

Condicionais do Visual Basic (VB Branching)

Condicional - IF Na nossa vida fora dos computadores, precisamos tomar decises a todo instante. Comea logo ao acordar - temos que decidir se levantamos da cama ou se dormimos mais um pouco, e continua com o que queremos comer ao caf, e assim por diante.

Poderamos escrever uma deciso da seguinte forma:

Se houver leite

tomar caf com leite tomar suco de laranja

Seno

Tabela 9 Exemplo de condicional Como o mundo virtual dos computadores imita a vida, em nossos programas frequentemente queremos que o prprio computador tome as decises mais triviais por conta prpria. Como o computador uma mquina, e uma mquina no toma decises sozinha, na verdade sugerimos ao computador certas condies e a forma de compar-las para chegar soluo desejada. Teoricamente, essa parte da programao pode ser chamada de "Estruturas Lgicas", "Estruturas Condicionais" ou "Estruturas de Controle e Deciso". Estruturas condicionais so usadas para gerar certas aes em um programa se uma condio foi encontrada.

Nvel Tcnico

37

Linguagem de Programao

Ela quase igual nossa situao real, com a diferena de ser escrita em ingls e ter quase sempre um operador de comparao. Vejamos o exemplo anterior escrito em linguagem lgica:

If "leite" = true then


1. tomar caf com leite

Else

tomar suco de laranja

End if

Tabela 10 Exemplo da condicional IF Abaixo temos exemplos das vrias estruturas condicionais. O mais simples o If/Then statement: If Balanco - Cheque < 0 Then Print "Voc entrou no negativo"

Aqui, se e somente se o balano - cheque for menor que zero, a string "Voc entrou no negativo" impressa.

Voc tambm pode ter blocos If/Then/End If para permitir declaraes mltiplas:
If Balanco - Cheque < 0 Then Print "Voc entrou no negativo" Print "Seu nome entrou no cadastro negativo e voc est com os cheques bloqueados" End If

Neste caso, se o balano - cheque menor que zero, duas linhas de informao sero impressas. Ou, blocos If/Then/Else/End If :
If Balanco - Cheque < 0 Then Print "Voc entrou no negativo" Print "Seu nome entrou no cadastro negativo e voc est com os cheques bloqueados" Else Balanco = Balanco - Cheque End If

Nvel Tcnico

38

Linguagem de Programao

Aqui as mesmas duas linhas sero impressas se voc estourou (Balanco Cheque < 0), se no (Else), seu novo saldo computado. Ou, podemos adicionar o ElseIf statement:
If Balano - Cheque < 0 Then Print "Voc entrou no negativo" Print "Seu nome entrou no cadastro negativo e voc est com os cheques bloqueados" ElseIf Balano - Cheque = 0 Then Print "Ateno! Voc quase atingiu o negativo" Balanco = 0 Else Balanco = Balanco - Cheque End If

Agora mais uma condio foi introduzida. Se seu cheque exatamente igual ao seu saldo (ElseIf Balance - Check = 0), uma mensagem diferente aparece. Ao usar condicionais, certifique-se de considerar todas as possibilidades viveis da estrutura If/Else/End If. Da mesma forma, zele para que cada If e ElseIf num bloco seja testado sequencialmente. A primeira vez que um teste If foi realizado o cdigo associado com aquela condio ativado. Se a condio posterior tambm verdadeira, ele nunca ser considerado.

Condicional Select Case

Em adio aos statements If/Then/Else , o formato Select Case pode ser usado quando existem muitas possibilidades de seleo.

Nvel Tcnico

39

Linguagem de Programao

Digamos que escrevemos este cdigo usando o If statement:


If Idade = 5 Then Categoria = "Cinco anos de idade" ElseIf Idade >= 13 and Idade <= 19 Then Categoria = "Adolescente" ElseIf (Idade >= 20 and Idade <= 35) Or Idade = 50 Or (Idade >= 60 and Idade <= 65) Then Categoria = "Adulto Especial" ElseIf Idade > 65 Then Categoria = "Cidado Senior" Else Categoria = "Todos os outros" End If

O cdigo correspondente com Select Case seria:

Select Case Idade Case 5 Categoria = "Cinco anos de idade" Case 13 To 19 Categoria = "Adolescente" Case 20 To 35, 50, 60 To 65 Categoria = "Adulto Especial" Case Is > 65 Categoria = "Cidado Senior" Case Else Categoria = "Todos os outros" End Select

Condicional Goto

Outro tipo de condicional, e provavelmente a declarao mais detestada em programao, o GoTo Statement. Entretanto, iremos necessitar dele para fazer rotinas de preveno de erros em Run-Time (error trapping). O formato GoTo Label, onde o Label uma linha rotulada. Linhas rotuladas so formadas escrevendo-se o Label (rtulo) seguido de dois pontos. Nvel Tcnico 40

Linguagem de Programao

Exemplo de GoTo : Line10: . . GoTo Line10

Quando o cdigo atingir o GoTo statement, o controle do programa ser transferido para a linha rotulada - Line10.

Nvel Tcnico

41

Linguagem de Programao

Estruturas de repetio A capacidade de resolver problemas na vida e na tecnologia

Na vida moderna, muito importante ser consciente da forma como as coisas so. Essa ferramenta lhe permitir alcanar mais xito em suas atividades, quaisquer que sejam elas. Agora que voc aprendeu as categorias bsicas em que os problemas dividemse, necessrio conhecer qual a forma mais satisfatria de abord-los. Os estudiosos conseguiram perceber quais estratgias funcionam melhor com cada tipo de problema. A estratgia Pergunta Resposta Resultado

Essa a estratgia mais confortvel para a maioria esmagadora das pessoas, porque a utilizada nas escolas. Portando fcil deduzir que ela a mais adequada para os problemas claros com resposta definida.

Figura 15 Estratgia Pergunta Resposta Resultado

Ela raramente ir funcionar com os outros tipos de problemas. Mesmo assim, ela usada frequentemente quando as pessoas tomam atitudes "Preto no Branco". Esses tipos de problemas acontecem em menor escala no mundo tecnolgico, porque profissionais de tecnologia normalmente usam ferramentas avanadas que realizam esses trabalhos para ele. Hoje em dia mais acentuadamente, de um atendente de hospital at um piloto de avio, ou mesmo um cirurgio usam instrumentos computadorizados como apoio para as tarefas mais rotineiras ou de maior preciso.

Nvel Tcnico

42

Linguagem de Programao

Os computadores so exmios na resoluo de tarefas Pergunta - Resposta Resultado. Eles aceitam prontamente a pergunta e encontram a resposta baseados num certo grupo de regras. Capacitar um computador a resolver esses problemas o trabalho do programador, que cria softwares para as mais diversas tarefas e dispositivos, como computadores desktop, mquinas industriais, dispositivos embutidos (embedded), etc. *obs - dispositivos embedded so aqueles que ficam escondidos em outros dispositivos maiores, como a parte computadorizada do seu carro.

Os programadores criam os algoritmos que instruem o computador a trabalhar dados em especficas condies e critrios, de forma a obter um resultado satisfatrio. *obs - algoritmos so mtodos precisos e sistemticos para resoluo de um ou mais problemas.

claro que algumas vezes as pessoas que trabalham com tecnologia precisam usar esse tipo de abordagem. Colocar um computador para funcionar simples, e basta seguir as regras e em pouco tempo tudo est funcionando ok. Isso tambm acontece na instalao de um software. Entretanto o mais comum e marcante na rea tecnolgica so os problemas dos outros tipos. A estratgia da Resoluo Ideal

Devido a seu nome, voc poderia pensar que essa a melhor estratgia. Ela foi desenvolvida nas dcadas de 60 e 70 e baseia-se na premissa de que voc pode aprender estratgias para resolver qualquer problema ou tpico que for apresentado. Ela til em muitas situaes e se ajusta particularmente bem aos tipos de problemas que apresentam vrias solues possveis. Porm ela peca em relao oportunidade de refazer os esforos, porque no apresenta uma etapa para recomear.

A estrutura dessa estratgia foi organizada como um acrnimo - IDEAL: Identificar o problema Nvel Tcnico 43

Linguagem de Programao

Defini-lo por meio de informaes relevantes Explorar as opes possveis atravs de 'brainstorming' Aplicar a estratgia escolhida Reavaliar os resultados da ao tomada

Esta estratgia pode ser aplicada a muitos problemas da rea tecnolgica, bem como a problemas dirios da nossa vida. Esta a abordagem mais comum em apresentaes no trabalho. Normalmente voc ir questionar-se: Qual o objetivo desta apresentao? Que condicionantes esto em jogo em termos de equipamento, tempo e qualificao? Qual a melhor entre o que tenho disponvel? Quadro negro, slides ou um debate? Voc decide a forma que sua apresentao ir tomar conforme sua anlise, e depois adiciona a crtica do resultado sua lista de experincias, para poder escolher melhor na prxima ocasio.

Na rea tecnolgica, a abordagem IDEAL pode ser usada na escolha de componentes de hardware e software, na configurao de uma rede local, e tambm no desenvolvimento de programas simples.

Visual Basic Looping

Looping feito com o formato Do/Loop. Loops so usados para operaes que so repetidas um certo nmero de vezes. O loop repete a ao at que alguma condio especfica seja encontrada, seja no incio ou no final do loop. Exemplo Do While/Loop:

Contador = 1 Do While Contador <= 1000 Debug.Print Contador Contador = Contador + 1 Loop Nvel Tcnico 44

Linguagem de Programao

Este loop repetido enquanto (While) a varivel Contador for menor ou igual a 1000. Note que a estrutura Do While/Loop no ser executada nem uma vez se a condio While for violada (False) na primeira passagem. Note tambm o Debug.Print statement. O que ele faz imprimir o valor de Contador na Debug window do Visual Basic . Iremos aprender mais sobre esta janela mais frente no curso. Exemplo Do Until/Loop :

Contador = 1 Do Until Contador > 1000 Debug.Print Contador Contador = Contador + 1 Loop

Este loop se repete at que (Until) a varivel Contador exceda a 1000. Note que a estrutura Do Until/Loop no ser introduzida se a condio "at que" j for verdadeira no primeiro encontro. Exemplo Do/Loop While:

Soma = 1 Do Debug.Print Soma Soma = Soma + 3 Loop While Soma <= 50

Este loop se repete enquanto (While) a varivel Soma for menor ou igual a 50. Note que, desde que o verificador While est no final do loop, uma estrutura Do/Loop While sempre executada no mnimo uma vez.

Nvel Tcnico

45

Linguagem de Programao

Exemplo Do/Loop Until :

Soma = 1 Do Debug.Print Soma Soma = Soma + 3 Loop Until Soma > 50

Este loop se repete at que (Until) Soma seja maior que 50. E, da mesma forma que no exemplo anterior, a estrutura Do/Loop Until sempre executada no mnimo uma vez.

Certifique-se que voc pode sair do loop! Loops infinitos nunca so uma boa coisa. Se voc cair em um, tente Ctrl+Break. Algumas vezes isso funciona outras vezes a nica forma reiniciando sua mquina! O statement Exit Do ir tir-lo do loop e transferir o controle do programa para o statement seguinte ao Loop statement. A contagem no Visual Basic (VB Counting)

A contagem (Counting) conseguida usando o loop For/Next.

Exemplo For/Next:

For I = 1 to 50 Step 2 A=I*2 Debug.Print A Next I

Neste exemplo, a varivel I inicializa com o valor de 1 e, com cada interao do ciclo For/Next, incrementada por 2 (Step). Este looping continua at que I se torne maior que ou igual ao valor final (50). Se Step no for includo, o valor padro 1. Nvel Tcnico 46

Linguagem de Programao

Valores negativos tambm podem ser usados com Step.

Voc pode sair de um ciclo For/Next usando a declarao Exit For. Este ir transferir o controle do programa para a declarao seguinte declarao Next.

Figura 16 Identao de cdigo

Nvel Tcnico

47

Linguagem de Programao

A Ferramenta Message Box Uma das melhores functions no Visual Basic a message box. A message box exibe uma mensagem, um cone opcional, e um conjunto selecionado de botes de comando. O utilizador responder clicando em um dos botes.

A forma de declarao (statement) da message box no retorna nenhum valor (ela simplesmente exibe a caixa):

MsgBox Message, Type, Title onde Message - a mensagem de texto a ser exibida Type - o tipo de message box (veremos em um instante) Title - o texto exibido na barra de ttulo da message box

Voc no controla o local onde a message box aparecer na tela.

A forma de function da message box (correspondendo ao boto clicado pelo usurio).

retorna um valor em integer

Exemplo de uso (a resposta retorna um valor): Dim Response as Integer Response = MsgBox(Message, Type, Title) O argumento Type formado pela soma dos quatro valores seguintes: botes a serem exibidos, cone a exibir, que boto tem ativao padro e qual a modalidade da message box.

O primeiro componente do valor Type especifica os botes a exibir:

Nvel Tcnico

48

Linguagem de Programao

Valor 0 1 2 3 4 5

Significado Somente boto OK Botes OK/Cancel Botes Abort/Retry/Ignore Botes Yes/No/Cancel Botes Yes/No Botes Retry/Cancel

Symbolic Constant vbOKOnly vbOKCancel vbAbortRetryIgnore vbYesNoCancel vbYesNo vbRetryCancel

Tabela 11 Valores de type para os tipos de boto da MsgBox O segundo componente do Type especifica que cone exibir na message box:

Valor 0 16 32 48 64

Significado Nenhum cone cone de situao crtica Ponto de Interrogao Ponto de Exclamao cone de Informao

Symbolic Constant (Nenhum) vbCritical vbQuestion vbExclamation vbInformation

Tabela 12 Valores de type para os tipos de cones da MsgBox O terceiro componente do Type especifica que boto default (padro) - (ex pressionar Enter o mesmo que clicar no boto default):

Valor 0 256 512

Significado Primeiro boto default Segundo boto default Terceiro boto default

Symbolic Constant vbDefaultButton1 vbDefaultButton2 vbDefaultButton3

Tabela 13 Valores de type para especificao o boto padro da MsgBox

Nvel Tcnico

49

Linguagem de Programao

O quarto e ltimo componente do Type especifica a modalidade

Valor Significado 0 4096 Modo de Aplicao Modo de Sistema

Symbolic Constant vbApplicationModal vbSystemModal

Tabela 14 Valores de type para especificao da modalidade da MsgBox Se a caixa Application Modal, o utilizador deve responder caixa antes de continuar o trabalho na aplicao corrente. Se a caixa System Modal, todas as aplicaes ficam suspensas at que o utilizador responda message box.

Veja que para cada opo no Type, existem tanto valores numricos como symbolic constants. Lembre-se que sugerimos veementemente que as symbolic constants sejam usadas preferivelmente aos valores numricos. Voc deve concordar que vbOKOnly tem um significado bem mais compreensvel, para ns, que 0, ao selecionarmos um boto. O valor retornado pela forma de funo da message box relacionado ao boto clicado:

Valor 1 2 3 4 5 6 7

Significado OK button selected Cancel button selected Abort button selected Retry button selected Ignore button selected Yes button selected No button selected

Symbolic Constant vbOK vbCancel vbAbort vbRetry vbIgnore vbYes vbNo

Tabela 15 Valores de retorno da MsgBox Nvel Tcnico 50

Linguagem de Programao

Exemplo de Message Box:


MsgBox "Este um exemplo de uma message box", vbOKCancel + vbInformation, "Exemplo de Message Box"

Figura 17 Exemplo de Message Box

Nvel Tcnico

51

Linguagem de Programao

A porta Paralela: Fundamentos de Hardware e Software Entendendo as Portas Paralelas

Qualquer mquina s tem sentido quando disponibiliza uma interface de controle para quem faz uso dela. Um simples aspirador de p, por exemplo, s tem utilidade quando voc tem a capacidade de lig-lo ou deslig-lo como desejado, e se possvel, controlar sua capacidade de suco.

Num computador, que a 'raa dominante' no universo das mquinas, isso ganha uma complexidade muito maior. Ele possui diversas interfaces que so diferenciadas na forma, comportamento, usabilidade e arquitetura - cada qual apropriada para uma determinada situao, embora possuindo a flexibilidade de integrar-se umas as outras.

Assim para que o ser humano possa interagir com as interfaces, e para que interfaces possam comunicar-se umas com as outras precisam que haja uma forma de ligar o circuito interno com algum meio externo a ele.

As conexes eletrnicas que transmitem ou recebem impulsos eltricos como 'idioma' de transmisso, entre o ambiente interno e o externo foi atribudo o termo 'Porta', j que elas so os objetos que permitem entrar ou sair.

Portanto, as portas so linhas de comunicao usadas pela CPU para estabelecer e controlar interfaces. Os computadores usam as portas para conectar modems, impressoras, teclados, mouses, etc.

Como

dissemos,

existem

tipos

diferentes

de

portas,

que

funcionam

diferenciadamente. Por exemplo, a porta serial RS-232 envia 1 bit por vez, mas de forma multidirecional (em mo dupla). Ela pode enviar e receber unidades de bits ao mesmo tempo. Por outro lado, a porta paralela envia grupos de 8 bits e recebe grupos de 5 bits, um grupo de cada vez.

Nvel Tcnico

52

Linguagem de Programao

A porta paralela foi criada pela IBM em 1981, com o objetivo de possibilitar que seu computador PC se comunicasse com perifricos externos. A principal vantagem da porta paralela a velocidade, visto que ela transmite grupos de bits ao invs de unidades. Sua principal fraqueza a limitao quanto a distncia dos cabos. Cada dois metros de cabo ir gerar uma perda de meio volt, inviabilizando um cabo maior que 8 metros (limite extremo - que pode no funcionar bem em alguns casos) onde existe influncia suficiente na voltagem inicial para tornar os dados no confiveis. Por isso, portas paralelas so mais indicadas para comunicao interna do computador, bem como para interligao entre computador e perifricos.

Figura 18 Comunicao serial e Paralela

Como as portas paralelas Funcionam?

Alm das diferenas entre as portas, temos modelos diferentes em um mesmo tipo de porta. No caso da porta paralela, temos dois modelos bsicos: SPP (Standard Parallel Port) e EPP (Extended Parallel Port). A porta SPP pode transferir 150kb/s comunicando-se com a CPU utilizando um BUS de 8 bits, e 4 bits com os perifricos.

Nvel Tcnico

53

Linguagem de Programao

A porta EPP pode transferir at 2Mb/s com a ajuda de um cabo especial. Ela comunica-se com a CPU usando BUS de 32 bits, e 8 bits com os perifricos. Existe ainda uma variao do padro EPP, que se chama: ECP (Enhanced Capabilities Port). Esse padro trabalha de forma muito similar ao EPP, mas tem a diferena de realizar uma comunicao direta com a memria (DMA - Direct Memory Access), no necessitando do auxlio do processador.

Figura 19 Identificao dos terminais da porta paralela. SSP - Standard Parallel Port

A primeira verso da porta paralela no era bidirecional, apresentando apenas 3 grupos de registros. O registro de Dados, o registro de Status e o registro de Controle. Dados: Estando este registrador situado no endereo base (ver tabela seguinte), utilizado normalmente para enviar um byte para os pinos 2 a 9 da porta srie. Normalmente se ler desta localizao o valor obtido igual ao ltimo valor escrito no entanto, se a porta for bidirecional tambm possvel receber dados atravs deste endereo.

Status: O Status (base + 1) um registrador do qual apenas se pode ler. Quaisquer dados escritos neste endereo so ignorados. A porta de Status composta por 5 linhas de input vindas do exterior (pinos 10,11,12,13 e 15), um Bit de IRQ e dois bits reservados. O bit 7 desta porta invertido por hardware, isto Nvel Tcnico 54

Linguagem de Programao

significa que se este bit estiver a low porque o pino correspondente na porta est a high. Para a utilizao deste registrador so geralmente usados os 4 bits mais significativos, embora seja possvel utilizar o quinto. Controle: Este registrador est situado no endereo base + 2, sendo limitado a escrita. So usados 4 bits menos significativos do registro e necessrio o valor de 3 destes para que o output seja o esperado. Endereos das Portas Paralelas:

As portas paralelas so conhecidas em um computador pelas referncias LPT1 e LPT2. A porta padro a LPT1, cujos endereos base so: 0000:0408 (end. de memria), 378 hexadecimal (end. de porta), 888 decimal (end. de porta). Na porta LPT2 os endereos so: 0000:040A (end. de memria), 278 hexadecimal (end. de porta), 632 decimal (end. de porta). EEP Extended Parallel Port

Com o passar do tempo tornou-se necessrio que a porta paralela tivesse outras funcionalidades, como a bidirecionalidade, e a capacidade de enviar dados com 16 ou 32 bits. Foi assim criada a EPP. Esta apresenta para alm dos 3 registros iniciais, que so comuns SPP, mais 5 endereos.

Nvel Tcnico

55

Linguagem de Programao

Endereo Base + 0 Base + 1 Base + 2 Base + 3 Base + 4 Base + 5 Base + 6 Base + 7

Nome Dados Status Controlo Endereo Dados 2 Transferncias de 16/32 bits Transferncias de 32 bits Transferncias de 32 bits

Input / Output Output Input Output Input/Output Input/Output -

Modelo da porta SPP+EPP SPP+EPP SPP+EPP EPP EPP EPP EPP EPP

Tabela 16 Registros presentes nas verses SSP e EPP

Pino Nome
1 2-9 10 11 12 13 14 15 16 17 1825 Write Data 0-7 Interrupt Wait Spare Spare Data Strobe Spare

Input/ Descrio Output


Output In-Out Input Input Input Input Output Input Este pino quando apresenta 0 sada significa escrita, caso contrrio significa leitura Data Bus. Bidirecional Pino usado nas interrupes Usado para o protocolo de comunicao Spare - No usado no protocolo de comunicao Spare - No usado no protocolo de comunicao Quando a 0, indica transferncia de dados Spare - No usado no protocolo de comunicao Reset Ativo a 0 Quando a 0 indica transferncia de Endereo Ground

Reset Output AddressStrobe Output Ground GND

Tabela 17 Pinos normalmente usados nas portas EPP Endereo: Este registrador est especializado no envio de endereos, usa os mesmos pinos que os registros de Dados. Caso seja usado este registrador, o dispositivo ir encarregar-se de gerir a transferncia de dados. Usando para isso os pinos de Write, Address Strobe, Wait e Data. Dados 2: Este registrador bidirecional foi acrescentado com a EPP de modo a que fosse possvel ler dados usando os pinos 2 a 9 da porta paralela. Para controlar a bidirecionalidade deste registrador deve-se fazer Set, ou Reset ao Bit

Nvel Tcnico

56

Linguagem de Programao

2 do registrador de Controle (Por exemplo, deve ser colocado no registrador de Controle: XXXX0100, para inicializao). Transferncias: Os registradores com o endereo base + 5, base +6 e base +7 servem para enviar blocos de dados de 16 ou 32 bits. O hardware divide estes bits em blocos com o tamanho de um byte, e envia-os usando um protocolo de transferncia de dados.

Porque utilizar uma livraria externa? Escrever programas que realizam a comunicao com a porta paralela era muito fcil nos tempos do DOS, programando-se em Clipper, Pascal, ou Cobol, usando funes como _inp() ou _Outp(). Permaneceu fcil nas plataformas Win95/98, por intermdio do VB Classic, onde podamos usar funes como Inportb e outportb. Com o surgimento das plataformas NT, 2000 e similares, toda a simplicidade simplesmente desapareceu. A programao orientada a interfaces de

comunicao e controle entrou numa era de problemas, trazidos por uma muito estrita hierarquia de permisses e acesso, que tinha por objetivo atribuir seguranas do mesmo nvel daquelas existentes em servidores. Tentar acesso porta paralela, retornava mensagens como: "The exception privileged instruction occurred in the application at location...". A caixa de mensagem abaixo exibe essa situao:

Figura 20 Erro na tentar escrever nas portas. O que acontece em sistemas como o Win2000, XP e Windows Server 2003 que, por questo de segurana, os objetos so divididos em duas categorias: User

Nvel Tcnico

57

Linguagem de Programao

Mode e Kernell Mode, o primeiro correndo em ring3 e o segundo em ring0 objetos e comandos de user mode falham ao tentar acessar elementos kernell. Os programas que ns fazemos, caem na categoria User Mode, que no tm acesso direto s portas paralelas (que so objetos Kernell). Drivers de impressoras, e similares, tem acesso Kernell Mode, e assim podem acessar as portas paralelas. Mas programar esses tipos de servios no uma tarefa simples nem para experts, quanto mais para programadores de nvel mdio. Livraria Inpout32.dll Interface para a porta paralela

A livraria Inpout32.dll criada em C++ contendo um driver de acesso porta paralela embutido em seu interior em formato binrio, e uma DLL com funes interpretadoras de acesso ao driver. Ela faz isso atravs de declaraes de acesso avanado API do Windows, em multi-plataforma, aceitando qualquer verso do Windows, partir do Windows 95 SE em diante.

No vamos nos aprofundar em excesso respeito de Inpout32.dll, mas apenas o suficiente para conhecer seus aspectos indispensveis.

Ela possui duas interfaces distintas: Kernel mode driver Hwinterface.sys

Contm trs funes:


1. DriverEntry() - chamada no carregamento do driver. 2. hwinterfaceUnload() - chamada ao descarregar o drive 3. hwinterfaceDeviceControl()

- manuseia as chamadas que passam

atravs da API DeviceIOControl API. Realiza a leitura e escrita na porta paralela, de acordo com os cdigos de controle passados.

The DLL Inpout32

Nvel Tcnico

58

Linguagem de Programao

A inpout32.dll possui as seguintes funes implementadas:


1. Inp32() - l dados de um registrador da porta paralela. 2. Out32() - escreve dados de um registrador da porta paralela. 3. DllMain() - chamada quando a dll carregada ou descarregada - no

carregamento, ela verifica a verso do OS e carrega a interface hwinterface.sys se for necessrio.


4. Closedriver() - fecha o manuseador (handle) de driver aberto. chamado

antes de descarregar o driver.


5. Opendriver() - abre um manuseador (handle) para o driver hwinterface. 6. inst() , extrai o binrio 'hwinterface.sys' dos recursos embutidos para o

diretrio 'systemroot\drivers' e cria um servio. Esta funo chamada quando a funo 'Opendriver' falha ao abrir um manuseador (handle) vlido para o servio 'hwinterface'.
7. start() - inicia o servio hwinterface usando as APIs Service Control

Manager.
8. SystemVersion() - verifica a verso do OS e retorna o cdigo apropriado.

Exemplo 1

[Data Port] Addres: 0x378H ou &H378S em VB Express [Status Port] Addres: 0x379H ou &H379S em VB Express [Control Port] Addres: 0x37AH ou &H37AS em VB Express *note que esses endereos de portas esto em HEX (Hexadecimal)

Data Pins Pin 9: D7 Pin 8: D6 Pin 7: D5 Pin 6: D4 Pin 5: D3 Pin 4: D2 Pin 3: D1 Pin 2: D0

Status Pins Pin 10: S6 Pin 11: S7 Pin 12: S5 Pin 13: S4 Pin 15: S3

Control Pins Pin 1: C0 Pin 14: C1 Pin 16: C2 Pin 17: C3

Tabela 18 Pinos da Porta Paralela e suas funes

Nvel Tcnico

59

Linguagem de Programao

Neste primeiro exemplo vamos fazer testes de escrita para a porta paralela. Para isso precisamos copiar a livraria inpout32.dll para o diretrio

C:\WINDOWS\system32.

Em seguida crie um novo projeto em Visual Basic 2008 e chame-o de Testando_Portas Aplique um command button de Text 'Testar' ao form.

Na janela de cdigo do form comece aplicando o seguinte cdigo:

Option Strict Off Option Explicit On

Module InpOut32_Declarations 'Declaraes Inp e Out para I/O usando inpout32.dll.

Public Declare Function Inp Lib "inpout32.dll" Alias "Inp32" (ByVal PortAddress As Short) As Short

Public Declare Sub Out Lib "inpout32.dll" Alias "Out32" (ByVal PortAddress As Short, ByVal Value As Short)

End Module

E no evento Click do command button aplique o cdigo abaixo:

Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Out(&H378S, &HFFS) 'Imprime '1' para D7-D0 ou 255 em Decimal Dim Value1 As String 'String chamada Value1

Value1 = Inp(&H378S) 'Lemos o valor que est presente na porta MessageBox.Show(Value1) 'Exibimos o valor numa message box Nvel Tcnico 60

Linguagem de Programao

End Sub End Class

Na message box deve aparecer o valor 255. Voc pode escrever outros valores em Hexa para obter resultados diferentes, aplicando-os sempre linha : Out(&H378S, [entre a gama &H0S a &HFFS)

Brincando com LEDs e Porta Paralela

Vamos imaginar um circuito eletrnico muito simples: uma srie de 8 LEDs enfileirados. Precisaremos desse circuito para o prximo exemplo.

Figura 21 Ligaes de leds nos pinos de sada da porta paralela. Este prximo exemplo mostrar um exemplo de programa que ir fazer com que os leds conectado porta paralela acendam um aps outro, sendo que quando um led acende o anterior apaga. Primeiramente construa um form e o deixe com a seguinte aparncia:

Nvel Tcnico

61

Linguagem de Programao

Figura 22 Form para o Exemplo. O Boto Start Foi nomeado com o seguinte nome: cmdStart. O Boto Stop Foi nomeado com o seguinte nome: cmdStop. Logo aps insira o seguinte cdigo:

Option Strict Off

Option Explicit On

Module InpOut32_Declarations 'Declaraes Inp e Out para I/O usando inpout32.dll.

Public Declare Function Inp Lib "inpout32.dll" Alias "Inp32" (ByVal PortAddress As Short) As Short

Public Declare Sub Out Lib "inpout32.dll" Alias "Out32" (ByVal PortAddress As Short, ByVal Value As Short)

End Module

Public Class Form1 Dim cont As Integer

Private Sub cmdStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdStart.Click tmrcont.Enabled = True cont = 1 End Sub

Private Sub cmdStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdStop.Click Nvel Tcnico 62

Linguagem de Programao

tmrcont.Enabled = False Out(&H378S, &H0S) End Sub

Private Sub tmrcont_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrcont.Tick If cont > 128 Then cont = 1 End If Out(&H378S, cont) cont = cont * 2 End Sub End Class

Nvel Tcnico

63

Linguagem de Programao

Manipulao de Arquivos

Neste captulo ser demonstrado como ler e escrever em arquivos textos no VB2008. O VB.NET introduziu um novo forma orientada a objetos de trabalhar com arquivos . O namespace System.IO fornece diversas classes para trabalhar com arquivos textos , arquivos binrios e streams de bytes. As classes contm diversos mtodos para as operaes mais comuns com arquivos : copiar , excluir, manipular os atributos , etc... Para ler arquivos textos vamos usar a classe StreamReader e os mtodos Read e Readline. Para escrever em arquivos textos iremos usar a classe StreamWriter e os mtodos Write e WriteLine. Geralmente quando vamos tratar arquivos textos e realizar operaes de leitura e escrita precisamos verificar se um determinado arquivo existe, fazemos isto usando a classe System.IO.File que possui os seguintes mtodos :

AppendText

Cria um StreamWriter anexa texto UTF-8 a um arquivo existente. Copy Overloaded. Copia um arquivo existente para um novo arquivo. Create Overloaded. Cria um arquivo no diretrio especificado. CreateText Cria ou abre um novo arquivo para escrita. Delete Exclui um arquivo definido Exists Determina se um arquivo existe. GetAttributes Obtm os atributos do arquivo especificado. GetCreationTime Retorna a data e hora de criao para o arquivo ou pasta definido. GetLastAccessTime Retorna a data e hora de criao para o arquivo ou pasta definido acessado pela ltima vez.

Tabela 19 mtodos da classe System.IO.File. O mtodo CreateText cria um arquivo texto e retorna um objeto System.IO.Writer; usando o objeto System.IO.Writer podemos escrever no arquivo texto. Para criar um arquivo texto usamos o seguinte cdigo: Dim oArquivo as System.IO.File Dim oEscrever as System.IO.StreamWriter

oEscrever = oArquivo.CreateText ("c:\teste\teste.txt") Nvel Tcnico 64

Linguagem de Programao

O mtodo OpenText abre um arquivo texto para leitura e retorna um objeto System.IO.StreamReader , com este objeto podemos ler o arquivo. Para abrir um arquivo texto para leitura usamos o seguinte cdigo : Dim oArquivo as System.IO.File Dim oLeitura as System.IOStreamReader

oLeitura = oArquivo.OpenText("c:\teste\teste.txt")

Os mtodos da classe System.IO.Writer para escrever em um arquivo texto so : Write - Inclui uma linha no arquivo texto WriteLine - Inclui uma linha no arquivo com um caractere de nova linha no fim da linha. Editor de textos simples Inicie um novo projeto no Visual Basic 2008 com as seguintes caractersticas (sinta-se a vontade para alterar a seu gosto.)

Figura 23 Form para o Exemplo: Editor de texto simples.

Nvel Tcnico

65

Linguagem de Programao

O cdigo e a explicao segue abaixo:


'Editor de textos simples 'Jeronimo Costa Penha 23/07/2009 'Para a manipulao dos arquivos do programa ' necessrio importar o namespace system.IO 'Lugar onde esto contidas as classes 'de manipulao de arquivos Imports System.IO Public Class Form1 Dim Arquivo As String 'Primeiro Passo: inicializao do form Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Arquivo = "" ' limpa a textbox btnSalvar.Enabled = False ' desabilita o botao salvar End Sub ' Segundo passo: boto sair, me.close Private Sub btnSair_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSair.Click Me.Close() 'Fecha o programa End Sub ' Terceiro passo: boto limpar/novo Private Sub btnLimpar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLimpar.Click txtTexto.Text = "" ' limpa a textbox txtTexto para que o editor fique limpo ' ou que se possa iniciar um outro documento btnSalvar.Enabled = False 'desabilita o boto Salvar End Sub 'Quarto passo: Boto abrir Arquivo Private Sub btnAbrir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAbrir.Click Dim Abrir As OpenFileDialog = New OpenFileDialog() 'janela padro de

Nvel Tcnico

66

Linguagem de Programao

'abertura de arquivos Dim Resultado As DialogResult 'varivel que receber a 'resposta da dialog, "Abrir" ou "cancelar" Dim StreamTexto As IO.StreamReader ' objeto de leitura de arquivo On Error GoTo Erro 'caso haja algum erro ao abrir o arquivo vai para Erro Abrir.Title = "Abrir arquivo" 'esta linha seta o ttulo da janela Abrir.Filter = "Arquivos Textos (*.txt)|*.txt" 'esta linha ordena que 'apenas arquivos txt sejam abertos Resultado = Abrir.ShowDialog 'aps a janela de abertura de arquivos ser fechada 'resultado recebe o boto clicado If Resultado = Windows.Forms.DialogResult.Cancel Then 'se for cancel, sai da sub Exit Sub End If Arquivo = Abrir.FileName ' arquivo recebe o nome e caminho 'do arquivo a ser aberto If Arquivo <> "" Then ' se o nome do arquivo for diferente de vazio StreamTexto = New IO.StreamReader(Arquivo) ' abre o arquivo para leitura txtTexto.Text = StreamTexto.ReadToEnd 'coloca o texto do arquivo na textbox StreamTexto.Close() 'Fecha o arquivo btnSalvar.Enabled = True 'Habilita o boto salvar End If Exit Sub 'Sai da Sub Erro: ' exibe menssagem de erro MessageBox.Show("Arquivo Invalido", "Erro ao abrir", MessageBoxButtons.OK) End Sub

'Quinto Passo: Boto salvar como Private Sub btnSalvarComo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalvarComo.Click Dim salvar As SaveFileDialog = New SaveFileDialog() 'janela padro de 'gravao de arquivos em disco Dim Resultado As DialogResult 'varivel que receber a 'resposta da dialog, "Salvar" ou "cancelar" Dim StreamTexto As IO.StreamWriter ' objeto de escrita de arquivo On Error GoTo Erro 'caso haja algum erro ao abrir o arquivo vai para Erro salvar.CheckFileExists = False 'no permite a verificao de existncia do arquivo

Nvel Tcnico

67

Linguagem de Programao

salvar.Title = "Salvar arquivo" 'esta linha seta o ttulo da janela salvar.Filter = "Arquivos Textos (*.txt)|*.txt" 'esta linha ordena que 'apenas arquivos txt sejam salvos Resultado = salvar.ShowDialog 'aps a janela de abertura de arquivos ser fechada 'resultado recebe o boto clicado If Resultado = Windows.Forms.DialogResult.Cancel Then 'se for cancel, sai da sub Exit Sub End If Arquivo = salvar.FileName ' arquivo recebe o nome e caminho 'do arquivo a ser salvo If Arquivo = "" Then ' se o nome do arquivo for igual de vazio 'exibe uma mensagem de erro MessageBox.Show("O arquivo precisa de um nome", "Erro ao salvar", MessageBoxButtons.OK) Else StreamTexto = New IO.StreamWriter(Arquivo) ' abre o arquivo para gravao StreamTexto.Write(txtTexto.Text) 'coloca o texto da textbox no arquivo StreamTexto.Close() 'Fecha o arquivo btnSalvar.Enabled = True ' habilita o boto de salvar End If Exit Sub 'Sai da Sub Erro: ' exibe menssagem de erro MessageBox.Show("Arquivo invlido ou inexistente", "Erro ao salvar", MessageBoxButtons.OK) End Sub 'Sexto Passo: Boto de salvar Private Sub btnSalvar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalvar.Click Dim StreamTexto As IO.StreamWriter ' objeto de escrita de arquivo If Arquivo <> "" Then ' caso o nome do arquivo seja vlido StreamTexto = New IO.StreamWriter(Arquivo) ' abre o arquivo para gravao StreamTexto.Write(txtTexto.Text) 'coloca o texto da textbox no arquivo StreamTexto.Close() 'Fecha o arquivo MsgBox("Arquivo salvo com sucesso", MsgBoxStyle.OkOnly, "") ' habilita o boto de salvar End If End Sub End Class

Nvel Tcnico

68

Linguagem de Programao

Base de dados

Bancos de dados (ou bases de dados), so conjuntos de registros dispostos em estrutura regular que possibilita a reorganizao dos mesmos e produo de informao. Um banco de dados normalmente agrupa registros utilizveis para um mesmo fim. Um banco de dados usualmente mantido e acessado por meio de um software conhecido como Sistema Gerenciador de Banco de Dados (SGBD). Normalmente um SGBD adota um modelo de dados, de forma pura, reduzida ou estendida. Muitas vezes o termo banco de dados usado como sinnimo de SGDB. O modelo de dados mais adotado hoje em dia o modelo relacional, onde as estruturas tm a forma de tabelas, compostas por tuplas (linhas) e colunas. Utilizao Os bancos de dados so utilizados em muitas aplicaes, abrangendo praticamente todo o campo dos programas de computador. Os bancos de dados so o mtodo de armazenamento preferencial para aplicaes multiusurio, nas quais necessrio haver coordenao entre vrios usurios. Entretanto, so convenientes tambm para indivduos, e muitos programas de correio eletrnico e organizadores pessoais baseiam-se em tecnologias padronizadas de bancos de dados. Um banco de dados um conjunto de informaes com uma estrutura regular. Um banco de dados normalmente, mas no necessariamente, armazenado em algum formato de mquina legvel para um computador. H uma grande variedade de bancos de dados, desde simples tabelas armazenadas em um nico arquivo at gigantescos bancos de dados com muitos milhes de registros, armazenados em salas cheias de discos rgidos. Bancos de dados caracteristicamente modernos so desenvolvidos desde os anos da dcada de 1960. Um pioneiro nesse trabalho foi Charles Bachman. Apresentao dos dados

Nvel Tcnico

69

Linguagem de Programao

A apresentao dos dados geralmente semelhante de uma planilha eletrnica, porm os sistemas de gesto de banco de dados possuem caractersticas especiais para o armazenamento, classificao, gesto da integridade e recuperao dos dados. Com a evoluo de standards de conectividade entre as tabelas de um banco de dados e programas desenvolvidos em linguagens como Java, Delphi, Visual Basic, C++, etc, a apresentao dos dados, bem como a navegao, passou a ser definida pelo programador ou o designer de aplicaes. Como hoje em dia a maioria das linguagens de programao fazem ligaes a bancos de dados, a apresentao destes tem ficado cada vez mais a critrio dos meios de programao, fazendo com que os bancos de dados deixem de restringir-se s pesquisas bsicas, dando lugar ao compartilhamento, em tempo real, de informaes, mecanismos de busca inteligentes e permissividade de acesso hierarquizada. Direitos de Propriedade A Diretiva CE de Bases de Dados (EU Database Directive), estabelecida pelo Parlamento Europeu em de 11 de maro de 1996, fixa os termos de proteo jurdica a bancos de dados, em particular os direitos de propriedade sobre a base. Mesmo para os pases que no a adotam explicitamente, ou no possuam normas mais especficas sobre o tema, como o Brasil, tem sido a principal referncia. Modelos de base de dados O modelo plano (ou tabular) consiste de matrizes simples, bidimensionais, compostas por elementos de dados: inteiros, nmeros reais, etc. Este modelo plano a base das planilhas eletrnicas. O modelo em rede permite que vrias tabelas sejam usadas simultaneamente atravs do uso de apontadores (ou referncias). Algumas colunas contm apontadores para outras tabelas ao invs de dados. Assim, as tabelas so ligadas por referncias, o que pode ser visto como uma rede. Uma variao particular deste modelo em rede, o modelo hierrquico, limita as relaes a uma estrutura semelhante a uma rvore (hierarquia - tronco, galhos), ao invs do modelo mais geral direcionado por grafos. Nvel Tcnico 70

Linguagem de Programao

Bases de dados relacionais consistem, principalmente de trs componentes: uma coleo de estruturas de dados, nomeadamente relaes, ou informalmente tabelas; uma coleo dos operadores, a lgebra e o clculo relacionais; e uma coleo de restries da integridade, definindo o conjunto consistente de estados de base de dados e de alteraes de estados. As restries de integridade podem ser de quatro tipos: domnio (tambm conhecidas como type), atributo, relvar e restries de base de dados. Diferentemente dos modelos hierrquico e de rede, no existem quaisquer apontadores, de acordo com o Princpio de Informao: toda informao tem de ser representada como dados; qualquer tipo de atributo representa relaes entre conjuntos de dados. As bases de dados relacionais permitem aos utilizadores (incluindo programadores) escreverem consultas (queries) que no foram antecipadas por quem projetou a base de dados. Como resultado, bases de dados relacionais podem ser utilizadas por vrias aplicaes em formas que os projetistas originais no previram, o que especialmente importante em bases de dados que podem ser utilizadas durante dcadas. Isto tem tornado as bases de dados relacionais muito populares no meio empresarial. O modelo relacional uma teoria matemtica desenvolvida por Ted Codd para descrever como as bases de dados devem funcionar. Embora esta teoria seja a base para o software de bases de dados relacionais, muito poucos sistemas de gesto de bases de dados seguem o modelo de forma restrita e todos tm funcionalidades que violam a teoria, desta forma variando a complexidade e o poder. A discusso se esses bancos de dados merecem ser chamados de relacional ficou esgotada com tempo, com a evoluo dos bancos existente. Aplicao de banco de dados

Bancos de dados so usados em muitas aplicaes, enquanto atravessando virtualmente a gama inteira de software de computador. Bancos de dados so o mtodo preferido de armazenamento para aplicaes multi-usurias grandes onde a coordenao entre muitos usurios necessria. At mesmo usurios individuais os acham conveniente, entretanto, muitos programas de correio eletrnico e organizadores pessoais esto baseados em tecnologia de banco de dados standard. Nvel Tcnico 71

Linguagem de Programao

Aplicativo de banco de dados Um Aplicativo de Banco de dados um tipo de software exclusivo para gerenciar um banco de dados. Aplicativos de banco de dados abrangem uma vasta variedade de necessidades e objetivos, de pequenas ferramentas como uma agenda, at complexos sistemas empresariais para desempenhar tarefas como a contabilidade. O termo "Aplicativo de Banco de dados" usualmente se refere a softwares que oferecem uma interface para o banco de dados. O software que gerencia os dados geralmente chamado de sistema gerenciador de banco de dados (SGBD) ou (se for embarcado) de "database engine". Exemplos de aplicativos de banco de dados so Microsoft Visual FoxPro, Microsoft Access, dBASE, FileMaker , (em certa medida) HyperCard, MySQL, PostgreSQL, Firebird, Microsoft SQL Server e Oracle. Em Maro, 2004, AMR Research (como citado em um artigo da CNET News.com listado na seco de "Referncias") previu que aplicaes de banco de dados de cdigo aberto seriam amplamente aceitas em 2006. Segurana em banco de dados Os bancos de dados so utilizados para armazenar diversos tipos de informaes, desde dados sobre uma conta de e-mail at dados importantes da Receita Federal. Para tal existem diversos tipos, os quais variam em complexidade e sobretudo em segurana. So meios de proteger as informaes armazenadas num banco de dados Criptografia Senhas Backup

VB.Net 2008 Criando uma aplicao bsica completa de acesso a base de dados

Esse captulo tem o objetivo de mostrar como usar as seguintes tcnicas: - Criar banco de dados , tabelas , campos , ndices e definir chave primria no SQL Server 2008 Express; Nvel Tcnico 72

Linguagem de Programao

- Criar uma conexo com o banco de dados; - Criar DataSets; - Criar formulrios com dados vinculados com operaes bsicas CRUD - Create , Update e Delete;

Abra o seu Visual Basic 2008 e crie um novo projeto da seguinte forma: A partir do menu File selecione a opo New Project ou na tela inicial opo Create , clique em Project;

Figura 24 Criando uma aplicao de acesso de base de dados.

Ser apresentada a janela new Project , selecione o template Windows Forms Application e informe o nome: appCompleta1.

Nvel Tcnico

73

Linguagem de Programao

Figura 25 Janela New Project.

Ser criado um novo projeto e na janela Solution Explorer voc ver o formulrio form1.vb criado por padro. Vamos criar o banco de dados que ser usado na aplicao. Vamos fazer isso no prprio IDE do VB 2008. No menu Data selecione a opo Add New Data Source

Figura 26 Menu de adio de Data Source.

Na janela - Data Source Configuration Wizard - selecione a opo Database.

Nvel Tcnico

74

Linguagem de Programao

Figura 27 Data Source Configuration Wizard.

Na janela Data Source Configuration WIzard vamos selecionar uma nova conexo clicando no boto : New Connection.

Figura 28 Construindo uma conexo.

Na janela Add Connection vamos alterar a opo clicando no boto Change

Nvel Tcnico

75

Linguagem de Programao

Figura 29 Janela ADD Conection.

Selecione a opo Microsoft SQL Server DataBase File - e clique no boto OK. Nota: Se desejar que esta opo sempre seja oferecida marque a opo - Always use this selection.

Figura 30 Janela Change Data Source.

Como desejamos criar um novo banco de dados informe um nome para identificar o banco de dados. Eu usei o nome Macoratti. A seguir clique no boto OK.

Nvel Tcnico

76

Linguagem de Programao

Figura 31 Janela ADD Conection. A seguir clique no boto Sim para confirmar a criao do banco de dados no SQL Server 2008 Express.

Figura 32 Mensagem de confirmao de criao da base de dados.

O Banco de dados ser apresentado na janela e voc poder visualizar a string de conexo. Para continuar clique no boto Next >.

Nvel Tcnico

77

Linguagem de Programao

Figura 33 Wizard de configurao de Data Source.

Aqui ocorre um evento muito importante. Preste ateno!

Figura 34

apresentada uma janela informando que a conexo que voc selecionou usa um banco de dados local que no esta no projeto atual, e, em seguida vem a pergunta: Voc deseja copiar o arquivo para o projeto e modificar a conexo? aqui que muitos , por no prestarem ateno, perdem noites de sono... Veja a mensagem logo abaixo que procura esclarecer o que esta acontecendo. Leia com ateno (j traduzida) : "Se voc copiar o arquivo de dados para o seu projeto, ele ser copiado para o diretrio de sada (AppData) toda a vez que voc rodar a aplicao." Ora, isso significa que se voc rodar a aplicao e gravar alguns dados no banco de dados da prxima vez que executar a aplicao o banco de dados ser copiado para o seu projeto e dos dados sero perdidos! Na prxima janela marque a opo para salvar a string de conexo e clique no boto Next >.

Nvel Tcnico

78

Linguagem de Programao

Figura 35 Como ainda no criamos o banco de dados vamos criar um dataset vazio informando o nome MacorattiDataSet e clicando em Finish

Figura 36 Agora vamos criar a tabela. Abra o Database Explorer e clique com o boto direito do mouse sobre o objeto Table e selecione a opo Add New table

Nvel Tcnico

79

Linguagem de Programao

Figura 37 A seguir defina trs campos na tabela: clienteID , nome e email conforme abaixo. Defina tambm o campo clienteID como sendo a chave primria e do tipo identity

Figura 38 Salve a tabela com o nome Clientes

Figura 39 Clique sobre a tabela criada e na opo Show Table Data informe alguns valores conforme a figura. Nvel Tcnico 80

Linguagem de Programao

Figura 40 Agora abra o DataSet criado e arraste a tabela Clientes para o descritor dataset

Figura 41 Selecionando o formulrio , form1.vb, e abrindo a janela Show Data Sources , iremos ver o dataset com os campos definidos.

Nvel Tcnico

81

Linguagem de Programao

Figura 42 Arraste o dataset Clientes para o formulrio usando o modo Details e voc ver a criao dos objetos BindingSource, BindingNavigator.

Figura 43 Pronto! agora s executar a aplicao para verificar que o acesso a dados foi concluda, a navegao pelos registros tambm esta ativa e as opes para alterar e excluir dados foram criadas com sucesso. No foi necessrio nenhuma ferramenta acional alm do VB 2008 Express.

Nvel Tcnico

82

Linguagem de Programao

Figura 44

Nvel Tcnico

83

Linguagem de Programao

Bibliografia

Curso Bsico de Visual Basic 6 Silva, Alex. 2009 http://www.microsoft.com/brasil/msdn/ www.macoratti.net

Nvel Tcnico

84

You might also like