Boleta 1 #1 Postado 2 Dezembro, 2006 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 SubVamos 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
Epaminondas 0 #2 Postado 2 Dezembro, 2006 Muito boa a aula Boleta! Parabéns, está ficando muito bom seu "Curso de Visual Basic". http://forum.otserv.com.br/style_emoticons/<#EMO_DIR#>/smile.gif Epaminondas Compartilhar este post Link para o post Compartilhar em outros sites
Linkz 0 #3 Postado 2 Dezembro, 2006 Boa aula Boleta ^^Parabéns! Compartilhar este post Link para o post Compartilhar em outros sites
Zero 0 #4 Postado 2 Dezembro, 2006 Excelente Boleta, já passou o conceito de Private e Public pra galera? http://forum.otserv.com.br/style_emoticons/<#EMO_DIR#>/smile.gif Abraços! Compartilhar este post Link para o post Compartilhar em outros sites
Vasigap 0 #5 Postado 3 Dezembro, 2006 + 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 #6 Postado 3 Dezembro, 2006 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 #7 Postado 6 Dezembro, 2006 Originally posted by Boleta Dúvidas? Sim, heheQual 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: 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 #8 Postado 6 Dezembro, 2006 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