UTILIZAÇÃO DA LINGUAGEM MS

Transcrição

UTILIZAÇÃO DA LINGUAGEM MS
UTILIZAÇÃO DA LINGUAGEM
MS-VISUAL BASIC .NET
Objetivo: apresentar os principais recursos da linguagem “Visual Basic”
necessários à criação de macros para programação CN
O QUE SERÁ ABORDADO:
•Criação de um programa no MS-Windows
•Formulário principal
•Montagem do leiaute com controles de texto e rótulos para entrada e saída de dados
•Tipos e declarações de variáveis
•Operadores
•Atribuição de valores
•Manipulação de strings
•Iterações
•Condicionais
•Arquivos (leitura e gravação)
•Controles para leitura e gravação de dados em arquivos
•Funções e sub-rotinas
•Gráficos
PROGRAMAÇÃO EM MS VISUAL BASIC
•Baseada em elementos gráficos (controles) e, atualmente, com
recursos para programação orientada por objetos
•Possibilita o desenvolvimento de aplicativos para Windows com baixo
custo e tempo
•Versões disponíveis: VB5; VB6; .Net2003; .Net2005; .Net2008 e
.Net2010 Express (gratuita)
INICIANDO UM PROJETO EM VISUAL
BASIC. .NET
Após iniciar o Visual Basic
2010 Express, utilize o menu
“TOOLS - OPTIONS” e
marque a opção “save new
projects when created”, tal
como mostrado acima. Isto
possibilitará a escolha do
caminho (pasta) e nome do
projeto.
Começando um projeto...
A versão .Net2010 do
Visual Basic
possibilita, além de
aplicativos baseados
em formulários, a
criação de versões do
tipo console, biblioteca
de classes e as WPF
(Microsoft Windows
Presentation
Foundation )
Selecione a opção “windows form application” Crie uma pasta específica para
armazenar o projeto. Dê um nome para o mesmo e acione o botão “OK” . Evite
manter o nome genérico para o projeto, tal como “windowsapplication1”.
Um formulário
funciona como um
pano de fundo
para inserção dos
controles que
serão visíveis em
tempo de
execução.
Após acionar o botão “OK” aparece (automaticamente) um formulário vazio; o
“Solution Explorer” ; o “toolbox” ; a”lista de propriedades”;...
Utilizando os controles gráficos disponíveis, faça o leiaute do
projeto. Caso necessário adicione um novo formulário.
botões
caixa de seleção
seleção exclusiva
caixas de texto
rótulos
enumerador
barra de rolagem
caixas de lista
Para adicionar um
controle ao formulário
Arraste-o e solte-o no
local desejado ou
execute um “duplo click”
sobre ele.
Tipos e declaração de variáveis
Variável é um local reservado na memória RAM para
armazenar dados de entrada e resultados do
processamento.
O Visual Basic suporta e exige a declaração de diferentes tipos de variáveis!!
Variáveis simples
TIPO
SIGNIFICADO
Abrangência
TAMANHO OCUPADO
(bytes)
Chr
Armazena um
caractere de texto
Um caractere
2
String
Armazena textos
extensos
Até dois bilhões de
caracteres
10 + 2 por caractere
Boolean
Booleano
Verdadeiro ou falso
2
Date
Data
De 01/01/100 até
31/12/9999
8
Byte
Armazena inteiros
positivos
0 a 255
1
Short
Armazena números
inteiros em um
pequeno intervalo
-32768 a 32767
2
Variáveis simples (continuação)
TIPO
SIGNIFICADO
Abrangência
TAMANHO
OCUPADO (bytes)
Integer
Números inteiros em
um intervalo médio
-2.147.483.648 a
2.147.483.647
4
Long
Números inteiros em
um intervalo grande
-9.223.372.036.854.775.808 a
9.223.372.036.854.775.807
8
Single
“Ponto flutuante” com
precisão simples
-3,402823 x 1038
a
-1,401298 x 10-45
para números negativos e
1,401298 x 10-45
a
3,402823 x 1038
4
para positivos
Double
“Ponto flutuante” com
precisão dupla
Armazena duas vezes
mais dígitos significativos
que o single (15 casas
decimais)
8
Declaração das variáveis
As variáveis podem ser declaradas para uso local ou geral. A
declaração local significa que elas valerão durante um
evento,execução de uma função ou procedimento (procedure).
Para uso geral elas terão duração equivalente ao tempo de
execução do aplicativo (programa).
Exemplos.
Dim var1 as integer – declaração (criação) de uma
variável de nome “var1” do tipo inteiro para uso local
Public var2 as string - declaração de uma variável de
nome “var2” do tipo texto para uso geral
ARRAYS
Um array é uma alternativa para criação de um
conjunto de variáveis do mesmo tipo. As variáveis
são arranjadas e indexadas (enumeradas) em uma
ou mais dimensões.
SINTAXE:
Dim arrt1D(I) As Integer - unidimensional
Dim arrt2D(I, J) As Single – bidimensional
Dim arrt3D(I, J, K) As Double - tridimensional
Dim arr() As String – declaração dinâmica
arr, arrt1D, arrt2D e arrt3D são os nomes dos arrays.
I,J,K são os indexadores. O tamanho do array (quantidade de
variáveis simples) é dado pelo indexador + 1. O primeiro item
do array é sempre 0 (zero)
EXEMPLOS (declarações e inicializações)
Dim arr1D(5) as integer
Dim arr2D(2,2) as single
Dim arr3D(2,2,3) as double
arr1D (0) = 87
arr1D(3) = 48
arr1D(4) = 12345
arr2D(0,0) = 12,456
arr3D(0,1,2) = 90,667776698
VARIÁVEIS ESTRUTURADAS
São utilizadas para a criação de um tipo especial (personalizado)
de variável. Um variável estruturada pode conter uma ou mais
variáveis simples de tipos diferentes.
SINTAXE:
Structure name
variabledeclarations
End Structure
Name: sequencia alfa-numérica
Variabledeclarations: uso,nome e tipo das variáveis. Pelo menos uma
variável tem que ser declarada.
Obs.: uma variável estruturada só pode ser criada em um módulo
ou classe.
EXEMPLO
Dentro de um módulo:
Structure varestr
Dim a As Integer
Dim b As Integer
End Structure
Public var1() As varestr – é um array dinâmico de uso público
Dentro de um evento (ou procedimento)
Redim var1(12) – redimensionamento do array dinâmico p/ tamanho 13
var1(3).a = 78
var1(3).b = 65
var1(7).b = 567
OPERADORES
ARITMÉTICOS:
OPERADOR
SIGNIFICADO
=
Atribuição de valor
+
Soma
-
Subtração
*
Multiplicação
/
Divisão
\
Divide, mas só retorna a parte inteira
Mod
Retorna o resto de uma divisão
^
Exponenciação
&
Associa duas strings
+=
Soma e atribui
-=
Subtrai e atribui
*=
Multiplica e atribui
/=
Divide e atribui
OPERADORES
COMPARAÇÃO:
OPERADOR
SIGNIFICADO
>
Maior que
<
Menor que
=
Igual
<>
Diferente
>=
Maior ou igual
<=
Menor ou igual
LÓGICOS
OPERADOR
SIGNIFICADO – comparação de dois valores
booleanos (true ou false)
AND
Retorna verdadeiro (true) se os dois valores forem verdadeiros. Retorna falso (false)
caso contrário.
OR
Retorna verdadeiro (true) se pelo menos um dos valores for verdadeiro (true).
Retorna falso (false) caso contrário.
XOR (OR exclusivo)
Retorna verdadeiro um dos valores for verdadeiro e ou outro for falso. Retorna falso
em qualquer outra condição.
NOT (negação)
Retorna o oposto do valor
ATRIBUINDO VALORES ÀS VARIÁVEIS
De um modo geral as variáveis recebem valores durante a
execução do programa (tempo de execução), resultantes de
processamentos ou entradas (valores informados pelos usuários).
Entretanto, em alguns casos elas podem receber valores
(inicialização) na fase de projeto (tempo de projeto).
EXEMPLO DE INICIALIZAÇÃO:
Dim var1 as integer = 0 --- inicializa com zero (0) juntamente com a
declaração
Ou....
Dim var1 as integer
Var1 = 0 --- inicializa com zero (0) em outra linha do programa
ALTERAÇÃO DE VALORES DURANTE A EXECUÇÃO
Dim X,Y,Z as integer
X = textbox1.text -- armazena o valor digitado pelo usuário no controle textbox1 {12}
Y = textbox2.text -- armazena o valor digitado pelo usuário no controle textbox2 {25}
X ^=2 --eleva X ao quadrado {X=144}
Y *=10 – multiplica Y por 10 {Y=250}
Z = X + Y -- armazena o resultado da soma {Z = 394}
Textbox3.text = Z – transfere o valor de Z para o controle textbox3 {394}
FORMATANDO NÚMEROS...
Os números podem ser convertidos de um tipo para outro
por meio de funções de conversão. Exemplos:
Cint(num) – converte num, de um tipo single por exemplo,
para inteiro. Cint arredonda o número para o inteiro superior
caso a parte fracionária seja maior que 0,5 e para o inteiro
inferior caso contrário.
Outras funções de conversão:
CLng – converte para long
CSng – converte para single
CDbl – converte para double
Cbool – converte para boolean
Cbyte – converte para byte
FORMATANDO NÚMEROS...
Com a utilização da biblioteca matemática (classe math)
outros métodos podem ser utilizados para o tratamento de
números:
Valor absoluto: math.abs(num) retorna o módulo (valor
positivo) do número.
Inteiro superior: math.ceiling(num) retorna o inteiro superior,
independente do valor da mantissa.
Inteiro inferior: math.floor(num) retorna o inteiro inferior,
independente do valor da mantissa.
MANIPULAÇÃO DE STRINGS (FILTROS)
Strings são sequencias de caracteres alfanuméricos (textos) e, geralmente, são
manipuladas durante aplicação de filtros sobre arquivos ou textos digitados pelo usuário.
Os filtros podem demandar, entre outras, as seguintes tarefas:
* união
* subtração
*substituição e remoção
* inserção
*separação
*busca
*formatação
*comparação
O Visual Basic oferece duas alternativas para essa manipulação: funções e métodos. As funções
principais são: &,len, mid, instr, StrComp,trim,Ltrim, Rtrim, Format, Ucase e Lcase. Os métodos
são herdados da classe “string” e os mais importantes são:
Length, Split, Substring, Compare, IndexOf, LastIndexOf, ToLower, ToUpper, Format,
União de strings
Finalidade: converter duas ou mais strings em uma.
Sintaxe: strA = strB & strC & strD &....
O operador “&” – ampersand funciona como operador
de soma.
Exemplos:
Dim strA,strB,strC as string
strB= “máquina”
strC = “ferramenta”
strA = strB & strC ‘máquinaferramenta
strA = strB & “ “ & strC ‘máquina ferramenta
strA = strB & “-” & strC ‘máquina-ferramenta
Subtração de strings
Finalidade: subtrair parte de uma string, convertendo-a
em outra.
Sintaxe 1: strA = mid(strB, start, length)
A função mid retorna uma string (sequencia de caracteres)
de tamanho definido pelo argumento length dentro da string
(strB) iniciando na posição definida pelo argumento start.
Sintaxe 2: strA = strB.substring (start, length)
O método substring (disponível na classe string) retorna
uma string (sequencia de caracteres) de tamanho definido
pelo argumento length dentro da string (strB) iniciando na
posição definida pelo argumento start.
Exemplos:
Dim strA, strB As String
strB = "máquina"
strA = Mid(strB, 1, 3) 'máq
strA = strB.Substring(1, 4) 'áqui
strA = strB.Substring(2, 5) 'quina
‘observe que na função Mid o enumerador começa em 1. No método
substring ele começa em zero. Uma mensagem de erro (veja figura
abaixo) aparecerá caso o comprimento( length)ou o início (start)
excedam o tamanho da string.
Remoção ou Substituição de parte da string
Finalidade: remover um ou mais caracteres de uma string
ou substituir um ou mais caracteres
Sintaxes: strA .remove (start, length) ‘remoção
strA.replace (strB, strC) ‘substituição
Exemplos:
Dim strA,strB,strC as string
strB= “máquina operatriz”
strC = “ferramenta”
strA = strB.remove(7,10)‘máquina
strA = strB.replace (“operatriz”, strC )‘máquina ferramenta
Inserção de caracteres (ou string) em outra string
Finalidade: inserir um ou mais caracteres em uma string
já existente
Sintaxe: strA.insert (start, srtB)
Exemplos:
Dim strA,strB as string
strB= “mána ferramenta”
strA = strB.insert(2,”qui”)‘máquina
Separação de uma string em duas ou mais
Finalidade: separar uma string em posições conhecidas.
Um recurso essencial para construção de filtros.
Sintaxe: strA.split (srtB)
‘strB deve funcionar como um marcador (caractere
utilizado como separador) conhecido.
Exemplos:
Dim strA(3) as string‘array
Dim strB as string ‘string e separador
Dim strC as char ‘separador
strB= “torno,fresadora,retificadora,plaina”
strC = “,”
strA = strB.split(strC )‘strA(0) = torno ::: strA(1) = fresadora :::: strA(2)
‘= retificadora e strA(3) = plaina
Busca por caracteres em uma string
Finalidade: encontrar a posição (número inteiro) de um dado caractere
dentro de uma string. Isto é útil para aplicação dos métodos: insert, remove
e substring.
Sintaxes:
Int = strA.indexof(srtB) ‘retorna um inteiro com a primeira ocorrência do caractere armazenado em srtB
Int = strA.indexof(start, srtB) ‘retorna um inteiro com a primeira ocorrência do caractere armazenado
‘em srtB, a partir ‘da posição definida em start
Int = strA.indexof(start, srtB) ‘retorna um inteiro com a primeira ocorrência do caractere armazenado
‘em srtB, a partir ‘da posição definida em start
Int = Instr(strA, strB) ‘retorna um inteiro contendo o ponto de início da ocorrência de strB dentro de strA
Int = strA.lastindexof(strB) ‘‘retorna um inteiro com a última ocorrência do caractere armazenado em
‘srtB
Exemplos:
Dim strA, strB as string
Dim id as integer
strA = “programação cnc”
strB = “cnc”
Id = strA.indexof(“a”) ‘retorna 5
Id = strA.indexof(“a”,6) ‘retorna 7
Id = strA.lastindexof(“o”) ‘retorna 10
Id = strA.indexof(“cnc” ‘retorna 12
Id = instr(strA, strB) ‘ retorna 13 o valor é diferente do anterior, pois nas funções o enumerador
começa com 1
Formatação de strings
Finalidade: converter um dado valor em uma string com um formato
específico (personalizado)
Sintaxes:
StrA= string.format(modelo,vlr) ‘ retorna o valor passado em vlr formatado de acordo com modelo.
StrA = string.format(local, modelo,vlr) ‘ retorna o valor passado em vlr formatado de acordo com
‘modelo e o padrão regional (ou país) definido em local.
StrA = format(vlr, modelo) ‘ retorna o valor passado em vlr formatado de acordo com modelo.
StrA = vlr.tostring( modelo) ‘ retorna o valor de vlr formatado de acordo com modelo.
Format pode ser utilizado como um método da classe string ou
uma função (própria do Visual Basic). O método tostring está
disponível para as variáveis de todos os tipos.
Exemplos:
Dim strA As String
Dim vlr1 As Double = Math.E ‘ NEPERIANO: 2,7182818284590...
Dim vlr2 As Integer = 100
strA = Format(vlr1, "#.###") 'retorna 2,718
strA = vlr1.ToString("#.###") 'retorna 2,718
strA = String.Format("{0:#.###}", vlr1) 'retorna 2,718
strA = String.Format("{0:e}", vlr1) 'retorna 2,718282e+000 – notação de engª
vlr1 = 55 / 7
strA = Format(vlr1, "#.###") 'retorna 7,857
vlr1 *= vlr2
strA = Format(vlr1, "#.###") 'retorna 785,714
strA = Format(vlr2, "#.###") 'retorna 100
strA = Format(vlr2, "#.##0") 'retorna 100,000
Dim reg1 As New System.Globalization.CultureInfo("pt-BR") 'portugues - brasil
Dim reg2 As New System.Globalization.CultureInfo("en-US") 'inglês - USA
strA = String.Format(reg1, "{0:#.##}", vlr1) 'retorna 2,72
strA = String.Format(reg2, "{0:#.##}", vlr1) ' retorna 2.72
Dim vlrD As Date = "15/09/09"
strA = String.Format(reg1, "{0:dd/MMMM/yyyy}", vlrD) 'retorna 15/setembro/2009
strA = String.Format(reg2, "{0:MMMM/dd/yyyy}", vlrD) 'retorna september/15/2009
strA = String.Format(reg2, "{0:#.##0}", vlr1) ‘retorna 785.714
strA = String.Format(reg2, "{0:#.##0}", vlr2) ‘retorna 100.000
Outras considerações sobre os separadores decimais...
O separador decimal a ser escolhido varia de acordo com a região, ou país,
na qual o programa será executado. Entretanto, isto não é tão simples
assim. No nosso caso a vírgula “,” deve ser utilizada como separador, porém
a maioria dos software que utilizamos são importados de locais aonde o
ponto “.” é o separador decimal utilizado. Isto nos impõe a necessidade de
restringirmos as entradas numéricas, de controlar o formato dos números
para que as operações matemáticas e as saídas não sejam afetadas. De
um modo geral, os métodos e funções vistos anteriormente são ineficientes
para atender a essas tais necessidades. Diante disso, devemos fazer o
seguinte:
1) Alterar as configurações do sistema operacional para que o ponto seja
adotado como separador decimal.
2) Monitorar a digitação, por exemplo pelo evento “keypress” e impedir o
usuário de digitar a vírgula.
Definindo o ponto como separador
decimal.
'INCLUIR ANTES DA CLASSE "FORM1” ou formulário – PRINCIPAL:
Imports System.Threading
Imports System.Globalization
'INCLUIR NO EVENTO LOAD DO FORMULARIO (FORM) PRINCIPAL:
Dim sep As New System.Globalization.NumberFormatInfo
If sep.CurrentInfo.NumberDecimalSeparator = "," Then 'troca para ponto
Thread.CurrentThread.CurrentCulture = New CultureInfo("en-us")
sep.CurrentInfo.NumberDecimalSeparator = "."
End If
Monitorando o evento “keypress”
Obs.: O Sistema Windows, e todo aplicativo desenvolvido para ele, é
baseado em eventos. Isto nos possibilita o monitoramento de todos os
eventos externos (feitos pelo usuário ou outros aplicativos) e internos
(gerados pelo sistema operacional). Um desses eventos é o “keypress” que
ocorre quando o usuário pressiona uma tecla qualquer. Ao monitorar esse
evento, podemos impedir que determinado caractere seja introduzido ou
podemos também modificá-lo, tal como mostrado abaixo.
‘inserir no evento “keypress” de um controle de texto
If e.KeyChar = "," Then ‘muda para ponto
e.KeyChar = "."
End If
Obs.: para utilizar o evento “keypress” em determinado controle, basta selecioná-lo
da lista de eventos, tal como mostrado na figura a seguir
Selecionando o evento “keypress”
Formatação de strings
Outro tipo de formatação é a conversão de letras maiúsculas em
minúsculas ou vice-versa.
Sintaxes:
StrA= StrB.ToLower ‘ retorna de strB em letras minúsculas
StrA = StrB.ToUpper ‘ retorna de strB em letras maiúsculas
StrA = Ucase(strB)‘ retorna de strB em letras maiúsculas
StrA = Lcase(strB) ‘ retorna de strB em letras minúsculas
Exemplos:
Dim strA, strB As String
strB = "TORNO"
strA = strB.ToUpper 'retorna TORNO
strB = "toRNo"
strA = strB.ToLower 'retorna torno
strA = UCase(strB) 'retorna TORNO
strA = LCase(strB) 'retorna torno
Comparação de strings
Finalidade: comparar uma string digitada pelo usuário com uma
constante ou valor de referência em tempo de execução.
Sintaxes:
Id = string.compare (strA, strB) ‘ retorna -1 se as strings forem diferentes (strA <
strB); 0 se forem iguais e 1 se (strA > strB)
Id = strA.compareto (strB) ‘ retorna de modo idêntico ao compare
bol = strA.equals (strB) ‘esse método diferencia maiúsculas de minúsculas.
Retorna verdadeiro (true) se as strings forem iguais ou falso (false), caso
contrário.
bol = strA.startswith (strB) ‘esse método retorna true se a string strA iniciar com
strB ou false caso contrário.
bol = strA.endswith (strB) ‘esse método retorna true se a string strA terminar
com strB ou false caso contrário. Tanto startswith como endswith distinguem
maiúsculas de minúsculas.
Exemplos:
Dim strA, strB As String
Dim id As Integer
Dim bol As Boolean
strA = "FRESAS"
strB = "fresa"
id = String.Compare(strA, strB) 'retorna 1 - strings diferentes
id = String.Compare(strA, "FRESAS") 'retorna 0 strings iguais
id = String.Compare(strA, "fresas") 'retorna 1 - strings diferentes
id = String.Compare(strA, "fresas", True) 'retorna 0 --desconsidera
‘maiúsculas/minúsculas
id = String.Compare(strB, strA) ' retorna -1 - strings diferentes
id = strA.CompareTo(strB) 'retorna 1 - strings diferentes
id = strA.CompareTo("fresas") 'retorna 1 - strings diferentes
bol = String.Equals(strA, strB) ' retorna TRUE
bol = String.Equals(strA, "FRESAS") 'retorna TRUE
bol = String.Equals(strA, "fresas") 'retorna FALSE
bol = strA.Equals("FRESAS") 'retorna TRUE
bol = strA.Equals(strB) 'retorna FALSE
bol = strA.StartsWith(strB) 'retorna FALSE
bol = strA.EndsWith("sas") 'retorna FALSE
bol = strA.EndsWith("SAS") ' retorna TRUE
ALGUMAS PROPRIEDADES DA CLASSE STRING
Length
chars
- armazena a quantidade de caracteres da string
- retorna o caracter de uma dada posição na string informada pelo indexador
Exemplos:
Dim tmh As Integer
Dim ltr As String
Dim strA As String = "brunimento"
tmh = strA.Length 'retorna a quantidade de caracteres: 10
ltr = strA.Chars(5) 'retorna m
ltr = strA.Chars(0) 'retorna b
ltr = strA.Chars(10) 'gera uma mensagem de erro tal como mostrado abaixo
ITERAÇÕES
Possibilita a racionalização e o controle do fluxo da
programação sem necessidade de repetição do mesmo
trecho do código
For - Next
Sintaxe: for <cntd> = <vlri> to <vlrf> [step stp]
Next [cntd]
for marca o início da iteração
cntd é a variável do contador, que deve ser numérica. Geralmente um byte,
inteiro ou long, mas pode ser, dependendo do caso um single ou double.
Vlri é o valor incial que pode ser passado diretamente ou por referência
(outra variável).
Vlrf é o valor final.
Stp é o valor do incremento (passo). Ele é opcional. Caso não seja
declarado, a iteração ocorrerá com passo 1.
Next marca o fim do processo (trecho do código) que é executado a cada
passo. Ele pode ser seguido no nome da variável contador, mas é opcional.
EXEMPLO
‘calcula o fatorial de um número natural N, digitado no controle de texto
‘(textbox1.text) e coloca o resultado em textbox2.text, tal como mostrado na
‘figura abaixo
Dim i, N As Long
Dim fat As Long = 1
N = TextBox1.Text 'pega o valor a ser processado na caixa de texto
For i = 1 To N
fat *= i 'executa a multiplicação
Next i
TextBox2.Text = fat 'transfere o valor para a caixa de texto
do - while - loop
é utilizado aonde não se sabe, com antecedência, o número de interações a serem feitas.
Sintaxe: do while cond
{trecho do código}
loop
do marca o início da iteração
while cond é o teste a ser executado. Se verdadeiro (TRUE) o processo continua.
Se falso (FALSE) o processo será interrompido.
loop marca o fim do trecho de código a ser executado
do - until - loop
é utilizado aonde não se sabe, com antecedência, o número de interações a serem feitas.
Sintaxe: do until cond
{trecho do código}
loop
until cond é o teste a ser executado. Se falso (FALSE)) o processo continua.
Se verdadeiro (TRUE o processo será interrompido.
Tanto o while como o until podem ser colocados na linha do loop.
Nesse caso, o trecho de código é executado pelo menos uma vez.
do - while - loop
do
{trecho do código}
loop while cond
do - until - loop
do
{trecho do código}
loop until cond
EXEMPLO
'transfere os nomes dos processos até (inclusive) o processo indicado como marcador
dim i As Integer = 0 ' contador
dim tmh As Integer = ListBox1.Items.Count
dim mcd As String = TextBox1.Text ' marcador
dim prc As String ' nome do processo
prc = ListBox1.Items.Item(i)
ListBox2.Items.Clear() 'limpa o conteúdo da lista a ser atualizada
Do While i < tmh And Not (prc.Equals(mcd))
prc = ListBox1.Items.Item(i)
ListBox2.Items.Add(prc)
i += 1 'soma 1 ao indexador
Loop
CONDICIONAIS
São utilizados para controlar (desviar) o fluxo de dados. A estrutura é
sempre baseada em teste lógico, o qual desvia o fluxo de acordo com
a resultado (verdadeiro ou falso).
Sintaxes:
IF <cond1> THEN
{ação}
ENDIF
IF <cond1> OR <cond2> THEN
{ação}
ELSE
{ação alternativa}
ENDIF
IF <cond1> THEN
{ação}
ELSE
{ação alternativa}
ENDIF
IF <cond1> AND <cond2> THEN
{ação}
ELSE
{ação alternativa}
ENDIF
Sintaxes:
IF <cond1> THEN
{ação}
ELSEIF <cond2> THEN
{ação alternativa1}
ELSE
{ação alternativa1}
ENDIF
<cond1> deve ser um teste cujo resultado seja
booleno (true or false)
Ex: (a >b)??
ELSEIF realiza um outro teste.
As instruções (linhas de código) após o THEN
serão executadas caso teste seja verdadeiro.
A instrução após ELSE será executada
somente se os testes anteriores (IF e ELSEIF)
falharem (caso falso).
SELECT <testcond>
CASE <cond1)
{alternativa 1}
CASE <cond2>
{alternativa 2}
CASE <cond3>
{alternativa 3}
...
CASE <condN)
{alternativa N}
CASE ELSE
{alternativa do else}
END SELECT
A estrutura SELECT-CASE é uma alternativa ao IF-THEN para os casos onde o
resultado do teste (condicional) não seja booleano (falso ou verdadeiro).
O teste é avaliado “CASE” por “CASE” até que a condição (variável) a ser
testada <testcond> seja válida. Caso isto não aconteça, o fluxo é trasferido para
a linha subsequente ao “END SELECT” ou para as linhas após o “CASE ELSE”
caso ele exista.
EXEMPLO
Const NMAX = 6000 'rotação máxima da máquina
dim rot As Integer 'valor a ser informado pelo usuário
dim Ttl As String = "TESTE DA ROTAÇÃO LIMITE" 'título do msgbox
rot = TextBox1.Text 'pega o valor digitado
If IsNumeric(rot) Then 'testa se é um número
If rot > NMAX Then ‘testa contra a rotação máxima
MsgBox("ROTAÇÃO EXCEDE O LIMITE PERMITIDO", MsgBoxStyle.Exclamation, Ttl)
ElseIf rot = NMAX Then
MsgBox("ROTAÇÃO IGUAL AO LIMITE PERMITIDO", MsgBoxStyle.Exclamation, Ttl)
Else 'rot < NMAX
MsgBox("ROTAÇÃO DENTRO DO LIMITE PERMITIDO", MsgBoxStyle.Exclamation, Ttl)
End If
Else ' entrada não numérica
MsgBox("DIGITE UM NÚMERO", MsgBoxStyle.Exclamation, Ttl)
End If
A função MsgBox mostra uma
mensagem em uma caixa de diálogo
e aguarda a resposta do usuário.
Retorna um interiro indicando a
resposta dada.
A função IsNumeric testa um dado
valor. Ela retorna um booleano (true)
se ele for numérico ou false caso
contrário.
EXEMPLO
RETIRANDO INFORMAÇÕES DE UM ARQUIVO SEQUENCIAL
Finalidade: abrir um arquivo sequencial (linha a linha) no formato texto
e transferir o conteúdo das linhas para a memória RAM (dentro de um
variável)
SINTAXE
FILEOPEN(num,nome,modo)
DO WHILE NOT (EOF (num))
var = LINEINPUT (num)
LOOP
FILECLOSE(num)
FILEOPEN função que abre o arquivo
Num é o número a ser dado ao arquivo
Nome é a variável que armazena o caminho e o
nome do arquivo a ser lido
Modo informa as alternativas para abertura do
arquivo . No caso de leitura ele pode ser aberto
nos modos: input, random ou binary.
DO-WHILE-LOOP já foi explicado anteriormente.
EOF função que retorna verdadeiro (true) se o fim
do arquivo foi atingido. Válida apenas para
arquivos abertos nos modos input e random.
LINEINPUT função que transfere para uma
variável do tipo string a linha corrente do arquivo.
Válida apenas para arquivos abertos no modo
input.
FILECLOSE fecha o arquivo aberto
EXEMPLO
GRAVANDO INFORMAÇÕES DE UM ARQUIVO SEQUENCIAL
Finalidade: gerar um arquivo novo ou abrir um já existente e gravar o
conteúdo da memória RAM (variáveis)
SINTAXE
FILEOPEN(num,nome,modo)
PRINTLINE (num, var)
FILECLOSE(num)
Modo define o tipo de gravação: append ou
output.
append insere novas linhas ao final de um
arquivo já existente.
output apaga, caso exista, o arquivo atual e
grava a partir do início.
PRINTLINE grava uma linha no arquivo aberto
(num) com a string armazenada (var) e
acrescenta um “fim de linha”.
Obs: caso o arquivo não exista, o FILEOPEN
criará um novo (com o nome e caminho
informados). Entretanto, se a pasta (caminho) não
existir, será gerada uma mensagem de erro.
EXEMPLO
CONTROLES PARA LEITURA E GRAVAÇÃO DE DADOS EM ARQUIVOS
O VISUAL BASIC CONTÉM UM CONTROLE PARA ABERTURA DE
AQUIVOS (openfiledialog) E OUTRO PARA GRAVAÇÃO (savefiledialog)
SIMILARES AQUELES UTILIZADOS EM TODOS OS APLICATIVOS PARA
O WINDOWS
ESSES CONTROLES ESTÃO DISPONÍVEIS NO
“TOOLBOX” E APÓS DAR UM DUPLO CLICK ELES
SE INSTALAM NA PARTE INFERIOR DO
FORMULÁRIO, TAL COMO MOSTRADO NA
FIGURA AO LADO, JUNTAMENTE O CONTROLE
PARA CRIAÇÃO DE MENUS (Mainmenu)
EXEMPLO: abertura
Obs.: MenuItem2 foi o nome dado
ao menu ABRE
EXEMPLO: gravação
Obs.: MenuItem3 foi o nome dado
ao menu GRAVA
FUNÇÕES E SUB-ROTINAS
O USO DE FUNÇÕES E SUB-ROTINAS POSSIBILITA A MODULARIDADE DO
PROGRAMA POR MEIO DA SEPARAÇÃO DE TRECHOS DO CÓDIGO. ISTO FACILITA A
MANUTENÇÃO E PERMITE O COMPARTILHAMENTO DESSAS ROTINAS COM
OUTROS PROJETOS.
A DIFERENÇA BÁSICA ENTRE UMA FUNÇÃO OU SUB-ROTINA ESTÁ
NO SEUS EFEITOS. AS FUNÇÕES SEMPREM RETORNAM UM VALOR,
EQUANTO QUE AS SUB-ROTINAS TÊM EFEITOS SECUNDÁRIOS E
NÃO RETORNAM VALORES DIRETAMENTE.
SINTAXE PARA SUB-ROTINAS (SUB)
Sub nome(prmt1 as type, prmt2 as type, ..., prmtN as type)
{código}
End sub
SINTAXE PARA FUNÇÃO
Sub nome(prmt1 as type, prmt2 as type, ..., prmtN as type) as type
{código}
return vlret
End sub
prmt1 a prmtN são os parâmetros (ou argumentos) da sub-rotina ou
função.
Obs.: geralmente, mas não necessariamente, as
funções são criadas nos módulos para facilitar uso
das mesmas em outros projetos.
EXEMPLO :
•Representação vetorial; produto escalar e produto
vetorial
Sub-rotina: disparada pelo botão “CÁLCULO”
Funções utilizadas na sub-rotina

Documentos relacionados