39 visual basic net

8.041 visualizações

Publicada em

  • Seja o primeiro a comentar

39 visual basic net

  1. 1. Visual Studio.Net Autor: Paulo Cesar Macedo
  2. 2. Apostila de VISUAL STUDIO .NET1 - Introdução ao Visual Basic .NET .....................................................................................................3 1.1 – Hardware necessário para instalação ........................................................................................3 1.2 – Conceitos para o desenvolvimento de aplicativos Microsoft ...................................................42 - Estudo da Linguagem Visual Basic .NET ........................................................................................8 2.0 – Arquivos gerados pelo Visual Basic .NET ...............................................................................8 2.1 - Nova Estrutura do programa escrito em VB .Net....................................................................10 2.2 – Atribuir nomes aos elementos do seu programa .....................................................................11 2.3 – Utilizando quebra de linha e combinação de código ..............................................................11 2.4 – Caracteres especiais no VB .Net .............................................................................................12 2.5 – Criar comentários no Código ..................................................................................................12 2.6 – Limitações do Visual Basic .NET...........................................................................................13 2.7 - Compilação Condicional .........................................................................................................13 2.7.1 – Criando Constantes de declaração Condicional...............................................................14 2.7.2 – Ocultando ou expandindo o código .................................................................................14 2.8 – Técnicas de codificação e programação .................................................................................14 2.9 – Declarando Elementos ............................................................................................................20 2.10 – Tipos de Dados .....................................................................................................................27 2.10.1 – Estruturas de dados ........................................................................................................37 2.10.2 – Matrizes (Arrays) ...........................................................................................................38 2.11 – Objetos ..................................................................................................................................44 2.12 – Strings ...................................................................................................................................46 2.13 - Constantes e Enumerações ....................................................................................................49 2.14 – Operadores ............................................................................................................................52 2.15 – Procedures (Procedimentos) .................................................................................................62 2.16 - Collection (Coleções) ............................................................................................................73 2.17 - Estruturas de Controle de Fluxo ............................................................................................76 2.18 - Visual Basic .NET e a programação orientada a objeto ........................................................84 2.18.1 – Early bound e Late bound ..............................................................................................85 2.18.2 – Palavra chave New e liberando recursos do Sistema.....................................................86 2.18.3 – Trabalhando com Grupos de Objetos ............................................................................87 2.18.4 - Obtendo informações de uma classe ..............................................................................88 2.18.5 - Classes ............................................................................................................................89 2.18.6 – Propriedades, Campos e Métodos de uma Classe..........................................................98 2.18.7 – Eventos e Delegar ........................................................................................................103 2.18.8 – Interfaces no VB .NET ................................................................................................110 2.18.9 – Herança (Inherits) ........................................................................................................112 2.18.10 – Construtores e Destrutores na hierarquia de classes ..................................................118 2.18.11 – Polimorfismo..............................................................................................................120 2.18.12 – Criando um hierarquia de heranças............................................................................122 2.19 – Operações com Componentes COM...................................................................................123 2.20 – Multithreading.....................................................................................................................125 2.21 – Drivers, Pastas e Arquivos ..................................................................................................129 2.21.1 - A classe System.IO.......................................................................................................129 2.21.2 – Acessando arquivos com as funções internas do VB...................................................130 2.21.3 – Acessando arquivos com FileSystemObject................................................................138 2.22 – Manipulando exceções (Exception) ....................................................................................141 2.22.1 – Manipulador estruturado de exceções..........................................................................141 2.22.2 – Manipulador de exceções não estruturado ...................................................................1433 – Visão Geral da Tecnologia .NET Framework .............................................................................146 3.1 – Infraestrutura NET ................................................................................................................146 2
  3. 3. 1 - Introdução ao Visual Basic .NETA Microsoft lançou as versões mais significativas do Visual Basic, conforme abaixo : • Visual Basic 1 – Facilitou a criação de aplicativos DESKTOP para Windows. • Visual Basic 4 – Incluiu a nova tecnologia COM2 que permitia a criação de controles OCX, arquivos DLL e servidores EXE para Windows. • Visual Basic .NET – Incorpora uma nova Tecnologia denominada .NET Framework, especialmente criada para Internet, Aplicativos Servidores, Componentes e XML.O pacote Visual Studio .NET substitui e aposenta o Visual Studio 6.0 e anteriores, assim como oVisual Basic .NET substitui e aposenta o VB 6.0, 5.0 e 4.0. O VB .NET faz parte do pacote VisualStudio .NET.Agora, o Visual Basic 7.0 ou Visual Basic .NET (pronuncia-se DOT NET) pode ser usado para criarqualquer aplicativo Windows Cliente, Servidor, Internet, não precisando usar nenhuma outraferramenta.O Visual Basic só trabalha com a Tecnologia .NET e de agora em diante qualquer aplicativo criadocom o Visual Basic .NET é GERENCIADA e não mais interpretada ou nativa (VB 6.0), além disso,utiliza novos recursos de desenvolvimento procedentes do C++.O Visual Basic é uma ferramenta denominada pela Microsoft de RAD – Rapid ApplicationDevelopment que possibilita a criação de aplicativos rapidamente sem preocupar-se com os detalhesda programação Windows, é portanto uma ferramenta de alta produtividade.O Visual Basic é a combinação de três componentes :Visual – É o componente que é usado para criar a Interface Gráfica de Usuário (GUI), assim vocêusa os objetos pré-construídos para criar a sua tela. Se não fosse por intermédio desse componente,você seria obrigado a digitar linhas e mais linhas de código para “desenhar” uma simples janela,além de utilizar as centenas de funções API do Windows. O ambiente visual é conhecido como IDE(integrated Development Enviroment) que possui um kit de ferramentas para o desenvolvimento.Basic – É a linguagem Basic criada em 1964, adicionado de Métodos, Funções, Comandos,Propriedades e Eventos. Tudo isso foi herdado do Ambiente gráfico do Windows.Plataforma .NET – É um conjunto de centenas de classes e objetos pré-construídos pela Microsoftpara serem utilizados na codificação do aplicativo, além disso possui vários arquivos distribuídos aserem compilados junto com o aplicativo.O VS vem originalmente em 4 versões Academic, Professional, Enterprise Developer e EnterpriseArchitect, sendo que a última é a versão mais completa.1.1 – Hardware necessário para instalaçãoO Visual Studio .Net não pode ser instalado em sistemas operacionais Windows 95, 98, Me. Alémdisso para instalar as ferramentas de desenvolvimento Web é necessário o Windows 2000 Server ouNT com o IIS (Internet Information Service) instalado na máquina.Hardware necessário para cada versão do VS .NET :Hardware Enterprise Architect Enterprise Professional Academic 3
  4. 4. DeveloperProcessador Pentium II-, 450 MHz Mesmo Mesmo Mesmo Recomendado: Pentium III - 600MHzRAM Windows 2000 Professional — Mesmo Mesmo mesmo 96 MB; Windows 2000 Server — 192 MB; Windows NT4.0 Workstation — 64 MB; Windows NT 4.0 Server — 160 MB; Windows XP Professional — 160 MB Recomendado: 128 MB - 2000 Professional, 256 MB - 2000 Server, 96 MB - Workstation, and 192 MB - NT 4.0 Server, 192 MB - XP ProfessionalEspaço em Disco 500 MB no drive do sistema, 3 Mesmo Mesmo mesmo GB drive de instalaçãoSistema Windows® 2000, Windows Mesmo Mesmo mesmoOperacional XP, ou Windows NT 4.0CD-ROM ou Recomendado Recomendado Recomendado RecomendadoDVD-ROMVideo 800 x 600, 256 cores Mesmo Mesmo mesmo Recomendado: High Color 16- bitMouse Qualquer Mesmo Mesmo mesmoPara melhor o desempenho do VS .NET desligue o antivírus na instalação; desfragmente o discorígido; faça um upgrade da memória.Para melhorar a velocidade na inicialização do VS .Net feche a janela de propriedades da IDE; fechea janela Start Up da IDE; feche a janela Dynamic Help. Observação desmarque a opção de abrir estasjanelas automaticamente.1.2 – Conceitos para o desenvolvimento de aplicativos MicrosoftEste capítulo foi incluído para explicar o significado de alguns termos que a Microsoft utiliza nadocumentação oficial, e no treinamento para a certificação.Para desenvolver aplicativos Windows, a Microsoft utiliza a Modelagem de Aplicativos Enterprise(EAM - Entreprise Application Model) que envolve seis etapas : • O Modelo de Desenvolvimento – Processo de desenvolvimento do software. • O Modelo de Negócios – Define o objetivo do software. • O Modelo do Usuário – Refere-se a interface, documentação, treinamento, suporte e configuração ao usuário. • O Modelo Lógico – Define a estrutura lógica e a modelagem dos objetos e serviços do software. • O Modelo Tecnológico – Define a reutilização dos componentes do software, do sistema, do gerenciamento dos recursos. 4
  5. 5. • O Modelo Físico – É o produto final que engloba os componentes, a distribuição e a interconecção.Para o programador VB a fase mais importante das descritas acima é o Modelo de Deesenvolvimento(Model Development) que é o intermediário entre o Modelo de Negócios e os Modelos do Usuário,Lógico e Tecnológico.1 - O Modelo de desenvolvimentoO modelo de desenvolvimento envolve três etapas : • Desenho Conceitual (Conceptual Design) – Trata o sistema do ponto de vista do usuário. • Desenho Lógico (Logical Design) – Identifica os objetos e serviços do negócio. • Desenho Físico (Physical Design) – Implementa o desenho lógico incluindo as soluções específicas de hardware e software.O Desenho Conceitual irá considerar o perfil do usuário, isto é quem é o usuário e como ele irátrabalhar com o sistema, além disso o perfil do usuário engloba sua função ou cargo.O desenho conceitual também deve considerar o cenário atual em uso, isto é quantos usuáriosutilizam o sistema atual e as situações de uso.E finalmente o desenho conceitual deve considerar o cenário proposto para o uso, isto é quantosusuários deverão utilizar o novo sistema e as situações de uso.2 – O Desenho LógicoPara criar o desenho lógico é preciso seguir os passos abaixo : 1. Identificar os objetos e serviços do negócio 2. Definir a interface 3. Identificar as dependências do objeto 4. Validar o desenho lógico 5. Revisar e refinar o desenho lógicoUma entidade que representa os modelos lógicos ou físicos é chamado de business object (Objetode Negócio, ou Objeto comercial), isto é representar as situações ou funções de uma empresa emum objeto no sistema. Um business object pode retratar : • Contas • Clientes • Vendas • FaturasO desenvolvimento do software irá implementar esses objetos para criar seus membros tais comopropriedades e métodos para interagirem com outros objetos. Para identificar um business object énecessário determinar os nomes dos cenários em uso e os verbos dos cenários em uso.Os nomes dos cenários podem ser determinados pelos diversos departamentos ou seções que irãoutilizar o aplicativo, e serve como base para identificar os verbos para compor o objeto.Os verbos podem ser indicados pelos termos Possui ou Tem; Usa; Contém ou Guarda ou Consiste;É um exemplo de ou É um. 5
  6. 6. 3 – O Desenho FísicoPara criar o desenho Físico a partir do Desenho Lógico é preciso seguir estes passos : • Definir o tipo de serviço aos componentes – Cria os componentes a partir dos objetos lógicos já definidos e determina se cada objeto é um usuário, um negócio ou um objeto de serviços de dados. • Distribuir o componente na rede – Definir o local do componente na rede. • Refinar a distribuição dos componentes – Agrupar os componentes de acordo com as necessidades do sistema. • Definir os membros do componente – Define o relacionamento entre os componentes. • Validar o desenho físico – Certificar que cada componente corresponde ao serviço no objeto lógico.Um desenho lógico bem efetuado vai ter um impacto positivo na criação do desenho Físico. A formade medir o impacto do desenho lógico no desenho físico é observar se as considerações abaixopodem ser alcançadas. • Performance (Desempenho) • Maintainability (Manutenciabilidade) • Extensibility (Extensibilidade) • Scalability (Escalabilidade) • Availability (Disponibilidade) • Security (Segurança)PerformanceA performance (desempenho) é a velocidade e a eficiência que o sistema executa as tarefas. Odesempenho tem que ser considerado pelo ponto de vista dos recursos do sistema, isto é o total derecursos que o sistema utiliza para executar a tarefa. E do ponto de vista do usuário, isto é o tempogasto que o sistema utiliza para executar a tarefa.Entretanto é necessário ter um ponto de equilíbrio entre o desempenho e outras considerações emrelação ao software, pois o código que incrementa a performance pode afetar outros aspectos dosistema.MaintainabilityO sistema que permite uma boa manutenção, isto é revisão do código fonte pelos programadores, éaquele que evita um longo trabalho de revisão e a participação de usuários no processo.O sistema pode centralizar todos os componentes em um único lugar de forma a substituir ocomponente debilitado pelo componente corrigido. Outro caso seria dividir os componentes empequenos pedaços de forma a isolar o problema em áreas específicasO ideal é dividir os componentes em pequenos pedaços de código e centralizá-los em um únicolugar, assim um sistema cliente servidor pode centralizar os pedaços dos componentes no servidor epermitir que a manutenção seja feita no próprio servidor sem a participação do usuário no processo.Extensibility 6
  7. 7. Extensibilidade é a capacidade de integrar outros aplicativos ao sistema. Para alcançar aextensibilidade pode-se utilizar as regras abaixo : • Dividir os serviços do sistema em pequenos componentes que possuem membros e executem tarefas específicas que possam ser reutilizáveis por outros sistemas. • Criar componentes COM ou .NET que podem ser sempre utilizados em outras plataformas. • Se o sistema for WEB utilize os serviços do IIS Internet Information Service para enviar informações ao Browser dos usuários.ScalabilityA escalabilidade é a capacidade que um sistema possui de mudar de um ambiente de pouca utilizaçãopara um ambiente de intensa utilização do sistema sem afetar suas funcionalidades. O ambiente deintensa utilização pode envolver : • Aumento do número de usuários • Aumento do tráfico do sistema na rede • Serviços que utilizem os dados do aplicativoAssim a escalabilidade também está ligada a performance do sistema, entretanto a escalabilidade émais especializada que a performance pois trata de técnicas que ajudam na melhoria do desempenhode redes, distribuição de dados, servidores de dados, camadas de dados e etc.AvailabilityUm sistema deve estar disponível na maior parte do tempo possível e na maioria dos lugares em quefor acessado. Para que um sistema esteja sempre disponível é necessário observar a natureza dosistema e outros fatores tais como : • Área local • Rede • Internet • INtranetSecurityA segurança de um aplicativo está voltado a formas de evitar acessos externos e total controle daadministração do sistema. Para melhor segurança o sistema deve estar centralizado em um únicolugar para melhor administração e evitar acessos externos. 7
  8. 8. 2 - Estudo da Linguagem Visual Basic .NET2.0 – Arquivos gerados pelo Visual Basic .NETQuando iniciado um projeto em VB, o sistema cria os arquivos com extensão .vb, além de outros quepodem ser incluídos no projeto tais como arquivos ASP que tem a extensão .aspx; arquivos XMLcom extensão .xml; arquivos HTML com extensão .html e outros. Assim não há distinção dearquivos de classes, janelas, controles e etc, pois todos terão a partir de agora a extensão .vb.Item do projeto Extensão DescriçãoJanela .vb Janela para aplicativos Desktop.Classe .vb Arquivo de código para classesModulo (Visual Basic) .vb Arquivo que agrupa funçõesComponent Class .vb Uma classe de componentes.User Control .vb Controle para aplicativosData Form Wizard .vb (.aspx para Uma janela de dados projetos WEB.)DataSet .xsd Arquivo DataSet para criar esquemas XMLArquivo XML .xml Arquivo XMLEsquema XML .xsd Arquivo para criar Esquemas de documentos XML.Code File .vb Arquivo de códigoCustom Control .vb Classe para criar controles para aplicativos Windows.Página HTML .htm Página HTML que inclui código.Inherited Form .vb Janela baseada em outra janela existente.Web Custom Control .vb Classe para criar um controle servidor ASP.NET.Inherited User Control .vb Novo controle baseado em um controle existente.Windows Service .vb Classe para criar Serviços Windows.COM Class .vb Classe baseada em componente COMTransactional .vb Classe para usar componentes transacionais.ComponentArquivo texto .txt Arquivo de textoFrameset .htm Arquivo HTML que possui várias páginas HTML.Arquivo XSLT .xslt Arquivo usado para transformar documentos XMLStyleSheet .css Arquivo estilo planilha para definições HTMLInstaller Class .vb Classe para ser chamada em processos de instalação.Crystal Report .rpt Um relatório Crystal ReportArquivo Bitmap .bmp Arquivo bitmap.Arquivo de Cursor .cur Cursor padrãoIcone .ico Ícone padrãoArquivo Assembly .resx Arquivo usado para armazenar recursos para o aplicativoResourceArquivo Assembly .vb Arquivo que contém informações do Assembly.InformationArquivo Application .config Arquivo usado para configurações do aplicativo.Configuration 8
  9. 9. Arquivo JScript .js Arquivo contendo código JScriptArquivo VBScript .vbs Arquivo contendo código VBScriptWindows Script Host .wsf Arquivo que contém Script que é executado como um aplicativo Windows.Arquivos de um projeto WEBArquivos Extensão DescriçãoJanela Web 2 arquivos: .aspx Uma janela WEB. .vbWeb Service 2 arquivos: .asmx Componente que troca mensagens usando os protocolos .vb padrões HTTP, XML, XSD, SOAP e WSDL.Class .vb Arquivo de classe.Modulo (Visual Basic) .vb Arquivo que agrupa funçõesComponent Class .vb Classe de componentesData Form Wizard .aspx (.vb para Uma janela de dados para aplicativos WEB. projetos locais)DataSet .xsd Arquivo para esquemas XML usando DAtaSetWeb User Control .ascx Controle servidor ASP.NETPágina HTML .htm Página HTML que inclui códigoFrameset .htm Um pagina HTMP que inclui várias páginas HTML.Style Sheet .css Arquivo estilo planilha usado para definições HTMLArquivo XML .xml Arquivo XML .Esquema XML .xsd Arquivo esquema para documentos XML.Arquivo XSLT .xslt Arquivo usado para transformar documetnos XMLWeb Custom Control .vb Controle ASP.NET server.Arquivo de código .vb Arquivo de códigoDynamic Discovery .vsdisco Arquivo baseado em XML usado para descobrir o caminhoDocument do servidor WEB.Static Discovery .disco Arquivo de mecanismo de procura para servidores XML WEB.Global Application .asax Arquivo para manipular eventos ASP.NETClassWeb Configuration .config Arquivo de configuração para aplicativos WEBTexto .txt Arquivo de textoInstaller Class .vb Classe chamada em processos de instalação..Crystal Report .rpt Arquivo Crystal ReportBitmap .bmp Imagem BitmapCursor .cur Cursor PadrãoIcon File .ico Ícone padrãoAssembly Resource .resx Arquivo de recursos utilizado pelo aplicativoFileAssembly Information .vb Informações gerais do assemblyFileJScript File .js Código JScriptVBScript File .vbs Código VBScriptWindows Script Host .wsf Arquivo para Windows scripting.. 9
  10. 10. Em versões anteriores do VB, as janelas tinham extensões .frm, os controles tinham extensões .ctr, asclasses tinham a extensão .cls.Ainda hoje, os arquivos do Vb podem ser abertos por qualquer programa de texto e podem seralterados diretamente sem usar o Ambiente de Desenvolvimento do Visual Studio.2.1 - Nova Estrutura do programa escrito em VB .NetA nova estrutura do programa deve seguir essas etapas: 1. Utilize os comandos Option para verificar os erros de lógica e de sintaxe. 2. Utilize o comando Imports para acessar os recursos da tecnologia .NET Framework. 3. O procedimento Main ( ) será o ponto inicial do programa, ou seja o código que será executado em primeiro lugar. 4. Utilize os comandos Class, Module ou NameSpace se for criar objetos para o programa. 5. Utilize comandos de compilação condicional #if .. #else... se necessário.Exemplo 1 : Programa escrito em Visual Basic .Option ExplicitModule Olá Sub Main( ) MsgBox("Olá Mundo!") Exibe a Mensagem na tela. End SubEnd ModuleA primeira linha funciona como comentário. O Comando Option obriga declarar todas as variáveisantes de utilizá-las no programa.No exemplo acima, no módulo “Olá” está o procedimento Sub Main ( ) que vai controlar a execuçãodo processo e exibir a mensagem “Olá Mundo” na tela do computador.Quando criamos um programa em VB escolhendo Windows Application na janela de opções, oVisual Studio .NET cria um projeto contendo referências e uma classe chamada sempre de form1.vb.Exemplo 2 :Public Class Form1 Inherits System.Windows.Forms.Form‘ O código abaixo foi criado automaticamente pelo Visual Basic#Region " Windows Forms Designer generated code " Public Sub New() MyBase.New() This call is required by the Windows Forms Designer. InitializeComponent() Add any initialization after the InitializeComponent() call. End Sub Form overrides dispose to clean up the component list. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then 10
  11. 11. components.Dispose() End If End If MyBase.Dispose(disposing) End SubNo exemplo acima, O VS .net criou o protótipo central para ser modificado, contendo uma janelaForm1 que possui o código inicial da janela Sub New que é o construtor da janela onde é colocado ocódigo de inicialização da janela que substitui o antigo evento Initialize do VB 6.0.Resumindo, quando a janela é carregada na tela, o primeiro procedimento a ser executado será ocódigo dentro de Sub New, também conhecido como Construtor (proveniente da linguagem C++).InitializeComponent( ) é criado automaticamente pelo VStudio e substitui o antigo arquivo .frm queera criado pelo VB 6, onde continha todo as propriedades e códigos fonte da janela em formato deTexto.Resumindo, InitializeComponent( ) grava todas os controles, textos, figuras e outras coisas queforem feitas na janela.O comando inherits na primeira linha do exemplo acima herda todas as características de uma janelanormal. Assim pode-se alterar suas propriedades na janela de propriedades do VB.Resumindo, para criar uma janela é preciso acionar a classe Windows Form da tecnologia .NETFramework.2.2 – Atribuir nomes aos elementos do seu programaQuando for nomear (dar nome as variáveis, objetos ou classes) os elementos do seu programa aMicrosoft recomenda usar as seguintes técnicas. • Começar cada Nome com letra maiúscula , Exemplo : ConvertaPrimeiraLetra. • Quando nomear uma função ou método inicie com a ação que ela executa. Exemplo : CarregarFiltro; IniciarProcura; FecharJanela. • Quando nomear uma Classe ou uma propriedade da classe inicie com o nome a que se refere a classe . Exemplo : CarroAcessórios; EmpregadosSalário; ArquivosNome. • Quando nomear uma Interface (Interface) no seu programa, inicie com a letra I maiúscula seguida da ação ou comportamento dessa interface. Exemplo : IPersistente; IAleatório. • Quando nomear eventos para sua classe, inicie com a palavra “Event” ou “Evento”. Exemplo: EventoFechar; EventoAbrir. • Se for usar um evento que foi disparado no momento da ação ou depois da ação, utilize os verbos no presente ou passado. Exemplo : EventoFechar; EventoFechou; EventoAbrir; EventoAbriu. • Para nomes muito grandes utilize abreviações. Exemplo : HTML (abreviação de Hyper Text Marquet Language). • Não use nomes idênticos no mesmo módulo ou procedimento, o ideal é utilizar nomes completamente diferentes em todo o programa.2.3 – Utilizando quebra de linha e combinação de código 11
  12. 12. No momento da codificação os comandos estiverem extensos demais, pode-se quebrar a linha emdiversas partes sem gerar erros de execução. Utilize o “Caracter de continuação de Linha” ( _ ) apósum espaço simples, em seguida continuar a escrever o código em outra linha.. Exemplo :Data1.RecordSource = _"SELECT * FROM Titles, Publishers" _& "WHERE Publishers.PubId = Titles.PubID" _& "AND Publishers.State = CA"Assim, a linha de código fica mais fácil de ler na tela do seu computador, entretanto existe umalimitação para o número de linhas.Para combinar muitas linhas de código em uma única linha utilize dois pontos ( : ). Exemplo :Text1.Text = "Olá" : Vermelho = 255 : Text1.BackColor = Vermelho2.4 – Caracteres especiais no VB .NetAlguns caracteres possuem significados diferentes na linguagem, veja a seguir : 1. Parênteses : Use parênteses para criar um procedimento ou função. Exemplo : Sub Main ( ). 2. Separadores ( : ) : Os dois pontos ( : ) são usados para separar blocos de código na mesma linha. Exemplo : Text1.Text = "Olá" : Vermelho = 255 : Text1.BackColor = Vermelho 3. Concatenação : Para combinar duas variáveis Strings, utilize o operador de concatenação &. Exemplo : Var1 = "10.01" Var2 = 11 Result = Var1 + Var2 Result = 21.01 Result = Var1 & Var2 Result = 10.0111 Não use o operador “ + “ para concatenar duas string, pois pode gerar erros. Observe os resultados do exemplo acima. 4. Operador de acesso ( . ) : O ponto é utilizado para acessar funções, métodos ou propriedades de uma classe ou objeto. Exemplo : MyForm.Text = "This is my form" 5. Operador de acesso ( ! ) : A exclamação também é utilizada para acessar métodos ou propriedades somente de algumas classes ou estruturas. Exemplo : RS.Fields!CustomerID.Value = txtCustomerID.Text 6. Caracter de declaração de tipos de dados ( ! ) : O ponto de exclamação também pode ser utilizado para declarar variáveis do tipo Single. Exemplo : Var = 1234578!2.5 – Criar comentários no CódigoPara cada linha de código, pode-se criar um comentário explicando o significado do procedimento,este tipo de linha é ignorado pelo compilador. Utilize o símbolo de comentário ( ‘ ) para ativar ocomentário. Exemplo : Este é um comentário no início do códigoText1.Text = "Hi!" Este é um comentário na mesma linha do código 12
  13. 13. A Microsoft recomenda criar comentários para cada seção de código dessa forma : 1. Propósito : Inclua esse tópico no comentário, para identificar qual a descrição ou tarefa do código em questão. 2. Requisitos : Inclua esse tópico no comentário, para identificar quais variáveis, objetos, classes e outros elementos utilizados no código em questão. 3. Efeito : Inclua esse tópico para identificar quais variáveis, objetos, classes e outros elementos que serão afetados pelo código em questão. 4. Argumentos : Inc.ua esse tópico para explicar os argumentos exigidos pelo código em questão. 5. Retorno : Inclua esse tópico para identificar o valor de retorno desse código em questão.Não se pode quebrar linhas em comentário, utilizando o caracter ( _ ). Pode-se utilizar o comandoREM para ativar comentários, entretanto esse procedimento requer mais espaço em memória que osímbolo ( ‘ ), portanto utilize o símbolo somente.2.6 – Limitações do Visual Basic .NETAs versões anteriores do VB tinham várias limitações no código, veja abaixo : • Número de variáveis usadas no mesmo código. • Número de funções usadas no mesmo código. • Número de arquivos abertos no mesmo código. • Número de janelas abertas no mesmo código. • Dentre outras...No VB .NET existem limitações físicas, segundo a Microsoft, mas são tão altas que não há chancesde serem atingidas pelo desenvolvedor, a ponto de não serem nem documentadas oficialmente.2.7 - Compilação CondicionalQuando se executa um programa, o compilador inicia a leitura do código fonte indistintamente até ofinal. Entretanto esse comportamento pode ser alterado utilizando a Compilação Condicional.A compilação condicional faz com que o compilador execute certos blocos de código enquantooutros são ignorados. É útil quando se deseja usar comandos para certos tipos de Sistemasoperacionais em uso, ou utilizar dicionários para uma língua de um país, etc..Para aplicar esse recurso use o comando de diretiva # if ... #Then ... # Else . Além disso pode-se criaruma constante a nível de compilação usando o comando de diretiva #Const . Exemplo :‘Cria uma compilação para a versão de um programa de língua Francesa ou Alemã, note‘que FrenchVersion e GermanVersion são constantes predefinidas pelo VB.#If FrenchVersion Then <código para a lingua francesa>.#ElseIf GermanVersion Then <código para a lingua alemã>.#Else <código para outras versões>.#End If 13
  14. 14. 2.7.1 – Criando Constantes de declaração CondicionalConstantes são variáveis que não podem ser alteradas. As constantes de declaração condicional sãovariáveis que não podem ser alteradas e também não podem ser acessadas pelo código geral.Pode-se criar constantes com caixa de diálogos de propriedades, por linha de comando ou porcomandos em código. Para criar constantes condicionais por comandos em código, utilize #Const.Exemplo :#Const MeuPaís = "BRASIL"#Const Versão = "8.0.0012"#Const NúmeroPadrão = 36 2.7.2 – Ocultando ou expandindo o códigoNo VB .NET há um recurso que permite ocultar ou expandir o código escrito no Editor de Códigos, ésemelhante ao Windows Explorer ao visualizar os diretórios e subdiretórios do sistema. Quando umdiretório possui subdiretórios, o sistema exibe um sinal de mais ( + ) ao lado do nome do diretóriocorrente, informando que há outros elementos nele. Basta clicar sobre o ( + ) para visualizar os outroselementos.Assim funciona esse recurso, que pode ser aplicado usando a diretiva #Region. Exemplo :#Region "O código dentro de Region é ocultado clicando sobre #Region" Private components As System.ComponentModel.Container Dim WithEvents Form1 As System.Windows.Forms.Form Private Sub InitializeComponent() components = New System.ComponentModel.Container Me.Text = "Form1" End Sub#End RegionEsse recurso torna fácil ler e administrar o código fonte do desenvolvedor. Note que não é possívelusar esse recurso quando criar Funções, e qualquer código ocultado ou expandido é lidonormalmente pelo compilador.2.8 – Técnicas de codificação e programaçãoÉ necessário utilizar técnicas para aumentar a produtividade do programador Visual Basic .NET,além de solucionar grande parte dos bugs dos programas. Além disso utilizando essas técnicasconsolidadas de programação, permite criar códigos de alta qualidade e permite seguir as regras decriação de software das grandes companhias.Quando for nomear elementos, utilize as seguintes técnicas :Rotinas ou Procedimentos • Quando criar rotinas ou procedimentos, evite usar nomes confusos que não contribuem para explicar o significado do procedimento. Como por exemplo : Sub AnalizeIsto ( ). • Quando criar classes, evite citar nomes redundantes para as propriedades, métodos ou funções dessa classe. Como por Exemplo : Livro.LivroTítulo use : Livro.Título 14
  15. 15. • Quando Nomear um método ou Função, dê o nome da ação respectiva. Exemplo : CalculeRaízQuadrada( ) . Com todas as iniciais em maiúsculas.Variáveis • Quando nomear variáveis que armazenarão dados calculados, finalize o nome com a identificação do cálculo utilizado. Como por exemplo : intSoma, intDiferença, intMax, intMin, pode-se utilizar até o nome de funções do VB para criar os nomes. intSum, intAvg, intIndex, etc... • Use nomes complementares quando forem necessários na mesma operação, tais como Início / Fim, Mín / Max, Aberto / Fechado. Exemplo : intInício, intFim, intMín, intMax. • Para nomear variáveis utilize o primeira palavra em minúsculas e as restantes em maiúsculas. Exemplo : documentoFormatoIndexado., ou utilize a notação húngara *. • Para variáveis do tipo Boolean pode utilizar a palavra É, Esta ( Is) para designar se a variável está na condição True ou False. Exemplo : ArquivoEstáAberto, ou FileIsOpen • Muitos programadores utilizam a palavra Flag para nomear suas variáveis, entretanto é preferível substituir a palavra Flag por outro nome que descreva melhor a variável. Exemplo: ao invés de documentoFlag , use documentoFormatoIndexado. • Para variáveis utilizadas em loops, dê nomes simples como i, j, x, etc... • Utilize sempre constantes nomeadas para efetuar loops e outras condições de teste. Como por exemplo : ao invés de For i = 1 to 7 utilize For i = 1 to intContadorIndexado, onde intContadorIndexado é uma constante nomeada de valor 7.* Uma notação especialmente popular é a notação húngara. Ela costuma ser usada na programaçãoem Windows e no OS/2. No caso da notação húngara, pode-se antecer uma variável String com “str”,uma variável Integer com “int” , um ponteiro como “p”, funções com “fn”, handles com “h” e assimpor diante. A regra é compor o nome da variável utilizando a abreviação das primeiras letras docontrole, tipo de dados ou uma combinação de suas primeiras letras com um nome de identificaçãoindividual.A notação húngara foi desenvolvida por um programador da Microsoft chamado Charles Simonyi.Nos velhos tempos da Microsoft, Charles ficou famoso por dar rasantes de helicópteros nospiqueniques da empresa.Tipo do Controle Prefixo Exemplo3D Panel pnl pnlGroupADO Data ado adoBiblioAnimated button ani aniMailBoxCheck box chk chkReadOnlyCombo box, drop-down list box cbo cboEnglishCommand button cmd cmdExitCommon dialog dlg dlgFileOpenCommunications com comFaxControles ctr ctrCurrentData dat datBiblio 15
  16. 16. Data-bound combo box dbcbo dbcboLanguageData-bound grid dbgrd dbgrdQueryResultData-bound list box dblst dblstJobTypeData combo dbc dbcAuthorData grid dgd dgdTitlesData list dbl dblPublisherData repeater drp drpLocationDate picker dtp dtpPublishedDirectory list box dir dirSourceDrive list box drv drvTargetFile list box fil filSourceFlat scroll bar fsb fsbMoveForm frm frmEntryFrame fra fraLanguageGauge gau gauStatusGraph gra graRevenueGrid grd grdPricesHierarchical flexgrid flex flexOrdersHorizontal scroll bar hsb hsbVolumeImage img imgIconImage combo imgcbo imgcboProductImageList ils ilsAllIconsLabel lbl lblHelpMessageLightweight check box lwchk lwchkArchiveLightweight combo box lwcbo lwcboGermanLightweight command button lwcmd lwcmdRemoveLightweight frame lwfra lwfraSaveOptionsLightweight horizontal scroll bar lwhsb lwhsbVolumeLightweight list box lwlst lwlstCostCentersLightweight option button lwopt lwoptIncomeLevelLightweight text box lwtxt lwoptStreet 16
  17. 17. Lightweight vertical scroll bar lwvsb lwvsbYearLine lin linVerticalList box lst lstPolicyCodesListView lvw lvwHeadingsMAPI message mpm mpmSentMessageMAPI session mps mpsSessionMCI mci mciVideoMenu mnu mnuFileOpenMonth view mvw mvwPeriodMS Chart ch chSalesbyRegionMS Flex grid msg msgClientsMS Tab mst mstFirstOLE container ole oleWorksheetOption button opt optGenderPicture box pic picVGAPicture clip clp clpToolbarProgressBar prg prgLoadFileRemote Data rd rdTitlesRichTextBox rtf rtfReportShape shp shpCircleSlider sld sldScaleSpin spn spnPagesStatusBar sta staDateTimeSysInfo sys sysMonitorTabStrip tab tabOptionsText box txt txtLastNameTimer tmr tmrAlarmToolbar tlb tlbActionsTreeView tre treOrganizationUpDown upd updDirectionVertical scroll bar vsb vsbRate 17
  18. 18. Lista de nomes de Menus onde a regra é criar um prefino Mnu + Nome do Menu utilizado :Menu Nome do MenuFile Open mnuFileOpenFile Send Email mnuFileSendEmailFile Send Fax mnuFileSendFaxFormat Character mnuFormatCharacterHelp Contents mnuHelpContentsA Microsoft recomenda utilizar uma codificação modular, isto significa que se deve utilizarvariáveis, constantes, controles agrupados dentro de um procedimento que execute uma tarefa únicaem um formulário simples. Por exemplo, para acionar uma caixa de diálogo Abrir, devemos colocartodas as variáveis, controles e flags necessários agrupados em um único botão ou menu “Abrir” queexecute a tarefa de acionar essa Caixa de diálogo, uma vez terminado a execução da tarefa todas asvariáveis e controles são finalizados.Lista de sugestão de escopo de variáveis (esses prefixos eram muito utilizados em versões anterioresdo Visual Basic, entretanto com a nova formulação da linguagem, essa terminologia quase não se usamais) :Escopo Prefixo ExemploGlobal g gstrUserNameModule-level m mblnCalcInProgressLocal to procedure Nenhum dblVelocityPara se formar um nome de constante adequadamente, a regra é utilizar o prefixo do escopo acima +o prefixo do tipo de dados + as letras iniciais maiúsculas do significado/propósito da constante,exemplo: gintIdadeDoAluno ‘ Variável global , do tipo de dados inteiro , Idade do aluno(g + int + Idade Do Aluno)mstrNomeDoAluno ‘Variável a nível de módulo, do tipo string, Nome do Aluno(m + str + Nome Do Aluno)Use os seguintes prefixos para indicar o tipo de dados da variável (esses prefixos eram muitoutilizados em versões anteriores do Visual Basic, entretanto com a nova formulação da linguagem,essa terminologia quase não se usa mais):Tipo de Dado Prefixo ExemploBoolean bln blnFoundByte byt bytRasterData 18
  19. 19. Collection object col colWidgetsDecimal dec decRevenueDate (Time) dtm dtmStartDouble dbl dblToleranceError err errOrderNumInteger int intQuantityLong lng lngDistanceObject obj objCurrentSingle sng sngAverageString str strFNameCompound-defined type cdt cdtEmployeeOs nomes de variáveis de tipos definidos pelo usuário (tipos de dados compostos) podem serdefinidos com o prefixo “cdt” , assim cdt + nome da variável / combinação das tres primeiras letras ,exemplo : cdtCli‘Uma variável do tipo de dados composto , Cliente( cdt + Cli)Tabelas • Quando nomear tabelas use nomes sempre no singular. Exemplo : ao invés de tabela Alunos use tabela Aluno. • Quando nomear campos em tabelas, evite repetir o nome da tabela no Campo. Exemplo : ao invés do nome do Campo AlunoEndereço utilize o nome Endereço. • Não utilize o Tipo de Dados do campo para compor o seu nome.Microsoft SQL Server • Evite o nome com abreviações, somente use abreviações quando tiver um significado consistente. • Quando nomear funções no SQL Server utilize a descrição do valor retornado. Exemplo : RetorneNomeJanelaAtual( ) . • Os nomes de arquivos, pastas, procedimentos armazenados devem descrever o seu propósito. • Evite reutilizar nomes de funções para variáveis ou vice-versa. Exemplo : Função com nome ProcessarArquivo( ) Variável com nome IProcessarArquivo. • Evite utilizar homônimos ou palavras com mesmo fonema . Exemplo Rigth e Write. • Certifique-se que não há erros quando soletrar palavras. Pois algumas palavras possuem significados diferentes em certas regiões do Globo. Exemplo Check e Cheque não tem o mesmo significado, Color e Colour não tem o mesmo significado. • Evite usar marcações especiais quando nomear elementos , tais como $ , %. (utilizadas para string e inteiros repectivamente).Comentários • Quando modificar o código fonte, coloque sempre a data da última modificação. • No início de cada rotina, coloque os comentários no formato Propósito, Descrição, Parâmetros, etc.. .( Ver item 3.5). 19
  20. 20. • Evite criar comentários no final de linha, pois fica mais difícil de ler. Se for imperativo, coloque com uma tabulação padrão para todos os comentários desse tipo. • Evite asteriscos e outros caracteres para criar o comentário, utilize somente espaços. • Apague qualquer comentário improdutivo no código. • Utilize palavras completas no Comentário, evite portanto abreviações e símbolos outros. • Crie comentário para todo o código não óbvio. • Explique o que consiste o loop e outros blocos de código.Formato • Utilize sempre o mesmo tipo de formatação para o código escrito. Isso inclui o tamanho da letra, o tipo da letra, o espaçamento da letra, a cor da letra, etc.. • Utilize sempre parênteses , chaves e outros, para agrupar conjuntos de códigos para a mesma finalidade. Exempo if (x >5 and x<10) then ... • Crie uma tabulação padrão que torne consistente o código para cada bloco dentro de procedimentos, loops, funções e etc... • Evite combinar muitas linhas de código em uma linha única , utilizando o separador ( : ). Exemplo : x = 350 : intContador = 4 : ArquivoEstáAberto = true • Quando escrever comandos em SQL, utilize letras maiúsculas para palavras chaves SQL e somente iniciais maiúsculas para Tabelas, colunas e Visões. • Divida um código complexo em pedaços menores, podendo ser em módulos ou arquivos separados • Coloque a Cláusula SQL separados das linhas de comando para facilitar a leitura e edição do código. Exemplo : SELECT FirstName, LastName FROM Customers WHERE State = WA2.9 – Declarando ElementosA linguagem utiliza alguns tipos de instruções tais como :Palavras-Chaves (KeyWords) – São palavras reservadas da linguagem para construir uma estruturade comandos, e não podem ser usadas individualmente.Comandos (Statements) – São instruções completas que fazem sentido ao compilador e podemconter palavras chaves, operadores, constantes, expressões. Os comandos são divididos em duascategorias : 1. Comandos de declaração – Usados para nomear variáveis, constantes, matrizes, definir procedimentos e objetos. 2. Comandos de execução – Usados para executar uma ação, e englobam todos os comandos de loop, comandos de decisão e todos os comandos que utilizam operadores matemático ou condicionais.Expressões – São séries de elementos que representam valores, separados por operadores queresultam em outro valor. Utilizam de operadores de comparação para comparar dois valores; utilizamoperadores matemáticos para efetuar operações entre dois ou mais valores; utilizam de elementosBooleanos para fazer comparações e parênteses para alterar a ordem de cálculos.A Microsoft não reconheceu os Comandos de atribuição como uma terceira categoria, mas incluiuna documentação como todos aqueles que utilizam operadores de atribuição. 20
  21. 21. Para declarar elementos para uso no código utiliza-se Comandos de declaração ou Palavras-Chaves.O elemento declarado fica retido na memória do computador sendo gerenciado diretamente pelatecnologia .NET Framework.Os elementos declarados no código podem ser constantes, variáveis, objetos, classes, enumerações,estruturas, propriedades, métodos, funções, eventos, interfaces, delegates (delegar).O VB ignora letras maiúsculas e minúsculas quando se referir a elementos declarados, portanto pode-se usar MinhaVariável quanto minhavariável.Quando se declara elementos, o processo envolve as seguintes considerações : 1. Variáveis – É o espaço reservado dentro da memória do computador, para ser usado no programa. 2. Comandos de Declaração – São comandos do VB que declaram elementos na memória. 3. Tipo de Dados – É o tipo de dados fundamental que o elemento deverá pertencer. 4. Vida útil (LifeTime) – É o período de execução que o elemento está disponível para ser usado. 5. Escopo – É a extensão que o elemento deve atingir, sem ser declarado novamente. 6. Acessibilidade – É a forma que o código deve fazer uso do elemento. 7. Nomes Ambíguos – Quando dois elementos têm o mesmo nome, e como o VB resolve este problema.1 – VariáveisUma variável é um espaço reservado dentro da memória para armazenar valores desconhecidos.Diferentemente de um ponteiro que representa o local onde ela está endereçada.Para usar variáveis é necessário aplicar os Comandos de Declaração, utilizando as técnicas decodificação e programação já explicadas acima. Observe que quando se declara uma variável , ocompilador reserva um espaço na memória para o valor, mas não a cria explicitamente. Para criarexplicitamente uma variável, é preciso declarar a variável e atribuir um valor.O comando Option Explicit obriga que todas as variáveis sejam declaradas antes do uso.2 – Comandos de DeclaraçãoOs comandos de declaração são Dim e Const. As palavras chaves (Keywords) são Private, Public,Shared, Protected, Friend e Static. Exemplo :Private I As IntegerDim Amount As DoubleStatic YourName As StringPublic BillsPaid As DecimalConst Modulus As Single = 4.17825 ‘Esse valor não pode ser alterado.Public I, J, K As Integer Declara três variáveis inteiras.Dim FirstName, MiddleName, LastName As String Declara três variáveis string.Private S, SArray() As Short Uma variável Shor e uma variável de matriz.Friend B1, B2 As Byte, C1, C2 As Char Duas variáveis Byte e duas variáveis Char.O comando Dim é semelhante as palavras chaves Private e Public. E pode ser usado emprocedimentos, módulos, classes , blocos e estruturas, mas só podem ser acessadas no código queforam declaradas. A diferença entre Private, Public e Dim é que as duas primeiras permitem ou não 21
  22. 22. que essa variável fique disponível a outros blocos de código, portanto são também chamados deModificadores de Acesso.Alguns autores até recomendam não usar o Comando Dim por se tratar de um declarador poucoexpressivo.A palavra chave Private é um modificador de acesso e declara variáveis em todos os blocos decódigo, e assim como o comando Dim, só podem ser acessadas no código que foram declaradas. Enão podem ser acessadas por outros blocos de código.A palavra chave Public é um modificador de acesso e declara variáveis em todos os blocos decódigo, e diferentemente de Dim e Private, permitem que outros códigos exteriores utilizem avariável.A palavra chave Shared é um modificador de acesso que declara variáveis em classes, e permitemque outros códigos acessem essa variável sem fazer uma referência a classe.A palavra chave Static é um modificador de acesso e declara variáveis em todos os blocos de código, exceto Classes e Módulos. Variáveis declaradas com Static retém o último valor na memóriamesmo quando o procedimento em que foi declarado é encerrado.O Comando Const declara variáveis que não podem ser alteradas, e são utilizadas em todos os blocosde código, entretanto a variável constante fica disponível somente ao código em que foi declarada.A palavra chave Protected declara variáveis somente dentro de Classes. Variáveis declaradas comprotected só podem ser acessadas dentro da classe que a declarou ou de classes derivadas.A palavra chave Friend declara variáveis em todos os blocos de código, exceto procedimentos.Variáveis declaradas com Friend podem ser acessadas por todo o programa.3 – Tipos de DadosPara organizar como as variáveis gravam informações na memória, foram criados tipos de dadoselementares, que podem ser numéricos ou caracteres.Os tipos de dados numéricos podem ser integrais (números inteiros) e não integrais (númerosdecimais fracionários). Os números inteiros são mais rápidos em processamento que os nãointegrais.Para cada tipo de Dados há uma faixa máxima de informações que podem ser gravados, além dissocertos tipos de dados podem ser sinalizados ou não sinalizados, isto significa que a faixa deinformações podem variar de números negativos até números positivos.Tipo de Dados Common language Tamanho em Faixa runtime BytesBoolean System.Boolean 2 bytes True ou FalseByte System.Byte 1 byte 0 à 255 (não sinalizado).Char System.Char 2 bytes 0 à 65535 (não sinalizado).Date System.DateTime 8 bytes 0:00:00 de 1 Janeiro, 0001 à 11:59:59 da noite de 31 Dezembro, 9999.Decimal System.Decimal 16 bytes 0 à +/-79,228,162,514,264,337,593,543,950,335 sem virgula; 0 à +/-7.9228162514264337593543950335 com 28 dígitos depois da vírgula; o número mais próximo do zero é 22
  23. 23. +/-0.0000000000000000000000000001 (+/-1E-28).Double System.Double 8 bytes -1.79769313486231570E+308 à(double-ponto -4.94065645841246544E-324 negativos; eflutuante) 4.94065645841246544E-324 à 1.79769313486231570E+308 positivos.Integer System.Int32 4 bytes -2,147,483,648 à 2,147,483,647.Long System.Int64 8 bytes -9,223,372,036,854,775,808 à(long integer) 9,223,372,036,854,775,807.Object System.Object (classe) 4 bytes Qualquer tipo de dados..Short System.Int16 2 bytes -32,768 à 32,767.Single System.Single 4 bytes -3.4028235E+38 à -1.401298E-45 negativos; e(single-ponto 1.401298E-45 à 3.4028235E+38 positivos.flutuante)String System.String (class) Depende do 0 até 2 bilhões de caracteres Unicode. sistemaUser-Defined (herda de Depende do Determinado pela faixa de cada tipo de dados usado naType System.ValueType) sistema estrutura(estrutura)O VB .NET manipula os tipos de dados elementares de duas formas : • Tipo Valor – Quando a variável grava os dados dentro da memória. Assim enquadram-se todos os tipos de dados numéricos, Boolean, Char, Date, Estruturas e Enumerações. • Tipo Referência – Quando o sistema aponta para um endereço de memória onde está os dados. Assim enquadram-se os tipos de dados String, Matrizes, Classes e Forms (Janelas).A partir do VB .NET cada tipo de dado listado acima, é implementado como uma estrutura e Classeda tecnologia .NET Framework. Isto significa que cada tipo de dado tem suas próprias funções emétodos internos.Basta verificar na coluna Common language runtime (CLR) qual classe pertence o tipo de dadoelementar.Exemplo :Dim strTeste as stringDim intTeste2 as System.Int32strTeste.Trim ( )intTeste2.ToString ( )No Exemplo acima, foi declarado uma variável do tipo String, e foi invocada a função Trim queremove os espaços em seu conteúdo. Em seguida a variável intTeste2 foi declarada como um tipo dedados Inteiro da classe .NET Framework, invocando a função ToString que converte os dados parastring.Outra forma de declarar variáveis, é forçar a variável para tornar-se de um tipo utilizando os“caracteres de tipo”. Veja a tabela abaixo:Caracter de tipo Tipo de Dado Exemplo% Integer Dim L%& Long Public M&@ Decimal Const W@ = 37.5! Single Dim Q! 23
  24. 24. # Double Static X#$ String Private V$ = "Secret"Caracter de tipo Tipo de Dado ExemploS Short I = 347SI Integer J = 347IL Long K = 347LD Decimal H = 347DF Single Y = 347FR Double Z = 347RC Char Q = "."C4 – Vida Útil (LifeTime)Vida útil é o período em que a variável mantém o valor na memória. Dependendo como foi declaradaa variável, sua vida útil é igual ao período de tempo que o aplicativo estiver em execução.Por outro lado, uma variável declarada dentro de um bloco de código, sua vida útil é igual ao tempoque o procedimento estiver em execução. Assim quando o procedimento termina, a variável findasua vida útil e a memória é limpa e fica disponível novamente ao Sistema Operacional.Quando uma variável é declarada com a palavra chave Shared, sua vida útil é extendida até quandoo aplicativo estiver em uso.Quando uma variável é declarada com a palavra chave Static, sua vida útil é extendida entreprocedimentos que estiver em uso.5 – EscopoO Escopo de uma variável é a seção de um aplicativo que pode ver e manipular uma variável. Destemodo, uma variável declarada em um procedimento, só pode ser manipulada nesse procedimento, asoutras seções ou blocos de código não podem ver nem manipular essa variável.O Escopo tem esses níveis :Escopo de Bloco – A variável fica disponível somente no bloco de código em que foi declarada.Escopo de Procedimento – A variável fica disponível somente no procedimento que foi declarada.Escopo de Módulo – A variável fica disponível para todo o código do módulo, classe ou estruturaque foi declarada.Escopo de EspaçoNomeado (NameSpace) – A variável fica disponível para todo o código desseEspaço Nomeado.6 – AcessibilidadeAcessibilidade é a permissão que uma variável poderá ser acessada ou manipulada. Para definir suaacessibilidade usa-se as palavras chaves : Public, Private, Friend, Protected, Protected Friend.Pode-se criar uma variável com escopo de Módulo, mas declarada com private, e nenhum outrobloco de código poderá ver e manipular essa variável.7 – Nomes AmbíguosQuando se declara elementos, o Compilador do VB procura a referência a este nome na declaração.Se houver mais de um elemento com o mesmo nome, o Compilador utiliza o elemento que estiver nomesmo Escopo. Exemplo : 24
  25. 25. Module Mod1 Public Sub Perform() A palavra Chave Public permite acesso de outros procedimentos. ...End ModuleModule Mod2 Public Sub Perform() Pode ser diferente do cálculo executado em Perform( ) do Mod1. ... Perform() Chama somente Perform( ) do Mod2 que é o modulo ativo (mesmo escopo). Mod1.Perform() Chama Perfomr( ) do Mod1.End ModuleModule Mod3 ... Mod1.Perform() Chama Perform( ) do Mod1. Perform() Chama Perform( ) que é um nome ambíguo e portanto gera um erro.End ModuleO Exemplo acima usa 3 Módulos, Mod1, Mod2 e Mod3. O módulo Mod1 possui um procedimentodeclarado como Público chamado Perform( ) e portanto está disponível para acesso por outrosprocedimentos. O módulo Mod2 possui outro procedimento declarado como Público tambémchamado Perform( ), também disponível para acesso por todos os outros procedimentos. Efinalmente o módulo Mod3 que não possui nenhum procedimento declarado.Note que tanto Mod1 quanto Mod2 têm um mesmo nome de procedimento Perform( ) (Nomeambíguo). Quando Mod2 chama esse procedimento, o compilador procura o elemento declarado nomesmo Escopo, isto é Perform( ) declarado no módulo ativo Mod2. Em seguida, quando Mod2utiliza Perform( ) declarado em Mod1, utiliza uma descrição mais completa do lugar, informando aocompilador onde deverá procurar a referência do elemento. Neste caso houve uma qualificação donome, e portanto não gera erros de execução.Quando Mod3 utiliza Perform( ) declarado em Mod1, utiliza uma descrição mais completa do lugaronde o compilador deverá procurar a referência do elemento.Quando Mod3 utiliza Perform( ) sem qualificar seu nome, o compilador encontra o procedimento emMod1 e Mod2 portanto não sabe qual utilizar, gerando erro de execução.Ao utilizar procedimentos ou funções de Classes ou Estruturas, é obrigatório qualificar o nome alémde fazer referência à classe ou estrutura. Exemplo :Dim DemoClass As Class1 = New Class1()DemoClass.SomeSub( )No Exemplo acima, foi criado uma variável de referência a classe Class1, em seguida invocou-se ométodo SomeSub( ). Não é permitido usar Class1.SomeSub( ) diretamente, pois nesse caso geraerros de execução. 25
  26. 26. No VB .NET há formas de tratar elementos ambíguos, utilizando a técnica de ocultar elementos,também conhecido como Shadow. Com Shadow um elemento fica ocultado de outro elemento commesmo nome além de não ficar disponível.Há duas formas de usar a técnica de ocultar elementos. 1. Shadowing através do Escopo – No penúltimo exemplo, o procedimento Perform( ) de Mod2, ocultou o procedimento Perform( ) de Mod1, pois o compilador obedeceu a regra de Escopo. Outro Exemplo : Module Mod3 Public Num As Integer Variável a nível de módulo. Sub Show() Dim Num As Integer Variável Local Num = 2 Variável Local agora tem o valor 2. MsgBox(CStr(Mod3.Num)) Exibe o número 0. End Sub Sub UseModuleLevelNum() Num = 1 Atribui 1 à Mod3.Num ... Show() Chama Show, que exibe o valor da Variável de módulo Num, que agora é 1 End Sub End Module No exemplo acima, Mod3 tem uma variável a nível de módulo Num, e dois procedimentos Show( ) e UseModuleLevelNum( ). No procedimento Show( ) foi declarada uma variável local ambígua a Num. Quando o procedimento Show( ) é acionado, o compilador usa a variável local declarada dentro deste procedimento, ou seja no mesmo escopo do procedimento ativo, portanto a variável local oculta (shadows) a variável de módulo. Portanto, no exemplo acima, para fazer referência a variável em shadow é preciso qualificar o seu nome, como Mod3.Num em MsgBox(CStr(Mod3.Num)). Quando o procedimento UseModuleLevelNum( ) é acionado, o compilador usa a variável a nível de módulo, pois não há nomes ambíguos dentro desse procedimento. 2. Shadowing através de Herança – Quando uma classe é derivada de outra, pode-se ocultar (Shadow) o elemento ambíguo existente na classe básica, utilizando a palavra chave Shadow. Não se deve confundir Shadow (Ocultar) com Override (Substituir), que será discutido mais tarde. Exemplo : Public Class BaseCls Public Z As Integer = 100 Elemento a ser ocultado (Shadowed). End Class Public Class DervCls Inherits BaseCls Public Shadows Z As String = "*" O Elemento para ocultar o anterior End Class Public Class UseClasses Dim BObj As BaseCls = New DervCls() DervCls deriva de BaseCls. 26
  27. 27. Dim DObj As DervCls = New DervCls() Acessa através da classe derivada. Public Sub ShowZ() MsgBox("Classe básica: " & BObj.Z) exibe o número 100. MsgBox("Classe derivada: " & DObj.Z) exibe a string "*". End Sub End Class No exemplo acima, há três classes : BaseCLS que é classe básica e DervCLS que é a classe derivada, e finalmente a Classe UseClasses que utiliza as duas primeiras. A classe básica possui uma variável numérica pública Z que pode ser acessada por todos os códigos que utilizam essa classe. A Classe Derivada possui outra variável Z string mas configurada com a palavra chave Shadows que oculta a variável numérica da classe básica. UseClasses faz referência as duas classes básica e derivada que muda o valor de cada variável. Note que a referência de BObj é BaseCls por isso a variável numérica é utilizada pelo compilador, enquanto que DObj, a variável string é utilizada pelo compilador. No caso de DObj, o elemento String ocultou (Shadowed) o elemento numérico.2.10 – Tipos de DadosEsta seção tem por objetivo estudar os tipos de dados fundamentais e apresentar um novo tipo dedado composto, além de outros recursos de programação aplicados aos tipos de dados.O VB .NET, por default, obriga a declaração de todos os elementos antes de usá-los no código.Exemplo :Dim MinhaVariável as stringSe não for declarado o elemento no código, o compilador acusa o problema e gera erro. Este tipo derecurso chama-se Declaração Explícita. Para desligar esse recurso utiliza-se o comando OptionExplicit Off.Toda vez que o compilador encontrar a declaração Option Explicit Off, qualquer variável nãodeclarada em código irá ser considerada do tipo Object, entretanto esse tipo de comportamento docompilador gera potenciais erros de execução além de gerar um aplicativo de desempenho ruim.É recomendável utilizar em todos os códigos fontes o comando Option Explicit On para obrigar ocompilador varrer todas as variáveis não declaradas.Quando todas as variáveis são declaradas com o tipo de dados em Option Explicit On, diz-se que oselementos são Altamente tipificados (Strong Typing), que além de aumentar a velocidade doaplicativo, se beneficia dos recursos do editor de códigos do Visual Studio, como por exemplo : • IntteliSense – É um recurso que exibe as propriedades e métodos de um classe, simultaneamente enquanto se digita no editor. • Verificação de sintaxe – O compilador verifica a sintaxe do código escrito simultaneamente enquanto se digita no editor.1 – Usando tipos de dados Short 27
  28. 28. As variáveis do tipo Short podem guardar valores de 16 bits (2 bytes). É o menor tipo de dadosnumérico disponível.As normas aplicadas ao tipo de dados Integer logo abaixo, se aplicam ao tipo de dados Short.Exemplo :Dim MeuNúmero as shortDim NossoNúmero as int16MeuNúmero = 32767NossoNúmero = 32768 ‘O VB exibe uma mensagem “NaM Não é um nùmero”No exemplo acima há duas variáveis declaradas do tipo Short (int16 é a mesma coisa que Short), aprimeira variável recebeu o valor máximo de armazenamento, enquanto que a segunda recebeu umvalor superior a capacidade de armazenamento. O VB acusa o erro exibindo uma mensagem de errona compilação “Existem erros, deseja continuar?“.2 – Usando tipos de dados IntegerQualquer tipo de dados numérico exige maior processamento do sistema , assim é necessário definiro tipo adequadamente antes de usar. O tipo Integer armazena dados em 16-bit (2 byte) dentro dafaixa especificada acima, podendo ser utilizada para criar um enumerador (veja posteriormente).A atribuição de um valor a variável é simples, utilizando apenas o operador de atribuição ( = ) enunca utilize separadores de milhares. Qualquer caractere diferente de número não será aceito peloVB, gerando erro de Type Mismatch. VariávelInteger = 1234Qualquer valor digitado entre aspas ( “ “ ) é uma string por definição, entretanto o VB ativa umainterpretação correta para o tipo de dados da variável. Veja abaixo : VariávelInteger = “1234”O VB não se incomoda com aspas, já que a variável é do tipo numérica, podendo até efetuaroperações matemáticas corretamente, entretanto se houvesse um caractere diferente de número, osistema geraria um erro de Type Mismatch. Como no exemplo : VariávelInteger = “1234A” ‘Tipo Integer não suporta caracteres diferentes de númeroPode-se utilizar um separador de precedência “( ) “ para atribuir o valor numérico a uma variávelinteger sem alterar a interpretação do VB. Exemplo : VariávelInteger = (1234)Embora o parênteses não seja um caractere numérico, ele possui um significado de ativar aprecedência de primeiro plano em cálculos do compilador, pois desta forma não interfere nainterpretação do compilador VB. Entretanto quando se combina aspas + parênteses na atribuição deum valor numérico, o resultado é ligeiramente diferente : VariávelInteger = “(1234)” Msgbox VariávelInteger 28
  29. 29. No exemplo acima, a VariávelInteger terá um valo negativo –1234 exibido na caixa de mensagemMsgbox. A combinação de aspas e parênteses “( )” troca o sinal de um valor numérico positivo,transformando-o em negativo. Essa funcionalidade foi inserida neste contexto como simplescuriosidade.Conclui-se que um parênteses e aspas podem criar uma interpretação diferente no compilador do VBquando atribuirmos valores a variáveis Integer, portanto devemos nos ater sempre as formas maissimples e corretas de programação, não devemos portanto “inventar” coisas novas para o sistema“descobrir” e que poderá levar a resultados imprevisíveis.Uma variável do tipo Integer, quando não devidamente inicializada com um valor atribuído, temcomo Default o valor zero (0) , assim por exemplo, se um desenvolvedor esquecesse de atribuir umvalor a uma variável Integer, esse valor seria Zero (0) devido a natureza do tipo de dados Integer,assim é completamente diferente de uma variável String vazia “”.Exemplo :Dim MeuInteiro as int32 ‘Mesma coisa que IntegerDim NossoInteiro as integerMeuInteiro = 1234NossoInteiro = 12343 – Usando tipos de dados LongOs tipos de dados Long são armazenados em 32–bits (4 byte), que irremediavelmente necessitam demais memória do sistema. Todas as observações referentes ao tipo de dados integer, se aplicam aotipo de dados Long, com uma ressalva na capacidade de faixa de dados que este suporta.Exemplo :Dim MeuLong As Int64MeuLong = 10MsgBox(MeuLong.MaxValue)MsgBox(MeuLong)No exemplo acima, foi declarado uma variável do tipo Long (ou Int64) atribuindo o valor 10. Emseguida foi utilizada uma função interna dessa classe que retorna o valor máximo de armazenamentodesse tipo de dados.Observe que todos os tipos de dados possuem funções específicas, pois fazem parte de classes datecnologia .NET Framework.4 – Usando tipos de dados Double e SingleOs tipos de dados Double armazenam informações em 64-bits (8 byte) e são especialmente utilizadospara cálculos precisos com números decimais. Os tipo de dados Single armazenam informações em32-bits (4-bite). Todas as observações referentes ao tipo de dados integer se aplicam aos dadosDouble e SingleVariávelDouble = 12.123456789 ‘O grande benefício deste tipo de dados são as casas decimais e 29
  30. 30. ‘sua precisão nos cálculos.Note porém que o VB somente aceita o separador decimal ponto ( . ) ao invés da vírgula, vejaexplicações no tipo de dados Decimal logo mais adiante.5 – Usando tipos de dados ByteO tipo de dados Byte armazenam informações em 8-bit (1-byte), e são utilizados para conter dadosbinários. Pode-se observar que o tipo de dados Byte é também referenciado em banco de dados, ondeé semelhante ao tipo de dados SmallInt em SGBD SQL Server.Como um exemplo de utilização de dados binários é copiar o conteúdo de um campo de dados noformato de imagem binária (*.bmp, *.jpg, etc) para outro campo de dados : Dim MinhaFoto as Byte MinhaFoto = recordset.Fields(“Foto”).valueNo fragmento de código acima, a variável MinhaFoto foi declarada explicitamente como Byte, e foiatribuída a ela, o campo “Foto” de um objeto de banco de dados Recordset. Assim o conteúdobinário dessa foto foi armazenada no tipo de dados Byte, que pode ser transferida para outro campodo banco de dados.O tipo de dados Byte quando não devidamente inicializado pelo desenvolvedor, terá sempre comovalor Default o zero (0).6 – Usando o tipo de dados BooleanUm tipo de dados Boolean armazena dois valores possíveis : Verdadeiro (-1) ou Falso (0) emnúmeros de 16-bit (2-byte). O tipo de dados Booleano contém informações do tipo yes/no, on/off,true/false. O valor padrão de uma variável do tipo de dados Boolean é sempre false (falso).Os valores True e False são constantes pré-definidas no VB, que por outro lado poderiam serreferenciadas como –1 e 0 respectivamente. O uso do tipo Boolean é tipico para operações decomparação ou como retorno de funções específicas : VariávelBoolean = ( 1 = 2)A VariávelBoolean no exemplo acima, terá como resultado o valor 0 (False), decorrente de umacomparação 1 = 2. Se a expressão de comparação fosse 2 = 2 , o valor de VariávelBoolean seria –1(True).Um outro exemplo de comparação entre strings para uso em tipos de dados boolean, confirma ahipótese de que strings devem ser idênticas na sua construção, onde os caracteres maíusculos eminúsculos fazem a diferença, neste caso específico de comparação : VariávelBoolean = ( “Campo” = “CAmpo”)Os dois elementos são strings semelhantes, entretanto não são idênticas, pois “CA” maiúsculo faz adistinção com “Ca” , assim o resultado de VariávelBoolean será False.As propriedades dos objetos, onde é informado true ou false (como por exemplo Enabled) são do tipoBoolean. Como já foi dito , uma variável Boolean não inicializada com a atribuição , terá comoPadrão o valor False. 30
  31. 31. 7 – Usando o tipo de dados DateOs tipos de dados Date armazenam valores em números 64-bit (8-byte). Quando outros tipos dedados são transformados para o tipo de dados Date, os números representados a esquerda do valordecimal é a data, e os números representados a direita do valor decimal é o horário.Há duas regras para atribuição de datas :O sinal # ativa o reconhecimento de datas no VB.Sempre digite datas no formato mm/dd/aa para certificar-se que o sistema interpretará corretamenteos dados, em qualquer região.Exemplo : VariávelDate = #12/30/2002# ‘ data no formato mm/dd/aaPortanto é necessário incluir o sinal # de forma a evitar uma interpretação indevida pelo compilador,no caso de uma data em string “12/30/2001” o compilador não seria capaz de executar operaçõescom datas. Exemplo : VariávelDate1= “12/30/2001” VariávelDate2 =“11/30/2001” MsgBox VariávelDate1 – VariávelDate2O compilador do VB não gera mensagens de erro no caso do exemplo acima, mesmo que asexpressões não estejam devidamente configuradas com o sinal #, entretanto no momento de efetuaroperações com datas, o erro é iminente (Type mismatch).O exemplo acima seria corretamente configurado quando transformássemos as expressões em datas,e o resultado final seria 1 mese de diferença entre as datas. Agora o compilador interpreta exatamenteas expressões como datas, permitindo a execução de operações. VariávelDate1= #12/30/2001# VariávelDate2 =#11/30/2001# MsgBox VariávelDate1 – VariávelDate2O tipo de dados Date também pode receber uma função intrínseca de data do VB, de forma a retornarcomo resultado a data e o horário do sistema : VariávelDate = Now ‘Função Now que retorna a data e hora atual do sistema Msgbox VariávelDateO resultado obtido na caixa de Mensagem será : 23/11/2001 18:46:13 como exemplo da construçãoacima.Para um cálculo envolvendo dias, bastaria acrescentar ou subtrair da expressão data um inteirosimples, como mostrado abaixo : VariávelDate = #12/01/2001# Msgbox (VariávelDate –1 ) 31
  32. 32. A mensagem final seria 01/11/2001, pois foi subtraído 1 dia da data originalmente atribuída aVariávelDate. Deve-se observar, entretanto que para efetuar operações com datas mais eficiente, usa-se as funções intrínsecas de datas do VB.Note sempre que o formato atribuído é mm/dd/aa, caso essa regra não for obedecida, o VB trata decorrigir o erro, invertendo a ordem das datas automaticamente. Entretanto, não se pode esperar umbom resultado como por exemplo o dia 01/02/2001, o resultado final seria 02/01/2001 ao invés de01/02/2001.O VB foi concebido em língua Inglesa/U.S. , que considera as datas no formato mm/dd/aa,descartando qualquer possibilidade de formatação diferente, portanto trate sempre de usar essasregras daqui para frente, de modo a evitar confusões em cálculos e atribuições.O tipo de dados Date quando não devidamente inicializado pelo desenvolvedor, isto é não foratribuído um valor de data, terá como valor Default 00:00:00.8 – Usando o tipo de dados DecimalOs tipos de dados Decimal são armazenados em números de 128-bit (12-byte) inteiros a potência de10, que representa o número de casas decimais. Esse tipo de dados, trabalha com números de grandeprecisão.Exemplo :Dim a As Decimal = 328.558Dim b As Decimal = 12.4051Dim c As Decimalc=a*bMsgBox(c)9 – Usando o tipo de dados ObjectO tipo de dados Object armazena endereços de 32-bit (4-byte) dos objetos em referência. Esse tipode dados é suficientemente flexível para fazer referência a qualquer tipo de objeto reconhecido pelosistema. Essa definição de armazenar endereços assemelha-se a um conceito de ponteiros em C++,guardando suas proporções. Exemplo : Dim objDb As Object Set objDb = OpenDatabase("c:Vb5Biblio.mdb")A variável objDb foi declarada explicitamente como um objeto de banco de dados. Note, que adeclaração foi explicitamente genérica com object, de forma a piorar o desempenho do sistema,como regra geral tente sempre declarar objetos como Classes a que pertencem ( discussão emcapítulos posteriores), uma forma de pesquisar a classe a que pertence o objeto é o Object Browser.As variáveis do tipo Object podem ser tratadas do Tipo Valor ou do Tipo Referência já estudadasanteriormente.O Valor Nothing é usado para desassociar um objeto a variável. É recomendado desassociar (limparda memória) todas as variáveis Object que não forem mais utilizadas no programa. Exemplo :Dim brush As System.Drawing.Brushbrush = New System.Drawing.Brush(bmap)......brush = Nothing 32
  33. 33. No exemplo acima, foi utilizado uma variável de objeto que faz referência a um classe da tecnologia.NET Framework para criar um instrumento de desenho, em seguida após o uso, foi desassociado avariável do objeto, liberando a memória ao sistema.10 – Usando o tipo de dados CharO tipo de dados Char aceita somente caracteres Unicode 2 bytes (16 bit). Pode usar métodos comoIsDigit e IsPunctuation em variáveis desse tipo para determinar sua classificação.Se o comando de verificação Option Strict estiver ligado, é preciso anexar o caracter Literal para queo compilador identifique o tipo de variável corretamente. ExemploOption Strict On ...Dim CharVar As CharCharVar = "@" Não pode converter String em Char com Option Strict On.CharVar = "@"C Assim pode11 – Usando tipos de dados StringO tipo de dados String armazenam caracteres alfanuméricos e símbolos padrões de código ASCII ( 0até 255) que representam todos os caracteres existentes, entretanto há de se mencionar que nem todosos caracteres dentro dessa faixa são suportados pelo Windows. Há somente um tipo de strings :• Os strings de tamanho variável (variable-length) que diminui ou cresce a medida que osdados são adicionados a variável.Para atribuirmos valores em strings, basta colocarmos esse valor entre aspas “ “ , para ativar ainterpretação do VB para tipos de dados string. Assim : VariávelString = “Carro”No caso de uma abstenção no uso de aspas, o VB não interpreta a expressão como string, desde queela não ultrapasse uma palavra simples :VariávelString = Carro ‘O VB não interpreta essa expressão como stringVariávelString = Carro Azul ‘O VB não interpreta como string, mas como uma linha de comandoNo exemplo acima, a primeira atribuição não ocorre porque o VB não interpreta a expressão comouma string válida, assim a VariávelString terá string vazio “”. No último exemplo, o VB interpretou aexpressão como uma linha de comando de código ao compilador, e não como uma expressão String,neste caso o VB gera uma mensagem de erro em execução ( Esperado final do comando !) , pois aexpressão não é uma palavra simples.O VB tem uma sensibilidade especial para caracteres numéricos, de forma que não há necessidade deutilizar-se de aspas para sua atribuição , conforme o exemplo : VariávelString = 1234 Ou Variável String = “1234”Logicamente, não haverá maneira de efetuar qualquer operação matemática, o que pode ser feito éuma concatenação de variáveis, com resultado de 12341234 (use sempre o operador & , veja em 33
  34. 34. capítulo posterior). Por outro lado, se fosse atribuído uma expressão 1234B sem aspas, o caracterenão numérico geraria um erro de execução.De qualquer forma , é sempre necessário utilizar aspas “ “ para atribuirmos strings a variáveis string,como uma forma correta de programação, mesmo que seja expressões com números.Se uma variável String não for inicializada, isto é, se o desenvolvedor não atribuir nenhumaexpressão a ela, o seu valor será vazio “”.12 – Infinity (Infinito) e outros tipos de dadosNo VB .NET há dois tipos de dados não numéricos mas que são produzidos por cálculos numéricos. • Infinity – Qualquer cálculo que gera números infinitos. Por exemplo dividir um inteiro por zero. • NaN – Not a Number (Não é um Número). É qualquer resultado que não corresponde a valores numéricos.Exemplo1 :Dim dblVar As Double = 999Dim infVar as DoubleinfVar = dblVar / 0msgbox (InfVar)No exemplo acima, não há formas de dividir números inteiros por zero, portanto o resultado da telaem msgbox é “+Infinito”. Observe que não há um tipo específico de dados que represente Infinity,portanto é um recurso da linguagem do que propriamente um tipo de dados.Exemplo2 :Dim var1, var2 As DoubleDim result As Doublevar1 = 0var2 = 0result = var1 / var2MsgBox(result)No exemplo2, o resultado da divisão de 0 / 0 não é um número, portanto o resultado exibido emmsgbox é “NaN (Não é um Número)”. Assim como Infinity, NaN não é representado por nenhumtipo de dados específico, mas como um recurso da linguagem.Pode-se usar as funções IsInfinity e IsNaN para testar o resultado de cálculos matemáticos.Exemplo:Dim var1, var2 As DoubleDim result As Doublevar1 = 0var2 = 0result = var1 / var2If result.IsInfinity(result) Then If result.IsPositiveInfinity(result) Then 34
  35. 35. MsgBox(“Encontrei um número muito grande. Não posso continuar”) Else MsgBox(“Encontrei um número muito pequeno. Não posso continuar”) End IfElse If result.IsNaN(result) Then MsgBox(“Erro no cálculo”) Else MsgBox(“O resultado é “ & result.ToString) End IfEnd If13 – Conversões entre tipos de dadosConversão é um processo que muda um tipo de valor de uma variável para outro tipo de valor. Ocomportamento do compilador VB pode mudar quando a opção Option Strict estive ligada oudesligada, por isso justifica-se estudar esse assunto.Há dois tipos de conversão no VB : • Conversão Widening - Conversão com alargamento significa converter um valor de um tipo de dados de pequena faixa para um tipo de dados de grande faixa de atuação. Assim pode-se mudar de um tipo de dados integer para um tipo de dados long. • Conversão Narrowing – Conversão com estreitamento significa converter um valor de um tipo de dados de grande faixa para um tipo de dados de pequena faixa de atuação. Só pode converter um tipo de dados long para integer, se o valor máximo da variável long for suportado pelo tipo de integer, caso contrário gera erro de overflow.Exemplo 1 de uma conversão do tipo Widening : Dim meuLongo As Long Dim meuInteiro As Short meuInteiro = 32767 meuLongo = meuInteiro MsgBox(meuLongo) ‘ retorna 32767Exemplo 2 de conversão Narrowing : Dim meuLongo As Long Dim meuInteiro As Short meuLongo = 32767 meuInteiro = meuLongo MsgBox(meuInteiro) ‘ retorna 32767No exemplo 1 ocorreu uma conversão que alargou um valor de uma variável inteira para um valorlong. Enquanto que no exemplo 2 ocorreu um estreitamento de um valor de uma variável long paraum valor inteiro. 35
  36. 36. No exemplo 1 o compilador efetuou um conversão implícita, alargando um tipo de dados inteiropara long sem qualquer interferência do desenvolvedor. No exemplo 2 o compilador também efetuouuma conversão implícita estreitando um tipo de dados long para integer, pois a opção Option Strictestava desligada (Option Strict Off).O compilador efetua uma conversão explícita, quando o desenvolvedor usa comandos de Conversãode modo a forçar uma conversão de um tipo de dados para outro, esse tipo de conversão é tambémconhecida como Casting. ExemploDim meuInteiro as shortDim MeuLongo as longmeuInteiro = CInt(MeuLongo)Uma conversão do tipo Narrowing explícita, isto é converter um valor maior para menor com umafunção de conversão do VB, pode gerar perdas nos dados. Uma conversão do tipo Wideningexplícita, isto é converter um valor menor para maior com uma função de conversão do VB, podegerar perdas no arredondamento decimal de valores no caso de converter um dados do tipo Longpara um Decimal. Pois o tipo Decimal aceita grande quantidade de números após a vírgula enquantoque Long não aceita números decimais.A conversão de qualquer tipo de dados string para um tipo de dados numéricos é sempre do tipoNarrowing. O operador de concatenação ( & ) também funciona como conversor implícito. Exemplo:Dim meu as integer = 1Dim nosso as stringNosso = “Número “ & meu ‘além de concatenar duas variáveis ‘o operador & também funciona como conversor implícitoA função Val do VB .NET pode ser utilizado para conversão de strings. A função varre toda a stringaté encontrar um dígito diferente quando termina o processo convertendo somente os númerosencontrados. Exemplo : Dim m As Integer m = Val ("142 kilômetros") MsgBox(m) ‘exibe a mensagem 142Resumindo : O compilador do VB .NET tem duas regras default: 1. Toda variável deve ser declarada antes do uso. 2. Toda conversão do tipo Narrowing deve ser efetuada com funções de conversão apropriada.Esse comportamento pode ser alterado desligando o controle de verificação Option Strict Off. Destemodo todas as variáveis podem ser usadas sem declaração anterior e o tipo de conversão (Narrowing)pode ser feito implicitamente, isto é sem funções de conversão.A Microsoft recomenda sempre utilizar conversões explícitas usando as funções de conversão,para criar um aplicativo de melhor desempenho. Além disso recomenda sempre utilizar ocomando Option Strict On. 36

×