85
Nova pagina 1 - Introdução e Conceitos VB.Net Aquecendo as turbinas Sente-se e não esqueça o cinto de segurança ... Vamos dar a partida para mais uma emocionante aventura : explorar , e aprender a utilizar o novo ambiente de desenvolvimento da Microsoft, a plataforma .NET , com foco no VB.NET. O VB.Net não é apenas uma nova versão do Visual Basic que traz algumas melhorias em relação a versão anterior. Na verdade a mudança é tamanha que , sem exageros , podemos dizer que vamos aprender uma nova linguagem de programação. A partir de agora estaremos procurando tratar de explicar como usar e utilizar o Visual Basic.NET e não somente isto mas também a conhecer o .NET Framework e ASP.NET e por que não C#. Existem alguns artigos em português que você pode consultar para uma visão geral sobre a plataforma .NET : 1. http://www.microsoft.com/brasil/msdn/tecnologias/visualbasic_bday.asp 2. http://www.microsoft.com/brasil/msdn/tecnologias/visualbasic_virada1.asp 3. http://www.microsoft.com/brasil/msdn/tecnologias/visualbasic_webform.asp A plataforma .NET Mas o que é afinal a plataforma .NET ? De forma resumida podemos dizer que a plataforma .NET é um ambiente de desenvolvimento integrado com gerenciamento de dados e estrutura de servidores para Web. Em sua estrutura a arquitetura .NET é composta pelos seguintes softwares e pacotes : Softwares Pacotes a. Sistema operacional; b. Enviroments; c. Services Framework; d. Common Language Runtimes (CLR); e. Aplicações (Assemblies). a. SQL Server 2000; b. Host Integration Server 2000; c. Commerce Server 2000; d. Visual Studio.Net; e. Exchange 2000. Além disto a plataforma .NET é oferece os seguintes serviços: file:///d|/geo_hp/livro_mac1.htm (1 of 85) [01/11/03 18:03:18]

vb.net-12006022825440

Embed Size (px)

Citation preview

Nova pagina 1

- Introduo e ConceitosVB.Net Aquecendo as turbinasSente-se e no esquea o cinto de segurana ... Vamos dar a partida para mais uma emocionante aventura : explorar , e aprender a utilizar o novo ambiente de desenvolvimento da Microsoft, a plataforma .NET , com foco no VB.NET. O VB.Net no apenas uma nova verso do Visual Basic que traz algumas melhorias em relao a verso anterior. Na verdade a mudana tamanha que , sem exageros , podemos dizer que vamos aprender uma nova linguagem de programao. A partir de agora estaremos procurando tratar de explicar como usar e utilizar o Visual Basic.NET e no somente isto mas tambm a conhecer o.NET Framework e ASP.NET e por que no C#. Existem alguns artigos em portugus que voc pode consultar para uma viso geral sobre a plataforma .NET : 1. http://www.microsoft.com/brasil/msdn/tecnologias/visualbasic_bday.asp 2. http://www.microsoft.com/brasil/msdn/tecnologias/visualbasic_virada1.asp 3. http://www.microsoft.com/brasil/msdn/tecnologias/visualbasic_webform.asp

A plataforma .NETMas o que afinal a plataforma .NET ? De forma resumida podemos dizer que a plataforma .NET um ambiente de desenvolvimento integrado com gerenciamento de dados e estrutura de servidores para Web. Em sua estrutura a arquitetura .NET composta pelos seguintes softwares e pacotes :Softwares a. b. c. d. e. Pacotes a. b. c. d. e.

Sistema operacional; Enviroments; Services Framework; Common Language Runtimes (CLR); Aplicaes (Assemblies).

SQL Server 2000; Host Integration Server 2000; Commerce Server 2000; Visual Studio.Net; Exchange 2000.

Alm disto a plataforma .NET oferece os seguintes servios:

file:///d|/geo_hp/livro_mac1.htm (1 of 85) [01/11/03 18:03:18]

Nova pagina 1

1-) .Net Framework - Ambiente em tempo de execuo onde voc pode construir , instalar e executar servios Web e outras aplicaes. 2-) ASP.Net A verso atualizada do Active Server Pages composta pelo .NET Web Forms.

3-) Web Service .Net - Um servio para permitir a comunicao com outros aplicativos , independente da plataforma usada . 4-) .Net Windows Form - Permite a criao de aplicativos dedicados para clientes Windows que usam o .Net Framework. 5-) ADO.Net - Fornece o suporte para tarefas que envolvam acesso a base de dados.

O .NET FrameWorkA MSDN (pelas prprias palavras da Microsoft) diz : "O .NET FrameWork um ambiente multi-linguagem para construo, distribuio e execuo de aplicaes e servios Webs." "O .NET FrameWork uma nova plataforma desenhada para simplificar o desenvolvimento de aplicaes voltadas para a Internet." "O .NET FrameWork composta por dois componentes principais: o Common Language Runtime ( CRL ) e a livraria de classes NETFramework."

Alguma dvida ? J deu para perceber que o .NET Framework o corao do .NET e que as CRL fazem o papel das DLLs das APIs do Windows e dos arquivos run-times do VB. Assim , ao gerar o seu executvel com a VB.NET as livrarias CRL sero usadas em tempo de execuo para ele possa funcionar e assim no dependa das livrarias externas como ocorre hoje com o VB6 e anteriores.

O VB.NETO Visual Basic.NET uma hierarquia de classes que esto incluidas no .NET Framework sendo que a partir de agora o Visual Basic ( VB.NET ) uma linguagem orientada a objetos com herana , polimorfismo , encapsulamento , etc... A verso atual do Visual Basic .NET a verso que voc encontra no Visual Studio.NET beta 2 e para poder usar voc vai precisar ter os seguintes requisitos :Processador Memria RAM Espao em disco Sistema operacional Unidade de CD-ROM Acesso internet Pentium II ou compatvel com 500 Mhz 128 Mb (256 Mb recomendvel) No mnimo 2 Giga sobrando. Assim 1 Giga ficam por conta da instalao e o resto para o sistema. Windows 2000/Windows XP Unidade de CD-ROM/DVD Para instalar as correes (services packs) solicitados.

.NET Framework : introduo e classes importantesfile:///d|/geo_hp/livro_mac1.htm (2 of 85) [01/11/03 18:03:18]

Nova pagina 1

O que o .NET Framework ? Comeamos este artigo com uma pergunta. Uma pergunta que no fcil responder. Vamos tentar neste artigo responder a pergunta e ir um pouco mais alm , dando uma pequena introduo as principais classes do .NET Framework. "O .NET Framework uma nova plataforma que simplifica o desenvolvimento de aplicaes para o ambiente altamente distribudo da Web". Seus objetivos principais so : 1. 2. 3. 4. Fornecer um consistente ambiente de programao orientada a objetos. Fornecer um ambiente de execuo de cdigo que minimize os conflitos de versionamento e empacotamento/disrtribuio. Prover um ambiente de execuo de cdigo que garanta a execuo segura do cdigo , incluindo cdigo criado por terceiros. Prover um ambiente de execuo de cdigo que elimine os problemas de desempenho de ambientes interpretados ou de scripts.

Os dois principais componentes do .NET Framework so o CLR e a livraria de classes(Class library). O CLR gerencia a memria, as threads , a verificao da segurana, a compilao e o cdigo em tempo de execuo e a livraria de classes uma coleo de classes orientadas a objeto de tipos reutilizveis integradas com a CLR . O .NET Framework pode ser usado para criar os seguintes tipos de aplicaes e servios: 1. 2. 3. 4. 5. 6. Aplicaes do tipo Console Baseadas em scripts Windows Forms ASP.NET Windows Services XML Web Services

O .NET Framework ento um poderoso ambiente de desenvolvimento que consiste de vrios componentes e servios combinados. constitudo de milhares de classes (umas 6 mil) que provm toda funcionalidade que antes voc encontrava quer no Windows quer no Visual Basic.

Nota: J deu para perceber que com tantas classes encontrar aquele classe que voc precisa pode se tornar um martrio. Para facilitar a sua vida o .NET Framework organizado de forma hierrquica existem os espaos de nomes (Namespaces) que compe e indicam uma determinada ramificao na hierarquia. Nos namespaces a denominao para cada espao de nome composta de uma srie de trechos separados por um ponto. Ex: O namespace System.Data.SqlClient esta relacionado a System.Data mas no esta contido nele pois esta num nivel hierrquico superior.No .NET Framework h dois nomes de nvel mais elevado: System e Microsoft. Os espao de nomes System esto disponveis para usurios do VB .NET. O espao de nome Microsoft especifico do Visual Studio . O .NET Framework contm o CLR - Common Languague Runtime ; ele responsvel pela execuo do cdigo que voc gerou no ambiente ; quer usando VB .NET , ASP.NET ou outra linguagem .NET. Todas as linguagens so compiladas para a MSIL - Microsoft Intermediate Languague que em seguida convertido em cdigo nativo durante sua primeira execuo.(uma JVM - Java Virtual Machine da vida...). Todas as linguagens com o suporte do CLR possuem o mesmo tipo de dados , com isto fica mais fcil a passagem de parmetros entre as linguagens , voc no precisa fazer mais converses nem malabarismos. Podemos dizer ento que o CLR o corao do .NET Framework , e , apesar disto , ele trabalhar em oculto , sendo que a parte que aparece do .NET Framework so as classes que usamos na nossa aplicao. Vejamos algumas das classes teis do ambiente que voc com certeza ir usar mais cedo ou mais tarde. Algumas classes importantes do .NET Frameworkfile:///d|/geo_hp/livro_mac1.htm (3 of 85) [01/11/03 18:03:18]

Nova pagina 1

1. 2. 3. 4. 5.

Console - permite exibir e ler a partir da linha de comando usando uma janela DOS Math - inclui diversos clculos matemticos. Random - realiza a gerao de nmeros aleatrios Environment - efetua a leitura e gravao nas variveis de ambiente do sistema Collections : ArrayList e SortedList - permite o tratamento de conjunto de itens

