Ir para conteúdo
Entre para seguir isso  
Boleta

[Aula 8] Funções e SubRotinas

Recommended Posts

Boleta    1
Boleta

Hayo amiguitos!

 

Hoje, em mais uma aula de Visual Basic 6.0, irei abordar um assunto muitissimo importante, no que facilita extremamente uma aplicação. A criação das SubRotinas e de Funções e o uso delas.

 

O que são?

 

SubRotinas -> São chamadas à códigos específicos, criados na janela de código, pelo programador. Estes códigos são executados . Um exemplo bem conhecido delas, são as rotinas de eventos dos objetos. Eventos Click, Change, etc... Você já conhecem eles.

 

Funções -> São chamadas à códigos específicos, muito parecidas com SubRotinas, porém, retornam um valor em uma variável. Um exemplo bárbaro, é a função MsgBox, que retorna o valor do botão clicado, mesmo você captando-o ou não.

 

Me belisca Boleta. E como eu posso criar uma dessas?

É bastante simples. Você pode usar a ferramente do Visual Basic para cria-las ou então criar via código (eu prefiro essa). Vou abordar somente o via código:

 

Criando SubRotinas

 

Você deve, primeiramente, criar o "cabeçalho" da rotina, onde você pode introduzir variáveis ou não. Sua sintaxe é:

 

Private Sub [nome da rotina]([variaveis])[codigos]End Sub
Vamos entender cada um:

 

[nome da rotina] -> É o nome da chamada da rotina. Quando você for usa-la, terá o nome dela por referência. Ele não deve ser semelhante à nenhum nome de Rotina ou Função existentes no projeto, ou padrões do Visual Basic.

 

[variaveis] -> Opcional. É onde você capta valores fornecidos pela chamada da função. Vamos entende-lo melhor daqui pra frente. Só para não deixar "no seco", um exemplo disso é quando se usa a função MsgBox, onde você fornece títulos, constantes, textos, etc.

 

[codigos] -> Os códigos que serão executados na chamada da rotina.

 

End Sub -> Fecha a rotina.

 

 

Exemplo de código:

Private Sub InfoMensagem(Texto As String, Titulo As String)MsgBox Texto, vbInformation, TituloEnd Sub

Criando Funções

 

Elas são muito parecidas com as SubRotinas, porém retornam um valor em uma variável. Vamos entender um pouco mais:

 

Sintaxe:

Private Function [nome da funcao]([variaveis]) As [tipo da variavel][codigos]End Function

[nome da funcao] -> Como na SubRotina, é a chamada da função. Possúi as mesmas regras das rotinas.

 

[variaveis] -> Também opcionais, retornam valores chamados pelo programador.

 

[tipo da variavel] -> Em toda a função, devemos retornar valores finais. Este valor, se retorna ao nome da função, onde também se torna uma variável. O programador deve prever o tipo de variável que vai usar para retornar um valor. Por exemplo, se formos retornar Textos, usaremos String, para números, Integer, Long...

 

[codigos] -> Códigos que serão executados apartir da chamada a função.

 

End Function -> Fecha a função.

 

Exemplo de código:

Private Function Soma(Termo1 As Long, Termo2 As Long) As LongSoma = Termo1 + Termo2End Function

 

Como usar as Rotinas e funções

 

Rotinas

Devemos fazer a chamada. Para isso, usamos:

Rotina [variavel1], [variavel2]
Lembrando que cada variável deve ser separada por vírgulas. Caso não haja nenhuma, apenas chame a função sem as variáveis e vírgulas.

 

Funções

Fazemos a chamada e retornamos seu valor ou em uma variável, ou em uma cláusula, ou em propriedades de objetos. Veja:

Dim Variavel As [tipo]Variavel = Funcao([variavel1], [variavel2])
A regra das variaveis vale na mesma. Lembre-se também de que o tipo da variavel deve ser semelhante ao do tipo da função.

 

Usando os códigos feitos nos exemplos

 

Rotina

 

Private Sub InfoMensagem(Texto As String, Titulo As String)MsgBox Texto, vbInformation, TituloEnd SubPrivate Sub Form_Load()InfoMensagem "Olá, sou o texto que aparecerá!", "E aqui, o título."End Sub
Função

 

Private Function Soma(Termo1 As Long, Termo2 As Long) As LongSoma = Termo1 + Termo2End FunctionPrivate Sub Form_Load()Dim Valor As LongValor = Soma(5, 7)MsgBox "Resultado retornado: " & Valor, vbInformation, "Chama à função"End Sub

Observação:

 

Private -> Faz a função ficar restrita à apenas um formulário. pode ser substituida por Public, que permite que seja usada em todos os formulários.

 

 

Exercício

 

Pegue sua calculadora feita na aula de operadores, e remodele-a usando funções para somar, subtrair, etc.

 

--------------------------------------------------

 

Espero que tenham gostado da aula. Em brave, mais aulas e mais conhecimento de Visual Basic!

 

Dúvidas? Não hesite em postar!

 

Abraços,

//Bol~

