Baixe o app para aproveitar ainda mais
Prévia do material em texto
Microsoft Visual Basic 4.0 1 Módulo 1 Criando Aplicações Visual Basic 1.1 Programação Procedural Versus Programação Orientada a Eventos Na programação procedural, ou seja, baseada nas chamadas de procedimentos/rotinas, a aplicação em si inicia na primeira linha do código e segue um fluxo determinado pelo próprio programa, durante a sua execução. Devido a essa característica, o usuário se vê amarrado à forma de trabalho da aplicação. Na programação orientada a eventos, as ações do usuário (comumente denominadas eventos) determinam o fluxo de execução do programa, ou seja, qual procedimentos/rotina será chamada. Isso significa que um programa desenvolvido com base nessa técnica, as chamadas das rotinas dependem dos eventos que ocorrem, em outras palavras, dependem do que o usuário fará ou não. Portanto, com base nisso, podemos definir um evento como sendo uma ação reconhecida por um controle, que nada mais é que um objeto adicionado ao formulário. Os diversos controles do Visual Basic (campos de entrada, lista de opções, caixas de seleção, etc.) reconhecem e respondem a um conjunto predefinido de eventos. Para que um controle responda a um evento de uma forma particular, você deverá escrever um procedimento na linguagem Visual Basic e atribuir esse código ao evento desejado. Por exemplo, você pode escrever uma rotina para avançar para o próximo registro de uma tabela de dados assim que o botão identificado pela Microsoft Visual Basic 4.0 2 legenda Avança de um formulário for pressionado. Você então atribui o nome dessa rotina ao evento Click do botão. Assim, toda vez que o botão for pressionado através de um clique do mouse, a rotina será chamada. Após o término de sua execução, haverá o retorno automático ao formulário. Podemos perceber então que o primeiro passo no desenvolvimento de uma aplicação no Visual Basic consiste na criação dos formulários, aplicando- lhes os controles (botões de ação, menus, caixas de listagem, caixas de combinação, etc.). Após isso passamos ao desenvolvimento das rotinas que serão vinculadas aos controles do formulário. Note que essa técnica difere do processo antigo, em que primeiro o programador definia o que seria feito pelo programa (desenvolvia as rotinas), para depois pensar na interface com o usuário. Agora o mesmo programador sentir-se-á mais livre da árdua tarefa de elaboração dessa interface, já que o Visual Basic executa a maior parte do processo, tendo assim mais tempo para se concentrar nas rotinas principais do programa. Isso torna a tarefa de desenvolvimento de aplicações mais produtiva. Do lado do usuário, um programa orientado a eventos é mais fácil de assimilar e utilizar, pois ele reflete a maneira como uma pessoa trabalharia no mundo real. Não há necessidade de se adaptar ao aplicativo. 1.2 Criando um programa Visual Basic Prática : Adicionar no formulário : 1 command : Propriedade Caption = &OK 1 Label : Propriedade Caption = Nome 1 Textbox : Limpar Propriedade Text 1 Label : Propriedade Caption = Endereço 1 Textbox : Limpar Propriedade Text Nomeá-los :Na janela de propriedades colocar no campo Name o nome com o prefixo indicativo do tipo de objeto. Microsoft Visual Basic 4.0 3 Exemplos: Objetos Prefixo Exemplo form frm frm_cliente check box chk chkapenasleitura combo box cbo cboidioma image img imgicon label lbl lblnome menu mnu mnufileopen text box txt txtnome Dica: Para chamar o Help clique no ícone e tecle F1 1.3 Algumas Propriedades Podemos defini-las em tempo de projeto ou em tempo de execução: • Tempo de Projeto : No objeto lblnome - clique sobre o objeto uma vez. Propriedade caption : vai para janela de propriedades. Resultado : &NOME ⇒ NOME ( Tecla de Atalho ALT+N ) • Tempo de Execução : No objeto txtnome - dê um double clique no objeto. No evento txtnome_click( ) - colocar : txtnome.text = “BOCA” ou lblnome.caption = txtnome.text Sempre: <nome objeto.propriedade> = <valor>. Executar ⇒ Clicar sobre o Label Nome. No objeto Form colocar : Caption exemplo Name frmexemplo Backcolor ( escolher ) Fillstyle ( escolher ) Microsoft Visual Basic 4.0 4 Uma proprieddade de um objeto1, pode ser alterada em tempo de execução por outro objeto2 1.4 Métodos Os métodos determinam a realização de uma ação para um determinado objeto. Essa ação quem define é o programador. Exemplos : txtnome.setfocus { posiciona o ‘foco’ para a caixa de texto do objeto txtnome}. lblcodigo.move 0,0 { posiciona o objeto lblcodigo para as coordenadas 0,0}. txtfrase.textwidth { retorna o tamanho da string do objeto txtfrase}. frmcliente.hide { esconde, mais permanece na memória principal, o objeto frmcliente}. 1.5 Eventos É uma ação reconhecida por um formulário ou por um controle, o agente da ação pode ser : o usuário ou o código. Exemplos : click dblclick keypress load gotfocus lostfocus Microsoft Visual Basic 4.0 5 1.6 Formulários e Controles Básicos Formulários O usuário interage com os controles no formulário para obter resultados Algumas Propriedades para Formulários backcolor ⇒ cor do fundo borderstyle ⇒ estilo da moeda caption ⇒ cabeçalho name ⇒ nome do objeto Alguns Métodos para Formulários hide ⇒ esconde nome ⇒ movimenta o formulário print ⇒ imprime setfocus ⇒ ativa o formulário show ⇒ mostra na tela o formulário ( semelhante chamada de rotina ). Alguns Eventos para Formulários click ⇒ 1 click dblclick ⇒ 2 clicks gotfocus ⇒ quando ele ganha o foco load ⇒ carrega mousedown ⇒ 1 click para baixo mouseup ⇒ 1 click para cima ( larga o botão ) unload ⇒ descarrega Obs. : Para obter mais informações, clique no formulário e tecle <F1>. Microsoft Visual Basic 4.0 6 Controle Label Mostra uma informação estática ( um rótulo). Exemplo : Fornecer instruções ao usuário. Nome ↑ ↑ label textbox Algumas Propriedades caption ⇒ rótulo font ⇒ tipo de letra autosize ⇒ tamanho automático appearance ⇒ aparência (2D,3D) Alguns Eventos (mais usados) click dblclick Controle Textbox Usado para obter informação do usuário. Obs. : Você pode utilizar o textbox em conjunto com o controle data, para exibir informações de um Banco de Dados Algumas Propriedades multiline ⇒ mais de uma linha passwordchar ⇒ senha ( **** ) Alguns Métodos Microsoft Visual Basic 4.0 7 move ⇒ move o objeto setfocus ⇒ deixa o objeto ativo Alguns Eventos change ⇒ qualquer alteração no campo click ⇒ evento clique gotfocus ⇒ evento ganho de foco Controle Commandbutton É utilizado para invocar uma ação. A maioria dos formulários possuem os controles OK e CANCEL Algumas Propriedades visible ⇒ visível ou não default ⇒ irá indicar que o botão é o que irá ficar ativo inicialmente quando o formulário for lido. ( note que deverá existir apenas um controle de comando default por formulário. Controle Combobox Permite que você selecione uma opção existente em uma lista pre- determinada, digitando-os em uma caixa de texto associada a esta lista Data Permite acessar dados armazenados em um arquivo de Banco de Dados. Algumas Propriedades Microsoft Visual Basic 4.0 8 editmode readonly top database Menu Permite a criação de menus personalizados para a sua aplicação, deixando-a com uma aparência mais profissional. Algumas Propriedades appearance name caption index Evento (único ) click Ole Container Insere no formulário outros aplicativos ( som, .doc, planilha excel, etc). Picture Box O controle picture box é utilizado para exibir imagens de arquivos bitmap, icon e metafile. Timer Permite a você executar certas partes de seu código a intervalos de tempo. ( Background ) Exemplo : A cada ‘ t ‘ segundos você pode verificar se foi realizada a inclusão de um nome ou você pode inserir a hora atual. Microsoft Visual Basic 4.0 9 File List Box Apresenta uma caixa de listagem de itens. Seu ícone no toolbox corresponde à figura de uma folha com a ponta direita superior dobrada. Adiante faremos um exercício para melhor entendermos esse controle. Prática 1 O Objetivo desta prática é fazer com que o aluno se familiarize com o ambiente e obtenha conceito básicos dos objetos do Visual Basic. Vamos simular um pequeno editor de texto para que você entenda como o controle Timer vai realizando tarefas em segundo plano (background). Dentro do seu aplicativo. Inclua no formulário : 1 textbox propriedades ⇒ multiline = true name = txtedit scrollbar = 2-vertical text = <apaga> 1 timer propriedades⇒ interval = 1000(ms), name = timer 1 label propriedades ⇒ caption = <apagar> name = lbltime Na seção General (geral) inclua o seguinte código: Public tempo as date No procedimento sub form_load() inclua: tempo = now No procedimento timer_timer inclua: Microsoft Visual Basic 4.0 10 lbltime.caption = format(now-tempo, “long time”) Execute sua aplicação. Prática 2 Para vermos como o controle FileListBox funciona, vamos fazer o seguinte: Crie um objeto FileListBox em um novo formulário e dê a ele o Nome = File1 (Já é o nome default dele!). Depois insira o seguinte código no evento click do formulário: Private Sub Form_Click () Dim nome As String, I As Integer, Msg As String ' Declarando variaveis. File1.Pattern = "Arquivo.*" ' Setando a forma geral do nome do arquivo For I = 1 To 8 ' oito vezes. nome = "Arquivo." & I Open nome For Output As FreeFile ' cria um arquivo vazio. File1.Refresh ' abre e atualiza o file list box. Close ' fecha ao arquivo. Next I Msg = "Tecle OK para remover os arquivos criados." MsgBox Msg ' mostra mensagem. Kill "Arquivo.*" ' Remove os arquivos de teste. File1.Refresh ' atualiza o filelistbox. End Sub Agora execute a aplicação. Prática 3 • Crie um formulário (form) {nomeie, escolha um caption} Microsoft Visual Basic 4.0 11 • Insira um textbox e um label {nomear, limpar textos} • No evento form_mousemove inclua o seguinte código: Fillcolor = qbcolor (int (rnd * 15)) ‘ sortea-se uma cor para o fundo da ‘circunferência Fillstyle = int(rnd * 8) ‘ sortea-se um grid para a circunf. Circle (x,y), 250 ‘ desenha um círculo No evento Textbox_change() inclua: Label_caption = textbox.text ‘o que for escrito no textbox sairá no caption ‘ do label Prática 4 • Crie um form {nome:login} • Desenhe o seguinte layout Forneça seu nome e sua senha para logar: Nome OK Command ⇒ cmd Ok cmd Cancela Senha Cancelar Label Textbox ⇒ txtnome txtsenha Obs .: Nomear todos os objetos Limpar textos dos texbox’s Microsoft Visual Basic 4.0 12 Inserir Código : cmdcancela_click() msgbox “Esse botão cancela a aplicação” end cmdok_click() msgbox “Nome do usuário = “ & txtnome.text & “, senha = “& txtsenha.text txtsenha_change() If txtnome.text<> “ ” and txtsenha.text<> “ “ then cmdok.enable = true endif txtnome_change() If txtnome.text <> “ “ and txtsenha.text <> “ “ then cmdok.enable= true endif Prática 5 Vamos fazer um programa em Visual Basic que calcule o número de dias (aproximado) vividos pelo usuário após ele ter fornecido a idade. Adicione a um formulário (abra um novo projeto) 4 label’s, 2 textbox’s e 2 command’s, conforme a figura abaixo : Form1 Label1 Text1 Microsoft Visual Basic 4.0 13 Label2 Text2 Comand1 Comand2 Label3 Label4 A seguir ajuste as propriedades conforme a tabela a seguir : Objeto Propriedade Valor Label1 Autosize Caption Name TRUE Entre com seu nome : lblNome Label2 Autosize Caption Name TRUE Entre com sua idade : lblidade Label3 Autosize Caption Name TRUE (nenhum) lblNomeResposta Label4 Autosize Caption Name TRUE (nenhum) lblidadeResposta text1 Name Text txtNome (nenhum) text2 Name Text txtIdade (nenhum Command1 Caption Name Default &OK btnOK TRUE Command2 Caption Name &Cancela btnCancela Form1 Caption Name Dias vividos Idade Obs : A propriedade “default” do objeto command1 está setada em “TRUE” para que inicialmente, quando o usuário teclar ENTER, acione o botão OK. Microsoft Visual Basic 4.0 14 A seguir inserir o código btnOK_click() DIM idade as integer, dias as long idade = val(txtidade.text) dias = idade * 365 lblNomeResposta.caption = txtnome.text lblidadeResposta.caption = “Você viveu até hoje aproximadamente “ &dias& “dias.” btnCancela_click() end Para executar : 1. 4 2. Criando um .EXE • Selecione opção Make EXE File do menu File. • Escolha Options. • No quadro Version Number podemos entrar com o número da versão do programa. • No quadro application podemos informar o nome do programa ou um ícone. • No quadro version information podemos comentar o programa. Clique OK duas vezes depois execute o programa através da pasta onde foi gerado o executável. 1.7 Criando Rotinas para Validação de Dados Como fazer para inibir a entrada de dados numéricos em um textbox alfabético e/ou a entrada de dados alfabéticos em um textbox numérico ? Microsoft Visual Basic 4.0 15 Faça o seguinte, crie um novo formulário com apenas um objeto (um textbox) e no procedimento Keypress (para achá-lo clique sobre a seta da caixa de combinação denominada Proc) do objeto textbox e insira o código: If keyascii >= asc(“0”) and keyascii <= asc(“9”) then keyascii = 0 Isso irá inibir a entrada de dados numéricos. Asc(X) - retorna a ordem de X na tabela ascii, então, se o caractere teclado estiver entre 0 e 9 o campo é realimentado. Para inibir entrada alfabética, insira o código a seguir em txtidade_keypress() : If keyascii < asc(“0”) or keyascii > asc(“9”) then keyascii = 0 Para convertermos caracteres alfabéticos, por exemplonomes de pessoas, para maiúsculos fazemos: Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii >= Asc("0") And KeyAscii <= Asc("9") Then KeyAscii = 0 ElseIf KeyAscii >= Asc("a") And KeyAscii <= Asc("z") Then KeyAscii = KeyAscii - 32 End If Módulo 2 Trabalhando com Formulários Microsoft Visual Basic 4.0 16 Cada formulário na sua aplicação é gravado com a extensão .FRM e contém: • As instâncias das propriedades do formulário e do controle. • Declaração das variáveis ao nível de formulário. Procedimentos e módulo “General”. {O código situado neste módulo pode ser “visto” por todos os procedimentos do formulário} 2.1 Configurando o Ambiente de Trabalho Menu Tools/Options Ambiente (Environment) Grid do formulário(Form design grid) : determina o espaçamento do grid do formulário. Janelas superiores(Windows on top) : Determina quais janelas sempre serão mostradas durante o projeto. Exige declarações de variáveis(Require variable declaration) : Determina a obrigatoriedade de declaração de variáveis (cuidado !!!) Checagem automática de sintaxe (Auto sintaxe check) : quando permitida fornece correção ao código durante implementação. Project Startup form : Indica qual formulário deverá ser executado incialmente. É comum o programador ter mais de um formulário em umaplicativo e com isso se esquecer de setar o início da execução para o formulário inicial. Vamos prestar atenção. Microsoft Visual Basic 4.0 17 Editor Fonte(Font) : Determina a fonte usada nos códigos. Tamanho(Size) : Determina o tamanho da fonte usada nos códigos. Cor do código(code color) : determina a cor do código. 2.2 Interagindo com o Usuário 2.2.1 Função MSGBOX Mostra informações ou questionamento ao usuário. Sintaxe : MSGBOX (Mensagem, [botão],[Título do Botão]) Mensagem - Informação enviada ao usuário. Botão - Tipo de caixa de diálogo + tipo de ícone. Valor Tipo de Ícone 16 ⊗ 32 ? 48 ! 64 i Valor Tipo de Caixa 0 OK 1 OK, Cancela 2 Aborta, Retorna, Ignora Microsoft Visual Basic 4.0 18 3 Sim, Não Cancela 4 Sim e Não 5 Retorna e cancela Valor Botão Default Ativo 0 1° Botão 256 2° Botão 512 3° Botão A função MSGBOX irá retornar um valor baseado no tipo de caixa escolhida. Botão Valor(constantes) OK vbok(1) Cancela vbcancel(2) Aborta vbabort(3) Retorna vbretry(4) Ignore vbignore(5) Yes vbyes(6) No vbno(7) Exemplo : Inserir o seguinte código em um objeto cmdaqui com caption = clique aqui. Clique Aqui No evento click do objeto cmdaqui insira o código Private Sub cmdaqui_Click() Dim Resposta As Integer Microsoft Visual Basic 4.0 19 Resposta = MsgBox("quer continuar?", 4 + 48 + 256, "mensagem") If Resposta = vbYes Then MsgBox "Escolheu SIM", 0 + 48 + 0, "Resultado" Else MsgBox "Escolheu NÃO", 0 + 48 + 0, "Resultado" End Sub 2.2.2 Caixa de Entrada (INPUTBOX Function) Esta função fornece um meio fácil de obter informações do usuário. É semelhante ao controle textbox, difere na emissão de uma caixa de diálogo. Sintaxe : INPUTBOX (Mensagem, Título da caixa, Mensagem Default) Exemplos: • Crie um objeto command (cmd) • No evento Dbclick insira o código Private Sub Form_DblClick() Dim arquivo As String arquivo = InputBox("Entre com o nome do arquivo", "Abrir Arquivo", "C:\") MsgBox "Arquivo " & arquivo & " aberto ! " End Sub Dica : Para mais informações, veja “INPUTBOX” no Help 2.3 Gerenciando Formulários Na maioria dos aplicativos a interface com o usuáro é composta por mais de um formulário. O formulário “STARTUP” é mostrado automáticamente quando a aplicação VB é inicializada. Microsoft Visual Basic 4.0 20 Ação Método ou Função Lê um formuláro na memória mas não mostra na tela LOAD Lê e mostra um formulário SHOW Mostra um formulário já lido SHOW Esconde um formulário mostrado na tela HIDE Esconde e tira da memória um formulário UNLOAD Exemplo : Frmform1.show Frmform1.hide Load Frmform1 Unload Frmform1 Formulário Modal ou Não-Modal Um formulário Modal não permite que o usuário interaja com outros formulários da aplicação ao mesmo tempo (como o “Save File as”) Um formulário Não-Modal permite que o usuário escolha entre os formulários. O método Show seta um formulário como modal ou não modal. Exemplo: Frmform1.show vbmodeless ‘ não modal Frmform1.show vbmodal ‘ modal Terminando uma aplicação END faz um Unload em todos os formulários e termina a aplicação. Microsoft Visual Basic 4.0 21 Prática 6 Faça um aplicativo que calcule raízes de um polinômio de grau dois. O polinômio é da forma : AX2 + BX + C = 0 Relembrando : A,B coeficientes da equação C termo independente Resolver uma equação do 2° grau é encontrar o valor ou os valores que se colocados no lugar da variável X, tornam a sentença verdadeira. A fórmula para encontra as raízes (X1,X2) é a seguinte: X = - B ± SQR( delta) , Delta = B^2 - 4AC 2A Os resultados deverão ser fornecidos por outro formulário. Você deverá fazer esta prática sozinho! Mesmo sem conseguir você estará assimilando com maior ênfase as características da programação orientada a evento e os “macetes” do ambiente Visual Basic. Deixe para olhar a resolução depois que você “eventualmente” se perdeu! Resolução: Passos : Microsoft Visual Basic 4.0 22 Crie um formulário com as seguintes propriedades : Name - Frmmain Caption - Equação do 2° grau Objetos : Label da Equação ientes A= 3 - Name lblB Caption B= - Name lblC o independente C= ular r 1 - Name lblDados Caption Dados 2 - Name lblA Caption Coefic 4 Caption Term Command 1 - Name cmdcalc Caption &Calcular Default TRUE 2 - Name cmdsai Caption &Sair Textbox 1 - Name TXTA Text <vazio> Microsoft Visual Basic 4.0 23 Maxlength 5 2 - Name TXTB Text <vazio> Maxlength 5 double , delta as double, A as double, B Raiz2 = (-(-b) - SQR(delta))/(2*A) FrmResultado.txtx1.text = Raiz1 Resultado.txtx2.text = Raiz2 FrmMain.Hide do.Show Elseif Delta = 0 then Raiz1 = (-(b) + SQR(delta))/(2*A) FrmResultado.txtx1.text = Raiz1 FrmResultado.txtx2.text = Raiz2 FrmResultado.Show Else Msgbox ‘Não existem raízes reais !!!” Endif EndSub CmdSair_click() End EndSub A seguir crie outro formulário com as seguintes caracteristicas: Name FrmResultado Caption Resultado 3 - Name TXTC Text <vazio> Maxlength 5 Código CmdCalcular_click() DIM Raiz1 as double, Raiz2 as as double, C as double A = VAL (txta.text) B = VAL (txtb.text)C = VAL (txtc.text) Delta = (B*B) - 4*A*C If Delta>0 then Raiz1 = (-(-b) + SQR(delta))/(2*A) Frm FrmResulta FrmMain.Hide Microsoft Visual Basic 4.0 24 me lblX1 = ult TRUE 2 text <vazio> Depois insira o código seguinte no evento click do objeto cmdvoltar FrmMain.txta.text = “ “ FrmMain.txtb.text = “ “ FrmMain.txtc.text = “ “ Frmresultado.Hide FrmMain.Show Execute a aplicação !!! Label 1 - Na Caption X1 2 - Name lblX2 Caption X2 = Command 1 - Name Cmdvoltar Caption &Voltar Defa Textbox 1 - Name txtx1 text <vazio> 2 - Name txtx Microsoft Visual Basic 4.0 25 Módulo 3 Aspectos de Programação Visual Basic 3.1 Atribuindo Valores [LET] nome_da_palavra = <valor> 3.3 Variáveis O que são variáveis ? Toda linguagem de programação precisa de algum lugar para armazenar o resultado de seus cálculos ou simplesmente para controlar o fluxo do programa. Assim como acontece na álgebra cotidiana, as linguagens de programação se valem de variáveis para armazenar dados na memória do computador. Uma variável de memória nada mais é do que uma posição da memória do computador reservada exclusivamente para que sejam guardadas informações e dados. A essa posição de memória damos um nome para referência dentro do nosso programa, como por exemplo, NomeCliente. Quem controla qual posição de memória do computador será reservada é a própria linguagem e o sistema operacional, ou seja, devemos apenas nos preocupar em nomear e declarar as variáveis. E já que estamos falando de variáveis, quando formos nomeá-las, deveremos seguir algumas regras básicas: ⇒ O nome precisa iniciar com uma letra. ⇒ Somente são permitidas letras, números e o caractere de sublinhado. Qualquer sinal de pontuação e espaço em branco será inválido. Microsoft Visual Basic 4.0 26 ⇒ No Visual Basic 4.0, os nomes podem ter até 255 caracteres de comprimento. Isso significa que podemos ter nomes de variáveis bem descritivos, como por exemplo, PrimeiroNomedoCliente. ⇒ Não podem coincidir com uma palavra reservada do Visual Basic, como nomes de funções ou procedimentos. ⇒ Precisam ser únicos dentro do escopo atual, ou seja, não podemos ter duas variáveis com o mesmo nome dentro de uma rotina, porém, entre rotinas diferentes, isso é perfeitamente possível. Escolha nomes sugestivos para as variáveis, de tal forma que descrevam sua função ou conteúdo que será armazenado nelas. Por exemplo para uma variável onde seria armazenado o resultado do cálculo do salário de um funcionário, poderíamos escrever nSalarioFunc, em vez de X, Y ou Z. 3.4 Declaração de Variáveis Dim Nomedavariavel [ as tipo de dados] 3.5 Tipos de Dados Como toda linguagem de programação, o Visual Basic também possui vários tipos de dados aplicáveis às varáveis, que definem quais os valores que essas poderão armazenar. O Visual Basic 4.0 define 11 tipos de dados básicos, cada qual com suas características peculiares, como largura da faixa de dados, tamanho em bytes, etc. A tabela a seguir relaciona todos esses tipos: Tipo de Dado Tamanho em Bytes Faixa de Valores Integer 2 Bytes - 32.768 a 32.767 Long 4 Bytes - 2.147.483.648 a 2.147.483.647 Single 4 Bytes - 3,402823E38 a - 1,401298E-45 (Val. Negativos) 1,401298E-45 a 3,402823E38 (Val. Positivos) Double 8 Bytes -1,79769313486232E308 a - Microsoft Visual Basic 4.0 27 4,9406564584124E-324 (Val. Negativos) 4,9406564584124E-324 a 1,79769313486232E308 (Val. Positivos) Currency 8 Bytes - 922.337.203.685.477,5808 a 922.337.203.685.477,5807 String 1 Byte por caractere De zero a 65.500 caracteres Em sistemas de 32 bits,máximo de 2E32 caracteres. Byte 1 Byte 0 a 255 Boolean 2 Bytes True (verdadeiro) ou False (falso) Date 4 Bytes Qualquer referência a objeto Variant 16 bytes + 1 byte para cada caractere Qualquer valor numérico, caractere, objeto ou valor nulo. Os tipos de dados determinam o que você pode armazenar numa variável. Por exemplo, você não pode entrar com uma expressão caractere numa variável do tipo numérico, nem tampouco digitar um número numa variável lógica. Vejamos os detalhes dos tipos de dados mais comumente utilizados. Tipos lnteger e Long Esses dois tipos de dados permitem o armazenamento de valores numéricos inteiros, com os quais podemos efetuar cálculos e operações matemáticas. A faixa de valores permitida para o tipo lnteger vai de -32.768 a 32.767, sendo portanto limitada para alguns tipos de operações. Variáveis desse tipo são muito úteis como contadores de loops For... Next, por serem de manipulação muito rápida pelo processador, pois necessitam de poucas instruções de máquina. O tipo Long, por outro lado, abrange uma faixa muito maior de valores, da ordem de 2 milhões, conforme pode ser constatado pela tabela anterior. Microsoft Visual Basic 4.0 28 Tipos Single e Double Single e Double também são tipos de dados numéricos, porém permitem a manipulação de valores decimais, como pesos, unidades de medidas, etc. Como os tipos anteriores, podemos efetuar qualquer operação matemática com eles. O que diferencia o tipo Single do tipo Double é a precisão nas casas decimais e a faixa de valores abrangida por cada um. Veja a tabela anterior para comparação. Variáveis do tipo Single são ditas de precisão simples, comumente chamadas apenas de variáveis de ponto-flutuante. Variáveis do tipo Double são denominadas variáveis de dupla precisão. Tipo Currency O Visual Basic possui um tipo de dado especial para tratamento de valores monetários, evitando-se assim erros de arredondamento durante cálculos matemáticos. Esse tipo de dado é chamado de Currency. Devemos utilizá-lo apenas para armazenamento de valores monetários. Se num determinado cálculo, o valor resultante tiver mais de quatro casas decimais, as casas decimais extras (a partir da quinta casa) serão truncadas. Assim, o número 5402,105782 será armazenado como 5402,1057 numa variável do tipo Currency. Tipo String O tipo de dado string é certamente o mais utilizado. Ele possibilita que uma sequência de caracteres seja armazenada numa variável. Essa sequência de caracteres pode conter desde letras do alfabeto até símbolos gráficos e números, muito embora não possamos efetuar cálculos com os números armazenados numa sequência. Devemos envolver a cadeia de caracteres com aspas ("). Com variáveis do tipo caractere, é possível efetuarmos algumas operações de comparação, concatenação (junção) de duas ou mais seqüências de caracteres ou extração de uma parte da seqüência. Não é possível, porém, efetuar cálculos matemáticos e aritméticos, já que qualquer número armazenado numa variável desse tipo será considerado como uma sequência de texto e não um valor numérico. Microsoft Visual Basic 4.0 29 Podemos determinar um tamanho máximo para urna variável do tipo String, simplesmente adicionando um asterisco (*) seguido por um número que define o tamanho máximo em caracteres. Por exemplo, para declarar uma variável strNomeCliente com um tamanho máximo de 50 caracteres, você escreveria: Dim strNomeCliente As String * 50 Se for armazenada uma cadeia de caracteres menor que o tamanho máximo especificado, a variável será preenchida com espaços em branco à direita para completá-la. Se por outro lado, você tentar armazenar mais caracteres do que o permitido, os excedentes serãodescartados. Tipo Byte Variáveis do tipo Byte são também numéricas, mas somente podem armazenar números na faixa de O a 255. Esse tipo de variável também , é útil em contador de loops For... Next pequenos, cujo ciclo de repetição não ultrapasse 255. Tipo Boolean Uma variável do tipo Boolean pode conter apenas dois tipos de valores: True (verdadeiro) ou False (falso). São muito utilizadas como sinalizadores, ou seja, variáveis que indicam se uma determinada condição lógica retornou ou resultou num desses dois valores. Veja o pequeno exemplo a seguir : Dim blnrepete As Boolean blnrepete = True While blnrepete Microsoft Visual Basic 4.0 30 . . Wend Tipo Date Variáveis do tipo data permitem o armazenamento de valores que representam uma data do calendário ou um horário. Para armazenar uma data numa variável, especifique-a entre "#", como no seguinte exemplo: dtDataVencimento = #05/06/95# dthora = #05:25# Com valores do tipo data é possível executarmos adição ou subtração, para assim calcularmos uma nova data. Por exemplo: dtDataHoje = Now dtDataAmanha = dtDataHoje + 1 dtDataOntem = dtDataHoje - 1 Tipo Object Variáveis do tipo Object podem fazer referência a objetos definidos pelo Visual Basic ou mesmo campos de uma base de dados, como dados OLE ou binários. Elas são armazenadas em endereços de 32 bits. Para esse tipo de variável, precisamos utilizar o comando de atribuição Set para assinalar valores a ela, em não apenas o sinal de igualdade. Tipo Variant Microsoft Visual Basic 4.0 31 O dado Variant é um tipo especial, já que ele permite que qualquer valor seja armazenado. Se você declara uma variável mas não especifica seu tipo de dado, o Visual Basic automaticamente atribui a ela o tipo Variant. Assim, o dado que você armazenar na variável é que definirá o seu tipo naquele momento. Podemos atribuir também um valor nulo à variáveis variant, especificando a palavra-chave Null à direita do sinal de igual. Diversas funções podem ser utilizadas para determinar qual o tipo de dado armazenado numa variável Variant. 3.6 Constantes Agora que já falamos de variáveis, vejamos as constantes, que são o oposto das primeiras. As constantes, diferentemente das variáveis, não podem ter seus valores alterados durante a execução da aplicação. Elas são utilizadas principalmente para fornecer maior legibilidade ao código-fonte, substituindo expressões numéricas ou caractere mais complexos e de difícil entendimento. Um dos tipos de constantes mais famoso é o famigerado valor de PI (3,14159265358979... ). Como convenção, adotamos letras maiúsculas para os nomes de constantes, mas isso não é regra geral. Essa é uma prática comum para os programadores em C/C++, Pascal ou mesmo Assembly. 3.7 Matrizes Dim NomeMatriz (n,m) As <tipo de dados> Exemplo: Dim idade(30) As integer Dim nota( 60,4) As double 3.8 Tipos definidos pelo usuário Microsoft Visual Basic 4.0 32 Semelhantemente às variáveis estruturadas da linguagem C/C + + ou às variáveis registro do Pascal, o Visual Basic oferece a capacidade de definirmos nossos próprios tipos de dados. Definir um novo tipo de dado pode ser muito útil quando precisamos agrupar vários tipos de dados diferentes mas correlacionados numa única variável, facilitando assim seu tratamento. Você poderia pensar que as matrizes resolveriam esse problema, mas nesse caso não são tão convenientes. Para criar uma variável com um novo tipo de dado você utiliza o comando Type, colocado na seção Declarations do módulo. Vejamos um exemplo prático, onde criaremos uma variável tipada chamada tpcliente, contendo outras variáveis para armazenamento do código do cliente, do endereço do cliente, nome da firma, cidade onde reside, salário e departamento onde trabalha. Type tpcliente intCodigoCliente As Integer strendereco As String * 50 strcidade As String * 25 strempresa As String * 40 strdepto As String * 20 sglsalario As Single End Type Aqui podemos dizer que a variável tpcliente comporta-se como um registro completo de um banco de dados e as diversas variáveis que a compõem, são os campos do registro. tpCliente intCodigoCiiente strendereco strcidade strempresa strdepto sglsalario Microsoft Visual Basic 4.0 33 Após ter sido criado o tipo de dado definido pelo usuário, você deverá ainda declarar a(s) variável(eis) desse tipo específico, como ocorre com as demais variáveis: Dim DadosCliente As tpcliente Cada campo da variável estruturada é acessado através de uma sintaxe própria. Precisamos especificar a variável estruturada seguida pela variável campo desejada, separadas por um ponto. Por exemplo, para acessar o campo strEndereco, deveríamos especificar a seguinte expressão: DadosCliente.strEndereco = "Av. Paulista, no 1815, 6o andar" Se você tiver duas variáveis do mesmo tipo de dado definido pelo usuário, poderá assinalar o valor de uma à outra apenas com o sinal de atribuição (=), similarmente às variáveis simples. Por exemplo, suponhamos que você tenha criado um tipo de dado chamado ContaCorrente, e que a partir dele tenha declarado as variáveis ContaBanco1 e ContaBanco2. Assim você poderia atribuir todos os valores dos campos da variável ContaBanco1 a ContaBanco2 através da expressão: ContaBanco2 = Contabancol Você pode também ter campos numa variável tipada que é uma matriz de dados. Por exemplo: Type ConsumoMensal strmes(12) AS String * 15 intconsumo(12) As Integer End Type Aqui nós temos um novo tipo de dado que nos permite entrar com os consumos mensais de energia elétrica, e quem sabe desenvolver um sistema aplicativo que nos auxiliará a economizar energia. Um outro recurso interessante é que você pode ter uma estrutura de dados dentro de outra estrutura. Veja o seguinte exemplo: Type DadosPessoais strNome AS String * 20 strSobreNome As String * 40 btIdade As Byte btEstadoCivil As Byte End Type Type DadosEndereco strrua As String * 50 strBairro As String * 30 Microsoft Visual Basic 4.0 34 strCidade As String * 30 strEstado AS String * 2 End Type Type Funcionário DadosFuncionario As DadosPessoais DadosResidencia As DadosEndereco btCodigoEmpresa As Byte btCodigoCargo As Byte End Type Type Empresa strNomeEmpresa As String * 50 EnderecoComercial As DadosEndereco End Type Aqui definimos duas estruturas básicas, denominadas DadosPessoais e DadosEnderecos. A partir delas,pudemos montar as outras duas estruturas de forma mais organizada e legível. Obviamente, para saber o nome do funcionário, teríamos de escrever a expressão: Funcionario.DadosFuncionario.strNome = "William Pereira Alves" Microsoft Visual Basic 4.0 35 3.9 Operadores Aritméticos Operador Descrição + Efetua a soma entre dois ou mais números - Efetua a subtração entre dois ou mais números * Efetua a multiplicação entre dois ou mais números / Efetua a divisão entre dois números e resulta num número de ponto-flutuante \ Efetua a divisão entre dois números e resulta num número inteiro ^ Efetua a exponênciação Mod Retorna o resto de uma divisão não exata entre dois números Lógicos Operador Descrição And Efetua a operação lógica E. Se ambas as expressões forem verdadeiras, então o resultado será verdadeiro Or Efetua a operação lógica OU. Se uma das expressões (ou ambas) for verdadeira, então o resultado será verdadeiro Not Efetua a operação lógica NÃO. Inverte o estado lógico de uma expressão, se ela for verdadeira, torna-a falsa e vice-versa Xor Efetua a operação OU EXCLUSIVO. Se uma das expressões for verdadeira, o resultado será verdadeiro, porém se ambas forem verdadeiras,o resultado será falso Eqv Efetua a operação de equivalência de expressões. O resultado será verdadeiro somente se ambas as expressões forem equivalentes. Imp Efetua a operação de implicação lógica. Retorna verdadeira se uma expressão implica em outra Tabela do operador lógico Imp Microsoft Visual Basic 4.0 36 A primeira expressão é A segunda expressão é O resultado será Verdadeiro Verdadeiro Verdadeiro Verdadeiro Falso Falso Verdadeiro Nulo Nulo Falso Verdadeiro Verdadeiro Falso Falso Verdadeiro Falso Nulo Verdadeiro Nulo Verdadeiro Verdadeiro Nulo Falso Nulo Nulo Nulo Nulo Operadores Relacionais Operador Descrição < Menor que > Maior que <= Menor que ou igual a >= Maior que ou igual a = Igual a <> Diferente de String “&” ou “+” ⇒ concatenam duas strings msgbox “exemplo” & “concatenação” ⇒ Exemploconcatenção Prática 7 Vamos fazer uma aplicação que some dois vetores com 8 elementos do tipo inteiro cada um. Lembre-se que os vetores na linguagem Visual Basic inicia- se com índice zero (0). Crie um formulário com os seguintes objetos: Microsoft Visual Basic 4.0 37 Calcular Entrada do vetor A Entrada do Vetor B Ok Ok Resultado cmdok cmdok2 txtentrada txtentrada2 lblentrada cmdcalcular Tente fazer sozinho! Apenas em caso de emergência consulte a resolução. Resolução: Nomeie os objetos e depois insira o seguinte código: Na seção General (declarations) insira: Option Explicit ‘ na parte General (declarations) Dim vetorA(8), vetorB(8), vetorC(8) As Integer Microsoft Visual Basic 4.0 38 Dim i As Integer Na rotina click do botão calcular: Private Sub cmdcalcular_Click() lblsaida.Caption = "Resultado = " For i = 0 To 7 vetorC(i) = vetorA(i) + vetorB(i) lblsaida.Caption = lblsaida.Caption & " " & vetorC(i) Next i End Sub No evento click do primeiro botão Ok do formulário: Private Sub cmdok_Click() If i <= 8 Then vetorA(i) = Val(txtentrada.Text) i = 1 + i txtentrada.Text = "" txtentrada.SetFocus If i = 8 Then txtentrada.Enabled = False txtentrada.Text = "" cmdok.Enabled = False cmdok2.Enabled = True txtentrada2.SetFocus i = 0 End If End If No evento click do segundo botão Ok: Private Sub cmdok2_Click() Microsoft Visual Basic 4.0 39 If i <= 8 Then vetorB(i) = Val(txtentrada2.Text) i = i + 1 txtentrada2.Text = "" txtentrada2.SetFocus If i = 8 Then txtentrada2.Enabled = False txtentrada2.Text = "" cmdok2.Enabled = False End If End If End Sub No evento load do formulário: Private Sub Form_Load() lblentrada.Caption = "Entrada do vetor A" lblentrada2.Caption = "Entrada do vetor B" End Sub Microsoft Visual Basic 4.0 40 Prática 8 Fazer uma aplicação que simule uma calculadora, as operações possíveis serão: + soma - subtração / divisão com resto Mod resto \ divisão com inteiro ^ exponenciação * multiplicação Ajuste as propiedades dos objetos da seguinte forma: frm (formulário) caption = calculadora icon = <escolhe um ícone> name = frm calculadora cmd (botões de comando) 1. name = cmdsair caption = &sair 2. name = cmdlimpar caption = &limpar 3. name = cmdcalcular caption = &calcular default = true txt (caixas de texto) 1. name = txtresultado enable = false text = <vazio> 2. name = txtop2 tabindex = 2 text = <vazio> 3. name = txtop tabindex = 1 text = <vazio> 3. name = textop1 tabindex = 0 Microsoft Visual Basic 4.0 41 text = <vazio> lbl 1. name = lblresultado captiom = resultado 2. name = lblanuncio caption = operações : + - / mod ^ \ * 3. name = lbloperação caption = operação 4. name = lbloperador2 caption = operador2 5. name = lbloperador1 caption = operador1 6. name = lbligual caption = = A seguir insira o seguinte código: cmdcalcular_click( ) dim op1 as double, op2 as double, opção as string op1 = val (txtop1.text) op2 = val (txtop2.text) opção = txtop.text select case opção ‘nós ainda não vimos esta estrutura mas ela já nos é ‘ familiar case “+” : txtresultado.text = op1 + op2 case “-” : txtresultado.text = op1 - op2 case “/” : txtresultado.text = op1 / op2 case “\” : txtresultado.text = op1 \ op2 case “Mod” : txtresultado.text = op1 Mod op2 case “^” : txtresultado.text = op1 ^ op2 case “*” : txtresultado.text = op1 * op2 end select cmdlimpar.setfocus end sub No evento click do objeto cmdlimpar insira: cmdlimpar_click( ) txtop1.text = “ “ txtop2.text = “ “ txtop.text = “ “ txtop1.setfocus Microsoft Visual Basic 4.0 42 No evento click do botão sair escreva: cmdsair_click( ) end end sub Microsoft Visual Basic 4.0 43 Módulo 4 Estruturas de Controle Neste módulo, aprenderemos a criar estruturas de controle, que são importantes componentes de qualquer linguagem de programação. Estas estruturas permitem que você verifique a ocorrência de determinadas condições lógicas bem como reutilize blocos de código, tomando seu trabalho de programação mais produtivo. Como já adiantamos a você, as estruturas de controle são uma importante ferramenta de programação, permitindo não só a realização de desvios lógicos no processamento de seu programa, mas também a reutilização de blocos de código existentes até que determinado resultado seja obtido. O Visual Basic coloca à sua disposição uma série de comandos com esta finalidade, permitindo-lhe uma grande flexibilidade no desenvolvimento de suas aplicações. Como você já deve estar imaginando, a melhor maneira de aprender como estas estruturas operam é na prática, através de um novo aplicativo que iremos desenvolver. 4.1 Criando o Aplicativo Estruturas de Controle Vamos iniciar a criação de nosso aplicativo selecionando a opção New Project no menu File. Prática 9 Crie um formulário com o seguinte layout: Microsoft Visual Basic 4.0 44 FOR NEXT (LABEL1) Início (label2) Limite (label 3) Passo (label 4) Valor Atual de Início: (label 6) Iniciar (command) ESTRUTURAS DE CONTROLE (label 5, sem texto) (Text 5) Text 1 Text 2 Text3 Text 4 Imagem Determine as seguintes propriedades aos objetos: Vamos iniciar pelo Formulário. Propriedade Valor Caption Estrutura de Controle Name frmEstruturas Microsoft Visual Basic 4.0 45 Selecione agora o controle Label1: Propriedade Valor Alignment 2 - Center Caption FOR NEXT Font MS Sans Serif - Negrito - 14* Name LblTítulo * Ao selecionar o botão “...”, é aberta a janela “Fonte” onde você pode definir as características do texto a ser exibido. Passe agora para o controle Label2: Propriedade Valor Alignment 1 - Right Justify Caption Início: Name LblÍnicio Vamos ajustar agora o controle Text1. Propriedade Valor Name TxtÍnicio Text <apagar o valor atual> Microsoft Visual Basic 4.0 46 Selecione o controle Label3: Propriedade Valor Alignment 1 - Right Justify Caption Limite: Name LblLimite Passe agora parao controle Text2: Propriedade Valor Name TxtLimite Text <apagar o valor atual> Ajuste agora Label4: Propriedade Valor Alignment 1 - Right Justify Caption Passo: Name LblPasso Faça o mesmo com Text3: Propriedade Valor Name TxtPasso Text <apagar o valor atual> Selecionar agora Label5 e ajuste as suas propriedades conforme a tabela abaixo : Propriedade Valor Alignment 2 - Center Caption <apagar o valor atual> Name LblMsg Microsoft Visual Basic 4.0 47 Aproveite para alterar as propriedades do Label6 para : Propriedade Valor Alignment 1 - Right justify Caption <apagar o valor atual> Name Lblação Calma, agora falta pouco. Pode parecer cansativo, mas seja sincero: Quanto tempo você gastou para criar este aplicativo ? Uns poucos minutos não foi ? Pode ter certeza de que os minutos que você empenhou na criação deste aplicativo renderão bons conhecimentos sobre as estruturas de controle que estamos estudando agora. Respire fundo e passe para o próximo controle, que é o Text4. Faça as seguintes alterações : Propriedade Valor Name TxtValorAtual TabStop False Text <apagar o valor atual> O próximo passo será alterar o controle Text5: Propriedade Valor Name TxtAção TabStop False Text <apagar o valor atual> Complementando nosso aplicativo, altere as propriedades do controle Image1 para o seguinte: Microsoft Visual Basic 4.0 48 Propriedade Valor BorderStyle 1 - FixedSingle Enabled False Repita o mesmo para o controle Image2 : Propriedade Valor BorderStyle 1 - FixedSingle Enabled False Finalmente, ajuste as propriedades do controle Command1: Propriedade Valor Caption &Iniciar Default True Name BtnIniciar A única coisa que falta agora é definirmos o código que será associado ao botão "Iniciar" de nosso formulário, mas isto dependerá dos próximos assuntos que iremos aprender em seguida. 4.2 Adicionando Comentários em seu Código Agora que você já está ficando com mais prática na utilização do Visual Basic e pouco a pouco está desenvolvendo aplicativos cada vez mais sofisticados, está na hora de começar a documentar as suas rotinas. Talvez você até ache desnecessário fazer isto devido à simplicidade dos códigos que estamos criando, mas não custa nada documentar desde o início, pois é uma boa prática ir se acostumando a documentar as rotinas criadas por voce. Lembre-se de que uma rotina que é óbvia hoje pode não ser tão óbvia quando você voltar a estudá-la daqui há seis meses ou um ano. Microsoft Visual Basic 4.0 49 Imagine também que talvez outra pessoa irá analisar sua rotina no futuro, e que poderá ter grandes dificuldades para entender o que você fez. Documentar suas rotinas é muito importante para tornar seu código mais legível não só para você, mas também para as outras pessoas que irão analisá-lo mais tarde. Adotar este hábito saudável irá poupar seu tempo no futuro, quando será necessário relembrar por que você adotou determinadas soluções técnicas e , não outras aparentemente mais simples. A Instrução REM A instrução REM nada mais é do que uma abreviação da palavra Remark, que significa Comentário. Você pode incluir comentários em seus códigos de duas formas: através da instrução REM seguida do comentário desejado, ou do apóstrofo ( ‘ ) antes do comentário a ser incluído. Tudo o que estiver à direita da palavra Rem ou do sinal de apóstrofo será simplesmente ignorado pelo Visual Basic. Quando você utilizar a instrução REM, deixe um espaço em branco entre esta instrução e o comentário propriamente dito, como em: REM Este é um exemplo de comentário Já para o apóstrofo, não é necessário deixar o espaço em branco entre o sinal e o comentário: 'Exemplo de comentário usando o apóstrofo Estes comentários também podem ser utilizados em linhas de código que contêm outras instruções, como em: Microsoft Visual Basic 4.0 50 Dim Teste As lnteger 'Declara a variável Teste como Inteiro O único cuidado que deve ser tomado quando incluímos comentários em uma linha que contém instruções para o Visual Basic, é quando utilizamos a instrução REM. Neste caso, será necessário acrescentarmos o sinal de dois pontos ( : ) logo após a última instrução válida, para em seguida incluirmos a instrução REM. Você entenderá melhor vendo o exemplo abaixo: Dim Teste As lnteger: REM Não esqueça de incluir : antes de REM ! Note que este caso somente se aplica à utilização de REM em uma linha que já contém comandos. Este recurso é bastante útil durante a fase de desenvolvimento de aplicativos, pois podemos evitar a execução de determinadas linhas de nosso código pelo Visual Basic, sem que haja necessidade de apagarmos tais informações de nossas rotinas. Após os testes, basta eliminar os sinais de comentário para que o Visual Basic volte a interpretar as linhas de código existentes. Agora que já sabemos utilizar os comentários para documentar nossas rotinas, vamos iniciar nosso estudo pela estrutura de controle lf Then Else. Microsoft Visual Basic 4.0 51 4.3 Estrutura lf Then Else Uma das estruturas de controle mais utilizadas na programação em Visual Basic é sem dúvida alguma a instrução lf Then, que é utilizada para avaliar uma determinada expressão e definir se um determinado bloco de código deve ou não ser executado. A sintaxe para utilização deste comando é a seguinte: If Condição Then [Bloco de Código] [Elseif Condição-n Then [Bloco de Códígoll [Else [Bloco de Código]] End lf Detalhes: • Condição - É a condição a ser avaliada pelo VB. Esta condição utiliza os operadores de comparação que aprendemos anteriormente, sendo que a mesma tanto pode ser do tipo numérico como do tipo String. • Condlção-n - É uma outra condição lógica que pode ser avaliada pelo VB. O índice n indica que você pode inserir quantas condições lógicas quiser, bastando para isso repetir a instrução Elself. • Else - O bloco de código associado a esta instrução só será executado caso nenhuma das condições lógicas anteriores tenha sido verdadeira, ou seja, se todas as condições lógicas associadas ao lf e Elself resultaram em False, o VB executará o bloco de código associado ao Else. • End lf - Indica o final da estrutura de controle lf Then. Ao longo deste módulo você notará que a maioria das estruturas de controle são iniciadas pelo comando que as identifica e terminadas pela instrução Microsoft Visual Basic 4.0 52 End. Por questões de documentação, o VB aceita que você identifique que estrutura está sendo finalizada através do acréscimo do comando inicial da estrutura à palavra End, como em End lf por exemplo. Descrição A instrução lf ... Then (Se ... Então) sempre está associada a uma comparação lógica qualquer, como A > 10, por exemplo . Se a condição for verdadeira (True), o VB executa o bloco de código imediatamente abaixo desta linha até encontrar uma outra instrução Elself, Else ou Endif, quando então a execução do programa passa para a linha imediatamente abaixo da instrução Endif. Caso o primeiro teste lógico resulte em False, o VB irá procurar pela próxima instrução de comparação da estrutura lf Then. Caso exista alguma instrução Elself, o VB procederá da mesma forma como fez com a instrução lf, executando o bloco de código logo abaixo desta linha se a comparação for verdadeira, ou continuando a busca pela próxima instrução se a comparação for falsa. Caso todas as comparações lógicas anteriores tenham resultado em False e exista uma instrução Else no bloco de código, esta será executada sem a realização de qualquer tipo de comparação lógica. Caso não exista a condição Else em sua estrutura lf Then, aexecução será encerrada quando o VB encontrar a instrução Endlf, que sinaliza o fim da estrutura de controle. Como já construímos um novo aplicativo para o estudo das estruturas de controle, vamos utilizá-lo para entender melhor como funciona o comando lf... Then. Prática 10 Alterando o Aplicativo Estruturas de Controle Selecione o botão "Iniciar" e dê dois cliques sobre o mesmo para ter acesso à janela de código. Entre com as seguintes instruções neste arquivo: Microsoft Visual Basic 4.0 53 Rem Estudo de lfThenElse Dim Inicio As Integer, Limite As Integer lnicio = Txtinicio.TEXT ' inicializa variável com o valor do controle Limite = TxtLimite.TEXT ' Idem lf Inicio > Limite Then ' Se Inicio > Limite executa esta opção TxtAção.TEXT = "A opção IF foi a escolhida! " Elseif Inicio = Limíte Then ' Se Inicio = Limite executa esta: TxtAção.TEXT = "A opção ELSEIF foi a escolhida!" Else 'Se nenhuma das anteriores executa esta: TxtAção. TEXT = "A opção ELSE foi a úníca escolhida! " Endif Faça um último ajuste em sua janela de código, selecionando a opção Form na caixa de listagem Object e a opção Load na caixa de listagem Proc. Digite a seguinte expressão nesta janela: LbiTitulo. Caption = "IF THEN " ' Altera o titulo da janela TxtPasso.Enabled = False 'Desabilita a TextBox Passo Execute o seu aplicativo e entre com os valores 100 e 10 nas caixas de texto Início e Limite. Não se preocupe com os demais controles, pois os mesmos serão utilizados pelos exercícios futuros no momento adequado. Por enquanto utilizaremos apenas as caixas de texto citadas. Clique sobre o botão "Iniciar" e veja o resultado obtido em nosso primeiro exemplo. Note que agora a condição associada à instrução IF não é mais verdadeira (início não é maior do que Limite) e desta forma o VB procurou a próxima instrução de comparação. Como existe uma condição lógica que analisa se o valor de Início e Limite são iguais, o VB executou esta opção, apresentando a mensagem correspondente a esta situação. Microsoft Visual Basic 4.0 54 Um último teste: entre com 1 e 10. Se você reparar com atenção, perceberá que nós estabelecemos três condições lógicas possíveis em nossa estrutura lf then se o valor Inicial fosse maior do que o valor Limite, se ambos os valores fossem iguais e se nenhuma das condições anteriores ocorresse. Aliás, foi o que ocorreu em nosso exemplo, pois os valores que entramos não satisfazem as condições do lf ou do ElselF. Diante disso a opção Else foi executada sem maiores perguntas. Vamos fazer uma leve modificação em nosso aplicativo. Pare a sua execução e dê dois cliques sobre o botão "iniciar" ou selecione F7 para abrir a janela de código. Acrescente a seguinte expressão dentro da estrutura lffhen, logo a seguir da opção Elself existente: Elself Inicio = 12 Then ' Somente se Inicio = 12 executa esta opção TxtAção. TEXT = "A 2a. opção ELSEIF foi escolhida! " Execute o seu aplicativo mais uma vez e entre com os valor 12 e 10 para ver o que ocorre: Pode parecer estranho, mas apesar de termos declarado o valor Início como sendo igual a 12 o VB não executou o segundo Elself como haviamos determinado. A explicação para este fato serve de alerta para quando você for criar seus próprios aplicativos utilizando as estruturas de controle lfThen. Observe seu código com cuidado e note que o segundo Elself que inserimos na estrutura somente será executado quando o valor Início for igual a 12 e o valor Limite for maior que 12, caso contrário a instrução IF será executada em primeiro lugar, pois sempre que 12 for maior do que o valor Limite, a primeira condição lógica será satisfeita e o VB não analisará nenhuma outra condição do lf. O mesmo acontecerá se você utilizar os valores 12 e 12, pois também neste caso o VB executará o primeiro Elseif da estrutura onde a condição estabelecida é valor Início = Limite, ignorando todas as demais condições. Instrução Será executada se... Microsoft Visual Basic 4.0 55 lf Início > Limite Elself Início = Limite 2o Elself Início = 12 e Limite > 12 Else Início < Limite Execute o aplicativo novamente com os valores 12 e 20 e veja que desta vez sua rotina foi executada sem maiores problemas. É importante perceber que o VB analisa as condições lógicas em seqüência, de forma que se você quiser que uma determinada ação seja tomada quando ocorrer uma situação bastante específica, coloque esta condição em primeiro lugar na estrutura lf then. Utilizando apenas uma Linha Você também pode definir condições lógicas lfthen utilizando apenas uma linha de código, tornando seu código bem compacto, porém menos legível. Geralmente, esta opção é mais utilizada durante a fase de testes de aplicativos devido sua praticidade, pois basta acrescentar a palavra REM na frente da expressão para que o seu aplicativo simplesmente ignore-a. Já, utilizando uma estrutura como a que estudamos no item anterior, teríamos bem mais trabalho para torná-la "transparente" para o Visual Basic. A sintaxe para esta estrutura não difere muito do que vimos anteriormente: lf Condição Then Expressão [Else Expressão] Um exemplo de utilização desta sintaxe poderia ser a seguinte condição: Microsoft Visual Basic 4.0 56 íf Teste = 'Sim' Then A = 1 Else A = O Note que o VB operaria da mesma forma que na estrutura completa, avaliando primeiramente se a condição proposta é verdadeira. Em caso afirmativo, seria atribuído à variável A o valor 1, caso contrário a mesma receberia o valor zero. Você também pode executar mais de um comando associado ao IF ou ao Else quando utiliza esta estrutura em uma única linha basta separá-los pelo sinal de dois pontos entre um e outro, como no exemplo a seguir: lf Teste = "Sim' Then A = l : Nome = "João” Else A = O: Nome = "Nulo" O único cuidado a ser tomado é que todos os componentes da expressão devem estar numa mesma linha e separados pelo sinal de dois pontos ( : ) um do outro. 4.4 Estrutura Select Case Você também pode selecionar um determinado grupo de comandos simplesmente avaliando o valor de uma expressão através da estrutura Select Case. Este comando possui a seguinte sintaxe: Select Case Expressão [Case condição-n [Bloco de Código1]... [Case Else [Bloco de Códígon] End Seíect Detalhes: Microsoft Visual Basic 4.0 57 • Expressão - É qualquer expressão numérica ou de string avaliada pelo Visual Basic. • Condição-n - É a condição lógica a ser avaliada pelo VB. O índice n indica que você pode inserir quantas condições lógicas quiser, bastando para isso repetir a instrução Case. • Case Else - O bloco de código associado a esta instrução só será executado caso nenhuma das condições lógicas anteriores tenha sido verdadeira. • End Seiect - Indica o final da estrutura de controle Select Case. Descrição: Inicialmente, é necessário definir a expressão que será avaliada pela estrutura Case, atribuindo a mesma à instrução Select Case. A partir daí o Visual Basic compara o valor desta expressão com a primeira instrução Case existente na estrutura de controle. Se os valores de ambas forem iguais, o Visual Basic executará o bloco de código associado à condição Case avaliada, e ao final desta passará o controle do programa para a primeira linha de código logo abaixo da instrução End Seiect. Caso o valor da instrução Case seja diferente da expressão associada ao Select Case, o Visual Basic passará para a próxima instrução Case da estrutura, repetindo o processo até encontrar uma instrução que satisfaça a condição lógica definida. Se não existir nenhuma instrução na estrutura de controle que satisfaçaesta condição proposta, o VB poderá adotar dois caminhos: executar a instrução Case Else caso a mesma exista, ou simplesmente encerrar a execução da estrutura. A instrução Case Else será executada sempre que todas as demais condições existentes resultarem em False na comparação com a expressão definida em Select Case. Microsoft Visual Basic 4.0 58 Você entenderá melhor o que queremos dizer, observando na prática o funcionamento desta estrutura. Prática 11 Faça a seguinte alteração no código associado ao botão "iniciar" do nosso aplicativo: Rem Estudo de Select Case Dim Inicio As lnteger Inicio = Txtlnlcio. TEXT 'lnicializa variável com o valor do controle Select Case Inicio 'Avalia a expressão Case 1 'Verifica se Início = 1 TxtAção.TEXT = "Você escolheu o número 1 " Case 2 'Verifica se Inicio = 2 TxtAção.TEXT = "Você escolheu o número 2” Case 5 'Verifica se Início = 5 TxtAção. TEXT = "0 número 5 foí a sua escolha!" Case Else 'Se as condições anteriores forem Falsas TxtAção. TEXT = "Você não escolheu 1, 2 ou 5. " End Select I Necessitamos ainda de um outro pequeno ajuste em nosso formulário. Altere a rotina Form_load conforme abaixo: LblTítulo.Caption = "CASE SELECT" ' Altera o título da janela TxtPasso.Enabled = False 'Desabilita a TextBox Passo Microsoft Visual Basic 4.0 59 TxtLimite.Enabled = False 'Desabilita a TextBox Limite Como você pode reparar, apenas quando o valor de entrada for igual a 1, 2 ou 5 é que o VB emitirá uma mensagem específica. Para todos os demais valores informados o Visual Basic exibirá a mensagem associada à instrução Case Else. Execute agora o seu aplicativo e entre com o valor 1 na caixa de texto Início. Definindo Faixas de Valores No exemplo que criamos, todas as instruções Case estão vinculadas à ocorrência de um número ou string predeterminado, porém você pode definir que ações serão tomadas para determinadas faixas de valores. Você pode fazer isto simplesmente definindo a condição Case da seguinte forma: Case i To j Onde i é o valor inicial e j o valor final da faixa avaliada. Prática 12 Encerre a execução de seu aplicativo e faça uma rápida alteração na estrutura Select Case: Select Case Inicio 'Avalia a expressão Case 1 To 4 'Verifica se Inicio está entre 1 e 4 TxtAção.TEXT = "Você escolheu um número entre 1 e 4" Case 5 'Verifica se Início = 5 TxtAção.TEXT = "0 número 5 foi a sua escolha! " Microsoft Visual Basic 4.0 60 Case 6 To 8 'Verifica se Inicio está entre 6 e 8 TxtAção.TEXT = "Você escolheu um número entre 6 e 8 " Case Else 'Se as condições anteriores forem Falsas TxtAção.TEXT = "0 número escolhido é maior que 8! " End Select Execute seu aplicativo novamente e entre com alguns valores entre 1 e 10 e veja como o VB interpreta seus dados. Você perceberá que esta característica é muito útil quando os valores avaliados podem ter determinadas tolerâncias, pois permite que você torne seu código bem mais compacto do que definir uma condição Case para cada valor a ser avaliado. Utilizando Operadores de Comparação Você também pode utilizar operadores de comparação com a instrução Case, basta acrescentar o operador ls na expressão lógica definida por você, como por exemplo em: Case ls >= 20 Altere o código de seu aplicativo acrescentando mais uma instrução Case na estrutura de controle, logo abaixo da última instrução Case definida por você e antes da instrução Case Else: Case ls > 20 TxtAção.TEXT = "Você escolheu um número maior que 20 " Execute o seu aplicativo e entre com qualquer valor acima de 20 para ver o que acontece. Avaliando Expressões do Tipo String Até agora em nossos exemplos, sempre utilizamos valores numéricos para estudar o comportamento da estrutura Case, porém o Visual Basic também permite que você utilize valores do tipo String em suas expressões. Microsoft Visual Basic 4.0 61 Vamos alterar um pouco o código de nosso aplicativo, alterando os valores analisados nas instruções Case para dados do tipo string, como mostramos a seguir: Rem Estudo de Select Case Dim Inicio As String Início = Txtinlcio.TEXT 'lnicializa variável com o valor do controle Select Case Inicio 'Avalia a expressão Case "José " 'Verifica se Inicio é igual a José TxtAção.TEXT = "José foi escolhido " Case "João " 'Verifíca se Início = João TxtAção.TEXT = "0 nome é João!" Case "Maria " 'Verifica se Inicio = Maria TxtAção.TEXT = "Você dígitou Maria" Case Else TxtAção.TEXT = "Nenhum nome foí selecionado! 'Se as condições anteriores são False End Select Coloque seu aplicativo em execução e entre com os nomes José, jose, João e joao e repare como o VB trata cada um destes nomes. Note que nesta comparação de strings, o Visual Basic diferencia palavras acentuadas ou não e palavras grafadas em maiúsculas e minúsculas, por isso tome muito cuidado ao realizar comparações de strings, pois seu programa pode apresentar um comportamento bastante estranho apesar de você ter a certeza de que tudo está em perfeito estado. Vamos estudar agora a estrutura For Next, que é uma outra instrução muito utilizada na programação em Visual Basic. 4.5 Estrutura For Next Microsoft Visual Basic 4.0 62 Este comando repete um mesmo bloco de código um determinado número de vezes independentemente de qualquer condição lógica. A sintaxe deste comando é a seguinte: For Contador = Valorinicial To ValorFinal [Step Passo] [Bloco de Código] [Exit For] [Bloco de Código] Next [Contador] Detalhes: • Contador - É uma variável de memória numérica que será utilizada para controlar o número de execuções do bloco de código. • Valorlniclal - Valor de inicialização do contador. Você pode iniciá-lo com o valor zero, um ou mesmo qualquer outro que julgue necessário. • ValorFinal - É o valor final que a variável Contador assumirá antes de encerrar a execução do loop. • Passo - Você pode determinar se a variável contador será incrementada de um em um ou de dois em dois por exemplo. Caso você não informe este parâmetro, o Visual Basic considera que o incremento será positivo de uma em uma unidade. Você também pode definir números negativos para esta opção. • Exit For - Você pode interromper a execução do loop através desta instrução. Ao encontrá-la no meio de seu bloco de código, o loop é interrompido. Esta instrução normalmente está associada à ocorrência de uma determinada condição lógica. Descrição Para utilizar esta estrutura de controle você necessitará de uma variável de memória para ser o contador do número de repetições que a estrutura fará. Esta variável é inicializada com o valor especificado por você em Valorlnicial e é feita uma comparação de seu valor com o valor definido por você em ValorFinal. Se o valor do Contador é menor do que o valor de ValorFinal, o bloco de código localizado entre as declarações For e Next é executado uma vez. Microsoft Visual Basic 4.0 63 Ao final da execução do bloco de código, o Visual Basic incrementa a variável de controle o número de unidades especificado em Passo. É feita uma nova comparação, e se o contador ainda for menor que a variável ValorFinal, o ciclo se repete. Quando o contador atinge um valor maior que a variável limite, a execução do loop é encerrada e o Visual Basic passa para a linha imediatamente seguinte à declaração Next. Vamos aprender na prática como se comporta um loop do tipo For Next através do aplicativo que criamos no início deste módulo. Prática 13 Alterando o Aplicativo Estruturas de Controle. Selecione o botão"Iniciar" e dê dois cliques sobre o mesmo para ter acesso à janela de código. Entre com as seguintes instruções neste arquivo: Vamos considerar que o sinal @ indica que o comando continua na mesma linha, que por questões de editoração da apostila, o mesmo foi dividido em duas ou mais linhas. Rem Estudo de For Next Dim Contador As integer, Inicio As integer, Limite As integer, @ Passo As integer, Vezes As integer Início = Txtinlcio.TEXT 'lnicializa vanável com o valor do controle Limite = TxtLimite.TEXT 'Idem Passo = TxtPasso.TEXT 'Idem Vezes =0 'lnicializa a vanável Vezes com zero Microsoft Visual Basic 4.0 64 LblMsg.Captfon = " Enquanto Contador for menor ou igual a " & Limite @ & " o bloco de código será executado! " LblMsg.Refresh 'Atualiza o controle LblMsg For Contador = inicio To Limite Step Passo Vezes = Vezes +1 TxtValorAtual. TEXT = Contador TxtValorAtual.Refresh 'Atualiza o controle TxtAção.TEXT = "Executando o bloco de código pela " & Vezes & @ “ a. vez” TxtAção.Refresh 'Atualiza o controle Next Rem Depois de executar o loop o controle do programa passa para esta linha: TxtAção.Text = "0 bloco de código foí executado " & Vezes & " vezes!" Faça um ajuste na procedure Form-load, deixando apenas as seguintes linhas de código: LblTítulo.Caption = "FOR NEXT” ‘ Altera o titulo da janela LblAção.Caption = "Valor Atual do Contador" Execute o aplicativo e entre com os valores 1 para Inicio, 10 para Limite e 1 para Passo. Clique sobre o botão "iniciar" e veja o que ocorre. Dependendo da velocidade de seu microcomputador, você só conseguirá ver a última mensagem exibida na tela após o término do loop. Microsoft Visual Basic 4.0 65 Na prática, o que o sistema faz é exibir na tela os valores das variáveis definidas por nós conforme a instrução For Next vai alterando as mesmas. Para facilitar a sua vida vamos fazer uma pequena alteração em nosso aplicativo, incluindo mais algumas linhas de código a fim de "desacelerarmos" nosso computador. Acrescente as seguintes instruções logo abaixo da linha TxtAção.Refresh, de modo a deixar sua rotina com a seguinte aparência: For n = 1 To 100000 REM Este loop não faz nada! Next Na verdade, o que fizemos foi nada mais do que acrescentar um outro loop dentro do já existente, para fazer com que o Visual Basic gaste um determinado tempo entre uma atualização de tela e outra, e assim podermos ver o conteúdo das variáveis envolvidas no loop. Saiba que o valor de 100000 foi obtido experimentalmente, e dependendo da velocidade de seu computador, você terá que aumentar ou reduzir este valor até obter o intervalo desejado entre uma exibição e outra em seu monitor. Saindo de um Loop For Next Como já vimos no item anterior, sempre que você inicia a execução de um loop For Next, ele somente encerra sua operação quando o contador atingir um valor maior do que o valor final do loop. Na verdade, você pode interromper a execução do mesmo, utilizando para isso o comando Exit For. Geralmente, este comando é utilizado em conjunto com uma instrução lf, como a que vimos no início deste capitulo. Vamos supor que você deseja executar um bloco de código um determinado número de vezes ou até que um dado valor seja atingido. Este valor tanto pode ser proveniente do cálculo de uma fórmula qualquer como de uma variável de memória existente. Microsoft Visual Basic 4.0 66 Você poderia, por exemplo, definir esta condição da seguinte maneira: lf Vezes = Limite / 2 Then Exit For End lf Como a variável Vezes é incrementada em uma unidade a cada execução do loop, você pode definir que assim que o valor da mesma for igual ao valor da variável Limite dividido por dois, o loop será encerrado. É claro que neste caso, seria mais fácil definirmos logo de início o valor adequado para a variável Limite ao invés de acrescentarmos uma cláusula Exit For, mas como estamos apenas querendo mostrar a você o mecanismo desta instrução Exit, vamos aproveitar as variáveis de memória que já existem em nosso código, evitando assim termos que fazer mais alterações na rotina existente. Utilizando Instruções For Next Aninhadas No exemplo anterior, utilizamos duas instruções For Next aninhadas, isto é, uma dentro da outra. Veja a seguir, um fragmento do código que utilizamos em nosso exemplo: For Contador = Inicio To Limite Step Passo Vezes = Vezes + 1 TxtValorAtual.TEXT = Contador For n = 1 To 100000 Rem Este loop não faz nada! Next Next Até que olhando desta forma não há muitas dúvidas sobre que instrução Next está relacionada à primeira instrução For, mas e quando suas rotinas forem ficando cada vez maiores complexas? Ao analisar seu código, você pode ser levado a concluir erroneamente que um determinado Next está associado a uma instrução For, quando na verdade ambas não têm nada a ver uma com a outra, o que fatalmente o levará a cometer um erro de avaliação de sua rotina. Microsoft Visual Basic 4.0 67 Outro ponto importante é que se por um erro seu, uma instrução Next for encontrada antes da instrução For correspondente, o VB apresentará um erro em tempo de execução, paralisando a execução de seu aplicativo. Este tipo de erro bastante comum pode ser evitado, bastando para isso declarar junto à instrução Next o nome da variável de memória que é utilizada como contador pelo Visual Basic, como no exemplo a seguir: For Contador = Inicio To Limite Step Passo Vezes = Vezes + 1 TxtValorAtual.TEXT = Contador For n = 1 To 100000 Rem Este loop não faz nada! Next n ‘Incrementa a variável n Next Contador ‘Incrementa a variável Contador Para evitar erros de execução ao utilizar instruções For aninhadas, você sempre deve declarar a instrução acompanhada do nome da respectiva variável utilizada como contador do loop. Um último comentário sobre a estrutura For Next: Como você pode observar nos exemplos que criamos, o valor do contador sempre é armazenado em uma variável de memória, e por isso mesmo sempre é possível modificarmos o seu valor, alterando o comportamento do loop. Isto tanto pode ser um importante recurso de programação como uma fonte de dores-de-cabeça, dependendo da forma como você utilize esta possibilidade e da complexidade de seu código. A utilidade deste recurso é que você pode repetir a execução do loop indefinidamente até que uma determinada condição desejada seja obtida. Na verdade, existem outras formas mais adequadas de se fazer isto, porém não podemos deixar de considerar a possibilidade de realizarmos esta tarefa com a estrutura For Next. Microsoft Visual Basic 4.0 68 O ponto negativo é que alterando o valor do contador do loop durante a execução, você pode levar o seu programa a entrar num loop infinito caso a meta definida por você não possa ser atingida, além de tornar o seu aplicativo mais difícil de entender e depurar. Só para ter uma idéia do que queremos dizer, imagine que seu aplicativo faça uso do seguinte bloco de código: Private Sub BtniniciaLClíckO Rem Estudo de For Next com alteração do Contador durante a execução Dim Contador As integer, Resultado As Single, Vezes As integer Resultado = 100 ‘ lnicializa a variável com o valor 100 For Contador = 1 To 10 Resultado = Resultado + (1.005 ^ 2) 'Fórmula a ser calculada Vezes = Vezes + 1 'Número de execuções TxtValorAtual. TEXT = Resultado 'Exibe o resultado na Textbox TxtValorAtual.Refresh 'Atualiza o controle For n = 1 To 100000 'Loop para desacelerar o programa Rem Este loop não faz nada! Next n lf Resultado < 120 And Contador = 10 Then Contador
Compartilhar