Nota: Para rodar o .NET Framework existem alguns pr-requisitos de hardware . Abaixo um resumo das plataforma que suportam o .NET Framework tanto para o cliente como para o servidor: Cenrio Sistema Operacional Cliente Microsoft Windows 98 Microsoft Windows 98 Second Edition Microsoft Windows Millennium Edition Microsoft Windows NT 4.0 Workstation com Service Pack 6.0a ou superior Microsoft Windows NT 4.0 Server com Service Pack 6.0a ou superior Microsoft Windows 2000 Professional Microsoft Windows 2000 Server Microsoft Windows 2000 Advanced Server Microsoft Windows XP Home Edition Microsoft Windows XP ProfessionalNota: Em todos estes sistemas requerido o Microsoft Internet Explorer 5.01 ou superior e Windows Installer 2.0 ou superior Servidor Microsoft Microsoft Microsoft Microsoft Windows Windows Windows Windows 2000 Professional com Service Pack 2.0 2000 Server com Service Pack 2.0 2000 Advanced Server com Service Pack 2.0 XP Professional

Para usar caractersticas adicionais como ASP.NET, COM+ services, e SQL Server .NET Data Provider, voc vai precisar dos seguintes softwares: cenrio Cliente caracterstica SQL Server .NET Data Provider Acesso ao system management information COM+ services SQL Server .NET Data Provider ASP.NET Software Necessrio Microsoft Data Access Components (MDAC) 2.6 Windows Management Instrumentation (WMI) (instalado com o SO no Windows 2000, Windows Millennium Edition, e Windows XP) Windows 2000 Service Pack 2.0 Microsoft Data Access Components (MDAC) 2.7 Microsoft Internet Information Services (IIS) 5.0

Servidor

A classe MathA classe Math fornece constantes e mtodos estticos ou compartilhados ( um mtodo esttico/compartilhado pode ser usado sem instanciar a classe Math) para funes matemticas relacionadas a trigonometria , logartimos , etc.. Abaixo vou mostrar os mais importantes:

file:///d|/geo_hp/livro_mac1.htm (4 of 85) [01/11/03 18:03:18]

Nova pagina 1

Abs Cos Exp Log Log10 Max Min Pow Round Sign Sin Sqrt Tan

Retorna o valor absoluto do nmero (se for negativo retorna o valor positivo do nmero) Retorna o valor do coseno de um ngulo. Retorna o valor de e elevado a uma potncia especfica. Retorna o logartimo de um nmero. Retorna o logartimo na base 10 de um nmero. Retorna o maior nmero entre dois nmeros. Retorna o menor nmero entre dois nmeros. Retorna um nmero elevado a potncia indicada. Retorna o nmero mais prximo de um nmero. Retorna um valor que indica o sinal do nmero. Retorna o valor do seno de um ngulo. Retorna a raiz quadrada de um nmero. Retorna o valor da tangente de um ngulo.

Para ver como usar os mtodos leia o artigo: Usando alguns mtodos do namespace System.Math

A classe ConsoleJ usamos a classe console em artigos anteriores. Para inteirar-se leia os artigos: 1. Minha primeira aplicao VB.NET 2. VB .NET - Formatando a sainda do Console Abaixo listamos alguns dos mtodos bsicos da classe console : Mtodo Read Readline Setin SetError SetOut Write Writline Descrio L informaes a partir da linha de comando.(L o prximo caractere) L informaes a partir da linha de comando. L a prxima linha (todos os caracteres at encontrar o Enter) ( no o inclu) Altera a origem de entrada para Read e ReadLine. Altera o destino das mensagens de erro durante a execuo do seu programa Altera o destino dos mtodos Write e Writeline. Exibe informaes na linha de comando. Exibe informaes na linha de comando.(Termina com uma nova linha)

Abaixo temos um exemplo usando alguns dos mtodos acima. Vamos explicar como ele funciona: Podemos redirecionar a entrada , a sada ou as informaes de erro do nosso programa para qualquer destino onde houver um TextReader ou TextWriter.No exemplo abaixo iremos direcionar o resultado para um arquivo: Nota : A classe TextReader representa um leitor que pode ler uma srie sequncial de caracteres. Como uma classe abstrata no pode ser instnciada diretamente; devemos criar uma classe derivada que herde as caractersticas e implemente os mtodos da classe TextReader.file:///d|/geo_hp/livro_mac1.htm (5 of 85) [01/11/03 18:03:18]

Nova pagina 1

Imports System Imports System.IO Module Module1 Private Const CONTADOR As Integer = 6 Public Sub Main() Dim x As Integer Dim Itens(CONTADOR) As String Dim Arquivo As TextWriter = File.CreateText("Saida_Console.txt") Dim Saida As TextWriter = Console.Out Console.WriteLine("Insira {0} itens. Tecle ENTER entre cada item informado.", CONTADOR - 1) For x = 0 To CONTADOR - 1 Itens(x) = Console.ReadLine Next Console.WriteLine() Console.SetOut(Arquivo) Console.WriteLine("Itens includos") For x = 0 To CONTADOR - 1 Console.WriteLine(Itens(x)) Next Arquivo.Close() Console.SetOut(Saida) Console.ReadLine() End Sub End Module O cdigo acima ir gerar o arquivo Saida_Console.txt com os dados inseridos via console pelo usurio.

A classe EnvironmentA classe Environment permite que voc obtenha informaes a respeito do ambiente onde os seus programas so executados ( sistema operacional ,variveis de ambiente , configuraes , etc..). Alguns de seus mtodos e propriedades so descritos a seguir: Membro OSVersion Version CurrentDirectory CommandLine SystemDirectory Descrio Retorna informaes a respeito do sistema operacional atual Obtm informaes sobre a verso da aplicao Retorna o caminho atual do diretrio Retorna a linha de comandos completa que iniciou a aplicao Retorna o caminho do diretrio do sistema.(Ex: \windows\system32 )

file:///d|/geo_hp/livro_mac1.htm (6 of 85) [01/11/03 18:03:18]

Nova pagina 1

GetlogicalDrivers GetEnvironmentVariable GetCommandLineArgs Exit

Retorna uma lista das unidades disponveis em um array. Retorna o valor de uma varivel de ambiente especfica.(Ex: comando Set , caminho :path , diretrio temporrio:temp) Retorna os itens listados na linha de comando quando a aplicao foi iniciada. Encerra uma aplicao , retornando um cdigo de erro(opcional)

A classe RandomA classe Random usada para gerar nmeros aleatrios (inteiros(Integer) , duplos(double), etc.) Seus mtodos so : Membro Next Next(ValorMaximo) Next(ValorMinimo, ValorMaximo) NextDouble Descrio Retorna um Retorna um Retorna um Retorna um

nmero entre 0 e o valor mximo possvel para um inteiro ( algo em torno de 2 bilhes) nmero entre 0 e o valor definido por ValorMaximo inteiro entre os valores mnimo e mximo tipo double entre 0 e 1

Para gerar nmeros aleatrios entre 0 e 100 fazemos: Dim oAleatorio As New Random Dim valor As Integer = oAleatorio.Next(1,10)

As classes de conjuntos : ArrayListO .NET Framework possui classes que estendem a classe array. Estas classes permitem o gerenciamento de uma lista de informaes (como nos arrays) mas possuem mais recursos que facilitam tarefas como ordenao , incluir e recuperar itens da lista. Estas classes geralmente se encontram no namespace System.Collections. Vamos ver a classe ArrayList: ArrayList um conjunto parecido com um array , tem a seu favor uma maior facilidade no tratamento dos elementos e a permisso de armazenar qualquer tipo de dados (at objetos). Geralmente voc usa esta classe quando precisa tratar uma lista de itens dinmica e no tem uma noo de at onde o conjunto vai crescer. Para criar um instncia da classe ArrayList podemos fazer assim : Dim arrLista as New ArrayList(20) - cria um arraylist

Instalando o Visual Studio.NETInsira o CD 1 do Visual Studio.NET no seu drive de CD-ROM . Na tela a seguir clique em Windows Component Update para atualizar o seu sistema.

file:///d|/geo_hp/livro_mac1.htm (7 of 85) [01/11/03 18:03:18]

Nova pagina 1

Depois s selecionar os passos 2 e 3 para instalar o Visual Studio .NET (incluindo o Visual Basic.NET) no seu sistema. Acabada a instalao voc ter o Visual Basic .NET instalado da verso Beta 2 do Visual Studio .NET. Veja bem a verso final ainda no saiu , est prevista para janeiro ou fevereiro de 2002 e , por isso mesmo , pode haver , a esta altura, pequenas alteraes.Por falar em alteraes , antes de pr a mo na massa , voc precisa saber que : - No Visual Basic .NET s existe um nico tipo de arquivo de cdigo que tem a extenso .vb . Neste arquivo coexistem todos os outros tipos de arquivos : mdulos de classe, formulrios , mdulo de cdigo , controles , etc. - O Visual Basic .NET pode criar dois tipos de arquivos executveis:q q

Arquivos de Console , ao estilo do MS DOS , no grficos Arquivos Grficos , ao estilo Windows

- O Visual Basic .NET pode criar outros tipos de aplicaes tais como : ASP .NET , Web Services , servios Windows , Console Application , etc.. - Programas gerados pela compilao no VB.NET podem gerar um pacote de instalao de 40 a 50 MB , devido aos arquivos de run-time necessrios. file:///d|/geo_hp/livro_mac1.htm (8 of 85) [01/11/03 18:03:18]

Nova pagina 1

- Programas compilados com o VB.NET pode ser decompilados para se obter o cdigo fonte. Representando graficamente, abaixo temos o contedo dos servios que voc pode gerar com o Visual Studio .NET :

VB.NET - Instalao e caractersticasAfinal como conseguir e instalar o Visual Basic .NET ? Voc pode obter instalar o VB.NET de duas formas:q

q

Como parte do Visual Studio .NET - uma sute de ferramentas e linguagens que alm do VB.NET tambm inclu a linguagem C# ( C-sharp) e Visual C++ .NET ( por enquanto) Na edio padro - Standard Edition - a qual inclui um conjunto mais limitado de ferramentas.

Em ambos os casos voc poder criar suas prprias aplicaes para a plataforma Windows. A instalao no muito complexa , voc s vai ter que por e tirar os CDs e seguir as orientaes dos assistentes de instalao. A seguir vou dar um resumo ( sem exibir as telas ) dos passos da instalao do Visual Basic .NET via instalao do Visual Studio .NET(daqui pra frente apenas VS NET): 1. Aps inserir o CD #1 no seu CD-ROM aps alguns instantes a tela de Setup do VS .NET ir surgir. Se isto no ocorrer voc vai ter que executar o arquivo setupe.exe manualmente a partir da raiz do CD. 2. A tela de Setup do VS .NET ir apresentar as trs etapas que ser seguida nesta fase de instalao. 1. Windows Component Update 2. Visual Studio .NET 3. Service Releases file:///d|/geo_hp/livro_mac1.htm (9 of 85) [01/11/03 18:03:18]

