9
Resolução ficha de trabalho VBA nº. 8 1 Resolução de exercícios da ficha de trabalho nº. 8 de VBA Option Explicit 'Exercicio 1 Sub hipotenusa() Dim cat1 As Single Dim cat2 As Single Dim hip As Single cat1 = val(InputBox("Escreva o valor do cateto 1:", "Cateto 1")) cat2 = val(InputBox(val("Escreva o valor do cateto 2:", "Cateto 2")) hip = Sqr(cat1 ^ 2 + cat2 ^ 2) MsgBox "A medida da hipotenusa é : " & hip End Sub 'Exercicio 2 Sub Dobro_triplo() Dim num As Integer num = val(InputBox("Escreva um número inteiro positivo", "Número")) If num > 100 Then MsgBox " Calculo do dobro: " & num * 2 Else MsgBox " Calculo do triplo: " & num * 3 End If End Sub 'Exercicio 3 Sub maior_tres() Dim a As Integer, b As Integer, c As Integer Dim maior As Integer a = val(InputBox("Escreva um número inteiro positivo", "Número a")) b = val(InputBox("Escreva um número inteiro positivo", "Número b")) c = val(InputBox("Escreva um número inteiro positivo", "Número c")) maior = a If maior < b Then maior = b If maior < c Then maior = c MsgBox " O maior é: " & maior End Sub 'Exercicio 4 Sub nomes() Dim p1 As String Dim p2 As String p1 = InputBox("Escreva o primeiro nome:", "Primeiro nome") p2 = InputBox("Escreva o último nome:", "Último nome") MsgBox "Trocar os nomes: " & p2 & " " & p1 End Sub

Ficha 08 Resolução - estgv.ipv.pt · PDF fileResolução ficha de trabalho VBA nº. 8 1 Resolução de exercícios da ficha de trabalho nº. 8 de VBA Option Explicit 'Exercicio 1

Embed Size (px)

Citation preview

Page 1: Ficha 08 Resolução - estgv.ipv.pt · PDF fileResolução ficha de trabalho VBA nº. 8 1 Resolução de exercícios da ficha de trabalho nº. 8 de VBA Option Explicit 'Exercicio 1

Resolução ficha de trabalho VBA nº. 8 1

Resolução de exercícios da ficha de trabalho nº. 8 de VBA

Option Explicit 'Exercicio 1 Sub hipotenusa() Dim cat1 As Single Dim cat2 As Single Dim hip As Single

