EISnt Centro de Formação em Tecnologia Possível resolução (Fundamentos de Programação – Exercícios por resolver) 1) Sub area() 'Variáveis consideradas como sendo do tipo Integer (números inteiros) Dim area As Integer Dim comprimento As Integer Dim altura As Integer 'Assumindo que o utilizador insere valores inteiros nas InputBoxes... comprimento = InputBox("Qual o comprimento?") altura = InputBox("Qual a altura?") area = (comprimento * altura) / 2 MsgBox "A área é igual a " & area End Sub 2) Sub Megabytes_para_GigaBytes() 'Variável de entrada considerada como sendo do tipo Integer (número inteiro) 'Variável de saída considerada como sendo do tipo Single (número decimal) Dim megabytes As Integer Dim gigabytes As Single 'Assumindo que o utilizador insere um número inteiro compreendido entre 0 e 10000... megabytes = InputBox("Qual o valor em MB?") gigabytes = megabytes / 1024 MsgBox megabytes & " MB correspondem a " & gigabytes & " GB" End Sub Financiado pelo FSE Pág: 1 EISnt Centro de Formação em Tecnologia 3) Sub Inteiro_ou_Decimal() 'Variável de entrada considerada como sendo do tipo Single (número inteiro ou decimal) Dim valor As Single Dim parte_inteira As Integer Dim resultado As String 'Assumindo que o utilizador insere um número compreendido entre 1 e 100... valor = InputBox("Introduza um valor numérico compreendido entre 1 e 100") parte_inteira = valor \ 1 If parte_inteira = valor Then resultado = "inteiro" Else resultado = "decimal" MsgBox "O número que introduziu é um número " & resultado End Sub 4) Sub Decimal_para_Inteiro() 'Variável de entrada considerada como sendo do tipo Single (número decimal) 'Variável de saída considerada como sendo do tipo Integer (número inteiro) Dim valor_decimal As Single Dim valor_inteiro As Integer 'Assumindo que o utilizador insere um valor decimal válido... valor_decimal = InputBox("Introduza um número decimal") valor_inteiro = valor_decimal \ 1 'Para que, por exemplo, 12,5 seja arredondado para 13 e não para 12... If valor_decimal - valor_inteiro = 0.5 Then valor_inteiro = valor_inteiro + 1 MsgBox "O arredondamento origina " & valor_inteiro End Sub Financiado pelo FSE Pág: 2 EISnt Centro de Formação em Tecnologia 5) Sub tarifa() 'Variáveis 'espaco' e 'utilizacao' consideradas como sendo do tipo Integer (números inteiros) 'Variável de saída 'valor' considerada como sendo do tipo Integer (número inteiro) Dim espaco As Integer Dim utilizacao As Integer Dim email As Boolean 'Como indicado no enunciado Dim valor As Integer 'Assumindo que o utilizador insere valores válidos espaco = InputBox("Qual o espaço em disco (valores em MB)") utilizacao = InputBox("Qual a utilização mensal (valores em horas)") mail = InputBox("O cliente possui conta de e-mail? Escreva True para Sim e False para Não") If utilizacao < 120 Then valor = 25 If utilizacao >= 120 And espaco < 10 Then valor = 30 If utilizacao >= 120 And espaco >= 10 Then If email = True Then valor = 60 Else valor = 50 End If MsgBox "Valor a pagar>>> " & valor & "€" End Sub 6) Sub produto() 'Variáveis consideradas como sendo do tipo Integer (números inteiros) Dim num1 As Integer Dim num2 As Integer Dim resultado As Integer 'Assumindo que o utilizador insere valores válidos num1 = InputBox("Introduza o primeiro número inteiro") num2 = InputBox("Introduza o segundo número inteiro") For a = num1 To 1 Step -1 resultado = resultado + num2 Next a MsgBox "O produto é igual a " & resultado End Sub Financiado pelo FSE Pág: 3 EISnt Centro de Formação em Tecnologia 7) Sub decimal_para_hexadecimal() 'Variável de entrada considerada como sendo do tipo Integer (número inteiros) 'Variável de saída considerada como sendo do tipo String (cadeia alfanumérica) Dim num As Integer Dim hex As String 'Assumindo que o utilizador insere valores válidos num = InputBox("Introduza um número inteiro entre 0 e 1000") 'Método das divisões sucessivas hex = "" Dim dividir As Boolean dividir = True dividendo = num Do While dividir = True quociente = dividendo \ 16 resto = num Mod 16 If resto >= 0 And resto <= 9 Then a_transportar = resto If resto = 10 Then a_transportar = "A" If resto = 11 Then a_transportar = "B" If resto = 12 Then a_transportar = "C" If resto = 13 Then a_transportar = "D" If resto = 14 Then a_transportar = "E" If resto = 15 Then a_transportar = "F" hex = a_transportar & hex dividendo = quociente If dividendo < 16 Then hex = dividendo & hex dividir = False End If Loop MsgBox "O hexadecimal é " & hex End Sub Financiado pelo FSE Pág: 4 EISnt Centro de Formação em Tecnologia 8) Sub Quantos_dias_faltam_ate_ao_fim_do_ano() 'Variáveis do tipo Integer (números inteiros) Dim dia As Integer Dim mes As Integer Dim ano As Integer Dim num_dias_que_faltam As Integer Dim total_dias_num_mes As Integer 'Assumindo que o utilizador insere valores válidos dia = InputBox("Introduza o dia") mes = InputBox("Introduza o mês") ano = InputBox("Introduza o ano") 'Saber se o ano é bissexto bissexto = False If ano Mod 4 = 0 And ano Mod 100 <> 0 Or ano Mod 400 = 0 Then bissexto = True num_dias_que_faltam = 0 'mês inicial 'Saber o número de dias que o mês tem Select Case mes Case 1, 3, 5, 7, 8, 10, 12 total_dias_num_mes = 31 Case 4, 6, 9, 11 total_dias_num_mes = 30 End Select If mes = 2 And bissexto = True Then total_dias_num_mes = 29 If mes = 2 And bissexto = False Then total_dias_num_mes = 28 num_dias_que_faltam = total_dias_num_mes - dia mes = mes + 1 For a = mes To 12 'Do mês actual até Dezembro 'Saber o número de dias que o mês tem Select Case mes Case 1, 3, 5, 7, 8, 10, 12 total_dias_num_mes = 31 Case 4, 6, 9, 11 total_dias_num_mes = 30 End Select If mes = 2 And bissexto = True Then total_dias_num_mes = 29 If mes = 2 And bissexto = False Then total_dias_num_mes = 28 num_dias_que_faltam = num_dias_que_faltam + total_dias_num_mes mes = mes + 1 Next a MsgBox "Falta(m) " & num_dias_que_faltam & " dia(s)" End Sub Financiado pelo FSE Pág: 5 EISnt Centro de Formação em Tecnologia 9) Sub Dia_da_semana() 'Variáveis do tipo Integer (números inteiros) Dim dia As Integer Dim mes As Integer Dim ano As Integer Dim diasemana As Integer Dim total_dias_num_mes As Integer 'Assumindo que o utilizador insere valores válidos dia = InputBox("Introduza o dia") mes = InputBox("Introduza o mês") ano = InputBox("Introduza o ano") 'A referência é o dia 1 de Janeiro de 1900, um Domingo diasemana = 1 For a = 1900 To ano 'Saber se o ano é bissexto bissexto = False If a Mod 4 = 0 And a Mod 100 <> 0 Or a Mod 400 = 0 Then bissexto = True If a = ano Then mesf = mes Else mesf = 12 For m = 1 To mesf 'Saber o número de dias que o mês tem Select Case m Case 1, 3, 5, 7, 8, 10, 12 total_dias_num_mes = 31 Case 4, 6, 9, 11 total_dias_num_mes = 30 End Select If m = 2 And bissexto = True Then total_dias_num_mes = 29 If m = 2 And bissexto = False Then total_dias_num_mes = 28 If a = ano And m = mes Then diaf = dia Else diaf = total_dias_num_mes For d = 1 To diaf diasemana = diasemana + 1 Financiado pelo FSE Pág: 6 EISnt Centro de Formação em Tecnologia If diasemana > 7 Then diasemana = 1 Next d Next m Next a Select Case diasemana Case 1 resultado = "Domingo" Case 2, 3, 4, 5, 6 resultado = diasemana & "ª feira" Case 7 resultado = "Sábado" End Select MsgBox "Nasceu num(a) " & resultado End Sub 10) Sub Chave_ordenada() 'Variáveis do tipo Integer (números inteiros) e chave do tipo String (texto) Dim bola1 As Integer Dim bola2 As Integer Dim bola3 As Integer Dim bola4 As Integer Dim bola5 As Integer Dim bola6 As Integer Dim chave As String 'Assumindo que o utilizador insere valores válidos e diferentes bola1 = InputBox("Introduza o número da bola 1") bola2 = InputBox("Introduza o número da bola 2") bola3 = InputBox("Introduza o número da bola 3") bola4 = InputBox("Introduza o número da bola 4") bola5 = InputBox("Introduza o número da bola 5") bola6 = InputBox("Introduza o número da bola 6") Financiado pelo FSE Pág: 7 EISnt Centro de Formação em Tecnologia 'Primeira bola na chave For a = 1 To 49 If a = bola1 Or a = bola2 Or a = bola3 Or a = bola4 Or a = bola5 Or a = bola6 Then pos1 = a a = 50 End If Next 'Segunda bola na chave For a = pos1 + 1 To 49 If a = bola1 Or a = bola2 Or a = bola3 Or a = bola4 Or a = bola5 Or a = bola6 Then pos2 = a a = 50 End If Next 'Terceira bola na chave For a = pos2 + 1 To 49 If a = bola1 Or a = bola2 Or a = bola3 Or a = bola4 Or a = bola5 Or a = bola6 Then pos3 = a a = 50 End If Next 'Quarta bola na chave For a = pos3 + 1 To 49 If a = bola1 Or a = bola2 Or a = bola3 Or a = bola4 Or a = bola5 Or a = bola6 Then pos4 = a a = 50 End If Next 'Quinta bola na chave For a = pos4 + 1 To 49 If a = bola1 Or a = bola2 Or a = bola3 Or a = bola4 Or a = bola5 Or a = bola6 Then pos5 = a a = 50 End If Next 'Sexta bola na chave For a = pos5 + 1 To 49 If a = bola1 Or a = bola2 Or a = bola3 Or a = bola4 Or a = bola5 Or a = bola6 Then pos6 = a a = 50 End If Next 'Chave completa e ordenada chave = pos1 & "-" & pos2 & "-" & pos3 & "-" & pos4 & "-" & pos5 & "-" & pos6 MsgBox chave End Sub Financiado pelo FSE Pág: 8 EISnt Centro de Formação em Tecnologia Financiado pelo FSE Pág: 9