Nova pagina 1

3.

4. 5. 6. 7.

Para funcionar de forma correta o VS .NET precisa que diversos componentes e atualizaes estejam instalados em sua mquina. Por isto voc dever clicar no item 1 - Windows Component Update. A seguir ser solicitado que voc insira o CD - Component Update O programa de instalao ir ento examinar seu sistema para ver exatamente quais componentes tero que ser instalados. Dependendo do estado atual da sua mquina , a lista pode incluir os seguintes itens: q Windows NT 4.0 Service Pack 6.0a q Windows 2000 Service Pack 2 q Windows Installer 2.0 q Windows Management Infrastructure q FrontPage 2000 Web Extensions q FrontPage 2000 Server Extensions q Setup RunTime Files q Internet Explorer 6.0 and Internet Tools q Microsoft Data Access Components 2.7 q .NET Framework Click em - Install Now - e voc dever dar vrios boots na sua mquina para a instalao e atualizao de cada componente. Aps a instalao cada componente aparecer com um checkbox marcado indicando que o componente j foi instalado. Aps instalar todos os componentes necessrios e atualizar o seu sistema voc retornar a janela de Setup do VS .NET . Clique ento no item 2 Visual Studio .NET para iniciar a instalao do VS .NET. A seguir ser apresentada a voc uma lista com opes de componentes que voc deseja instalar. O VS .NET possui toda a documentao que voc pode instalar ou consultar a partir do CD. O padro deixar a documentao no CD .Se Voc deseja instalar toda a documentao vai precisar de muito espao livre no seu HD. Abaixo uma relao dos arquivos e o espao ocupado: Documentao presente nos CD Documentao do Visual Basic Documentao do Visual C # Documentao do Visual C ++ Documentao do .NET Framework Documentao da plataforma SDK Documentao adicional MSDN Documentao das Ferramentas do VS Documentao do Visual Studio Artigos da Knowledge Base Espao em disco necessrio Para Consultar Documentos no CD Para Documentos instalados no HD 0,02 MB 5,93 MB 0,01 MB 1,48 MB 0,04 MB 22,84 MB 0,02 MB 39,70 MB 0,31 MB 137,21 MB 0,17 MB 467,99 MB 0,05 MB 11,22 MB 0,03 MB 9,90 MB 0,014 MB 114,30 MB

8. Aps terminar a instalao a janela com a mensagem - Setup is complete - ir surgir , e , nela voc poder verificar os erros que ocorreram durante a instalao. Poder tambm consultar o arquivo de log da instalao. 9. Para encerrar voc retornar a tela inicial com o terceiro item habilitado - 3 - Service Release - nele voc poder proceder a atualizao de algum componente instalado pelo seu CD de instalao. Os componentes , linguagens presentes e caractersticas aps a instalao so : Linguagens : Visual Basic .NET , Visual C# .NET e Visual C++ .NET

Componentes : Microsoft Development Environment , Microsoft SQL Server Desktop Engine - MSDE Plataformas nas quais voc pode rodar o VS .NET : Windows 2000 , XP , NTfile:///d|/geo_hp/livro_mac1.htm (10 of 85) [01/11/03 18:03:18]

Nova pagina 1

Plataformas que podem rodar aplicaes feitas no VS .NET : Windows 98 e verses superiores do Windows. O .NET framework define o ambiente que voc ir usar para executar as aplicaes feitas no Visual Basic .NET. Abaixo uma viso geral do .NET Framework atravs de um esquema:

- AS aplicaes .NET no acessam diretamente o Sistema operacional ou o hardware do computador. Para isto ele usa os servios da .NET Framework - A .NET Framework consiste de dois componentes principais : .NET Framework Class Library e Common Language Runtime - .NET Framework Class Library fornece codigo pr-escrito na forma de classes que esto disponveis para todas as linguagens .NET - A Common Language Runtime , ou CLR , a base do .NET Framework. Ela gerencia a execuo dos programas .NET coordenando funes como gerenciamento de memria , execuo do cdigo , segurana e outros servios. - A Common Type System um componente da CLR que verifica se todos as aplicaes .NET usam o mesmo tipo de dados sem considerar a linguagem na qual foi desenvolvida.

Apertem os cintos , o Visual Basic Sumiu !!!No estou querendo assustar ningum , apenas ser realista ; Se voc pretende utilizar o novo Visual Basic.NET, prepare-se para rever os seus conceitos e para estudar e estudar , e codificar e codificar , pois neste caso a curva de aprendizagem no ser nada suave. E isto ser to mais real quanto mais procedural for a sua utilizao e o seu entendimento da linguagem conhecida at ento como Visual Basic 6.0. Pensa que eu estou brincando ??? Ento senta que la vem chumbo grosso ... a. - Embora possua um assistente de migrao , estima-se que apenas 40% dos projetos feitos na verso 6.0 do VB consigam uma migrao parcial. Quer migrar projetos grandes e complexos ?? Ou voc quer perder o emprego ou ficou louco !!! melhor reescrever tudo na nova plataforma. b. - Sua aplicao utiliza muitos controles OLE ?? Ento , danou , o VB.NET no suporta mais OLE. c. - Voce usa e abusa dos mtodos DDE ?? Lamento , no VB.NET o mtodo de comunicao totalmente diferente. d. - Seu sistema usa controles do - Windows Common Controls - ou usa o Data Bound Grid do VB 5 ??? Infelizmente nada disso existe no VB.NET. e. - Gosta de usar controles vinculados DAO ou RDO ? Chiii... O VB.NET no d suporte para conexo a base de dados via DAO ou RDO no modo vinculado. f. - Aplicaes DHTM ou aplicaes Web ??? Nem pensar ! no h equivalentes no VB.NET. g. - Programas Grficos ??? O VB.NET no oferece suporte aos mtodos grficos dos forms nem aos controles Line e Shape... h. - Usando muitas APIs ??? O VB.NET exige uma reviso geral das suas chamadas APIs para evitar supresas desagradveis... i. Agora uma 'PEQUENA' relao do que NO MAIS SUPORTADO PELO VB.NETfile:///d|/geo_hp/livro_mac1.htm (11 of 85) [01/11/03 18:03:18]

Nova pagina 1q q q q q q

Variants , Currency , Empty , Null , Let , Time , TooTipText Vartype, Option Base , Lset , Rset , MsgBox , DoEvents , Date Sqr , Sgn , Atn , Circle , Cls , Line , Pset , Point , Scale , PrintForm IsEmpty , IsNull , IsObject , Image , Shape , DDE , Erl , On/Gosub , On/Goto Longs agora so 64 bits e no mais 32 bits Listbox no possui mais a propriedade ItemData nem NewIndex )