cat1 = val(InputBox("Escreva o valor do cateto 1:", "Cateto 1")) cat2 = val(InputBox(val("Escreva o valor do cateto 2:", "Cateto 2")) hip = Sqr(cat1 ^ 2 + cat2 ^ 2) MsgBox "A medida da hipotenusa é : " & hip

End Sub 'Exercicio 2 Sub Dobro_triplo() Dim num As Integer

num = val(InputBox("Escreva um número inteiro positivo", "Número")) If num > 100 Then

MsgBox " Calculo do dobro: " & num * 2 Else

MsgBox " Calculo do triplo: " & num * 3 End If

End Sub 'Exercicio 3 Sub maior_tres() Dim a As Integer, b As Integer, c As Integer Dim maior As Integer

a = val(InputBox("Escreva um número inteiro positivo", "Número a")) b = val(InputBox("Escreva um número inteiro positivo", "Número b")) c = val(InputBox("Escreva um número inteiro positivo", "Número c")) maior = a If maior < b Then maior = b If maior < c Then maior = c MsgBox " O maior é: " & maior

End Sub 'Exercicio 4 Sub nomes() Dim p1 As String Dim p2 As String

p1 = InputBox("Escreva o primeiro nome:", "Primeiro nome") p2 = InputBox("Escreva o último nome:", "Último nome") MsgBox "Trocar os nomes: " & p2 & " " & p1

End Sub

Page 2: Ficha 08 Resolução - estgv.ipv.pt · PDF fileResolução ficha de trabalho VBA nº. 8 1 Resolução de exercícios da ficha de trabalho nº. 8 de VBA Option Explicit 'Exercicio 1

Resolução ficha de trabalho VBA nº. 8 2

'Exercicio 5 Sub numeros_linhas() Dim n1 As Integer Dim n2 As Integer

n1 = cint(InputBox("Escreva um número inteiro:", "Número 1")) n2 = cint(InputBox("Escreva outro número inteiro:", "Número 2")) MsgBox "Escrever os números em linhas separadas: " & Chr(13) & n1 & Chr(13) & n2

End Sub 'Exercicio 6 Sub par_impar() Dim n As Integer

n = cint(InputBox("Escreva um número inteiro positivo", "Número")) If (n Mod 2) = 0 Then

MsgBox "O número " & n & " é par" Else

MsgBox "O número " & n & " é ímpar" End If

End Sub 'Exercício 7 Function f(x As Single) As Single

If x <> 0 Then f = Sin(x) / x

Else f = 1

End If End Function Sub funcao() Dim x As Single

x = val(InputBox("Escreva um número para calcular a funçao f(x)", "Número"))

MsgBox "O resultado de f(“ &x &”) é " & f(x) End Sub 'Exercicio 8 Sub soma_n() Dim num As Integer Dim cont As Integer Dim soma As Integer

num = cint(InputBox("Escreva o limite para calcular a soma:")) cont = 0 soma = 0 If num > 0 Then

Do cont = cont + 1 soma = soma + cont

Loop Until (cont = num) Else

soma = 0 End If MsgBox "A soma dos nuemros inteiros ate " & num & " é " & soma

End Sub 'Exercicio 9 Sub quadrados_x1_x2() Dim x1 As Integer Dim x2 As Integer Dim cont As Integer

x1 = val(InputBox("escreva um valor inicial: ")) x2 = val(InputBox("escreva um valor final: "))

Page 3: Ficha 08 Resolução - estgv.ipv.pt · PDF fileResolução ficha de trabalho VBA nº. 8 1 Resolução de exercícios da ficha de trabalho nº. 8 de VBA Option Explicit 'Exercicio 1

Resolução ficha de trabalho VBA nº. 8 3

For cont = x1 To x2 MsgBox "O quadrado de " & cont & " : " & cont ^ 2

Next cont End Sub 'Exercicio 10 Sub soma_impares() Dim num As Integer Dim i As Integer, cont As Integer Dim soma As Integer

cont = 0 soma = 0 Do

num = cint(InputBox("escreva um valor inteiro positivo: negativo para terminar")) If num > 0 Then

If (num Mod 2) <> 0 Then soma = soma + num i = i + 1 cont = cont + 1

Else soma = soma cont = cont + 1

End If End If

Loop Until (num < 0) MsgBox "introduziu " & cont & " numeros" MsgBox "introduziu " & i & " numeros impares" MsgBox "a soma dos numeros ímpares é " & soma

End Sub 'Exercicio 11 Sub potencia() Dim exp As Integer, cont As Integer Dim base As Single, pot As Single

base = val(InputBox("Indique a base:")) exp = val(InputBox("Indique o expoente:")) pot = 1 For cont = 1 To exp

pot = pot * base Next cont MsgBox "A potencia de " & base & "^" & exp & " é: " & pot

End Sub

Page 4: Ficha 08 Resolução - estgv.ipv.pt · PDF fileResolução ficha de trabalho VBA nº. 8 1 Resolução de exercícios da ficha de trabalho nº. 8 de VBA Option Explicit 'Exercicio 1

Resolução ficha de trabalho VBA nº. 8 4

'outra versao para o exercicio 11 Function calc_pot(base As Single, exp As Integer) As Single Dim cont As Integer

calc_pot = 1 For cont = 1 To exp

calc_pot = calc_pot * base Next cont

End Function 'chamada da funçao no programa principal - utilizar a funcao que calcula potencia Sub cpotencia() Dim exp As Integer Dim base As Single

base = val(InputBox("Indique a base:")) exp = val(InputBox("Indique o expoente:")) MsgBox "A potencia de " & base & "^" & exp & " é: " & calc_pot(base, exp)

End Sub 'Exercicio 12 Sub divisores() Dim num As Integer, cont As Integer Dim n_div As Integer

num = cint(InputBox("Escreva um numero:")) n_div = 0 For cont = 1 To num

If (num Mod cont) = 0 Then MsgBox cont & " é divisor de " & num n_div = n_div + 1

End If Next cont MsgBox “O número “ &num &” tem “ &n_div &” divisors.”, Title:=num

End Sub 'Exercicio 13 Sub multiplos() Dim x As Integer, n As Integer, mult As Integer, cont As Integer

x = cint(InputBox("Escreva o número do qual pretende determinar os seus múltiplos:")) n = cint(InputBox("QuanTos múltiplos pretende determinar?")) cont = 0 Do While cont <> n

mult = cont * x MsgBox mult & " é multiplo de " & x cont = cont + 1

Loop End Sub

Page 5: Ficha 08 Resolução - estgv.ipv.pt · PDF fileResolução ficha de trabalho VBA nº. 8 1 Resolução de exercícios da ficha de trabalho nº. 8 de VBA Option Explicit 'Exercicio 1

Resolução ficha de trabalho VBA nº. 8 5

'Exercicio 14 Sub media() Dim soma As Single, cont As Single, media As Single, n As Single

soma = 0 cont = 0 Do

n = val(InputBox("escreva um valor inteiro positivo: negativo para terminar"))

If n > 0 Then soma = soma + n cont = cont + 1

End If Loop Until (n < 0) media = soma / cont MsgBox " A media dos valores introduzidos é: " & media

End Sub 'Exercicio 15 – Implementação 1 Sub dia_semana() Dim num As Integer, dia As String, resp As Integer

Do num = InputBox("Escreva um número de 1 até 7:") Select Case num

Case 1 dia = "Domingo" MsgBox ("o número " & num & " corresponde ao dia da semana " & dia)

Case 2 dia = "Segunda" MsgBox ("o número " & num & " corresponde ao dia da semana " & dia)

Case 3 dia = "Terça" MsgBox ("o número " & num & " corresponde ao dia da semana "

& dia) Case 4

dia = "Quarta" MsgBox ("o número " & num & " corresponde ao dia da semana "

& dia) Case 5

dia = "Quinta" MsgBox ("o número " & num & " corresponde ao dia da semana "

& dia) Case 6

dia = "Sexta" MsgBox ("o número " & num & " corresponde ao dia da semana " & dia)

Case 7 dia = "Sabado" MsgBox ("o número " & num & " corresponde ao dia da semana " & dia)

Case Else MsgBox ("Número invalido!")

End Select MsgBox "o número " & num & " corresponde ao dia da semana " & dia resp = MsgBox("Pretende continuar? ", vbYesNo) Loop Until resp = 7

End Sub 'Exercicio 15 – Implementação 2 Function dia_semana(ByVal num As Integer) As String Select Case num Case 1 dia_semana = "Domingo" Case 2 dia_semana = "Segunda-Feira"

Page 6: Ficha 08 Resolução - estgv.ipv.pt · PDF fileResolução ficha de trabalho VBA nº. 8 1 Resolução de exercícios da ficha de trabalho nº. 8 de VBA Option Explicit 'Exercicio 1

Resolução ficha de trabalho VBA nº. 8 6

Case 3 dia = "Terça-Feira" Case 4 dia_semana = "Quarta-Feira" Case 5 dia_semana = "Quinta-Feira" Case 6 dia_semana = "Sexta-Feira" Case 7 dia_semana = "Sabado" Case Else dia_semana = "Dia Inválido" End Select End Function Sub Num_Dia_Semana() Dim num_dia As Integer num_dia = CInt(InputBox("Escreva um número de 1 até 7:")) MsgBox "O número " & num_dia & " corresponde ao dia da semana " & dia_semana(num_dia) & ".", Title:="Dia da Semana" End Sub 'Exercicio 16 Function factorial(ByVal num As Integer) As Integer

factorial = 1 Do While num > 1

factorial = factorial * num num = num - 1

Loop End Function Sub calc_fact() Dim num As Integer

num = InputBox("escreva um numero inteiro: ", "Calculo factorial") MsgBox "O factorial de " & num & " é: " factorial(num),Title:="Resultado do cálculo Do Factorial"

End Sub

Page 7: Ficha 08 Resolução - estgv.ipv.pt · PDF fileResolução ficha de trabalho VBA nº. 8 1 Resolução de exercícios da ficha de trabalho nº. 8 de VBA Option Explicit 'Exercicio 1

Resolução ficha de trabalho VBA nº. 8 7

'Exercicio 17 – Implementação 1 Function serie(ByVal x As Integer) As Double

If (x Mod 2) = 0 Then serie = 1 / (2 * x)

Else serie = -1 / (2 * x)

End If End Function Sub funcao_serie() Dim n As Integer, resp As Integer, i As Integer, soma As Double

Do Do

n = CInt(InputBox("Quantos termos pretende somar?")) Loop Until n > 0 soma = 0 For i = 1 To n

soma = soma + serie(i) Next MsgBox "A soma dos " & n & " termos é: " & soma resp = MsgBox("Pretende continuar?", vbYesNo)

Loop Until resp = 7 End Sub 'Exercicio 17 – Implementação 2 Function serie(ByVal n As Integer) As Double Dim i As Integer serie = 0 For i = 1 To n serie = serie + 1 / (2 * i) * (-1) ^ i Next i End Function Sub Calc_serie() Dim n As Integer, opcao As Integer, i As Integer opcao = 1 Do Do n = CInt(InputBox("Quantos termos pretende somar? [n >0]")) Loop Until n > 0 MsgBox "A soma dos " & n & " termos é: " & serie(n) opcao = CInt(InputBox("Pretende continuar? [Sim-1, Não-0]")) Loop Until opcao = 0 End Sub

Page 8: Ficha 08 Resolução - estgv.ipv.pt · PDF fileResolução ficha de trabalho VBA nº. 8 1 Resolução de exercícios da ficha de trabalho nº. 8 de VBA Option Explicit 'Exercicio 1

Resolução ficha de trabalho VBA nº. 8 8

'exercicio 18 Sub numero() Dim n As Integer, num As Integer, resp As Integer Dim contar As Integer, soma As Integer, inv As Integer Dim txt1 As String, txt2 As String, txt3 As String, txt4 As String

Do n = Val(InputBox("Escreva um número inteiro positivo: ")) num = n contar = 0 soma = 0 inv = 0 Do While n > 0

contar = contar + 1 soma = soma + n Mod 10 inv = inv * 10 + n Mod 10 n = n \ 10

Loop txt1 = "O número introduzido foi: " & num & " tem " & contar & " digitos." & Chr(13) txt2 = "A soma dos seus dígitos é : " & soma & Chr(13) txt3 = "O inverso do número é: " & inv & Chr(13) If num = inv Then

txt4 = "O número: " & num & " é igual ao inverso: " & inv & " logo o número é CAPICUA" Else

txt4 = "O número: " & num & " é diferente do inverso: " & inv & " logo o número NÃO É CAPICUA" End If MsgBox txt1 & txt2 & txt3 & txt4, Title:="Resultado" resp = MsgBox("Pretende continuar?", vbYesNo)

Loop Until (resp = 7) End Sub 'Exercicio 19 Sub contar_num() Dim n As Integer, n1 As Integer, contar As Integer, resp As Integer Dim seq As String

contar = 0 n1 = CInt(InputBox("Qual o número que pretende contabilizar na sequência?")) Do

n = CInt (InputBox("escreva um numero inteiro positivo [0 para terminar]"))

seq = seq & n & " " If n1 = n Then contar = contar + 1 Else contar = contar

Loop Until n = 0 MsgBox "A sequencia introduzida foi: " & seq & Chr(13) & "foram encontradas " & contar & " ocorrencias do número " & n1

End Sub

Page 9: Ficha 08 Resolução - estgv.ipv.pt · PDF fileResolução ficha de trabalho VBA nº. 8 1 Resolução de exercícios da ficha de trabalho nº. 8 de VBA Option Explicit 'Exercicio 1

Resolução ficha de trabalho VBA nº. 8 9

'exercicio 20 Sub contar_seq() Dim contar As Integer, n As Integer, seq As String

contar = 0 Do

n = CInt (InputBox("Escreva um número inteiro positivo [0 para terminar]"))

seq = seq & n & " " contar = contar + n

Loop Until n = 0 MsgBox "A sequencia introduzida foi: " & seq & Chr(13) & "A soma dos

números é: " & contar End Sub 'Exercicio 21 Sub palavras() Dim palavra As String, texto As String

Do palavra = InputBox("escreva uma palavra [FIM para terminar]",

"Palavras") If (palavra = "fim") Or (palavra = "FIM") Then

texto = texto Else

texto = texto & " " & palavra End If

Loop Until (palavra = "FIM") Or (palavra = "fim") MsgBox "A frase final é: " & texto

End Sub