Compartilhar este post


Link para o post
Compartilhar em outros sites
Linkz    0
Linkz

Boa aula Boleta ^^Parabéns!

Compartilhar este post


Link para o post
Compartilhar em outros sites
Vasigap    0
Vasigap

+ 1 aula com ótima qualidade =Dquando deh tempo eu remodelo a calculadora lá e posto aki ~^

Compartilhar este post


Link para o post
Compartilhar em outros sites
Bogos    0
Bogos

Ta ficano PRO na aula online haauhahhaMuitoo massa melhor do que as que eu dou pros meus alunos aqui oOParabéns veio ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites
Vufusuf    1
Vufusuf

Originally posted by Boleta

Dúvidas?

Sim, hehe

Qual a diferenca entre função e rotina? (na utilidade)

 

E ve se ta certo meu exercicio ae (usei a minha calculadora da aula 6)

 

Calculadora:

Imagem Postada

 

Code:

Private Sub soma(num1 As Integer, num2 As Integer)    resultado = num1 + num2    Label1.Caption = resultadoEnd SubPrivate Sub subtracao(num1 As Integer, num2 As Integer)    resultado = num1 - num2    Label1.Caption = resultadoEnd SubPrivate Sub multiplicacao(num1 As Integer, num2 As Integer)    resultado = num1 * num2    Label1.Caption = resultadoEnd SubPrivate Sub divisao(num1 As Integer, num2 As Integer)    resultado = num1 / num2    Label1.Caption = resultadoEnd SubPrivate Sub Command1_Click()    If Option1.Value = True Then        soma Text1.Text, Text2.Text    ElseIf Option2.Value = True Then        subtracao Text1.Text, Text2.Text    ElseIf Option3.Value = True Then        multiplicacao Text1.Text, Text2.Text    End If    If Option4.Value = True Then        If Text1.Text > 0 And Text2.Text > 0 Then            divisao Text1.Text, Text2.Text        Else            MsgBox "Use valores maior que 0.", vbCritical, Erro        End If    End IfEnd Sub

OBS.:

Option1,2,3,4 sao respectivamente os OptionButton de soma, subtração, multiplicação e divisão

 

Valeu,

Vufusuf

Compartilhar este post


Link para o post
Compartilhar em outros sites
Zero    0
Zero

Olá Vufusuf,

tanto functions quanto sub rotines são chamados de Rotinas, pois rotina é todo o bloco de códigos que a aplicação segue sequencialmente.

A diferença entre eles é apenas a seguinte: Functions retornam valor enquanto Subs não.

 

O que seria retornar valor?

Um exemplo prático, vou alterar o seu projeto para utilização de functions:

Private Function soma(num1 As Integer, num2 As Integer) As Integer    soma = num1 + num2End SubPrivate Function subtracao(num1 As Integer, num2 As Integer) As Integer    subtracao = num1 - num2End SubPrivate Function multiplicacao(num1 As Integer, num2 As Integer) As Integer    multiplicacao = num1 * num2End SubPrivate Function divisao(num1 As Integer, num2 As Integer) As Integer    resultado = num1 / num2End SubPrivate Sub Command1_Click()    If Option1.Value = True Then        resultado = soma(Text1.Text, Text2.Text)        Label1.Caption = resultado    ElseIf Option2.Value = True Then        resultado = subtracao(Text1.Text, Text2.Text)        Label1.Caption = resultado    ElseIf Option3.Value = True Then        resultado = multiplicacao(Text1.Text, Text2.Text)        Label1.Caption = resultado    End If    If Option4.Value = True Then        If Text1.Text > 0 And Text2.Text > 0 Then            resultado = divisao(Text1.Text, Text2.Text)            Label1.Caption = resultado        Else            MsgBox "Use valores maior que 0.", vbCritical, Erro        End If    End IfEnd Sub

Não sei se o Boleta já passou vetores de controles pra vocês, mas depuração de erro eu sei que ele já passou.

Agora veja seu código editado da melhor maneira que encontrei:

Primeiro, todos os options que você adicionou no projeto, mude o .Name de todos para 'Opt', assim faça um array(vetor) de controles.

Sendo o index do +, -, *, / respectivamente 0, 1, 2, 3.

Feito isso coloque esse código no lugar do antigo:

Private Function calc(num1 As Double, num2 As Double, Opt As Integer) As Double    Select Case Opt        Case 0: calc = num1 + num2        Case 1: calc = num1 - num2        Case 2: calc = num1 * num2        Case 3: calc = num1 / num2    End SelectEnd FunctionPrivate Sub Command1_Click()    Dim i As Integer    Dim resultado As Double    On Error GoTo depuraErr        For i = Opt.LBound To Opt.UBound        If Opt(i).Value Then            resultado = calc(CDbl(Text1.Text), CDbl(Text2.Text), Opt(i).Index)            Exit For        End If    Next        Label1.Caption = CStr(resultado)        Exit SubdepuraErr:    MsgBox Err.Description, vbCritical, "Erro !"End Sub

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
Entre para seguir isso  

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×