quinta-feira, 5 de julho de 2012

Subrotinas e Funções:

  • Subrotinas:
     As subrotinas podem ser definidas como miniaturas dos programas. A subrotina precisa de uma nome para ser atribuido à ela, assim como as variáveis. Mas ao invés das variáveis que armazenam dados, as subrotinas armazenam códigos. Algumas subrotinas são chamadas automaticamente quando certas ações são executas, é o caso da subrotina Form_Load que é chamada automaticamente quando um form é executado.

     As subrotinas são úteis para eliminar as redundâncias, facilitando a manutenção do programa.
  • Criando uma Subrotina:
     Para criar uma subrotina é muito simples, são apenas 2 linhas de código:
Sub NomedaSubrotina()
End Sub

  • Escopo da Subrotina:
     É uma palavra-chave que vem depois do Sub. Private e Public são exemplos de escopos.  Ele representa onde a subrotina pode ser chamada no seu programa. Subrotinas com o escopo Public pode ser chamado em qualquer lugar do projeto, enquando as Private só podem ser chamada por outro form. 
     Os escopos das subrotinas são muito utilizadas para se evitar erros!! Se declarar uma subrotina como pública em todo lugar, pode gerar algum erro difícil de ser encontrado, causando muita dor de cabeça. 
  • Parâmetros:
     Parâmentros, também chamados de Argumentos, são variáveis que podem ser definidas nas subrotinas. As subrotinas com parâmentros são assim:

Private Sub Adicao(x As Integer, y As Integer)
    MsgBox x + y
End Sub

Private Sub Form_Load()
Dim a As Integer
Dim b As Integer
a = 3
b = 7
Adicao a, b
End Sub

     As variáveis x e y são Parâmentros, e Adicao é a Subrotina. No exemplo acima, a e b são representações dos parâmentros x e y. 
  • ByRef e ByVal:
     Parâmentros podem ser enviadas para as subrotinas por: referência(ByRef) e por valor(ByVal).
      Quando os parâmentros são passados por referência (ByRef) , apenas a memória das variáveis é passada. Isso significa que os valores podem ser modificados pela subrotina, que terá o novo valor quando a subrotina terminar. A variável que irá conter o valor de "retorno"  ou se saída deve ser definida pelo ByRef.
     Quando os parâmetros são passados pelo valor (ByVal) , ca cópia das variáveis é passada.  Isso significa que mesmo se os valores forem alterados pela subrotina, o valor original é mantido pela subrotina. Quando a subrotina finaliza, a variável passada por valor (ByVal) retêm o valor que foi passado originalmente antes da chamada do programa.

 Exemplo:

Sub ExSubrotina()
    MsgBox "MsgBox pela Sub!!"
End Sub

Private Sub Form_Load()
    MsgBox "MsgBox pelo Form_Load!!!"
    ExSubrotina
End Sub
  • Criando uma função: 
As funções são basicamente a mesma coisa que as Subrotinas, exceto por elas retornarem um valor. Isso significa que uma função tem um tipo, que irá retornarum valor que foi definido pelo código da função.

     O formato geral das funções é: 

Public function NomedaFunção (Parâmentro as TipodeDado, ...) As TipodeDado
* as funções do tipo Public podem ser usadas por todo o projeto, se for criado em um módulo.
ou
Private function NomedaFunção (Parâmentro as TipodeDado, ...) As TipodeDado
* as funções do tipo Private podem ser usadas somente em alguns módulos ou procedures.

Exemplo de função:
* No módulo:
Public Function Conta(x As Integer, y As Integer, z As Integer)
Dim Operacao As Integer
Operacao = (x * y)
Operacao = Operacao * 30
Operacao = Operacao * z
Conta = Operacao
End Function

* No Form (adicione 3 textbox, 1 botão, 1 label e mais outras labels a seu critério)
Private Sub Command1_Click()
Dim a As Integer
Dim b As Integer
Dim c As Integer
Dim d As Integer
a = Text1.Text
b = Text2.Text
c = Text3.Text
d = Conta(a, b, c)
Label1.Caption = "Eu bebo " & d & " copos de água em " & c & " meses!!!"
End Sub

  •  Subrotinas ou Funções? Eis a questão.
    Se estiver em dúvida em utilizar uma Subrotina ou Função, apenas se pergunte: Vou precisar retornar um valor?? Se a resposta for sim, então use a Função. Se não, use a subrotina. ;)

* Fontes:
http://en.wikiversity.org/wiki/Functions_and_Subroutines_in_VB6
http://www.vb6.us/tutorials/understanding-subroutines-and-functions-vb
http://www.vbtutor.net/vb6/lesson14.html


0 comentários:

Postar um comentário