54
ÍNDICE 1 - Introdução ao Visual Basic 2008 e Linguagens de Programação. 1.1 - Uma breve história sobre a linguagem BASIC; 1.2 - O conceito de programação de computadores; 1.3 – Características da Linguagem; 1.4 – A IDE (Ambiente Integrado de Desenvolvimento); 1.5 – Nosso Primeiro Projeto. 2 - Controles de um formulário / Caixas de Ferramentas. 2.1 - ToolBox, componentes e principais controles; 2.2 – Caixa de Propriedades; 3 - Programação Orientada a Objetos (POO) – Visão Geral 4 - Variáveis de memória e Tipos de Dados 4.1 - Conceito de variáveis; 4.2 - Convenções para nomeação de variáveis; 4.3 - Declarando e inicializando variáveis; 4.4 - Tipos de dados; 4.4.1 - Tipos de Dados Numéricos; 4.4.2 - Tipos de dados não-numéricos ou alfa-numérico; 4.5 – Escopo; 4.6 – Constantes. 5 – Funções e Operadores Matemáticos 5.1 – Operadores Matemáticos; 5.2 - Funções Matemáticas. 6 - Strings

Visual Basic 2008

Embed Size (px)

Citation preview

Page 1: Visual Basic 2008

ÍNDICE

1 - Introdução ao Visual Basic 2008 e Linguagens de Programação.

1.1 - Uma breve história sobre a linguagem BASIC;

1.2 - O conceito de programação de computadores;

1.3 – Características da Linguagem;

1.4 – A IDE (Ambiente Integrado de Desenvolvimento);

1.5 – Nosso Primeiro Projeto.

2 - Controles de um formulário / Caixas de Ferramentas.

2.1 - ToolBox, componentes e principais controles;

2.2 – Caixa de Propriedades;

3 - Programação Orientada a Objetos (POO) – Visão Geral

4 - Variáveis de memória e Tipos de Dados

4.1 - Conceito de variáveis;

4.2 - Convenções para nomeação de variáveis;

4.3 - Declarando e inicializando variáveis;

4.4 - Tipos de dados;

4.4.1 - Tipos de Dados Numéricos;

4.4.2 - Tipos de dados não-numéricos ou alfa-numérico;

4.5 – Escopo;

4.6 – Constantes.

5 – Funções e Operadores Matemáticos

5.1 – Operadores Matemáticos;

5.2 - Funções Matemáticas.

6 - Strings

Page 2: Visual Basic 2008

7 – Operadores

7.1 – Operadores Condicionais;

7.2 - Operadores lógicos;

8 – Estruturas de decisão

8.1 - Estruturas IF

8.2 - Estrutura IF ... Then

8.3 - Estrutura IF ... Then ... Else

8.4 - Estrutura IF ... Then ... ElseIf

8.5 - Select Case

9 – Estruturas de Repetição (Loop)

9.1 - For ... Next

9.2 - Do ... Loop

9.3 - While ... End While

10 - Funções (Functions) e Rotinas (Procedures)

11 - Programas desenvolvidos em VB6 requerem uma alteração significativa para rodar no VB.NET

12 - Extras...

OBJETIVO

Este curso é destinado àqueles que pretendem compreender e utilizar recursos básicos da linguagem Visual Basic, visando à criação de aplicações Desktop e Web, de forma prática, rápida e simples.

No decorrer do curso, após a introdução ao Visual Basic e ao FrameWork do Visual Studio, os alunos aprenderão conceitos básicos da programação e a melhor maneira de aplicar na prática seus conhecimentos, utilizando controles, estruturas de decisão, módulos, procedures/funções, classes, bem como aprenderão depurar e tratar erros, entre outras técnicas.

Page 3: Visual Basic 2008

Além disso, estarão se familiarizando com a plataforma .NET, utilizando os recursos da programação orientada a objetos, isso tudo sem contar toda praticidade oferecida pela versão 2008 do Visual Basic.

PRÉ-REQUISITOS

Para que os alunos possam aproveitar este curso ao máximo, é importante que eles tenham participado dos treinamentos de Introdução à Lógica de Programação e Introdução à Programação Orientada a Objeto, ou possuam conhecimentos equivalentes.

Para Finalizar

Este “curso” | tutorial É GRATUITO e não pode ser vendido.

Desenvolvi com o intuito de ajudar o pessoal que está começando agora na linguagem VB2008 (.NET).

Não é cobrado nenhum valor pela utilização ou distribuição deste. Porém se de alguma forma lhe foi útil aceito contribuições!!! heheh

David Machado – São Paulo, SP.

Contato: [email protected]

Page 4: Visual Basic 2008

VISUAL BASIC 2008 (VB2008.NET)

1 - Introdução ao Visual Basic e Linguagens de Programação

1.1 - Uma breve história sobre a linguagem BASIC

