require("header.inc.php"); ?>
Considere a seguinte planilha:
| Aluno | Média Provas | Média EPs | Média Final | Resultado |
|---|---|---|---|---|
| Adalberto | 7,0 | 9,0 | ||
| Belinda | 3,0 | 6,0 | ||
| Clementino | 4,5 | 9,0 | ||
| Danusa | 5,5 | 4,0 | ||
| Eleutério | 2,0 | 4,0 |
MF = (3 * MP + MEP)/4, se MP >= 4 e MEP >= 4 MF = min( MP, MEP), caso contrário.
Quantos parâmetros esta função deve receber?
Resolução:
|
Function CalculaMedia(linha As Integer) As Double Dim MP As Double ' Média de Prova Dim MEP As Double ' Média de EP Dim MF As Double ' Média Final (o que queremos calcular) ' Primeiramente preciso ler da planilha a ' média de prova e a média de EP do aluno MP = Cells(linha, 2) ' 2 significa coluna B MEP = Cells(linha, 3) ' 3 significa coluna C ' Agora que já temos as médias, podemos calcular ' a média final If MP >= 4 And MEP >= 4 Then MF = (3 * MP + MEP) / 4 Else ' MF = min(MP, MEP) If MP > MEP Then MF = MEP Else MF = MP End If End If CalculaMedia = MF End Function |
|
Function Resultado(linha As Integer) As String Dim MP As Double ' Média de Prova Dim MEP As Double ' Média de EP Dim MF As Double ' Média Final Dim resposta As String ' o que a gente quer encontrar ' Analisando como é encontrado o 'resultado', observo que ' para classificar os alunos preciso das seguintes notas: ' média final, média de provas e média de EPs ' portanto primeiramente preciso ler estes valores da planilha MP = Cells(linha, 2) ' 2 significa coluna B MEP = Cells(linha, 3) ' 3 significa coluna C MF = Cells(linha, 4) ' 3 significa coluna D If MF >= 5 Then resposta = "Aprovado" ElseIf (MF >= 3 And MF < 5) And (MP >= 3 And MP < 5) And (MEP > 5) Then ' Obs: Não é necessário colocar os parênteses, porém sua utilização ' torna o código mais claro resposta = "Reaval de Prova" ElseIf (MF >= 3 And MF < 5) And (MEP >= 3 And MEP < 5) And (MP > 5) Then resposta = "Reaval de EP" ElseIf (MF >= 3 And MF < 5) And (MP >= 3 And MP < 5) And (MEP >= 3 And MEP < 5) Then resposta = "Reaval de Prova e EP" Else resposta = "Reprovado" End If Resultado = resposta End Function |
|
Sub Calcula() ' Agora que já temos uma função que calcula a média dada uma linha ' e uma função que retorna o resultado dada uma linha, podemos nos preocupar ' apenas em chamar estas funções para todas as linhas Dim linha As Integer ' utilizaremos esta variável para percorrermos todas as linhas e guardarmos a linha atual ' começaremos da linha 2, pois a primeira é o cabeçalho (Nome, Média Provas, Média EPs, etc.) linha = 2 ' Vamos percorrer as linhas até encontrarmos uma célula vazia ' Optei por verificar a célula vazia na coluna A, porém poderíamos utilizar ' a B ou a C, pois todas as colunas terão o mesmo número de linhas preenchidas Do While Not IsEmpty(Cells(linha, 1)) ' Calculamos a média final e colocamos o valor na célula da planilha Cells(linha, 4) = CalculaMedia(linha) ' Encontramos o resultado e colocamos o valor na célula da planilha Cells(linha, 5) = Resultado(linha) linha = linha + 1 ' pulamos para a próxima linha Loop End Sub |