Upload
internet
View
109
Download
3
Embed Size (px)
Citation preview
Passagem de parâmetros por valor
txtInOut1.Text = num1 txtInOut2.Text = num2 txtOut.Text = num3End Sub
Private Sub cmdVal_Click() Dim num1 As Integer, num2 As Integer, num3 As Integer num1 = Val(txtInOut1.Text) num2 = Val(txtInOut2.Text) num3 = passagemPorValor(num1, num2)
Passagem de parâmetros por valor
Public Function passagemPorValor(ByVal a As Integer, ByVal b As Integer) Dim c As Integer passagemPorValor = a * b c = a a = b b = cEnd Function
Passagem de parâmetros por ReferênciaPrivate Sub cmdRef_Click()
Dim num1 As Integer, num2 As Integer, num3 As Integer
num1 = Val(txtInOut1.Text)
num2 = Val(txtInOut2.Text)
num3 = passagemPorReferencia(num1, num2)
txtInOut1.Text = num1
txtInOut2.Text = num2
txtOut.Text = num3
End Sub
Public Function passagemPorReferencia(ByRef a As Integer, ByRef b As Integer) Dim c As Integer passagemPorReferencia = a * b c = a a = b b = cEnd Function
Passagem de parâmetros por Referência
Passagem de parâmetrosConclusão
Quando se usa passagem de parâmetros por referência as alterações feitas nos parâmetros
repercutem-se no exterior da função ou procedimento
O VB Usa por defeito a passagem de parâmetros por referência
Resolução da prática 5
Objectos necessários
Duas caixas de texto (textbox)
Três botões (commandoButton)
Posicione-os de forma lógica
Duas labels (valor de n, resultado)
Um form
Duas Frames (input, output)
Propriedades a alterar
Caption Input
Frame1
Text
Frame2
name lblResultadoLabel2
Caption Output
Textbox1
Caption N
Label1
Caption Resultado
Form1
Name frmOperacoes
Caption Operações
MaxButton False
StartUpPosition 2 – Center Screen
Textbox2
Locked True
Name txtN
Text
Name txtResultado
Propriedades a alterarCommandButton1
Name cmdAdicao
Caption Soma
CommandButton2
Name cmdProduto
Caption Produto
CommandButton3
Name cmdSair
Caption Sair
Funções necessárias
somatorio(n As Integer) As Double
No Novo modulo:
produto(n As Integer) As Double
validarEntrada(n As Integer, minimoAdmissivel As Integer) As Boolean
No form:
cmdAdicao_Click()
cmdProduto_Click()
cmdSair_Click()
txtN_Change()
Sub do Form
End Sub
'objectivo: Gere as acções necessárias á execução do produtoPrivate Sub cmdProduto_Click()
Dim limiteSup As Integer, resultado As Double
limiteSup = Val(txtN.Text)
If Module1.validarEntrada(limiteSup, 1) Then
resultado = produto(limiteSup)
txtN.Text = limiteSup
txtResultado.Text = resultado
lblResultado.Caption = "Produto"
End If
Sub do Form'objectivo: Gere as acções necessárias á execução do somatório
Private Sub cmdAdicao_Click()
Dim limiteSup As Integer, resultado As Double
limiteSup = Val(txtN.Text)
If Module1.validarEntrada(limiteSup, 2) Then
resultado = somatorio(limiteSup)
txtN.Text = limiteSup
txtResultado.Text = resultado
lblResultado.Caption = "Somatório"End If
End Sub
Form
Sub do Form
'objectivo: termina o programaPrivate Sub cmdSair_Click() EndEnd Sub
'Objecivo: Sempre que haja alterações na caixa de texto "txtN"' o Caption e o conteúdo da caixa "txtResultado" são alterados
Private Sub txtN_Change() lblResultado.Caption = "Resultado" txtResultado.Text = "" 'Apaga o conteúdo da caixa de textoEnd Sub
Funções do Modulo
End Function
'objectivo:Calcula o somatório 1/i de 2 a nparâmetro entrada/saída : n número de vezes 'tipo intergerparâmetro saída : 'tipo double
Public Function somatorio(n As Integer) As Double
Dim i As Integer, resultado As Double
resultado = 0
For i = 2 To n
resultado = resultado + 1 / i
Next i
somatorio = resultado
Funções do Modulo
End Function
'objectivo:Calcula o Produto 1/i de 2 a nparâmetro entrada/saída : n número de vezes tipo intergerparâmetro saída tipo double
Public Function produto(n As Integer) As DoubleDim i As Integer, resultado As Double
If n > 1 Then
resultado = 1
For i = 2 To nresultado = resultado * 1 / i
Next i
produto = resultado
End If
Funções do Modulo'objectivo:verificar se N está dentro dos limites aceitáveis‘ parâmetro entrada/saída : n -> limite superior requerido pelo utilizador 'tipo interger‘parâmetro entrada/saida : minimoAdmissivel -> valor mínimo aceitável para n 'tipo interger'parâmetro saída : 'tipo boolean
Funções do ModuloPublic Function validarEntrada(n As Integer, minAdmi As Integer) As Boolean
Dim cx As Integer
If n < minAdmi Thencx = MsgBox(" n = " & n & " não é válido " & Chr(13) & _ "Deseja substituir o valor de n pelo mínimo admissível?" & Chr(13) & _ "n = " & minAdmi, vbYesNo, "Erro")
If cx = vbYes Thenn = minAdmivalidarEntrada = True
Else
End Function
validarEntrada = FalseEnd If
ElsevalidarEntrada = True
End If
Caixa de mensagem
Funções com ciclos
Public Function primos(numero As Long) As Boolean
Dim incremento As Long
incremento = 2While (numero Mod incremento And numero <> 1)
incremento = incremento + 1Wend
If incremento = numero Or numero = 1 Then
primos = True
Else
primos = FalseEnd If
End Function
Funções com ciclos
End Function
Public Function primos1(numero As Long) As Boolean
Dim incremento As Long
incremento = 1
Do
incremento = incremento + 1Loop While (numero Mod incremento And numero <> 1)
If incremento = numero Or numero = 1 Then
primos1 = True
primos1 = False
Else
End If
Funções com ciclosPublic Function primos2(numero As Long) As Boolean
Dim incremento As Long, bool As Boolean
incremento = 1
Doincremento = incremento + 1bool = numero Mod incremento
Loop Until (Not bool Or numero = 1)
If incremento = numero Or numero = 1 Thenprimos2 = True
Elseprimos2 = False
End If
End Function
Funções com ciclos
Public Sub pesquisaPrimos(inicio As Long, fim As Long)
Dim i As Long
For i = inicio To fim
If primos(i) Then cboPrimos.AddItem i
Next i
End SubComboBox
Adiciona um Item
Item a ser adicionado
Função que
verifica se I é primo