O Visual Basic é uma evolução do BASIC (Beginners' All-purpose Symbolic Instruction Code). A linguagem BASIC foi criada pelos Professores John Kemeny e Thomas Kurtz em meados de 1960.

É uma linguagem construída baseada em palavras do inglês utilizada para escrever programas simples de computador. Serviu como propósito de aprendizado educacional para ensinamento de princípios de programação de computadores. Desde então, diversas versões do BASIC foram construídas, contemplando diferentes plataformas de desenvolvimento. Algumas das versões são: QUICKBASIC, Microsoft QBASIC, GWBASIC, Apple BASIC, IBM BASIC, etc. Apple BASIC foi desenvolvido por Steve Wozniak amigo de Steve Jobs (O

fundador da Apple).

Com a popularização do Basic, a Microsoft tornou a linguagem GUI-based (Graphical User Interface), ou seja, fez com que ela se tornasse uma linguagem gráfica. E ao mesmo tempo conseguiu deixá-la mais fácil e prática sua programação, criando componentes e objetos pré-estabelecidos.

Desde então, o Visual Basic evoluiu em diversas versões, até chegar à versão atual Visual Basic 2008. Uma linguagem totalmente baseada no desenvolvimento orientado a Objetos e facilitador de sistemas integrados para Web (.NET).

O VB2008 é de longe a versão mais potente do Visual Basic. Além de ter sua versão expressa (Express) gratuita para download no site da Microsoft.

1.2 - O conceito de programação de computadores

Antes de programarmos, vamos entender alguns conceitos básicos da programação.

Um programa de computador é uma lista de instruções organizadas que quando executadas, faz com que o computador aja de uma forma determinada. Sem programas, os computadores são inúteis. Portanto, programar significa modelar, desenhar e criar um conjunto de instruções que forcem o computador a se preocupar com certos trabalhos que normalmente seriam muito mais eficientes e rápidos do que se realizados pelo homem.

Muitas pessoas pensam que o computador é uma coisa muito inteligente, porém, na realidade o computador é apenas um objeto inanimado que não pode fazer nada sem a assistência humana.

Os microchips de uma CPU podem apenas entender dois estados elétricos, denominados LIGADO e DESLIGADO, ou 0 e 1 que nada mais são que códigos do sistema binário.

Assim, a CPU pode apenas entender uma combinação de códigos 0s e 1s, uma linguagem que chamamos de linguagem de máquina

A linguagem de máquina é extremamente difícil de aprender e não é fácil de ser entendida mesmo por especialistas.

Page 5: Visual Basic 2008

Por sorte, temos programadores muito espertos que escreveram interpretadores e compiladores que podem traduzir as linguagens de programação, como o BASIC em linguagens de máquina, possibilitando assim que o computador entenda as instruções que deve seguir.

A linguagem de máquina é conhecida como uma linguagem primitiva ou de baixo-nível, enquanto interpretadores e compiladores como o Visual Basic são chamados linguagem de alto-nível. Algumas linguagens computacionais de auto-nível além do Visual Basic são Fortran, Cobol, Java, C, C++, Turbo Pascal e etc.

Quanto mais primitiva a linguagem, mais dificilmente iremos entendê-la. Já as linguagens de alto-nível nos possibilita uma maior compreensão dos comandos.

Veja a diferença de um código Assembly (baixo nível) e de um código Visual Basic (alto-nível).

CÓDIGO ASSEMBLY

NOTA: O ;(ponto-e-vírgula) é usado para fazer comentários em códigos ASSEMBLY.

.MODEL SMALL ;modelo de memória

.STACK ;espaço de memória para instruções do programa na pilha

.CODE ;as linhas seguintes são instruções do programa (código)

inicio: ; rótulo p/ formar o endereço de entrada do programa

XOR AX,AX ; Faz um OR lógico, ou seja, move o valor 0 para o registrador AX.

INT 16h ;interrupção 16h (teclado)

MOV AH,4Ch ;move o valor 4Ch para o registrador AH (Retorna comando ao DOS)

INT 21h ;interrupção 21h (DOS)

END inicio ;finaliza o código do programa

Este código não faz nada mais que esperar que o usuário pressione uma tecla e encerra o programa.

Vejamos agora o mesmo código no VB2008.

Public Class Form1

Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress End End Sub

End Class

Nota-se que é muito mais simples a programação em alto-nível.

Este é um exemplo simples, porém com mais complexidade do programa, a facilidade na programação .NET é visível...

Page 6: Visual Basic 2008

1.3 – Características da Linguagem.

• É uma linguagem simples e intuitiva;

• Orientada a Objetos;

• Estruturas são delimitadas por palavras reservadas (palavras chaves), como por exemplo: Select Case e End Select, Sub e End Sub, etc. Isto

permite a formação de blocos de comandos;

• Termina um comando com quebra de linha, e não com chaves, como o C# por exemplo;

• Não é case sensitive, ou seja, ABA e aba são palavras idênticas.

1.4 – A IDE (Ambiente Integrado de Desenvolvimento)

O Visual Basic 2008 é bem parecido com a versão 2005, porém, com muitas funcionalidades adicionais. É uma linguagem totalmente Orientada à Objetos(OOP). No entanto, você não precisa saber OOP para programar no VB2008. O fato é que se você está familiarizado com o VB6 pode facilmente aprender VB2008, pois a sintaxe e a interface são praticamente as mesmas.

Este é o Ambiente Integrado de Desenvolvimento (IDE)

Ele é composto de alguns painéis denominados:

• Painel de Projetos Recentes (Recent Projects Pane) - Que mostra uma lista de projetos que foram criados por você recentemente.

Page 7: Visual Basic 2008

• Painel de Inicialização (The Getting Started Pane) - Possibilita alguns tipos facilitadores para rapidamente desenvolver seus aplicativos.

• Painel de Notícias do VB Express (MSDN Visual Basic Express Edition) – Possibilita acessar as últimas notícias sobre o Visual Basic 2008 Express. Indicará lançamentos e atualizações.

1.5 – Nosso Primeiro Projeto

Para criar seu primeiro projeto, você precisa clicar no menu: Arquivo (File) e selecionar o novo projeto (New Project). Ou então, utilizar a tecla de atalho para novos projetos (CTRL + N). Aparecerá a seguinte caixa de diálogo:

No final desta caixa de diálogo, você pode re-nomear o nome padrão WindowsApplication1 para o nome do seu projeto, no nosso caso, chamaremos de PrimeiroProjeto. Feito isso, clique em OK para continuar. A próxima janela da IDE aparecerá. É tudo muito parecido com o Visual Basic 6, portanto, familiar para todos os programadores que estão se atualizando na linguagem. A nova janela é composta por uma caixa de ferramenta (ToolBox) de controles para serem adicionados ao projeto, um formulário principal vazio, um painel de propriedades dos objetos, um painel de exploração/navegação da solução (projeto) e na parte inferior uma Lista de Erros, que durante execução possibilita verificar, além dos erros e alertas de código errado, a janela de depuração imediata (Immediate Window).

Page 8: Visual Basic 2008

NAME = Nome | BUTTON = Botão | Label = Rótulo | TextBox = Caixa de Textos

Agora vamos à criação do nosso primeiro programa. Primeiramente, selecione e arraste para o formulário um Button, dois Labels e uma TextBox para o formulário.

Dê um clique no Label1 e nomeie-o lblNome. Para isso, mude a propriedade NAME do objeto.

Dê um clique no Label2 e nomeie-o lblResultado. Para isso, mude a propriedade NAME do objeto.

Dê um clique sobre o TextBox1 e nomeie-o txtNome. Para isso, mude a propriedade NAME do objeto.

Dê um clique sobre o Button1 e nomeie-o btnInverte. Para isso, mude a propriedade NAME do objeto.

Page 9: Visual Basic 2008

Seu projeto ficará parecido com esta tela:

Por fim, dê um clique duplo no botão criado e digite o seguinte código:

Public Class Form1 Private Sub btnInverte_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnInverte.Click 'Limpa o Rótulo de Resultados lblResultado.Text = "" 'Inicia o Laço invertido que vai do tamanho do text (Text.Lenght) até 1 For i As Short = txtNome.Text.Length To 1 'Acrescenta cada letra no rótulo de resultados 'Formando assim a palavra invertida lblResultado.Text += Mid(txtNome.Text, i, 1) Next End SubEnd Class

Page 10: Visual Basic 2008

Veja como fica na IDE:

Pronto, agora rode o projeto (teclando F5) e veja o seguinte resultado:

Page 11: Visual Basic 2008

2 - Controles de um formulário / Caixas de Ferramentas.

Controles são ferramentas úteis que podem ser adicionadas ao formulário para realizar diversas tarefas. Como já visto, o painel que fica ao lado esquerdo é a Caixa de Ferramentas (ToolBox) e contém os controles do VB2008. Estes por sua vez, são categorizados em abas, seguindo o seguinte: Controles Comuns (Common Controls), Containeres (Containers), Menus e Barras de Ferramentas (Menus & ToolBars), Dados (Data), Componentes (Components), Impressões (Printings) e por fim Diálogos (Dialogs).

Para inserir um controle no formulário basta arrastá-lo para o local desejado. Você pode também dar um duplo-clique no controle e ele irá para o formulário, neste segundo caso, não há um local exato, geralmente ele é adicionado ao controle que você está trabalhando, principalmente Groupbox, Painéis e Abas.

Após inseri-lo ao formulário, você poderá redimensionar e mover o controle para onde desejar. Neste caso, seguem os mesmos padrões de objetos inseridos em documentos de texto do Word, por exemplo.

2.1 - ToolBox, componentes e principais controles

Agora explicarei cada um dos controles e como utilizá-los. Criaremos um novo projeto e adicionaremos todos os controles que normalmente são mais utilizados.

Button, CheckBox, Combobox, GroupBox, DateTimePicker, Label, ListBox, MaskedTextBox, PictureBox, RadioButton, TextBox e Timer.

Para uma lista completa dos componentes do VB2008, acesse o site da Microsoft. E Veja mais no decorrer dos capítulos.

Vejamos o projeto:

Agora temos de alterar as propriedades dos objetos inseridos no projeto, são elas:

Page 12: Visual Basic 2008

CONTROLE PROPRIEDADE VALOR

GroupBoxName frmSexo

Text Sexo

RadioButton1Name optMasculino

Text Masculino

RadioButton2Name optFeminino

Text Feminino

DateTimePickerName dtpCadastro

Format Short

Label1Name lblRua

Text Rua

Label2Name lblCep

Text Cep

Label3Name lblCidade

Text Cidade

Label4Name lblBairro

Text Bairro

Label5Name lblCadastro

Text Data de Cadastro

Label6Name lblContagem

Text Tempo Restante

Label7 Name lblContador

Page 13: Visual Basic 2008

Text 60

TextBox Name txtRua

MaskedTextBoxName mskCep

Mask 00000-000

ComboBoxName cmbCidade

DropDownStyle DropDownList

ListBoxName lstBairro

CheckedBox

Name chkFoto

Text Foto

Checked True

Timer

Name tmrContagem

Enabled True

Interval 1000

PictureBoxName picFoto

Button Name btnPreenche

2.2 – Caixa de Propriedades

Page 14: Visual Basic 2008

Para isso, vamos aprender o que são

propriedades, como funcionam, e como alterá-las.

As propriedades são características que definem o objeto/componente que estamos trabalhando, é através de propriedades, que definimos o nome do nosso objeto, as cores, e algumas funcionalidades básicas deste. Algumas propriedades podem ser alteradas em tempo de execução, outras apenas em tempo de criação (design). Há ainda propriedades apenas de leitura, por exemplo, o ponto X da tela de um objeto que não pode ser movido. Neste caso a propriedade que indica o ponto X poderá apenas ser lida e não alterada.

O funcionamento de uma propriedade é simples, basta alterar seu valor para percebermos uma mudança no objeto. Se por exemplo, alteramos o valor da propriedade BackColor do objeto Textbox para RED (vermelho), teremos um Textbox com fundo na cor vermelha. No VB2008 as cores também são objetos, não podemos mais simplesmente usar

Page 15: Visual Basic 2008

RED, temos de acrescentar o objeto COLOR.RED, mas isto nos aprofundaremos mais tarde. Portanto, o que importa é que você entenda o conceito. Tente mudar a propriedade TEXT do objeto para perceber que o valor que você digitou lá, aparecerá dentro do TextBox.

Por fim, para alterarmos a propriedade basta mudar seu valor no painel Properties. Veja um exemplo:

A Propriedade Text do formulário foi alterada para Jogo do Preenchimento. Se notar na figura do projeto anterior o título do formulário é Jogo de Preenchimento. Este modelo de preenchimento de propriedade é feito em tempo de criação (design). Como dito, você pode alterar a maioria das propriedades em tempo de execução. Para isto, basta fornecer o nome do objeto seguido de sua propriedade e igualar ao valor desejado. Vejamos um trecho de código que muda o título do formulário.

Form1.Text = “Novo Título”

Pronto. Você mudou o título do formulário em tempo de execução. O que isso quer dizer? Quer dizer que quando você apertar F5 para executar o programa não aparecerá Jogo do Preenchimento e sim “Novo Título”. Porém na janela de desenvolvimento você ainda verá “Jogo do Preenchimento”. Sacou?

Page 16: Visual Basic 2008

3 - Programação Orientada a Objetos (POO) – Visão Geral

Os códigos escritos no VB2008 são muito parecidos com os códigos escritos no VB6. Isso devido ao fato do VB2008 ser um meio termo entre o VB6 e o .NET. Ele tem um pouco de cada linguagem, para poder manter a compatibilidade e facilitar a migração de desenvolvedores que já estão familiarizados com a linguagem Visual Basic.

Há inclusive um Wizard (ajudante) que facilita a conversão de projetos escritos em VB6 para o VB2008. Claro, nem tudo é perfeito, alguns componentes não são passíveis de conversão, outros geram conflitos, etc. Mas de um modo geral, eu utilizei este conversor e gostei muito do resultado. Foi me baseando nesta conversão que aprendi a programar no VB2008.

Mas deixemos histórias de lado e vamos partir logo para o entendimento da linguagem.

O .NET é a plataforma que a Microsoft desenvolveu para competir com outras linguagens orientadas a objeto, que facilitam muito a vida do programador, por trazê-lo o mais perto possível da realidade do seu dia-a-dia, ou seja, tudo o que estamos vendo e utilizamos no decorrer do dia (sem considerar a roubalheira que ocorre no planalto) é objeto. Um lápis, um carro, uma casa, uma pessoa. Claro que estou generalizando, mas para pensarmos de forma programável, consideremos isto, ou algo próximo a isto!

Para uma linguagem ser considerada orientada a objetos, ela deve possuir algumas características básicas, são elas: encapsulamento, herança e polimorfismo. Vamos analisá-las.

Encapsulamento vem de encapsular, que em programação orientada a objetos, significa separar o programa em partes, o mais isoladas possível. A idéia é tornar o software mais flexível, fácil de modificar e de criar novas implementações.

Para exemplificar, podemos pensar em uma dona de casa (usuário) utilizando um liquidificador (sistema). O usuário não necessita conhecer detalhes do funcionamento interno do sistema para poder utilizá-lo, precisa apenas conhecer a interface, no caso, os botões que controlam o liquidificador. Outro exemplo clássico de encapsulamento é o padrão de projeto chamado Mediator

A Herança é um princípio da programação orientada a objetos que permite que as classes compartilhem atributos e operações baseados em um relacionamento, geralmente generalização. A herança permite a criação de subclasses que herdam atributos e operações (ou métodos) da classe pai (super-classe ou classe base). A herança é um conceito aplicado no momento de criação das classes. Ela é usada na intenção de evitar que classes que possuam atributos ou métodos semelhantes sejam repetidamente criados.

Como exemplo pode-se observar as classes 'aluno' e 'professor', onde ambas possuem atributos como nome, endereço e telefone. Nesse caso pode-se criar uma nova classe chamada por exemplo, 'pessoa', que contenha as semelhanças entre as duas classes, fazendo com que aluno e professor herdem as características de pessoa, desta maneira pode-se dizer que aluno e professor são subclasses de pessoa.

O Polimorfismo permite que referências de tipos de classes mais abstratas representem o comportamento das classes concretas que referenciam. Assim, um mesmo método pode apresentar várias formas, de acordo com seu contexto. O polimorfismo é importante pois permite que a semântica de uma interface seja efetivamente separada da implementação que a representa. O termo polimorfismo é originário do grego e significa "muitas formas" (poli = muitas, morphos = formas).

Page 17: Visual Basic 2008

O Texto acima foi retirado do WikiPedia, para maiores informações, consulte:

http://pt.wikipedia.org/wiki/Encapsulamento

http://pt.wikipedia.org/wiki/Heran%C3%A7a_(inform%C3%A1tica)

http://pt.wikipedia.org/wiki/Polimorfismo

Resumidamente, Encapsulamento serve para isolar o funcionamento da classe, desta forma quem está utilizando a classe não precisa saber como ela funciona apenas saber usá-la. A Herança permite que novas classes herdem partes da classe maior, ou seja, a classe principal passa para as classes filhas o seu DNA. E por fim o Polimorfismo permite que uma mesma função faça outras coisas, por exemplo, a função RESPIRAR. Todas as pessoas respiram, mas umas inspiram mais ar e soltam menos que outras, desta forma, a função é igual RESPIRAR, mas cada um faz de um jeito.

O VB2008 permite que se escreva programas divididos em módulos. Estes módulos representam objetos do mundo real e são conhecidos como classes. Um objeto pode ser criado fora da classe e é conhecido como instância desta. Uma classe suporta subclasses. Por exemplo, um pé de limão é uma subclasse da classe planta, e o pé de limão que você possui plantado no jardim de casa é uma instância da classe pé de limão que possui todas as características da classe Planta (Usamos neste exemplo conceito de HERANÇA).

No VB2008 montamos o exemplo acima da seguinte forma:

Public Class Planta

'Dados Private raiz As String Private classificacao As String Private semente As String

'Métodos Overridable Sub fotossintese() MsgBox("Realizando a fotossíntese", MsgBoxStyle.Information) End Sub

End Class

Após criar a classe Planta, você pode criar a subclasse Pe_de_Limao que herdará os atributos ou dados da classe Planta. Dentro da classe Pe_de_Limao você não precisa definir nenhum dado que já foi definido na classe Planta, você precisará apenas definir os dados que foram diferentes da classe principal (neste caso a classe planta).

Public Class Pe_de_Limao Inherits Planta

Public nome As String

Public Overrides Sub fotossintese() MsgBox("Pé de Limão em Fotossíntese", MsgBoxStyle.Information) End SubEnd Class

Este é um exemplo simples de classe no VB2008 e não vai fazer nada demais, serve apenas para você recordar o funcionamento de uma classe. Note que o curso não é de orientação a objetos, portanto, aconselho que procurem apostilas na internet, ou mesmo cursos

Page 18: Visual Basic 2008

sobre o tema. É funcamental o aprendizado destes conceitos. Em uma versão mais avançada vou me aprofundar mais neste tema, por hora isso é suficiente.

O VB2008 é uma linguagem orientada a objetos e guiada por eventos. Na verdade, todos os aplicativos Windows são guiados por eventos. Isso quer dizer que é o usuário quem decide o que o programa deve fazer. Ele pode, por exemplo, digitar um texto numa caixa de textos, pode clicar em um botão, pode maximizar a janela, etc. Um evento está ligado ao objeto, é uma comunicação que acontece quando o objeto recebe a ação.

Por se tratar de uma linguagem orientada a objetos, instancia classes e herda suas características. Como por exemplo, o formulário. Quando iniciamos um projeto de aplicativo Windows, o formulário é uma instância da classe System.Windows.Forms.Form como mostrado na janela de propriedades.

Quando dermos um duplo clique no formulário veremos a janela de código. Isso vale para qualquer objeto, em tempo de desenvolvimento sempre que dermos duplo clique em um objeto ele mostrará a janela de códigos com o evento principal do objeto clicado. Abaixo está a tela que aparece quando damos duplo clique no formulário.

Page 19: Visual Basic 2008
Page 20: Visual Basic 2008

Podemos notar que o evento FORM_LOAD possui a palavra reservada PRIVATE. Isto faz com que o evento seja acessado apenas pelo formulário em questão, no caso, o Form1. Já o formulário é PUBLIC o que faz com que possa ser acessado por outros formulários e classes. Com o código acima estamos instanciando a classe Form1 que herda as propriedades e métodos da classe System.Windows.Forms.Form e estamos criando uma sub-rotina para o evento FORM_LOAD sub-rotinas são criadas pela palavra SUB, e a classe por CLASS. Por fim, a estrutura é encerrada pela palavra END, como End Sub, End Class, etc, formando assim o bloco de comandos. A maioria das estruturas do Visual Basic se encerram com a palavra chave END, no caso da linguagem C usa-se CHAVES( {} ). Veja o código abaixo:

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles MyBase.Load

End Sub

End Class

NOTA: Perceba que no final da linha há um underline ( _ ), isto serve para indicar ao compilador que a próxima linha ainda faz parte da instrução. Estou utilizando para demonstrar que o código deve ser inteiro, exatamente como saiu na imagem acima. Porém como a folha no Word é menor, é necessário o uso da quebra do código para que este caiba. No entanto, pode-se perfeitamente usar no código para facilitar a visualização.

Há outros eventos associados à classe Form1. Vejamos alguns deles na tela abaixo:

Page 21: Visual Basic 2008
Page 22: Visual Basic 2008

Agora você está pronto para escrever um pouco de código. Para não deixarmos o formulário em branco apenas. Vamos começar escrevendo um código para o evento Form_Load, ou seja, quando o formulário for iniciado ele vai executar o código que estiver entre as palavras SUB FORM1_LOAD e END SUB. Private Sub...End Sub

Vamos digitar o seguinte código:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles MyBase.Load Me.ForeColor = Color.Yellow Me.BackColor = Color.Blue Me.Text = "OBAAA MEU PRIMEIRO PROGRAMA NO VB2008!!! UHUUUUUUU" End Sub

ForeColor vai mudar a cor da letra do formulário. BackColor vai mudar a cor do fundo do formulário. E Text vai alterar o nome do título do formulário. Note a palavra reservada ME. Isto faz com que estejamos nos referindo ao formulário ao qual o código está escrito. Serve para facilitar a leitura por outros programadores. Poderíamos usar apenas TEXT BACKCOLOR FORECOLOR, o VB2008 saberá que você se refere ao formulário em questão, mas não é muito bom para outras pessoas que foram ler o código. E pra que colocar o ME? Além de facilitar a leitura de outros programadores, no futuro quando você trabalhar com outros formulários e precisar referenciá-los, vai precisar indicar sobre qual está programando. Por exemplo, digamos que você quer mudar o título do formulário 2 estando no formulário 1, como fera isso? Simples, basta digitar:

Form2.Text = “Novo título para o formulário 2”

E se quiser mudar o texto do formulário 1? Uai... Se você está nele basta usar o ME. Certo?

Me.Text = “Nome do título para o formulário 1”

Por enquanto é isso. Já sabemos codificar. Agora vamos avançar no VB2008!

Page 23: Visual Basic 2008

4 - Variáveis de memória e Tipos de Dados

4.1 - Conceito de variáveis

Variáveis são espaços na memória reservados para armazenar as informações entradas pelo programador ou pelo usuário. Podemos comparar com um caderno cheio de linhas. Cada linha pode representar uma variável que vai guardar um número X de dados. Eu disse que pode, pois há dados que podem ultrapassar a linha e encher a folha, ou o caderno todo. São Strings de caracteres que nada mais são que uma seqüência de texto gravada na memória.

O importante é que fique claro que são as variáveis que irão guardar o conteúdo de algum dado específico na memória. Internamente o Visual Basic grava o dado que a variável possui em um endereço da memória. Porém para facilitar o trabalho do programador, este pode atribuir nomes às variáveis, com visto acima, alguns nomes podem ser: DataCadastro, HoraTermino, Nome, Telefone, etc. Quanto mais descritiva for a variável mais fácil será para outro programador ler e entender o código.

4.2 - Convenções para nomeação de variáveis

Vale ressaltar que por convenção, algumas regras existem para a criação de nome de variáveis. Vamos conhecê-las:

• Precisa ter menos de 255 caracteres;

• Espaços não são permitidos;

• Não pode começar com um número;

• Caracteres especiais não são permitidos, como por exemplo % $ @ &, etc. O único caractere especial permitido é o Underscore (_).

• Evite uso de acentos, pode gerar problema em compartilhar código com outras línguas.

Vejamos alguns exemplos de nomes permitidos e outros proibidos:

Nomes Válidos

Nomes Inválidos

Primeiro_Nome

Primeiro.Nome

Ano_Novo

1VezGanhei

Nomes_Longos_Sao_Permitidos

Ela&EleJuntos

4.3 - Declarando e inicializando variáveis

No Visual Basic é necessário que se declare uma variável antes de usá-la. Caso isto não seja feito, ela assumirá o tipo Variant, lembre que isto torna o sistema lento, e muitas vezes é a causa de vários Bugs. Para evitá-los vou dar um dica. Sempre use o comando Option Explicit On no início de qualquer formulário, módulo, classe, etc. Isto faz com que você seja obrigado a declarar a variável, ou o próprio sistema acusará erro em tempo de Desenvolvimento/Compilação. Veja a tela abaixo:

Page 24: Visual Basic 2008

Perceba que o Option Explicit On está declarado no início do código e que quando eu crio a variável minha_variavel = 10, ele automaticamente a sublinha indicando um erro, e já coloca na lista de erros uma descrição do que ocorreu. Há duas formas de resolver o problema. A primeira é alterando a primeira linha para Option Explicit Off. Desta forma, a lista de erro some, e a variável é aceita. Porém, neste caso, a variável será criada como sendo do tipo Variant, e sofre os problemas que já explanei anteriormente. A outra solução que é a correta, é declarar a variável, para isso, basta usar o seguinte:

Dim minha_variavel As Integer

Assim, o novo código será:

Option Explicit On

Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim minha_variavel As Integer minha_variavel = 10 End SubEnd Class

Simples não? Melhor ainda… O Visual Basic 2008 nos permite adicionar variáveis em seqüência quando estas possuem o mesmo tipo. No Visual Basic 6, se você quisesse adicionar três (3) variáveis do tipo Integer, teria de fazer da seguinte forma:

Dim minha_variavel1 As Integer

Dim minha_variavel2 As Integer

Dim minha_variavel3 As Integer

Já no VB2008, pode fazer assim:

Dim minha_variavel1, minha_variavel2, minha_variavel3 As Integer

Page 25: Visual Basic 2008

Além disso, você pode usar as palavras reservadas Private, Public e Friend, além do Dim. Estas palavras modificam as variáveis de forma que elas se tornem visíveis apenas em determinados trechos do sistema. No exemplo acima, eu declarei minha_variavel dentro da rotina Form1_Load. Desta forma ela somente será acessível de dentro desta rotina. No entanto, há casos que precisamos acessar de outros lugares, então precisamos declarar estas variáveis como sendo Públicas (Public). Mas neste caso, estas variáveis devem estar dentro da classe, logo abaixo da cláusula Classe que identifica a classe. Se usarmos o Private neste caso, ela será pública para a classe e será privada para outras classes, ou seja, só poderemos acessar o valor desta variável de dentro da classe onde ela foi criada.

Para tornamos uma variável global, ou seja, acessível para todas as classes, formulários e módulos, devemos criá-las dentro de um módulo. O módulo é criado da mesma forma que uma classe, ou um formulário, para isso, basta irmos ao menu Project, e clicar em Add Module. Dentro do módulo declaramos a variável da seguinte maneira:

Module Module1 Public Minha_variavel As IntegerEnd Module

Pronto, agora podemos usar esta variável dentro do projeto, em qualquer formulário sem problemas.

Há ainda, um novo modificador conhecido com Friend, adicionado ao VB2008. Este permite que a variável seja global e ao mesmo tempo visível apenas no namespace(projeto) ao qual estejamos trabalhando. Uma vez que a variável pública pode ser acessada inclusive por outros sistemas quando criarmos componentes DLLs.

Aprenderemos isto no futuro. Por hora, vamos ver um resumo dos principais modificadores de acesso aos tipos de variáveis.

Dim Declara uma variável. Por padrão, esta variável é pública.

Public Declara a instância, pode ser variável, sub-função ou função. Esta pode ser acessada de qualquer modulo, formulário ou classe do projeto (e quando trabalhando com DLLs pode ser acessada externamente, ou seja, por outros componentes).

Private Declara uma instância que será visível somente dentro da função, módulo, classe ou formulário em que for declarada. Uma particularidade é que no VB2008, private realmente significa private, ou seja, uma variável declarada private dentro de uma rotina só pode ser usada dentro da rotina, o que não acontecia da mesma forma no VB6.

Friend Torna a instância visível em todos os módulos, classes e formulários, porém os dados só podem ser acessados dentro do projeto, ou seja, não permite que variáveis do projeto seja, acessadas por outras DLLs (Outros componentes).

Há outros modificadores, como shared, shadowed, overrides, overridable, e protected, que serão vistos mais para frente.

4.4 - Tipos de dados

Page 26: Visual Basic 2008

Há diversos tipos de dados que manuseamos no dia-a-dia. Como por exemplo, textos, datas, moeda, nomes, telefones, ceps, etc. Da mesma maneira, o Visual Basic armazena e trata estes dados de forma a facilitar o desenvolvimento. Alguns dados servem apenas para armazenamento, como textos, outros mais complexos irão permitir cálculos matemáticos, estatísticos, etc.

Genericamente o Visual Basic classifica os tipos de dados em dois grupos principais que são numéricos e não numéricos, ou alfa-numérico.

Os tipos de dados numéricos consistem em números que podem ser computados matematicamente com várias funções básicas, como soma, subtração, multiplicação, divisão, exponencial, etc.

Alguns exemplos de dados numéricos são: o número da sua casa, seu peso, sua altura, velocidade de um veículo, dinheiro na conta corrente, preço de mercadoria, etc.

No Visual Basic, os tipos de dados são divididos em subtipos, dependendo apenas do tamanho da informação que este armazenará. Cálculos que envolvem apenas valores inteiros, ou dados que não necessitam de precisão podem usar Integer(Inteiro Simples), ou Long(Inteiro Longo). Já cálculos que envolvem alta precisão devem usar Single (Simples) ou Double (Duplo), neste segundo caso, são chamados números com ponto flutuante. Em contrapartida, se precisarmos de um cálculo com precisão de números decimais, devemos usar o tipo Decimal. Vejamos uma tabela com os principais tipos de dados numéricos para uma melhor clareza.

4.4.1 - Tipos de Dados Numéricos

Tipo

Capacidade

Variação

Byte

1 byte

0 até 255 (sem sinal)

Short

2 bytes

-32.768 até 32.767 (com sinal)

Integer

4 bytes

-2.147.483.648 até 2.147.483.647 (com sinal)

Long

8 bytes

-9.223.372.036.854.775.808 até 9.223.372.036.854.775.807 (9.2...E+18) (com sinal)

Single

4 bytes

-3.402823E+38 até -1.401298E-45 para valores negativos.

1.401298E-45 até 3.402823E+38 para valores positivos.

Double

8 bytes

Page 27: Visual Basic 2008

-1.79769313486232e+308 até -4.94065645841247E-324 para valores negativos. 4.94065645841247E-324 to 1.79769313486232e+308 para valores positivos.

Decimal

16 bytes

0 até +/-79.228.162.514.264.337.593.543.950.335 (+/-7.9...E+28) sem ponto decimal

0 até +/-7,9228162514264337593543950335 com 28 casas decimais à direita;

O menor número próximo à zero é: +/-0.0000000000000000000000000001 (+/-1E-28)

 

 

4.4.2 - Tipos de dados não-numéricos ou alfa-numérico

Dados não numéricos são dados que não podem ser manipulados matematicamente utilizando operações aritméticas básicas.Os dados não numéricos compreendem textos, ou strings, datas, boolean (verdadeiro ou falso), e objetos. Este último tipo será discutido mais adiante, mas objetos são controles que aprendemos no começo do curso, por exemplo, TextBox, ComboBox, etc. No entanto, muito cuidado a utilizar este tipo de dado, pois consome muita memória e prejudica a programação, dificultando formatação e validação de entrada de dados.

Vejamos uma tabela com todos os tipos de dados alfa-numérico para uma melhor clareza.

Tipo

Capacidade

Variação

String (Tamanho variável)

Tamanho da String. Depende da plataforma implementada.

0 até 2 bilhões de caracteres

Date

8 bytes

00:00:00 (meia-noite) de 1 de Janeiro de 0001 até 11:59:59 de 31 de Dezembro de 9999

Boolean

Geralmente 2 bytes, variando de acordo com a plataforma implementada.

True (Verdadeiro) ou False (Falso)

Object

4 bytes em plataformas 32bits ou 8 bytes em plataformas 64bits.

Qualquer tipo pode ser armazenado neste tipo, é similar ou tipo Variant do VB6.

Sufixo para literais. (Verificar se existe no VB2008)

Page 28: Visual Basic 2008

Literais são valores que você atribui para um dado. Em alguns casos, precisamos adicionar um sufixo em algum tipo de dado para garantir um cálculo apurado. Por exemplo, podemos usar o sufixo # para indicar que o número é Double, ou seja, de precisão dupla. Desta forma, podemos atribuir o valor 3.542 à variável num, desta forma: num = 3.542#. Veja na tabela alguns exemplos de sufixos.

Sufixo

Tipo de dados

&

Long (Longo)

!

Single (Simples)

#

Double (Duplo)

No entanto, quando trabalhamos com textos, ou strings, precisamos colocá-los entre aspas duplas, ou em caso de datas e horas, temos de colocá-los entre cerquilhos (#). Veja alguns exemplos:

Nome = “David Machado”

Telefone = “55 (11) 1234-5678”

DataCadastro = #25-Jul-08#

HoraTermino = #8:00 am#

4.5 - Escopo

É importante conhecer sobre escopo, pois assim entenderemos melhor o uso de variáveis com modificadores. Ou seja, variáveis agora são válidas dentro de seus blocos. No VB6, quando você declarava que uma variável era private dentro de uma sub-rotina (sub-função) ela era válida para toda esta sub-rotina, ou seja, você não poderia criar uma outra variável com o mesmo nome dentro de blocos diferentes, quando eu digo bloco, podemos considerar um IF e um SELECT CASE, por exemplo. No VB.NET e principalmente no VB2008 a coisa mudou. Agora se criarmos uma variável dentro da sub-rotina, e precisarmos criar outra variável com o mesmo nome dentro de um bloco que está contido nesta sub-rotina, poderemos fazer e trabalhar com isto tranquilamente. Vejamos um exemplo:

Option Explicit On

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)_ Handles MyBase.Load

For Minha_variavel As Integer = 0 To 5 MsgBox(Minha_variavel) Next

For Minha_variavel As Integer = 0 To 5 Step 2 MsgBox(Minha_variavel) Next

If 1 > 2 Then Dim minha_variavel As Long = 0 minha_variavel = 3 Else

Page 29: Visual Basic 2008

Dim minha_variavel As String minha_variavel = "David" End If

End SubEnd Class

Notamos que existem várias variáveis com nome de minha_variavel declarada, e elas sõ existem dentro do ESCOPO em que foram criadas. Sei que é meio confuso, mas no futuro entenderemos o quão importante é conhecer isto.

4.6 - Constantes

Constantes são variáveis fixas (parece até piada não?), ou seja, seus valores são sempre iguais do começo ao final da execução do programa; e para que servem? Apenas para armazenar valores fixos, como por exemplo, o valor do Pi. É um valor que pode ser usado mais de uma vez e tem um valor definido, ou seja, você pode fazer quantas contas quiser usando o Pi, porém seu valor será sempre o mesmo, ou seja, 3,14159...

A declaração de uma constante é simples, basta usar:

Const Pi As Single=3.14159

Os modificadores também são válidos para constante, assim, toda aquela regra com Public, Private, Friend, etc, vale para Constantes.

Note que uso ponto ao invés de vírgula, isto pelo fato da linguagem Visual Basic ser em inglês e sua programação ser baseada nesta linguagem, portanto, sempre que usarmos ponto em nossos números nós temos de usar a notação americana de números.

Page 30: Visual Basic 2008

5 – Funções e Operadores Matemáticos

Os computadores podem realizar cálculos de forma muito rápida. No entanto, precisam da instrução de alguém para realizar tal tarefa. O VB2008 permite que realizemos diversos tipos de cálculos matemáticas através do uso de operadores ou mesmo de funções matemáticas já pré-desenvolvidas.

5.1 – Operadores Matemáticos

Abaixo listaremos os principais operadores matemáticos do VB2008. Eles são muito parecidos com o que usamos nas contas do dia-a-dia, com sutis diferenças. Por exemplo, os sinais de soma e subtração são os mesmo (+ e – respectivamente), já os de multiplicação e divisão são (* e /). Há ainda sinais de exponencial, resto de divisão, etc. Já funções mais complexas exigem um código por trás, ou seja, se pega o código matemático (algoritmo) e o transforma em código computacional. Criando-se assim funções (discutiremos mais tarde). Essas funções facilitam o uso das operações matemáticas. Alguns exemplos são Sqrt, exp, etc. Bem, voltemos à lista de operadores aritméticos básicos do VB2008.

Operador

Função Matemática

Exemplo

+

Soma10+3=13

--

Subtração8-7=1

^

Exponencial

2^2=4

*

Multiplicação

5*7=35, (3*2)+2=8

/

Divisão

8/4=2

Mod

Resto (Retorna o resto de uma divisão inteira)

7 Mod 4=3

120 mod 10=0

\

Page 31: Visual Basic 2008

Divisão Inteira (Descarta as casas decimais, e retorna a parte inteira da divisão)

15\4=3

Lembremos que toda operação matemática possui precedência, ou seja, uma multiplicação vem antes de uma soma, etc. O mesmo vale para a programação de cálculos matemáticos. A precedência deve ser observada. Em um cálculo manual, podemos utilizar também os auxiliares, chaves, colchetes e parênteses para indicar a precedência, no entanto quando estamos programando devemos usar apenas parênteses, isso porque os outros auxiliares têm funções diversas.

Para testar a validade dos códigos acima, vamos usar a função MsgBox que nos permite enviar ao usuário uma caixa de mensagem com o resultado de nossas contas.

Crie um novo projeto, e coloque o seguinte código:

Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load MsgBox(15 \ 4 - 5) MsgBox(10 + 3) MsgBox(8 - 7) MsgBox(2 ^ 2) MsgBox(5 * 7) MsgBox((3 * 2) + 2) MsgBox(8 / 4) MsgBox(7 Mod 4) MsgBox(120 Mod 10) MsgBox(15 \ 4) End SubEnd Class

Agora, execute-o com o F5, e veja se realmente os resultados batem com a tabela acima.

Como já aprendemos a usar variáveis, podemos melhorar este código, fazendo algo assim:

Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim valor1 As Integer = 15 Dim valor2 As Integer = 10 Dim resultado As Decimal

resultado = (valor1 + valor2) MsgBox(resultado) resultado = (valor1 - valor2) MsgBox(resultado) resultado = (valor1 ^ valor2) MsgBox(resultado) resultado = (valor1 * valor2) MsgBox(resultado) resultado = (valor1 / valor2) MsgBox(resultado) resultado = (valor1 Mod valor2) MsgBox(resultado) resultado = (valor1 \ valor2) MsgBox(resultado) End Sub

Page 32: Visual Basic 2008

End Class

5.2 - Funções Matemáticas

Muitas das operações matemáticas podemos realizar simplesmente usando os operadores +, -, *, /, ^, etc. Porém para cálculos mais complexos, podemos criar funções ou utilizar funções que já existem na biblioteca matemática do VB2008. Há duas formas de utilizar a biblioteca, podemos indicar seu caminho na hora de chamar a função, ou podemos utilizar a palavra reservada IMPORTS. Esta palavra reservada nos oferece a possibilidade de importar uma biblioteca para o formulário ao qual estamos trabalhando, isso ajuda muito, pois podemos evitar repetição do código durante a programação, vamos ver um exemplo.

MsgBox(System.Math.Abs(-122)) 'O Resultado será 122.

Ok, será válido, porém imagine ter q. digitar System.Math para todas as funções matemática que usarmos? Para resolver este problema, usamos a diretiva IMPORTS e dizemos que aquele formulário utilizará as funções da biblioteca matemática. E como fazer isso? Simples...

Imports System.MathPublic Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles MyBase.Load MsgBox(Abs(-122)) 'O Resultado será 122. End SubEnd Class

Pronto, já podemos usar as funções matemáticas de forma direta no código sem identificar de onde elas vêm, pois já está especificado na diretiva IMPORTS. Sendo assim, vamos para as funções.

A Função ABS

Descrição: Retorna o valor absoluto de um número dado. Aqui no brasil, aprendemos nas aulas de matemática que isso se chama módulo, porém é o valor absoluto!

Sintaxe: ABS(numero)

Exemplo:

MsgBox(Abs(-122)) 'O Resultado será 122.

A Função EXP

Descrição: Retorna o exponencial do número dado.

Sintaxe: EXP (numero)

Exemplos:

MsgBox(Exp(-3)) 'O Resultado será 0,0497870683678639. MsgBox(Exp(7)) 'O Resultado será 1096,63315842846.

Page 33: Visual Basic 2008

A Função FIX

Descrição: Trunca o número e retorna o valor inteiro.

Sintaxe: FIX (numero)

Exemplos:

MsgBox(Fix(-3.01)) 'O Resultado será -3. MsgBox(Fix(3.01)) 'O Resultado será 3. MsgBox(Fix(7.88453)) 'O Resultado será 7.

A Função ROUND

Descrição: Ao contrário do FIX, o ROUND arredonda o número antes de retornar o inteiro.

Sintaxe: ROUND (numero)

Exemplos:

MsgBox(Round(-3.99)) 'O Resultado será -4. MsgBox(Round(3.01)) 'O Resultado será 3. MsgBox(Round(7.88453)) 'O Resultado será 8.

A Função RND

Descrição: Esta função nos retorna um valor randômico entre 0 e 1. Serve para sorteio de números, ou seja, quando desejamos fazer testes ou pegar números de forma aleatória. Muito utilizado também em cálculos estatísticos e de probabilidade. Quando queremos um valor inteiro, temos de converter o resultado em inteiro utilizando o INT por exemplo. Há uma outra coisa importante a se considerar. Precisamos inicializar o randomizador, ou seja, precisamos dizer em que o sistema irá se basear para gerar os números de forma randômica. Para isto, precisamos executar o Randomize antes do RND.

Sintaxe: Randomize, RND ()

Exemplos:

Randomize() MsgBox(Rnd())

MsgBox(Int(Rnd() * 8) + 1)

No primeiro Rnd obtemos um número com casas decimais de forma aleatória. Já no

segundo exemplo, obtemos um valor inteiro entre 1 e 8. Se quisermos um valor inteiro entre 0 e

8, temos de alterar o seguinte: MsgBox(Int(Rnd() * 9)). A explicação é simples,

digamos que o número gerado tenha sido 0,47 e que, depois de multiplicado por 9 tenha

resultado em 4,23. A função INT(4.23) converterá isto para 4.

A Função INT

Descrição: Retorna o Inteiro do número dado. Se o número for positivo, ele trunca o decimal, se o número for negativo, ele arredonda para o próximo inteiro maior que o

Page 34: Visual Basic 2008

inteiro dado. Ou seja, tanto -3,01 quanto -3,99 são arredondados para -4. Já para números positivos, tanto 7,88453 quanto 7,0001 são arredondados para 7.

Sintaxe: INT (numero)

Exemplos:

MsgBox(Int(-3.99)) 'O Resultado será -4. MsgBox(Int(-3.01)) 'O Resultado será -4. MsgBox(Int(3.01)) 'O Resultado será 3. MsgBox(Int(7.88453)) 'O Resultado será 7.

A Função LOG

Descrição: Retorna o logaritmo natural do número dado.

Sintaxe: LOG (numero)

Exemplos:

MsgBox(Log(-3.99)) 'O Resultado será ERRO. MsgBox(Log(-3.01)) 'O Resultado será ERRO. MsgBox(Log(3.01)) 'O Resultado será 1,10194007876078. MsgBox(Log(1)) 'O Resultado será 0.

Lembrando que logaritmos naturais resultam apenas em valores positivos, por este motivo os primeiros dois exemplos geram erros. Só como dica, o logaritmo natural é o inverso do exponencial.

Page 35: Visual Basic 2008

6 - Strings

Strings são tipos de dados que armazenam textos, são muito importantes para o tratamento de entrada de dados, principalmente de projetos comerciais, como por exemplo um cadastro de clientes, são estes tipos de variáveis que armazenam dados como Nome, endereço, CEP, bairro, etc.

Uma das principais operações com strings é a concatenação. Ou seja, a junção de strings. Podemos usar dois métodos para isto, o primeiro é usando o operador +, o segundo é usando o operador &. Ambos são válidos. A diferença é que usando o + obriga o compilador a executar uma verificação a mais, para checar se é um número ou uma string. Porém ao usar o operador & ele simplesmente concatena a string sem validação, o que poupa tempo no modo de execução. Vamos dar um exemplo simples, digamos que você quer somar duas strings uma que tem o valor “2” e outra com o valor “5”. Se você usar o operador + neste caso, ele somará seus valores, e o resultado será 7. Porém se usar o operador & ele concatenará as strings, e o resultado será 25. Pegaram a diferença? Resumindo, use & para concatenar strings.

No Visual Basic 6, existiam funções que ajudavam a trabalhar no tratamento de strings, no VB2008 isso melhorou muito, além das funções, o VB2008 por ser orientado à objeto, implementou a classe Strings. Assim, muitos métodos já estão inclusos na própria classe. Podemos verificar o tamanho da string, localizar alguma letra dentro da string, etc.

Há muitas funções e métodos para trabalhar com string. Mostrarei aqui apenas as principais e mais utilizadas. Para saber mais, você pode consultar o Google, e principalmente você deve SEMPRE testar todas as possibilidades que a linguagem oferece, e para tanto, recomendo que você mesmo descubra quais funções existem e para o que servem. Neste caso, você me perguntaria como eu faço isso? Simples... Declare uma variável do tipo string, e coloque o ponto para adicionar um método. Lembre-se sempre do PONTO que permite que conheçamos todos os métodos disponíveis. Para simplificar, vejamos a tela abaixo:

Page 36: Visual Basic 2008

A função LEN ou LENGTH

Descrição: A função Len retorna um valor inteiro indicando o tamanho de uma string incluindo os espaços.

Sintaxe: Len(texto) ou objeto.length

Exemplo:

Dim nome As String = "Teste de Mid" MsgBox(nome.Length) MsgBox(Len(nome))

A função MID

Descrição: A função Mid retorna uma substring, ou seja, parte de uma string, delimitada pelos valores que indicam onde começa e qual o tamanho a ser retirado.

Sintaxe: Mid(texto, inicio, tamanho)

Exemplo:

Dim nome As String = "Teste de Mid" MsgBox(Mid(nome, 1, 5)) 'O Resultado será “Teste”. MsgBox(Mid(nome, 10, 3)) 'O Resultado será “Mid”.

As funções TRIM, RTRIM e LTRIM

Descrição: A função Trim remove os espaços de uma string. Remove espaços à direita, à esquerda e no meio.

Variação: Há outras duas funções similares ao TRIM que são LTRIM e RTRIM. Estas funcionam da mesma maneira, a diferença é que LTRIM remove espaços apenas à esquerda e RTRIM remove espaços à direita. LTRIM = Left Trim e RTRIM = Right Trim.

Sintaxe: TRIM(Texto), RTRIM(Texto), LTRIM(Texto)

Exemplos:

Dim nome As String = " Teste de TRIM " MsgBox(Trim(nome)) 'O Resultado será “TestedeTRIM”. MsgBox(LTrim(nome)) 'O Resultado será “Teste de TRIM ”. MsgBox(RTrim(nome)) 'O Resultado será “ Teste de TRIM”.

Note os espaços no resultado.

A função INSTR

Descrição: A função Instr procura por uma determinada letra ou frase dentro de uma string e retorna um valor indicando a posição onde começa esta frase.

Sintaxe: INSTR(posicao_inicial, Texto, Frase)

Exemplos:

Dim texto As String = " Teste de INSTR Teste " MsgBox(InStr(1, texto, "Teste")) 'O Resultado será 5. MsgBox(InStr(6, texto, "Teste")) 'O Resultado será 20.

Page 37: Visual Basic 2008

Nesta função a contagem se inicia em 1. No primeiro exemplo ele procura por Teste desde o começo da string. No segundo exemplo ele começa na casa 6, ou seja só vai localizar a frase Teste no final da string.

As funções CHR e ASC

Descrição: As funções CHR e ASC servem para converção. A função CHR converte um caractere em valor ASCII, enquanto a função ASC converte um valor ASCII em caractere. ASCII é uma tabela de padrão internacional para representar os caracteres do teclado. Eles vão de 0 à 255, portanto, possuem 256 posições e representam 1 byte.

Sintaxe: CHR(codigo), ASC(caracter)

Exemplos:

MsgBox(Chr(88)) 'O Resultado será X MsgBox(Asc("B")) 'O Resultado será 66 MsgBox(Chr(66)) 'O Resultado será B MsgBox(Asc("X")) 'O Resultado será 88

Bom para sabermos qual tecla o usuário pressionou, para sabermos o valor de uma tecla, etc.

As Funções UCASE e LCASE

Descrição: As funções UCASE e LCASE servem para converter uma string para maiúsculo e minúsculo respectivamente

Sintaxe: UCASE(Texto), LCASE(Texto)

Exemplos:

Dim texto As String = "Teste de UCASE/LCASE" MsgBox(UCase(texto)) 'O Resultado será "TESTE DE UCASE/LCASE" MsgBox(LCase(texto)) 'O Resultado será "teste de ucase/lcase"

Para finalizar o VB2008 agora possui uma nova maneira de concatenação de strings chamado stringbuilder. Ele é muuuuuito mais veloz que usar os operados + ou &. Isso porque trabalha diretamente na memória. Exemplo:

Dim strBuilder As New System.Text.StringBuilder strBuilder.AppendLine("Texto A") strBuilder.AppendLine("Texto B") strBuilder.AppendLine() strBuilder.AppendLine("Texto D")

' Resultado MsgBox(strBuilder.ToString)

Page 38: Visual Basic 2008

7 – Operadores

As operações condicionais fornecem a forma de controlar o fluxo do programa, uma vez que nos permite decidir o que se pode fazer com determinado dado que fora preenchido pelo usuário, ou mesmo a tomada de decisão de continuação do fluxo.

Podemos através de uma condição decidir qual caminho seguir, e desta forma dar um retorno ao usuário. Exemplificando, podemos decidir se o usuário poderá digitar números em um campo, ou somente letras. Com isso, resolvemos problemas de tomada de decisão, uma capacidade básica da inteligência; não que o computador será inteligente, mas que o programador o fará.

Sendo assim, para controlarmos o fluxo do programa, ou mesmo para tomada de decisão, precisamos usar operadores condicionais (>, <. =, etc.) e operadores lógicos (AND, XOR, OR, etc) e os controles estruturais (IF, Select Case, etc.)

7.1 - Operadores Condicionais

Os operadores condicionais são ferramentas matemáticas que permitem à linguagem uma comparação de dados gerando assim a tomada de decisão e a continuidade do fluxo do programa. Geralmente comparações são feitas para verificar se um valor é maior, menor ou igual a outro, e o resultado é uma condição falsa ou verdadeira que indica qual decisão o sistema deve tomar. Vejamos na tabela abaixo estes operadores.

Operador

Significado

=

Igual a

>

Maior que

<

Menor que

>=

Maior e igual a

<=

Menor e igual a

<>

Diferente

Vamos ver agora novos operadores que estão disponíveis no VB2008. São eles:

Operador

Significado

&=

Concatena duas strings e salva o resultado na primeira.

*=

Multiplica dois valores e salva o resultado na primeira variável.

^=

Page 39: Visual Basic 2008

Eleva o primeiro valor ao exponencial do segundo e salva o resultado na primeira variável.

+=

Faz a soma de dois valores e salva o resultado na primeira variável.

-=

Faz a subtração de dois valores e salva o resultado na primeira variável.

/=

Faz a divisão de dois valores e salva o resultado na primeira variável.

\=

Faz a divisão de dois valores e salva a parte inteira do resultado na primeira variável.

<<

Faz a rotação de bits para a esquerda.

<<=

Faz a rotação de bits para a esquerda e salva o valor na primeira variável.

>>

Faz a rotação de bits para a direita.

>>=

Faz a rotação de bits para a direita e salva o valor na primeira variável.

Os 4 últimos operadores são complicados de explicar, mas para quem conhece números binários e já trabalhou com bits, ou assembly, deve-se lembrar de funções como ROL, ROR, SHL, SHR, etc... Estas funções servem para rotacionar os bits para a esquerda e para a direita gerando novos números. Então estes novos operadores nos permitem isto.

Apenas para aprendizado, vamos a um exemplo de rotação. Claro que para se aprofundar no seu uso, precisamos aprender outras coisas sobre números binários, mas fica para uma outra oportunidade. USEM SEMPRE O GOOGLE para aprendizado extra!

Dim Valor As Short = 192

Dim res1, res2, res4, res4, res5 As Short res1 = pattern << 0 res2 = pattern << 4 res3 = pattern << 9 res4 = pattern << 17 res5 = pattern << -1

Os resultados do exemplo anterior serão o seguinte:

• res1 é 192 (0000 0000 0000 1100).

• res2 é 3072 (0000 1100 0000 0000).

• res3 é-32768 (1000 0000 0000 0000).

• res4 é 384 (0001 0000 0000 1000).

• res5 é 0 (deslocadas 15 casas à esquerda).

O valor de deslocamento para res4 é calculado como 17 AND 15, que é igual a 1.

O valor representado entre parênteses é o valor binário do número em questão.

Page 40: Visual Basic 2008

Os operadores &=, +=, -=, *=, etc. funcionam da seguinte maneira:

Dim res1, res2, res3, res4, res5 As Integer

res1 = 1 res2 = 2 res3 = 5 res4 = 9 res5 = 10

res1 += 3 res2 -= 5 res3 *= res1 res4 /= 3 res5 \= 4

Os resultados do exemplo anterior serão o seguinte:

• res1 é 4 (1+3)

• res2 é -3 (2-5)

• res3 é 20 (5 * 3)

• res4 é 3 (9 / 3)

• res5 é 2 (10 / 4)

Muito útil não? Eu também gostei dessa alteração no VB2008. Antes, você precisava fazer da seguinte forma para obter o mesmo resultado:

Dim res1, res2, res3, res4, res5 As Integer

res1 = 1 res2 = 2 res3 = 5 res4 = 9 res5 = 10

res1 = res1 + 3 res2 = res2 - 5 res3 = res3 * res1 res4 = res4 / 3 res5 = res5 \ 4

7.2 - Operadores Lógicos

Muitas vezes, precisamos fazer mais de uma comparação na mesma tomada de decisão, é nesta hora que entra em ação os operadores lógicos. Eles nos permitem mais de uma análise para que possamos decidir para onde o fluxo segue.

O VB2008 inclui mais dois operadores que não existiam no Visual Basic 6, que são AndAlso e Orelse. Veremos agora todos esses operadores:

Operador

Significado

And

Os dois lados precisam ser verdadeiros

Or

Qualquer um dos lados precisa ser verdadeiro.

Xor

Page 41: Visual Basic 2008

Um dos lados precisa ser verdadeiro, mas não ambos.

Not

Nega a sentença, ou seja, inverte a lógica.

AndAlso

Similar ao AND, no entanto quebra a seqüência se a primeira condição for falso.

OrElse

Similar ao OR, mas quebra a seqüência se a primeira condição for verdadeira.

  Orelse e Andalso funcionam exatamente iguais aos outros operadores OR e AND respectivamente, no entanto eles economizam comparações. No caso do OrElse, uma vez que uma das condições seja verdadeira, ele automaticamente considera toda a sentença verdadeira. Já o AndAlso automaticamente considera toda a sentença falsa se uma das condições for falsa. Traduzindo ao pé da letra, OrElse quer dizer (Ou Então) e AndAlso (E também).

Vamos a um exemplo prático.

Dim numero As Integer = 10

If numero < 9 AndAlso numero = 2 AndAlso numero <> 3 Then MsgBox("Numero igual a 10(AndAlso)") End If

If numero < 9 And numero = 2 And numero <> 3 Then MsgBox("Numero igual a 10(And)") End If

If numero < 9 OrElse numero <> 3 OrElse numero = 2 Then MsgBox("Numero igual a 10(OrElse)") End If

If numero < 9 Or numero <> 3 Or numero = 2 Then MsgBox("Numero igual a 10(Or)") End If

Quando você executar o código acima, notará que ele entra no Or e no OrElse, então qual a diferença? Simples, no OrElse quando a primeira condição verdadeira for encontrada, ele considera tudo verdadeiro, ou seja, o número é menor que 9? Não, então ele vai pra segunda verificação. O número é diferente de 3? Sim, encontramos a condição verdadeira então ele realiza um Curto-Circuito e termina a verificação ali mesmo, validando a sentença. Porém no caso do OR, ele faz todas as verificações, inclusive a última, para checar se o número é igual a dois, no entanto como uma das condições é verdadeira ele aceita como verdadeira a sentença, mas neste caso, ele verificou todas as condições. Qual a vantagem do uso do OrElse? Tempo de processamento, em um IF comum é pouca coisa, mas em um Laço (Loop) pode fazer toda a diferença. Mas... O que é um laço? Veremos a seguir...

Ahhhh e sobre o AndAlso? É o mesmo princípio, a partir do momento que ele verificar que uma das condições é falsa, ele faz o curto-circuito e considera a sentença inválida.

Lembremos que os operadores lógicos são operadores Booleanos, ou seja, trabalham com Falso e Verdadeiro, ou 1 e 0, se preferir. Vamos conhecer como funcionam as lógicas dos operadores booleanos.

AND

Se a primeira expressão for E a segunda expressão O resultado será

Verdadeira Verdadeira Verdadeiro

Page 42: Visual Basic 2008

Verdadeira Falsa Falso

Falsa Verdadeira Falso

Falsa Falsa Falso

ANDALSO

Se a primeira expressão for E a segunda expressão O resultado será

Verdadeira Verdadeira Verdadeiro

Verdadeira Falsa Falsa

Falsa Não será avaliada Falso

OR

Se a primeira expressão for E a segunda expressão O resultado será

Verdadeira Verdadeira Verdadeiro

Verdadeira Falsa Verdadeiro

Falsa Verdadeira Verdadeiro

Falsa Falsa Falso

ORELSE

Se a primeira expressão for E a segunda expressão O resultado será

Verdadeira Não será avaliada Verdadeiro

Falsa Verdadeira Verdadeiro

Falsa Falsa Falso

XOR (Ou Exclusivo)

Se a primeira expressão for E a segunda expressão O resultado será

Verdadeira Verdadeira Falso

Verdadeira Falsa Verdadeiro

Falsa Verdadeira Verdadeiro

Page 43: Visual Basic 2008

Falsa Falsa Falso

NOT (Negação/Inversão)

Neste caso o verdadeiro se torna falso e vice-versa. Pode ser usado em apenas uma condição, ou em um conjunto de condições, por exemplo:

Not (a>b or b<3 andalso x>=7)

Caso a expressão entre parênteses resulte em falso, a seqüência tornar-se-á verdadeira e o contrário também é válido, se o resultado for verdadeiro, tornar-se-á falso.

NOT

Se a primeira expressão for O resultado sera

Verdadeira Falso

Falsa Verdadeiro

Há ainda outros operadores, como o IsNot (Inverso do Not) IsFalse, IsTrue, Is, TypeOf, etc. Basicamente IsTrue e IsFalse trabalham com o resultado de OrElse e Andalso respectivamente. Eles não podem ser referenciados de forma direta no código, no entanto, suas funções podem ser sobrecarregadas e alteram de forma direta como OrElse e Andalso funcionam. Aproveitando, quando falamos em sobrecarga, quer dizer que podemos definir uma nova função para um operador já existente. Por exemplo, Digamos que você quer que o operador +(soma) faça um calculo doido, além de somar, ele deve multiplicar. Logo você sobrecarrega o operador definido novas funções pra este. Mas note que sua alteração será válida para todo o sistema, ou seja, toda vez que você usar o + para somar, ele somará e multiplicará seguindo nosso exemplo acima.

Para finalizar, quero lembrar que normalmente, estes operadores são usados para comparações numéricas. No entanto podem ser utilizados para comparação de strings. Neste caso, devemos notar algumas regras: Letras maiúsculas são menores que letras minúsculas, e números são menores que letras.

8 – Estruturas de decisão

8.1 - Estruturas IF

A estrutura IF (SE em português) serve para desvio de fluxo, e geralmente tem três tipos básicos que são: IF ... Then, IF ... Then ... Else e IF ... Then ... ElseIF.

8.2 - Estrutura IF ... Then

É o mais simples dos três tipos. Verifica a condição ou condições e caso sejam verdadeiras, executa as instruções que estiverem dentro do bloco. Porém se as condições forem falsas, nenhum código é executado, e ele vai imediatamente para o código após o bloco. Vejamos:

Sintaxe:

IF condições = True Then

código

End If

Não há a necessidade do uso de TRUE, por padrão ele compara a condição e verifica se é verdadeira, só executando o código do bloco se for verdadeira. Portanto, usemos desde já o código correto, ou seja:

Page 44: Visual Basic 2008

Sintaxe:

IF condições Then

Código

End If

Exemplo:

Dim numero As Integer = 1

If numero < 9 AndAlso numero = 2 AndAlso numero <> 3 Then MsgBox("Numero igual a 10(AndAlso)") End If

Este exemplo lhe parece familiar não?

8.3 - Estrutura IF ... Then ... Else

Quando se usa apenas o IF THEN, o código não é eficiente, pois o usuário não tem

escolha, se quiser executar um código este sempre tem de ser verdadeiro. Quando utilizamos o

ELSE, ele nos permite essa modalidade, assim, podemos executar tanto códigos sendo

VERDADEIRO como código sendo FALSO. Vamos à sintaxe e ao exemplo:

Sintaxe:

IF condições Then

‘Código para condição verdadeira

Else

‘Código para condição falsa

End If

Exemplo:

Dim numero As Integer = 1

If numero > 1 Then MsgBox("Numero maior que 1") Else

MsgBox("Número menor ou igual a 1") End If

Certo, estamos quase lá. E se por acaso eu tiver mais do que duas comparações, o

que eu faço? A resposta é ELSEIF.

8.4 - Estrutura IF ... Then ... ElseIf

Caso queiramos mais de duas verificações, precisamos usar o ElseIf que na tradução

livre é EntãoSe. Ou seja, caso a primeira condição não seja satisfeita, posso fazer uma nova

condição para teste. Podemos usar o ELSE neste caso também, mas teremos em mente que é

Page 45: Visual Basic 2008

um último caso, ou seja, se nenhuma das condições forem satisfeitas, usamos o ELSE como

alternativa e último recurso para enviar uma mensagem ao usuário. E como eu uso o ELSEIF?

Simples...

Sintaxe:

IF condições THEN

‘Código para condição verdadeira 1

ELSEIF condições THEN

‘Código para condição verdadeira 1

ELSE

‘Código para condição falsa

‘Caso nenhuma condição anterior seja verdadeira, este bloco será executado.

‘ No entanto, seu uso não é obrigatório.

END IF

Exemplo:

Dim numero As Integer = 1

If numero > 1 Then MsgBox("Numero maior que 1") ElseIf numero = 1 Then

MsgBox("Número igual a 1") Else

MsgBox("Número menor que 1") End If

É isso, espero que tenham entendido as estruturas IF.

8.5 - Select Case

O Select Case não é muito diferente do IF...THEN.

Ele funciona da seguinte maneira: Testa uma expressão, então percorre todos os valores de validação, se encontrar o valor correspondente ao teste executa o bloco de comandos e sai do Select Case. Caso não encontre um teste válido, procura pelo Case Else, encontrando-o executa seu bloco de comandos, e caso não encontre sai do teste.

Sintaxe:

Select Case [Expressões] Case [Teste] 'Se as [Expressões] = [Teste] Então [Bloco de Comandos] Case Else 'Aqui funciona da mesma forma que o Else do IF. [Bloco de Comandos] End Select

Exemplos:

Page 46: Visual Basic 2008

Dim nota As Single

nota = 7.3

Select Case nota Case 0 To 5.9 MsgBox("Nota Baixa") Case 6 To 7.9 MsgBox("Nota Média") Case 8 To 9.9 MsgBox("Nota Alta") Case Is = 10 MsgBox("Nota Máxima") Case Else MsgBox("Nota Errada") End Select

Neste primeiro exemplo, verificamos algumas notações de testes que podem ser feitos, como o uso do TO que também usaremos no FOR...NEXT, o uso do operador IS e o Case Else.

Dim numero As Integer = InputBox("Acerte o número que escolhi: ")

Select Case numero Case 0, 1, 2 MsgBox("Aumente") Case 3 To 7 MsgBox("Tá próximo") Case Is = 8 MsgBox("Quase") Case Is = 9 MsgBox("Acertou") Case Is > 10 MsgBox("Tá ficando longe") Case Else MsgBox("Número Inválido") End Select

Já no segundo exemplo, aprendemos como usar a função InputBox para pegar um número de entrada, ou seja, um número digitado pelo usuário, e aprendemos outros teste que podem ser usados, como a vírgula para separar números e o IS com o operador de maior (>).

ATENÇÃO: O segundo exemplo vai gerar um erro, caso você não digite algum número, ou clique em cancelar. É proposital, pois ainda não falamos sobre tratamento de erros, mas é simples entender o motivo do erro. Não se pode comparar String com Integer a não ser que sejam passíveis de conversão. O que isto quer dizer? Quer dizer que, se compararmos “1” = 1 é válido, pois apesar do primeiro ser String, pode ser convertido para um número. Entretanto, se compararmos “Arroz” = 2, vai dar erro, pois uma string não pode ser um número e vice-versa. Só para conhecimento, explicaremos como funciona mais tarde, vamos conhecer a mensagem de erro que o código apresentará caso não seja um número o informado no inputbox.

Page 47: Visual Basic 2008

Portando fica claro que o Select Case é tão simples de usar quanto o IF, basta você pegar a essência. O que muda é apenas a forma do Teste. Com o exemplo acima dá pra notar a facilidade do Select Case. Muitas vezes é muito mais prático que o IF, porém seu uso é facultativo, pois ambos os testes possuem a mesma função.

Page 48: Visual Basic 2008

9 – Estruturas de Repetição (Loop)

Agora que aprendemos sobre estruturas de decisão, vamos conhecer algo sobre laços de repetição (loops).

O VB2008 permite que uma seqüência de comandos seja executada quantas vezes forem necessárias, até o limite em que o processador agüentar. Basicamente todas as linguagens permitem isto, pois é uma repetição de processos. Essa repetição é conhecida como laço, ou loop.

Os loops servem para que possamos repetir um bloco de comandos até que alguma condição seja satisfeita. Podemos por exemplo iniciar um contador somando um valor X para sabermos quantas vezes uma determinada tarefa foi realizada. Podemos fazer um laço para validar um login, assim o usuário só consegue acessar o sistema se validar a senha, senão o sistema permanece pedindo que o usuário entre com os dados corretamente, etc. Há uma infinidade de uso para laços.

No VB2008 temos basicamente três tipos de laço, são eles: Do ... Loop, While ... Wend e For ... Next.

Podemos dizer que laços e operações condicionais/lógicas são o coração dos sistemas.

9.1 - For ... Next

O laço for possui basicamente um contador que é uma variável que guarda o valor que será somado ou subtraído e utilizado como guia de contagem. Além disso, os limites inferiores e superiores, que são os valores base para a contagem, e por fim o tamanho do incremento, que é o tamanho de cada passagem do laço, ou seja, é o número que indica a variação de soma ou subtração que ocorrerá a cada passagem.

ATENÇÃO:

• Por padrão o incremento é um (1).

• Uma outra informação importante é que o contador pode também ir do número maior para o menor, basta inverter o limite_inferiro com o limite_superior.

• O Next contador não é obrigatório, você pode usar apenas Next, mas por convenção e para sabermos qual Next é de qual For, aconselho a usá-lo.

• Para sair do laço, use o Exit For.

Sintaxe:

For contador = limite_inferior To limite_superior Step incremento 'Comandos Next contador

Exemplo:

Dim i As Integer

For i = 0 To 12 Step 2 MsgBox(i) Next i

Page 49: Visual Basic 2008

Este é um exemplo onde iremos mostrar todos os números pares de 0 até 12.

No segundo exemplo mostramos como sair do laço For caso haja necessidade, apesar que não é aconselhável seu uso, pois indica erro na lógica da codificação, no entanto não é proibido.

Outra coisa que me lembrei e, não sei se ainda é assim, mas até onde eu saiba, o FOR é executado no co-processador matemático, o que garante uma maior velocidade e a liberação do processamento do sistema, ou seja, colocando em uma thread ficará muito mais rápido e liberará o processo para a continuação de outros procedimentos. Thread é um assunto que não abordaremos nesta apostila, mas basicamente consiste em permitir que mais de uma função seja executada ao mesmo tempo, é a forma como o Windows trabalha, ou seja multitarefa. Apesar, que isto é tema de muita discussão, mas hoje em dia com os processadores Dual-Core é certo que pode haver multitarefa real!

Voltando ao exemplo...

Dim n As Integer

For n = 1 To 10 If n > 6 Then Exit For Else MsgBox("Imprimindo o número: " & n) End If Next 'Quando atingir 6, o laço será terminado.

Note que estamos forçando o término do laço, desta forma, o laço não verifica nada, apenas sai ao encontrar o Exit For.

9.2 - Do ... Loop

Funciona de forma parecida ao For, no entanto permite que o teste seja feito em lugares e de formas diferentes.

Há quatro possibilidades de seu uso, vejamos...

Sintaxe:

Do While condições 'Comandos Loop

Do 'Comandos Loop While condições

Do Until condições 'Comandos Loop

Do 'Comandos Loop Until condições

Page 50: Visual Basic 2008

Exemplos:

Do While n <= 10 MsgBox(n) n += 1 Loop

Este exemplo mostra o incremento de n de 1 em 1. Ele fará o Laço até que n seja igual a 10. Os outros laços funcionam da mesma maneira, a diferença está na leitura. Traduzirei de forma livre os laços para que entendam para que servem e qual a diferença.

Do While = Faça Enquanto (a condição for válida)

Loop While = Repita Enquanto (a condição for válida)

Do Until = Faça até que (a condição seja válida)

Loop Until = Repita até que (a condição seja válida)

A diferença sutil está no fato de que o enquanto (WHILE) faz com que o laço seja executado ENQUANTO aquela condição for válida, assim que ela deixar de ser, o laço é encerrado. Já o até que (UNTIL) executa até que a condição seja atendida, ou seja, enquanto determinada condição não for satisfeita o laço continua em execução. Sacaram?

Uma outra coisa importante de se notar, é que os nos laços FOR... NEXT o contador é incrementado automaticamente, já nos laços DO e WEND você precisa incrementar o contador por conta própria. A diferença é que você não precisa necessariamente de um contador, você pode utilizar condições, esta é a grande vantagem dos laços DO e WEND. Por exemplo:

Dim nome As String = "João"

Do While UCase(nome) = "JOÃO" nome = InputBox("Digite um Nome:") Loop

No exemplo acima ele fica no laço até que o usuário digite algo diferente de João. Aproveitamos para aprender mais uma função, o UCASE; esta função converte a string para maiúscula, ou seja, tanto faz se ele digitar JOÃO ou João que será a mesma coisa.

Para finalizar, lembra-se do EXIT FOR? Então, ele vale aqui também, mas no caso do DO usamos EXIT DO. Ok?

9.3 - While ... End While

O uso é o mesmo do laço DO, acredito que o While ... End While fora mantido apenas para efeito de compatibilidade. Muitos programadores utilizam este método de laço. Não há diferença na execução, apenas na sintaxe. E para não dizer que não falei das flores, o Exit While também existe!

Exemplo:

Dim nome As String = "João"

While UCase(nome) = "JOÃO"

Page 51: Visual Basic 2008

nome = InputBox("Digite um Nome:") End While

10 - Funções (Functions) e Rotinas (Procedures)

Uma função é similar a uma rotina exceto pelo fato que uma função retorna um valor para o código que a chamou. A rotina é um bloco de comandos limitado pelos códigos chave SUB e END SUB que executam determinadas funções. Serve para manter o sistema organizado. Na verdade são conhecidas como Sub-funções daí a palavra chave SUB.

Há dois tipos de funções. As que são criadas pelos programadores, e as que já fazem parte do Framework. Já usamos algumas delas para demonstração de exemplos. Msgbox é uma função do framework que permite mostrar mensagens na tela para interação com o usuário. Quando eu digo que fazem parte do framework, quero dizer que estas funções já foram desenvolvidas por outros programadores, e estão disponíveis juntamente com as Dlls do framework.

Vamos conhecer a sintaxe de uma procedure e de uma function para entendermos seu funcionamento.

Sintaxe:

Function Nome_da_Funao(ByVal argumentos As Tipo) As Tipo_Retorno'Comandos

End Function

Temos o nome da função após a palavra reservada Function. Entre parênteses, temos os argumentos (seguem o mesmo padrão de tipos de variáveis), ou seja, podem ser do tipo String, Integer, Boolean, etc. Estes são os argumentos de entrada. Ou seja, os dados que a função receberá para processamento. E por fim, temos o Tipo_Retorno que também é um tipo de variável, porém neste caso é utilizado para o retorno da função, ou seja, quem chamou a função vai receber como resposta um valor expresso no tipo escolhido em Tipo_Retorno. Está um pouco confuso ainda né? Mas depois de vermos um exemplo de função tudo fica mais simples, então vamos lá:

Option Explicit On

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles MyBase.Load MsgBox(SomaAB(10, 5)) End Sub

Function SomaAB(ByVal Valor_A As Integer, ByVal Valor_B As Integer) As Integer SomaAB = Valor_A + Valor_B End Function

End Class

A função SomAB pega os valores Valor_A e Valor_B que são passados durante a chamada da função e retornam o valor da soma desses valores. Ficou mais fácil agora?

Bom, se entenderam como funciona uma função mais fácil ainda será entender uma Sub.

Como dito funciona da mesma maneira que uma função, a diferença é que não retorna um valor, vamos ver o mesmo exemplo acima sendo executado por uma Sub:

Page 52: Visual Basic 2008

Option Explicit On

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles MyBase.Load SomaAB(4, 3) End Sub

Sub SomaAB(ByVal Valor_A As Integer, ByVal Valor_B As Integer) MsgBox(Valor_A + Valor_B) End Sub

End Class

A diferença é visível. Não retornamos um valor para a parte que chamou a sub, portanto o msgbox neste caso foi colocado dentro da sub, uma vez que esta não retorna um valor para ser processado.

Não vamos encerrar o assunto, mas todos os modificadores que aprendemos (Private, Public, Shared, etc) são utilizados em funções e rotinas também para indicar o nível de acesso.

Lembramos também do EXIT. Eles também existem em funções e sub-funções. E respectivamente são: Exit Function e Exit Sub.

Por hora, isto é tudo o que precisamos saber sobre funções e rotinas.

Page 53: Visual Basic 2008

11 - Programas desenvolvidos em VB6 requerem uma alteração significativa para rodar

no VB.NET

Vejamos as diferenças e melhor forma de conversão.

A grande mudança entre o VB6 e o VB.NET é o ambiente de execução. VB6 usava Dlls

VB-Runtime, enquanto o VB .NET adere ao Common Language Specification (CLS) para

permitir a interoperabilidade da linguagem, a qual é compartilhada com o C#.

VB6 usava a sintaxe ‘On Error Goto’ para tratamento de erros em tempo de execução.

O VB.NET usa a sintaxe ‘Try…Catch…Finally’. Muito mais poderoso.

Muitas partes do código no VB6 (como a interface do usuário) era oculta para o

desenvolvedor. No VB.NET nenhum código é Escondido do desenvolvedor e você pode

acessar e controlar cada parte do seu aplicativo.

Não há mais o tipo Variant, nem o Currency no VB2008, e outros formatos foram

adicionados. Abaixo veremos estas mudanças:

VB2008(.NET

)

VB6 Diferença

Short Integer 16 Bit

Integer Long 32 Bit

Long 64 Bit

Object Variant Object é similar ao tipo variant.

Decimal

String String Não há mais strings de tamanho fixo no VB2008.

Currenc

y

Agora usa-se Decimal ou Long no VB2008.

VB6 era considerada uma linguagem boa para desenvolvimento de sistemas desktop

para windows. No VB2008, além disso, ele facilita muito o desenvolvimento de projetos Web.

Agora, você desenvolve facilmente aplicações para a internet, aplicativos distribuídos,

componentes e webservices.

Page 54: Visual Basic 2008

No VB.NET, você também pode usar reflections para ler meta-dados tipados e usando

reflection você também pode gerar código para definir e usar tipos em tempo de execução.

A vantage do VB.NET é sua plataforma, uma vez que utilize um framework, permite

que o sistema rode em qualquer plataforma que possua o framework instalado. Apesar de ser

um pacote grande o framework, hoje em dia ele já vem instalado nos sistemas operacionais, e

praticamente a maioria das pessoas já o possui, pois todos os programas desenvolvidos em

.NET precisam dele para funcionar.

VB.NET também permite a interoperabilidade da linguagem, uma vez que você pode

compartilhar códigos desenvolvidos em outras linguagens .NET. O VB6 tinha suporte para

interoperabilidade através de COM (Component Object Model), mas sua criação e uso eram

muito limitados, além de serem complicados de se gerenciar. O VB.Net torna isto fácil por

causa da linguagem intermediária (IL) e pela Linguagem Comum de especificações (CLS).

Componentes criados no VB6 (COM) precisam alterar o registro toda vez que são

atualizados. O VB2008 não requer qualquer entrada no registro, o que torna o desenvolvimento

e a atualização fáceis.

O CLR (coletor de lixo) também é mais eficiente que o do VB6 e detecta referências

cíclicas.

VB6 usava ADODB e recordsets para implementar o acesso à dados. VB.NET usa

ADO.NET e datasets para isto. O ADO.NET também suporta acesso desconectado aos dados.

ADO.NET funciona melhor com aplicações Web.