Prepare-se para aprender : (Estarei aqui com muitos artigos sobre o assunto...q q

q

q q q q q q q q

- Programao orientada a objetos - POO - Herana - a capacidade de definir classes que servem como base para construo de outras classes . Uma classe pode ser construida com base em outra classe herando suas propriedades e mtodos podendo ainda extender suas funcionalidades. - Overloading - (Sobrecarga) - Usando Overloading podemos definir propriedades , mtodos ou procedimentos com um mesmo nome , mas usando tipos de dados diferentes. - Overriding - (Sobreposio) - Faz com que um objeto derivado sobreponha as caractersticas que ele herdou do objeto a partir do qual foi derivado. - Interfaces - Contm as declaraes de propriedades e mtodos das classes sem apresentar o cdigo de implementao. - Delegates - So objetos que podem chamar os mtodos de outros objetos em seu nome - Assemblies - So as DLLs gerenciadas que possuem toda a funcionalidade da plataforma .NET. o arquivo fsico onde esto contidas os namespaces. - Namespaces - So nomes de espaos dentro de uma assembly. - Free Threading - Permite executar mltiplos processos paralelos independentemente em threads separadas. - Web forms e Web Services - Com a ASP.NET podemos desenvolver aplicativos para internet de modo rpido e intuitivo. - O novo ambiente , novas regras , novos comportamentos , nova metodologia , novos conceitos...

Quer um exemplo prtico com cdigo palpvel ??? Ento l vai... O VB.NET apresenta como novidade a nvel de escopo de variveis o conceito de escopo de bloco. O que quer dizer isto ??? Bem , isto quer dizer que se voc declarar uma varivel dentro de um bloco ela estar disponvel somente dentro daquele bloco. Entendeu ??? Veja abaixo o exemplo: Do Dim nSoma As long nSoma = nSoma + 1 Loop until nSoma < 100 Msgbox (nSoma) a = 9 => a = A

a = ASC("A") => a = 56 a= Left("Macoratti",4) => a= "Maco" a= Rigth("Macoratti",5) => a= "oratti"

a= Mid("Macoratti", 4,3) => a= "ora" a= Instr( 1, "Macoratti", "t") => a= 7 a= Lcase("Macoratti") => a="macoratti" a= Ucase("Macoratti") => a="MACORATTI" a= Trim(" Macoratti ") => a="Macoratti"

Para encerrar com as funes intrnsecas abaixo temos algumas funes teis: Funo Descrio Exemplo

file:///d|/geo_hp/livro_mac1.htm (37 of 85) [01/11/03 18:03:18]

Nova pagina 1

IsArray IsDate IsNumeric IsObject TypeName Now Today

Retorna True se o parmetro for um array. Retorna True se o parmetro for uma Data. Retorna True se o parmetro for um nmero. Retorna True se o parmetro for um objeto. Retorna o nome do tipo de dados do parmetro. Retorna a data e hora atual. Retorna a data atual no formato: 0:00:00 a.m. Dim MyVar As Object Dim MyCheck As Boolean MyCheck = IsDBNull(MyVar) ' Retorna False. MyVar = "" MyCheck = IsDBNull(MyVar) ' Retorna False. MyVar = System.DBNull.Value MyCheck = IsDBNull(MyVar) ' Retorna True.

IsDBnull

Retorna True se a varivel ainda no foi iniciada com um valor.

Bem , voc j tem a disposio um verdadeiro arsenal de funes que j lhe do um idia do poder de fogo do VB.NET e , tenha certeza , isto apenas o comeo. Na continuao deste artigo vou mostrar como criar suas prprias funes e do escopo das variveis.

Dando os primeiros passos - Escrevendo Cdigo VB.NET - IIIEscrevendo suas prprias funesNo artigo anterior voc foi apresentado s funes que o VB.NET oferece para facilitar sua vida. Mas sempre vai ficar faltando alguma coisa ; embora o VB.NET possua milhares de funes prontas para voc usar , com certeza no dia a dia voc vai ter que criar sua prpria funo. Sem problema algum ! ; o VB.NET permite que voc crie suas prprias rotinas e funes. isto que vamos mostrar agora. Existem dois tipos de rotinas usadas no VB.NET : 1. Sub-rotinas - Sub - So rotinas que realizam tarefas e que no retornam valor algum. 2. Funes - Function - So rotinas que realizam tarefas e que retornam valores.

Sub-rotinasAs sub-rotinas so um bloco de cdigo VB.NET que realiza um servio e no retorna nenhum valor. Quando voc usa o cdigo : Console.Writeline esta usando uma sub-rotina que apenas imprime uma informao na tela e no retorna valor algum. Voc cria uma sub-rotina quando deseja realizar uma tarefa que vai ser repetida muitas vezes ou se a mesma tarefa precisa ser usada em muitos programas. Com isto voc esta agrupando o seu cdigo e tornando-o mais fcil de localizar e manter pois basta voc invocar a sua sub-rotina para fazer o servio ao invs de ter que escrever todo o cdigo novamente. Para criar uma sub-rotina voc usa a palavra-chave - Sub - seguido do nome da sub-rotina e dos parmetros que voc esta passando para ela. Os parmetros so valores que voc passa para sub-rotina usar na realizao da tarefa que lhe foi atribuda. A sub-rotina termina com a palavra-chave : End Sub. Vejamos como fica a sintaxe:file:///d|/geo_hp/livro_mac1.htm (38 of 85) [01/11/03 18:03:18]

Nova pagina 1

Sub NomedaSubRotina (parametro1 As TipodoParametro1, Parametro2 As TipodoParametro1, ...) ' O cdigo da funo ... End Sub Abaixo temos um exemplo de uma sub-rotina que multiplica dois nmeros inteiros x e y e escreve o resultado no console: Sub Multiplica ( x As integer, y As Integer) Console.WriteLine( x & " x " & y & " = " & x*y ) End Sub Para chamar a sub-rotina e passar os parmetros usamos a forma : No exemplo acima podemos fazer assim : Module Module1 Sub Main() Console.WriteLine("Vou chamar a Sub-rotina : Multiplica com os parametros: 521 e 123.") Console.WriteLine("Pressione algo para ver o resultado...") Console.Read()

NomeSubRotina(parametro1 , parametro2)

Multiplica(521, 123)

End Sub Sub Multiplica(ByVal x As Integer, ByVal y As Integer) Console.WriteLine(x & " x " & y & " = " & x * y) Console.Read() End Sub End Module

q q q

O nome da sub-rotina Multiplica x e y so os parmetros do tipo inteiro que so fornecidos para a sub-rotina realizar a multiplicao A sub-rotina realiza a mutiplicao usando o operador * : x*y e escreve o resultado na tela.

FunesAs funes so idnticas s sub-rotinas a nica mudana que elas retorna um valor. No caso das funes usamos a palavra-chave : Function seguida do nome da funo e da relao dos parmetros e terminamos com a palavra-chave : End Function. No cdigo da funo usamos tambm a palavra-chave : Return que ir retornar o valor da funo. Assim temos:

file:///d|/geo_hp/livro_mac1.htm (39 of 85) [01/11/03 18:03:18]

Nova pagina 1

Sub NomedaFuna (parametro1 As TipodoParametro1, Parametro2 As TipodoParametro1, ...) ' O cdigo da funo ... Return ValordeRetorno End Sub Usando o mesmo exemplo podemos criar uma funo para multiplicar dois nmeros inteiros e retornar o resultado. Assim: Sub Multiplica ( x As integer, y As Integer) Return x*y End Sub Para chamar a funo e passar os parmetros usamos a forma : Um exemplo prtico pode ser o seguinte : Module Module1 Sub Main() Console.WriteLine("Vou chamar a Funo : Multiplica c/parametros: 521 e 123.") Console.WriteLine("Pressione algo para ver o resultado...") Console.Read() Console.Write("521 x 123 = " & Multiplica(521, 123)) Console.Read() End Sub Function Multiplica(ByVal x As Integer, ByVal y As Integer)

NomeFuno(parametro1 , parametro2)

Return x * y

End Function End Module

Como exemplos de funes do VB.NET podemos dar como exemplo aqueles que retornam um valor para uma operao. Exemplo as funes Sqrt que calcula a raiz quadrada de um numero e a funo Cos que calcula o coseno de um ngulo. Estas funes pertencem a classe Math.

file:///d|/geo_hp/livro_mac1.htm (40 of 85) [01/11/03 18:03:18]

Nova pagina 1

Module Module1 Sub Main() Dim raiz, angulo As Double raiz = Math.Sqrt(100) angulo = Math.Cos(1.12) Console.WriteLine(" Raiz = " & raiz) Console.WriteLine("Angulo = " & angulo) Console.Read() End Sub End Module

O uso dos parmetros no obrigatrio nas sub-rotinas nem nas funes , assim , voc pode definir uma funo sem parmetros, mas deve definir o tipo de valor que ser retornado: Function CalculaPreco() As Double 'cdigo da funo ...... return valor End Function Dim Preco as Double Preco = CalculaPreco() A funo CalculaPreco no usa parmetros mas deve informar o tipo do valor que ir retornar. No caso a funo retorna um valor do tipo Double. Para usar a funo temos que declarar uma varivel compatvel com o valor de retorna e chamar a funo.

Nota: as variveis que voc declara em uma sub-rotina ou funo so locais e apenas visveis pelo cdigo da funo ou sub-rotina. Alterando o valor do parmetro : ByVal ou ByRef ?Na funo multiplica usamos a palavra-chave ByVal , o que significa ByVal ? ByVal significa que estamos passando o argumento(parmetro) por valor ; desta forma a funo ou sub-rotina no pode modificar o valor do argumento. Quando voc usa ByVal o VB.NET faz uma cpia do valor do parmetro e ento o Vb.NET passa uma cpia do valor para a rotina. Desta forma a rotina no pode alterar o valor do parmetro. Se quisermos permitir que o argumento seja alterado pela funo ou sub-rotina devemos usar a chave ByRef. Quando voc usa ByRef a rotina pode alterar o valor do parmetro pois recebe uma referncia ao parmetro , e, a alterao do parmetro na rotina se reflete no parmetro passado.Vejamos o exemplo abaixo:

file:///d|/geo_hp/livro_mac1.htm (41 of 85) [01/11/03 18:03:18]

Nova pagina 1

Module Module1 Sub Main() Dim Numero As Integer = 100 Console.WriteLine("Valor de 'Numero' ANTES de chamar a sub-rotina: " & Numero) Console.Read()

MudaValorParametro(Numero)Console.WriteLine("Valor de 'Numero' DEPOIS de chamar a sub-rotina: " & Numero) Console.Read() End Sub Sub MudaValorParametro(ByRef valor As Integer)

valor = 1000

End Sub End Module

Escopo das variveis em rotinas e funesPara terminar vamos falar um pouco sobre o escopo. O escopo refere-se a visibilidade das variveis rotinas e funes dentro de um programa. Talvez voc tenha bons motivos para que uma rotina ou varivel no acesse todas as variveis do seu programa . Permitir que todas as variveis do seu programa seja acessadas por todas a rotinas do programa pode lhe trazer algumas dores de cabea , pois , dependendo da complexidade do programa voc pode perder o controle sobre quem esta alterando e acessando quem. At agora usamos a palavra-chave Dim para declarar uma varivel . Porm podemos declarar variveis fora das rotinas e funes e assim torn-las acessveis a outras rotinas. Para fazer isto podemos usar as palavras-chave Public e Private: 1. Public - As variveis so visveis por toda a aplicao. 2. Private - As variveis so visveis dentro do mdulo ou classe onde foram declaradas. Podemos usar as palavras-chave acima tambm para definir o escopo de funes e rotinas. Da mesma forma temos para funes e sub-rotinas: 1. Public - A rotina pode ser chamada de qualquer parte de sua aplicao. o padro quando no se informa nada. 2. Private - A rotina pode ser chamada somente por outra rotina dentro do mesmo mdulo ou classe onde esta definida.

file:///d|/geo_hp/livro_mac1.htm (42 of 85) [01/11/03 18:03:18]

Nova pagina 1

Module Module1 Sub main() contador1() contador2() End Sub Sub contador1()

Module Module1 Sub main() contador1() contador2() End Sub

Dim contador As Integer

Dim contador As IntegerSub contador1() For contador = 10 To 100 Console.WriteLine(contador) Next Console.ReadLine() End Sub Sub contador2() For contador = 100 To 1000 Console.WriteLine(contador) Next End Sub End Module varivel contador tem escopo global: visvel por ambas as sub-rotinas. declarada fora das rotinas.

For contador = 10 To 100 Console.WriteLine(contador) Next Console.ReadLine() End Sub Sub contador2()

Dim contador As Integer

For contador = 100 To 1000 Console.WriteLine(contador) Next End Sub End Module varivel contador tem escopo local : as variveis so visveis somente em cada sub-rotina . declara dentro de cada rotina.

Os conceitos apresentados no esgotam o assunto , mesmo por que , abordei somente os conceitos mais usados . Em um prximo artigo vou mostrar como aplicar todos estes conceitos em uma aplicao VB.NET. At l...

Dando os primeiros passos - Escrevendo Cdigo VB.NET - IVDando sequncia aos artigos da srie - Dando os primeiros passos - Escrevendo Cdigo VB.NET neste artigo vou mostrar uma aplicao prtica de toda a teoria vista at agora . Vamos criar uma aplicao no VB.NET usando alguns dos conceitos expostos e mostrar como podemos juntar as partes para criar algo de til. Para que voc se situe a srie de artigos : 1. Dando os primeiros passos - Escrevendo Cdigo VB.NET - I - variveis e constantes 2. Dando os primeiros passos - Escrevendo Cdigo VB.NET - II - operadores e funes bsicas 3. Dando os primeiros passos - Escrevendo Cdigo VB.NET - III - sub-rotinas e funes Nossa aplicao ir realizar um clculo matemtico envolvendo valores monetrios. Vamos criar um programa para calcular o Valor Futuro de uma determinada aplicao financeira em um determinado perodo a uma taxa de juros definida. O problema bsico , temos que criar uma funo que receba como informao :q q q q

o valor inicial os valores dos depsitos mensais a taxa de juros e o perodo da aplicao

file:///d|/geo_hp/livro_mac1.htm (43 of 85) [01/11/03 18:03:18]

Nova pagina 1

O resultado deve ser o Valor Futuro da aplicao para as condies definidas. Se voc nem sabe por onde comear eu vou lhe dar uma dica : felizmente o VB.NET j tem uma funo para calcular o Valor Futuro : FV . A sintaxe da funo FV a seguinte : Function FV( _ Onde: ByVal Rate As Double, _ ByVal NPer As Double, _ q ByVal Pmt As Double, _ q q Optional ByVal PV As Double = 0, _ q Optional ByVal Due As DueDate = DueDate.EndOfPeriod _ q ) As Double

Rate - a taxa do perodo - Double Nper - O total de pagamentos no perodo - Double Pmt - O pagamento feito em cada perodo - Double PV - O valor atual de uma srie de pagamentos futuros - Double Due - Define quando os pagamentos so devidos

Para ter uma viso da funcionalidade do aplicativo vamos escrever como dever ser o fluxo de dados do aplicativo usando alguns dados como exemplo : 1. 2. 3. 4. Valor inicial - (R$) - 10000 Taxa anual - (%) - 5 Valor dos Depsitos mensais - (R$) 200 Perodo de investimento - (anos) - (tempo) 10 Se comearmos o investimento com R$ 10.000,00 e investirmos R$ 200,00 por ms por 10 anos a uma taxa de 5% ao ano Iremos ter um valor futuro de : ?????

A frmula usada por FV a seguinte : FV = DepositoMensal * ((( 1 + TaxaMensal) ^ Periodo -1 ) / TaxaMensal ) + ValorInicial * ( 1+ TaxaMensal) ^ Periodo Perceba que a frmula usa quatro variveis que vamos ter que definir em nossa aplicao . Primeiro vamos criar uma aplicao do tipo Console por ser mais simples , depois iremos criar a mesma aplicao usando os Windows Forms. Vamos ao trabalho: 1 - Inicie um novo projeto no Visual Studio.NET com as seguintes caractersticas (sinta-se a vontade para alterar a seu gosto.) 1. 2. 3. 4. Project Types : Visual Basic Projects Templates : Console Application Name : ValorFuturo1 Location : c:\vbnet\ValorFuturo1

file:///d|/geo_hp/livro_mac1.htm (44 of 85) [01/11/03 18:03:18]

Nova pagina 1

2 - Altere o nome do modulo para ModVF.vb.(Clique com o boto direito do mouse sobre o nome e selecione Renomear) Veja ao lado a janela - Solution Explorer - e o mdulo preparado para receber o cdigo da nossa aplicao - ValorFuturo1

Como j mostramos acima temos que definir quatro variveis para armazenar os dados que vamos informar para a aplicao calcular o valor futuro usando a forma j descrita. Declaramos as quatro variveis como privadas (Private) desta forma elas sero visveis somente dentro do mdulo. - No incio de cada nome de cada uma das variveis usei um prefixo para identificar qual o tipo da varivel (esta uma boa prtica de programao), assim :q q q

Private Private Private Private

dbTaxaAnual As Double =0 iAnos As Integer =0 decValorInicial As Double =0 decDepositoMensal AS Double = 0

db - Double i - Integer dec - Decimal

Com exceo da varivel iAnos que foi definida como sendo do tipo inteiro as demais foram definidas como sendo do tipo Double. Todas as variveis foram iniciadas com valor igual a 0. Eu poderia colocar todo o cdigo da aplicao na rotina Main , mas isto no seria muito aconselhvel pois iramos gerar um cdigo difcil de ler e manter. Vamos criar sub-rotinas para cada uma das funcionalidades que vamos precisar na nossa aplicao . Qual seriam elas ???? Voc pode ter uma idia melhor que a minha , mas eu dividi a aplicao em 3 partes , abaixo cada uma delas e a seguir uma sugesto de nome para a rotina associada: 1. Entrada de dados - AlimentaVF 2. Calculo do Valor Futuro - CalculaVF 3. Exibio do resultado - MostraVF Nosso cdigo inicial teria ento a seguinte estrutura :

file:///d|/geo_hp/livro_mac1.htm (45 of 85) [01/11/03 18:03:18]

Nova pagina 1

Explicando o cdigo acima: 1. Estamos usando uma varivel do tipo Double - decResultado - que ir armazenar o resultado 2. Criamos duas sub-rotinas : AlimentaVF() que ir receber os valores e MostraVF() que ir exibir o resultado 3. Criamos a funo CalculaVF(dbTaxaAnual, iAnos, decDepositoMensal, decValorInicial) que ir calcular o Valor Futuro. Perceba que a funo usa quatro parmetros que sero usados no calculo da operao. 2- A prxima etapa ser criar o cdigo para cada uma das sub-rotinas e da funo usada na aplicao. Vamos comear com a sub-rotina AlimentaVF() : - Vamos definir a rotina AlimetaVF() como sendo private ; como ela uma sub-rotina nenhum valor ser retornado. Abaixo temos uma sugesto para o cdigo desta sub-rotina:

file:///d|/geo_hp/livro_mac1.htm (46 of 85) [01/11/03 18:03:18]

Nova pagina 1

Private Sub AlimentaVF() 'escreve uma linha no console Console.WriteLine() 'recebe os valores e armazena em cada varivel decValorInicial = CDec(ObtemDados("Valor Inicial = ")) dbTaxaAnual = CDbl(ObtemDados("Taxa Anual = ")) decDepositoMensal = CDec(ObtemDados("Deposito Mensal = ")) iAnos = CInt(ObtemDados("Periodo do Investimento = ")) End Sub Explicao do cdigo: - Criamos a funo - ObtemDados(msg) - que ir receber o valor informado pelo usurio. O valor retornado ser armazenado em cada varivel j definida no incio do mdulo. O parmetro passado para a funo a mensagem que ir aparecer para usurio ao digitar o valor. A seguir o cdigo da funo ObtemDados(msg) : Private Function ObtemDados(ByVal msg As String) As String Console.WriteLine(msg) Return Console.ReadLine End Function A funo ObtemDados recebe o parmetro - msg - e exibe a mensagem usando a mtodo - Console.Writeline . Aps informar o valor e teclar ENTER o valor retornado via mtodo Console.Readline. Observe que definimos o tipo de retorno da funo ObtemDados como String. 3- Vamos agora ao cdigo da funo - CalculaVF() -. Esta funo usa 4 parmetros e devolve o resultado do Valor Futuro. Abaixo o cdigo: Private Function CalculaVF(ByVal TaxaAnual As Double, ByVal Anos As Integer, ByVal DepositoMensal As Double, ByVal ValorInicial As Double) As Double 'Vamos pegar a taxa anual e dividir por 1200 para obtermos o percentual mensal Dim decTaxaMensal As Double = CDec(TaxaAnual / 1200) 'Vamos calcular o numero de meses Dim iMeses As Integer = (Anos * 12) 'A seguir vamos declarar uma varivel temporria e a varivel que vai armazenar o valor de retorno Dim decTemp As Double Dim decRetorno As Double 'vamos usar a varivel temporaria e a variavel de retorno decTemp = CDec((1 + decTaxaMensal) ^ iMeses) decRetorno = CDec(DepositoMensal * ((decTemp - 1) / decTaxaMensal) + (ValorInicial * decTemp)) Return decRetorno End Function Na funo CalculaVF() usamos os parmetros recebidos para efetuar os clculos e retorna o valor futuro. O retorno da funo do tipo Double. A seguir vamos exibir o valor do resultado usando a funo : MostraVF(decResultado) :file:///d|/geo_hp/livro_mac1.htm (47 of 85) [01/11/03 18:03:18]

Nova pagina 1

Private Sub MostraVF(ByVal resultado As Double) Console.WriteLine() Console.WriteLine(" Com um valor incial de {0:c} ", decValorInicial) Console.WriteLine(" e depositos mensais de {0:c} ", decDepositoMensal) Console.WriteLine(" por um periodo de {0} anos ", iAnos) Console.WriteLine(" a uma taxa de {0}% no perodo ", dbTaxaAnual) Console.WriteLine() Console.WriteLine(" Voc ter como um valor futuro de : {0:c}", resultado) Console.ReadLine() End Sub A funo recebe o resultado e usando o mtodo Console.Writeline , exibe o resultado no console . Perceba que formatamos a sada usando os parmetros de formatao para o console. (Leia o artigo : VB.NET - Formatando a sada do console. ). O valor das variveis ir substituir os parmetros {0:c} e {0} em cada posio. ( {0:c} significa : formato de moeda local) Vamos executar a aplicao para ver o resultado final :

Minha primeira aplicao VB.NET"A primeira vez a gente nunca esquee... " . Ento para voc ser inesquecvel , afinal , voc vai construir sua primeira aplicao na plataforma .NET , e , como no poderia deixar de ser: vamos usar o VB.NET. Eu estarei usando a verso beta 1 do Visual Studio .NET , pois , por um problema tcnico a minha verso beta 2 se recusa a instalar corretamente. Embora tenham ocorrido mudanas da verso beta 1 para a beta 2 , como estamos no princpio , os conceitos bsicos no foram alterados , e , se for necessrio , estarei indicando as mudanas ocorridas no cdigo para a verso beta 2 . Como creio que em breve minha verso beta 2 , ou quem sabe , a verso final e oficial j esteja instalada e funcionando espero no ter que usar este recurso. Detalhes a parte vamos ao projeto...file:///d|/geo_hp/livro_mac1.htm (48 of 85) [01/11/03 18:03:18]

Nova pagina 1

Minha primeira aplicao .NET Inicie o Visual Studio .NET , voc ver a tela a seguir . ( A tela de abertura da verso beta 2 um pouco diferente mas as opes indicadas so as mesmas)

Como vamos criar um novo projeto , selecione a opo - Create New Project - ( voc pode selecionar tambm o Menu File opo - New - Project...) Surgir a seguinte janela:

file:///d|/geo_hp/livro_mac1.htm (49 of 85) [01/11/03 18:03:18]

Nova pagina 1

Agora vamos selecionar o tipo de aplicao que vamos desenvolver: Estaremos criando uma aplicao tipo Console ou Console Application. Em Name informamos o nome do projeto - MinhaPrimeiraAplicaao ; em Location informamos o local onde vamos salvar o projeto. Note que o projeto do tipo Visual Basic Projects. Agora vamos clicar em OK. A prxima tela ser :

file:///d|/geo_hp/livro_mac1.htm (50 of 85) [01/11/03 18:03:18]

Nova pagina 1

Ser criado um arquivo chamado - Module1.vb - com uma estrutura de cdigo pronta para que possamos incluir nosso cdigo e iniciar o nosso projeto. Observe que foi criada a definio Module Module1 / End Module e internamente o procedimento Sub Main/ End Sub. Como no VB.NET temos todos os tipos de elementos juntos em um mesmo arquivo com extenso .vb agora necessrio indicar onde comea Module1 e onde termina. Iremos incluir um cdigo no procedimento Sub Main. Com o cursor posicionado escreva a palavra Console. e voc ver a janela a seguir:

file:///d|/geo_hp/livro_mac1.htm (51 of 85) [01/11/03 18:03:18]

Nova pagina 1

Ao digitar o ponto voc ver as funes pertinentes de Console.(Este recurso j existia no VB5/6). Selecione a funo Write e complete o cdigo como abaixo:

Aonde eu estou querendo chegar. Voc deve estar pensando... Vou explicar ! Nossa primeira aplicao ir exibir uma mensagem na tela. A mensagem ser exibida em uma janela do DOS , ou seja em um console. Para isto estou usando a classe Console e a funo Write que escreve a mensagem na janela DOS. A linha a seguir - Console.read() - usa a funo read() do Console para permitir que voc veja a mensagem exibida (ela funciona como uma pausa ou espera) caso contrrio a janela iria se abrir e fechar to rpido que voc iria pensar que a coisa no funcionou.

file:///d|/geo_hp/livro_mac1.htm (52 of 85) [01/11/03 18:03:18]

Nova pagina 1

Para executar sua aplicao pressine F5 ou clique no boto voc deve obter uma janela DOS com sua mensagem exibida como a seguir:

No fique frustrado !!! Como estamos comeando achei melhor criar uma aplicao que no usasse o ambiente grfico para no complicar as coisas. Tudo bem que sua aplicao no sirva para nada , mas pelo menos voc conseguiu faz-la funcionar... O VB.NET usa uma srie de livrarias ( classes ) que possuem as funes que precisamos para executar uma determinada tarefa ( Write, Read , etc...). Para exibir o texto em uma janela DOS temos que usar a livraria que contm a classe Console e suas funes. A livraria ( library ) na qual est a classe Console a library System a qual na verdade um Namespace , ou seja , um Espao de Nomes. Veja como a Microsoft define um Namespace: "Um Namespace um esquema lgico de nomes para tipos no qual um nome de tipo simples, como MeuTipo, aparece precedido por um nome hierarquico separado por ponto" Entendeu ?? Se entendeu , ento me explica que eu at agora estou boiando... Namespace e Assembly : Conceitos bsicos Antes de poder falar sobre estes conceitos quero deixar claro que a inteno no se aprofundar no assunto mas dar uma idia do que so e como funcionam. Antes de comear a falar sobre Namespace ( Espacos de Nomes - Argh! vou usar Namespace mesmo !!!) vamos tentar entender o que um Assembly. Veja o que a Microsoft diz: "Um assembly um bloco construtivo primrio de uma aplicao .NET. Sendo uma recompilao de funcionalidade que se constri, versiona e instala como uma nica unidade de implementao. ". Muito bonito , no !!!! Um assembly unidade primria de construo da plataforma .NET , ou seja , o tijolo da plataforma sobre o qual tudo o mais se apoia. Um assembly pode ser reutilizado e auto-descritivo de maneira a permitir que um runtime .NET possa gerenciar plenamente a aplicao. Um assembly composto por duas partes:q q

Um conjunto de tipos e recursos que forma a funcionalidade de um Assembly ( NameSpaces ) O Manifest , um metadata que tem a informao sobre como todos os elementos de um assembly se relacionam , e quais as suas dependncias

file:///d|/geo_hp/livro_mac1.htm (53 of 85) [01/11/03 18:03:18]

Nova pagina 1

Um manifest contm :q q q q

Identidade : Inclue o nome , nmero da verso , e algumas informaes opcionais. Contedo : Uma lista de nomes de todos os tipos e recursos que visvel externamente ao assembly e onde eles podem ser encontrados Dependencias : lista de dependncias , incluindo verses das dependncias. Permisses requisitadas : Quando um assembly criado o desenvolvedor pode gravar um conjunto de permisses que o assembly ir requerer quando for executado.

Ento simplificando, podemos dizer que um assembly uma livraria dinmica ( DLL ) que contm diversos e distintos espaos de nomes - NameSpaces . Voltando agora ao Namespace , podemos dizer que os Namespaces organizam os objetos em um assembly ; assim , um assembly podem conter um ou mais namespaces , e estes namespaces pode conter um ou mais namespaces. Desta forma os Namespaces evitam a ambiguitdade e organizam referncias quando so usados grande grupos de objetos como as librarys de classes. O namespace raiz , ou seja, aquele que esta no topo da 'hierarquia' o System ; dentro do namespace raiz System temos algo em torno de 100 classes que representam todo os tipos de dados. A classe system contm outras classes que realizam outros servios. Dentro do NameSpace System temos , mais ou menos 24 sub-niveis de namespaces. Veja abaixo: Data:q q

System.Data System.XML System.CodeDOM System.ComponentModel System.Core System.Configuration System.Diagnostics System.DirectoryServices System.Timers System.Messaging System.ServiceProcess System.Globalization System.Resources System.Net System.Collection System.IO System.Text System.Threading

Component Model:

q q q

Configuration: Frameworks Services:

q

q q q q q

Globalization:

q q

Net: Programming Basics:

q

q q q q

file:///d|/geo_hp/livro_mac1.htm (54 of 85) [01/11/03 18:03:18]

Nova pagina 1

Reflection: Rich Client-Side GUI:

q

System.Reflection System.Drawing System.Winforms System.Runtime System.Security System.Web

q q

Runtime Infrastructure Services: Security: Web Services:

q

q

q

Vejamos alguns exemplos de Namespaces e o que eles contm:s s s s s

System.Data - Objetos e tipos de dados para ADO System.Data.ADO - Objetos para armazenar dados OLEDB (Houve alterao na verso beta 2) System.Data.SQL - Especificaes para SQL Server dos objetos ADO (Houve alterao na verso beta 2) System.Data.XML - Objetos XML System.Data.SQLTypes - Tipos para dados SQL

Dependendo do tipo de aplicao que voc vai criar , voc vai precisar usar o Namespace que contm os objetos relacionados. Por exemplo para usar as declaraes do ADO.NET voc vai precisar incluir a seguinte linha no seu cdigo : imports System.Data.ADO ASP ou em uma pgina

Para saber quais os membros de um Namespace basta digitar o seu nome e a seguir o ponto. Uma lista ser exibida na tela. ( Isto no cdigo VB.NET ) Resumo do resumo: Um NameSpace usado para declarar uma esfera de ao de maneira a permitir que voc organize o seu cdigo e crie seus tipos globais.

Formatando a sada do consoleUma aplicao do tipo console - Console Application - foi o tema de um dos meus primeiros artigos sobre VB.NET , claro que a grande parte de nossas aplicaes ser do tipo Windows Application , mas no podemos desprezar totalmente o console , um dia voc pode precisar dele. Neste artigo vou mostrar como podemos formatar a saida do console quando escrevemos na tela usando Console.Writeline/Console.Write. Ao usar Console.Writeline/Console.Write para escrever no console (Tela) podemos usar os modificadores {0} ,{1} ,{2} ,..etc. para exibir valores na tela , onde estes modificadores iro receber parmetros que iro substitu-los durante a execuo. Assim quando escrevemos o cdigo :

file:///d|/geo_hp/livro_mac1.htm (55 of 85) [01/11/03 18:03:18]

Nova pagina 1

Sub Main() Console.WriteLine("O numero {0}", 3 + 7) End Sub Vejamos outro exemplo :

Ser exibido no console o valor 10 , que a soma de 3+7. O resultado substitui o modificador {0}.

Ser exibido no console : 3 + 7 = 10 . Onde: Sub Main() Console.WriteLine("O numero {0} + {1} = {2} ", 3, 7, 3 + 7) End Subq q q

{0} substitudo por 3 {1} substitudo por 7 {2} substitudo pelo resultado de 3+7

Quando voc usar os modificadores deve estar certo de passar o mesmo nmero de parmetros ou um erro de execuo ir ocorrer e seu programa ser encerrado.

VB.NET - Declarao de variveis o que mudou ?Muitos programadores no se preocupam com noes tericas ou aspectos tcnicos sobre a linguagem que utilizam. O Visual Basic por ser uma ferramenta RAD , estimula muito o que chamamos programao por tentativa e erro. O que importa ver o sistema funcionando . Em nome desta funcionalidade verdadeiras barbaridades so cometidas em Visual Basic. Vou abordar o que mudou com relao a declarao de variveis no VB.NET . Posso adiantar que as mudanas foram para melhor em todos os aspectos. Sem contar que o VB.NET agora uma linguagem mais bem 'tipada' e isto vai evitar muitas 'loucuras' dantes cometidas ; se voc no entender o que est acontecendo no vai conseguir fazer rodar programas muito simples feitos na verso .NET.

1- Mltiplas declaraes em uma nica linha de cdigoNas verses anteriores do Visual Basic , quando tinhamos mltiplas declaraes aparecendo na mesma linha , para definir o tipo correto de dados de cada varivel deveramos usar a clusula AS explicitamente na frente de cada varivel , ou seja , se voc fizer uma declarao assim : Dim a , b c as String . O que teria ? Vejamos: Declarao Resultado no Visual Basic 6.0 Resultado no Visual Basic .NET Dim a , b c as String a e b ser do tipo Variant e c ser do tipo String a, b e c sero do tipo String Para obter o mesmo efeito no VB 6.0 teramos que fazer a declarao assim :

Dim a AS String , b AS String , c AS StringNO VB.NET podemos fazer assim :

Dim a , b , c AS Stringfile:///d|/geo_hp/livro_mac1.htm (56 of 85) [01/11/03 18:03:18]

Nova pagina 1

2- O tipo de dados padroNo VB 6.0 se voc declarar uma varivel sem definir explicitamente seu tipo (sem usar a clusula AS) o tipo padro assumido o tipo Variant. Assim na declarao :

Dim a A varivel a ser do tipo Variant =>

Dim a AS Variant

no VB.NET a mesma declarao tornar a varivel a do tipo Object . Object o valor padro para variveis no VB.NET.

Dim a A varivel a ser do tipo Object =>3- O escopo das variveis

Dim a As Object

O Visual Basic .NET trouxe um novo escopo para as variveis: o escopo a nvel de blocos. Assim no VB.NET quando voc declara uma varivel dentro de um bloco de cdigo : FOR...NEXT , DO WHILE , IF..THEN , SELECT...CASE , TRY ... CATCH, etc... ela deixa de existir fora do bloco de cdigo onde foi declarada. Assim no VB.NET o cdigo abaixo : A varivel nome ser visvel somente dentro do bloco de cdigo definido por FOR/NEXT For i = 0 to 10 Dim nome as String Se voc tentar usar a varivel nome fora do bloco vai obter a seguinte mensagem de erro: nome = "Carlos" Next i nome="" Name 'nome' is not declared. No VB 6.0 usando a mesma declarao , a varivel nome poderia ser usada dentro da funo sem problemas. No VB.NET

4- Declarao de variveis e converso entre tipos.No VB 6.0 quando a fazer a declarao abaixo , voc ter :

Dim a , b as Long

a ser do tipo Variant e b do tipo Long

Se voc fizer a seguinte atribuio : a = "Copa 2002" no vai obter nenhuma mensagem de erro. No VB.NET a mesma declarao ir resultar emfile:///d|/geo_hp/livro_mac1.htm (57 of 85) [01/11/03 18:03:18]

Nova pagina 1

Dim a , b as Integer

a ser do tipo Integer e b do tipo Integer

Se voc fizer a seguinte atribuio : a = "Copa 2002" vai obter uma mensagem de erro. Se a opo Option Strict estiver definida como ON a mensagem ser :

Option Strict disallows implicit conversions from String to Integer.Se a opo Option Strict estiver definida como OFF a mensagem ser :

An unhandled exception of type 'System.InvalidCastException' occurred in microsoft.visualbasic.dll. Additional information: Cast from String ("Hello world") to Integer is not valid.Sabe porqu ? Porque a varivel a do tipo de dados Integer e o valor literal "Copa 2002" considerado do tipo String e isto resultar em tipos incompatveis de dados ,ou seja , voc no poder converter String para Integer. Por outro lado se Option Strict estiver OFF voc pode converter entre tipos de dados implicitamente. Veja :

Dim a = b = a =

a , b " Copa " 100 2002

Quando voc no declara as variveis explicitamente ( no usa a clusula AS) Se Option Strict for OFF os tipos dados podem ser convertidos na atribuio das variveis.

5- Inicializando variveisNo VB.NET podemos inicializar uma varivel da seguinte forma :

Dim N as Integer = 7

ou ainda :

Dim X as integer = 1 , Y AS String = "COPA" , Z AS Integer = 2002Todas estas formas so vlidas e no so suportadas pelo Visual Basic 6. Mas voc no pode inicializar mais de uma varivel , assim :file:///d|/geo_hp/livro_mac1.htm (58 of 85) [01/11/03 18:03:18]

Dim X, Y as Integer = 10

Nova pagina 1

Resumindo : para inicializar uma varivel temos que declar-la usando o tipo e a clusula AS.

Escopo de variveisQuando usamos variveis de memria , constantes e procedimentos dentro do seu aplicativo VB .NET podemos definir o escopo ou visibilidade deles na sua aplicao. No VB . NET podemos ter quatro tipo de visibilidade :q q q q

Block-level - visvel apenas no bloco de cdigo no qual a varivel foi declarada. Procedure-level - visvel somente dentro da procedure na qual foi declarada. Module-level - visvel para todas as procedures no mdulo na qual foi declarada. Project-level - a varivel visivel a todas as procedures dentro do projeto e da aplicao.

Escopo a nvel de bloco de cdigoAo declarar uma varivel dentro de um bloco de cdigo ( for/next , if/then/else ,Select/case , Do/While) a varivel ser visvel somente dentro do bloco de cdigo na qual foi declarada. Abaixo temos um exemplo de cdigo que mostra isto.

Escopo a nvel de ProcedureUma varivel declarada dentro de um procedimento somente visvel dentro do procedimento. Somente o procedimento que contm a varivel declarada pode us-la. Estas variveis so conhecidas como locais ou estticas. Voc pode declar-las usando a declarao Dim com ou sem a palavra chave Static. Todos os elementos locais , mesmo se eles forem variveis estticas , so privados ao procedimento no qual eles foram declarados . No podemos declarar um elemento usando a palavra chave Public dentro de um procedimento.

file:///d|/geo_hp/livro_mac1.htm (59 of 85) [01/11/03 18:03:18]

Nova pagina 1

A varivel varTeste criada no procedimento rotina1() local e somente ser visvel dentro de rotina1(). Sub rotina1() Dim varTeste As Integer varTeste = 200 rotina2() MsgBox("Valor de VarTeste = " & varTeste) End Sub Sub rotina2() Dim varTeste As Integer varTeste = 20000 MsgBox("Valor de VarTeste = " & varTeste) End Sub - Ao executar o projeto o procedimento rotina1() ser executado e o valor 200 ser atribudo a varivel varTeste (varTeste=200) - A rotina2() ser chamada e nela uma varivel com o mesmo nome declarada e o valor 2000 atribudo a ela. - O valor da varTeste ser exibido em uma caixa de mensagem com o valor igual a 20000 - Ao retornar a execuo para o procedimento rotina1() o valor da varivel varTeste exibido com o valor 200 Isto mostra que a varivel varTeste tem o seu valor visvel somente em cada rotina que na qual foi declarada , ou seja , ela uma varivel local.

Escopo a nvel de MduloAo declarar variveis e constantes a nvel de mdulo elas sero visveis por todos os procedimentos dentro do seu cdigo. Para fazer isto voc deve declarar a varivel fora de qualquer procedimento que exista no projeto. Geralmente isto feito depois da linha - Windows Form Designer generated code:

Nota : por convenincia , o termo nvel de mdulo se aplica a mdulos, classes e estrutura . Podemos declarar elementos neste nvel colocando a declarao fora de qualquer procedimento ou bloco dentro do mdulo , classe ou estrutura.

Visibilidade a nvel de projeto (Namespace escopo)Se voc declarar uma varivel a nvel de mdulo usando a palavra-chave Friend ou Public ela torna-se disponvel para todos os procedimentos do seu Namespace. Abaixo a varivel strTeste pode ser usada por qualquer procedimento do Namespace. Ex: Public strTeste As String

VB.NET - Converso entre tipos de variveis (Casting)Quando voc define o tipo de uma varivel esta especificando um intervalo de valores que a varivel pode armazenar e um conjunto de operaes que umafile:///d|/geo_hp/livro_mac1.htm (60 of 85) [01/11/03 18:03:18]

Nova pagina 1

aplicao pode realizar com esta varivel. Pode ocorrer a necessidade de atribuir um valor de um tipo de varivel a uma varivel de tipo diferente , ou seja , voc pode precisar atribuir um valor do tipo inteiro para uma varivel definida como do tipo Double ou vice-versa , e, neste caso estamos realizando uma converso entre tipos de variveis diferentes.(Geralmente conhecida como 'Casting') Quando atribumos um valor de um tipo 'menor' para um tipo 'maior' , como por exemplo , um valor do tipo Short para um tipo Integer o VB .NET realiza a operao de forma implcita pois o valor do tipo Short pode ser suportado sem problemas pelo tipo Integer. Nestes casos temos uma converso implcita ('implicit Cast') Quando ocorre o inverso , ou seja , quando atribumos um valor de tipo 'maior' para outra de tipo 'menor' , como por exemplo , um valor do tipo Integer para um do tipo Short o VB.NET vai truncar que no puder ser suportado pela varivel de tipo 'menor'. No caso de Integer (representada no VB.NET por 32 bits) para Short (representada por 16 bits) sero descartados os valores acima de 16 bits. Para evitar isto devemos forar o VB .NET a realizar uma converso entre os tipos , uma converso explcita , tambm chamada de coerso (cast). Para realizar uma converso explcita ou coerso (cast) no VB .NET podemos usar uma das seguintes funes : Funco ToBoolean ToByte ToChar ToDateTime ToDecimal ToDouble ToInt16 ToInt32 ToInt64 ToSByte ToSingle ToString ToUInt16 ToUInt32 ToUInt64 Propsito Converte um Converte um Converte um Converte um Converte um Converte um Converte um Converte um Converte um Converte um Converte um Converte um Converte um Converte um Converte um

valor valor valor valor valor valor valor valor valor valor valor valor valor valor valor

para para para para para para para para para para para para para para para

Boolean (True ou False) um Byte (8-bit) no intervalo de 0 a 255 um caracter Unicode (2-byte) um objeto DateTime um Decimal ( 12-byte ) um Double ( 8 byte ) um Short (2-byte) um Integer (4-byte) um Integer (8-byte) Valor com sinal (8-bit) no intervalo -128 a 127 para um Single (4-byte) um String um Short sem sinal (2-byte) no intervalo 0 a 65.535 um Integer sem sinal (2-byte) no intervalo 0 a 4.294.967.295 um long Integer sem sinal (8-byte) no intervalo 0 a 65.535

Para reduzir possveis erros que podem ocorrer durante uma converso entre um tipo de menor para um tipo maior , voc pode fazer com que o compilador VB .NET no permita tais atribuies . Para fazer isto basta utilizar a seguinte declarao no seu cdigo VB .NET : Option Strict on

file:///d|/geo_hp/livro_mac1.htm (61 of 85) [01/11/03 18:03:18]

Nova pagina 1

Ao lado temos um exemplo onde a utilizao da declarao - Option Strict On - no vai permitir as converses as converses implicitas.

No cdigo : Console.WriteLine(" O valor ser truncado : " + FloatMenor1) no permitida a utilizao do sinal + para concatenar o valor com a string.

Tambm podemos realizar a coero (cast) usando duas palavras chave para coero : Ctype e DirectCast que realizao a operao para qualquer tipo de dados.(DirectCast usada de forma especial nas converses do tipo Object para qualquer outro tipo.) No cdigo acima podemos realizar a coero usando CType da seguinte forma :

file:///d|/geo_hp/livro_mac1.htm (62 of 85) [01/11/03 18:03:18]

Nova pagina 1

Module Module1 Sub Main() Dim InteiroMaior As Integer = 10000 Dim InteiroMenor As Short Dim FloatMaior As Double = 0.123456789 Dim FloatMenor1 As Single Dim FloatMenor2 As Single InteiroMenor = CType(InteiroMaior, Short) FloatMenor1 = CType(FloatMaior, Single) FloatMenor2 = CType(FloatMaior, Single) Console.WriteLine(InteiroMenor) Console.WriteLine(" O valor ser truncado : " & FloatMenor1) End Sub End Module Podemos tambm usar as funes de converso : CBool | CByte | CChar | CDate | CDec | CDbl | CInt | CLng | CObj | CShort | CSng | CStr A seguir temos dois exemplos de uso destas funes : CDbl A funo CDbl converte uma expresso para o tipo Double. Dim MyDec As Decimal Dim MyDouble As Double MyDec = 234.456784D 'Converte o resultado para Double MyDouble = CDbl(MyDec * 8.2D * 0.01D) CInt A funo CInt converte uma valor para Integer. Dim MyDouble As Double Dim MyInt As Integer MyDouble = 2345.5678 MyInt = CInt(MyDouble)

' MyInt recebe o valor 2346.

Conhecendo as estruturas de controle de fluxoPara construir um programa de computador que seja interativo e que responda de forma diferente dependendo das informaes fornecidas pelo usurio vamos precisar usar um tipo de instruo chamada de instruo de controle. Neste artigo irei abordar as duas categorias de instrues de controle : instrues condicionais e instrues de lao. O VB.NET suporta as seguintes estruturas ou instrues de controle : If ... Then ... Else Do ... While Do .. Until Select / Case While ... End While For ... Next Do ... Loop

file:///d|/geo_hp/livro_mac1.htm (63 of 85) [01/11/03 18:03:19]

Nova pagina 1

If... Then ... Else utilizada para avaliar uma determinada expresso e definir se um bloco de cdigo deve ou no ser executado. A sintaxe de sua estrutura completa a seguinte: if Then [ cdigo #2 ] ElseIf Then [ cdigo #2 ] ElseIf Then [ cdigo #3 ] ...... Else [ cdigo #n ] End If Podemos ter as seguintes variaes: a estrutura na forma mais simples Avaliando uma condio com duas possibilidades de execuo. If then [ codigo #1 ] Else [ codigo #2] End If Aninhando duas instrues - If ... Then... Else if then [ cdigo #1] else if then [ cdigo #2] End If End If - Na estrutura bsica If Then Else ao lado temos: - condio - a condio a ser avaliada ; pode usar os operadores de comparao ( = , < , > , , >= , then [ cdigo #1 ] Ex: If x=0 then Valor = 100 b- if < condio #1 > then [ cdigo #2 ] Else [ cdigo #3 ] Ex: If hora > 12 then msg="Boa Tarde" Else msg="Bom dia"

c- if < condio #1 > then [ cdigo #2 ] : [ codigo #3 ] Else [ cdigo #4 ] Ex: Ex: If hora > 12 then msg="Boa Tarde" : msg2=" >12" Else msg="Bom dia"

Nota: Embora as instrues em uma nica linha as vezes possam dar ao cdigo uma melhor aparncia (caso a) voc dever considerar se a leitura do cdigo no vai ficar mais difcil.Existe ainda a instruo IIF que pode ser aplicada em situaes em que existam apenas duas aes , uma verdadeira e outra falsa. Sua sintaxe :

iif ( , < cdigo executado se a instruo for verdadeira> , )Ex:file:///d|/geo_hp/livro_mac1.htm (64 of 85) [01/11/03 18:03:19]

Nova pagina 1

Function Verifica (ByVal Teste As Integer) As String Verifica = IIf(Teste > 1000, "Grande", "Pequeno") End Function

Operadores de comparaoGeralmente nas condies usamos expresses de comparao onde duas expresses no booleanas utilizam um operador para realizar uma comparao. Os operadores disponveis so : > < = >= Case < condicao #1> [ codigo #1] Case < condicao #2> [ codigo #2] ..... Case Else [ cdigo #3] End Select

- a varivel ou expresso que esta sendo comparada - a condio lgica a ser avaliada - Case Else - executa o bloco de cdigo associado se nenhuma condio anterior for verdadeira.

A utilizao da instruo Select Case pode simplificar muito o cdigo, abaixo as possibilidades : Select Case quantidade Case 1 call rotina1() Case 2,4 call rotina2() Case 5 to 9 call rotina3() Case else call rotina4() End Select Laos Quando voc precisar executar um bloco de cdigo mais de uma vez dever usar o tipo de instruo lao (loop). Vejamos os principais: For ... Next Repete o mesmo bloco de cdigo um determinado nmero de vezes independente de qualquer condio lgica: Sua sintaxe : For To [step] - contador : varivel nmerica que controla o nmero de vezes que o cdigo ser executado. - ValorInicial - Valor inicial atribudo ao contador

- podemos trabalhar com mais de uma opo para a condio : Case x,y - podemos definir uma faixa de valores : Case x to y

file:///d|/geo_hp/livro_mac1.htm (66 of 85) [01/11/03 18:03:19]

Nova pagina 1

[ cdigo #1] exit for Next [contador]

- Valorfinal - valor final que o contador ir assumir antes de encerrar a execuo do lao. - Step - especifica o valor de incremento do contador.O valor padro de uma unidade. - Exit For - interrompe a execuo do lao

Abaixo um exemplo de utilizao de For / Next: For x=1 to 100 step 2 x = x+10 if x > 68 then exit for endif Next Voc usa o lao for/next quando sabe exatamente quantas vezes o bloco de cdigo dever ser executado. Para percorrer vetores ou objetos com um nmero determinado de elementos podemos usar o lao For Each/Next: O lao For Each...Next idntico ao lao For...Next mas executa o bloco de cdigo para cada elemento em uma coleo , ou invs de executar um determinado nmero de vezes. Sua sintaxe : For Each elemento In coleo '[cdigo a ser executado para cada valor do elemento] Next [ elemento ] Os elementos da coleo podem ser qualquer tipo de dados. Para cada interao no lao o VB.NET define a varivel elemento para um dos elementos na coleo e executa o cdigo. While ... End While Este lao mais flexvel que o lao for/next . Ele executa o bloco de cdigo enquanto uma expresso booleana for verdadeira. While < expresso booleana > [ cdigo #1] End While - Voc pode usar qualquer expresso booleana Nota: No visual basic 6 havia a instruo While/Wend , no VB.NET a instruo Wend foi substituida por End While.

Ex: While contador < 10 And valor = 5 contador = contador + 1 End Whilefile:///d|/geo_hp/livro_mac1.htm (67 of 85) [01/11/03 18:03:19]

Nova pagina 1

Do ... Loop Este lao alm de ser simples um dos mais flexveis , ele executa o bloco de cdigo enquanto uma condio for verdadeira. A sintaxe a seguinte : Do [ {While | Until} [bloco de cdigo] [Exit Do] Loop Temos ento as seguintes estruturas possveis: Do While [ cdigo ] Loop Faa enquanto a expresso for verdadeira Do Until [ cdigo ] Loop Faa at que a expresso torne-se verdadeira - - qualquer expresso numrica ou de string avaliada pelo lao - Exit Do - interrompe a execuo do lao.

A diferena entre Do While e Do Until o modo como a estrutura avalia a expresso lgica. Para o Until o bloco ser executado enquanto o valor da expresso for Falsa. Ao escolher entre um lao While e Until use o lao que no precisar de uma negao na expresso condicional. Tenha cuidado a posicionar a sua instruo condicional. Se voc colocar a condio no incio do lao , o cdigo no interior do lao nunca ser executado se a condio no for atendida. Voc pode colocar a condio de sada no final do lao , assim : Do [Cdigo #1} Loop Until Nota: se a expresso da condio for Null o VB.NET tratar a condio como False. Voc deve tomar cuidado com o seu cdigo dentro dos laos pois isto pode afeta o desempenho de sua aplicao. Abaixo algumas dicas para ajudar a voc ter um cdigo rpido: Evite fazer chamadas a funes dentro de laos Tenha sempre uma condio de sada de um lao file:///d|/geo_hp/livro_mac1.htm (68 of 85) [01/11/03 18:03:19]q q

Nova pagina 1q q

No torne a condio de sada de um lao muito complexa pois ele precisa ser avaliada a cada passo Ao utilizar expresses booleanas coloque a parte mais simples da expresso do lado esquerdo

Lao Infinito - Um lao infinito um lao que executa o cdigo no seu interior e no tem condio de sada , ou seja, o cdigo ser executado infinita vezes... Dica: Se por um erro de lgica seu cdigo entrar em um lao infinito use as teclas CTRL+Break para encerr-lo. Abaixo um exemplo de um lao infinito: Dim i as integer = 0 While i < 100 Adivinhe por que o lao ao lado infinito ???? Console.Writeline(i) End While Para evitar um lao infinito procure adotar os seguintes procedimentos:q q q q

Inicialize a varivel de controle Teste o valor da varivel de controle Execute o bloco de cdigo e verifique se ele esta correto Verifique se o valor da varivel de controle esta sendo alterado

Recurso claro que os laos nem sempre so a melhor soluo para todos os problemas. Em alguns casos voc pode usar a recurso como uma alternativa aos laos. A recurso ocorre quando um programa ou rotina chama a ele prprio. Um exemplo clssico para mostrar como a recurso funciona o clculo do um fatorial. A frmula para calcular um fatorial de um valor n = n! onde fazemos n ! = (n -1)(n-2)...(n-(n-1))(1). Assim para o fatorial para o nmero 5 seria : 5! = 5x4x3x2x1 = 120 . A frmula geral para calcular o fatorial pode ser ento expressa como : n * (n-1) ! ( n multiplicado pelo fatorial de n menos 1). A seguir temos o cdigo que usa a recurso ao invs de laos para calcular o fatorial de um nmero inteiro.

file:///d|/geo_hp/livro_mac1.htm (69 of 85) [01/11/03 18:03:19]

Nova pagina 1

Public Class Fatorial Shared Sub Main() Dim entrada As String Dim numero As Integer Dim contador As Integer Console.Write(" >>> Calculo do Fatorial