O critério de aprovação em MC102 é composto por vários itens com pesos diferentes. Nesta tarefa, vamos fazer um programa em Python para podermos calcular a média e situação final de um(a) aluno(a) com facilidade. O critério deste semestre é um pouco diferente do critério utilizado no semestre passado!
Atividades conceituais: são os questionários
que podem ser respondidos via Moodle. A nota atribuída a cada
uma destas atividades é uma nota de participação, calculada
de maneira proporcional ao número de questões
respondidas pelo(a) aluno(a), independentemente do fato de estarem
corretas ou não. A média das atividades
conceituais MAC
será dada pela
média aritmética simples das notas das atividades.
Tarefas de laboratório: são os programas
desenvolvidos e entregues para correção automática no
SuSy. Para compor a média dos laboratórios ML
, cada tarefa tem um peso indicado no enunciado do laboratório.
Provas teóricas: são as avaliações aplicadas em sala de aula, sem consulta. Para compor a média de provas MP
a primeira prova tem peso 2 e a segunda, peso 3.
Considerando Freq
a porcentagem de frequência às aulas, o resultado final será computado seguindo as regras abaixo:
Caso Freq
≥ 75%:
Caso MP ≥ 5
e
ML ≥ 5
:
Será calculada uma média ponderada dos elementos avaliativos:
MElem = 0.6 * MP +
0.3 * ML + 0.1 * MAC
O(A) aluno(a) estará aprovado(a) por nota e
frequência com MFinal =
max(5, MElem)
.
Caso MP < 2.5
ou
ML < 2.5
:
O(A) aluno(a) estará reprovado(a) por nota
com MFinal =
min(MP, ML)
.
Caso contrário:
O(A) aluno(a) deverá realizar o exame. Sua média final
será MFinal =
(min(MP, ML) + Exame)/2
.
Caso MFinal ≥ 5.0
o(a) aluno(a)
estará aprovado(a) por nota e frequência.
Caso contrário, estará reprovado(a) por nota.
Caso Freq
< 75%:
O(A) aluno(a) estará reprovado(a) por frequência com MFinal = min(MP, ML)
.
A primeira linha da entrada conterá n
valores nota_aci
indicando as notas das atividades conceituais. A segunda linha conterá m
tuplas (nota_labi, peso_labi)
indicando a nota da tarefa de laboratório e seu respectivo peso para a média das tarefas de laboratório. A terceira linha conterá as notas das duas provas. A quarta linha conterá um valor entre 0 e 100 indicando a porcentagem da frequência às aulas. Caso o(a) aluno(a) precise fazer exame, haverá uma última linha contendo a nota obtida.
<nota_ac1> ... <nota_acn>
(<nota_lab00>, <peso_lab00>) ... (<nota_labm-1>, <peso_labm-1>)
<nota_prova1> <nota_prova2>
<freq>
<nota_exame>
A primeira parte da saída conterá as médias das atividades conceituais, tarefas de laboratório e provas obtidas pelo(a) aluno(a), formatadas para apresentar apenas uma casa decimal (veja a seção Dicas):
Media das atividades conceituais: <MAC>
Media das tarefas de laboratorio: <ML>
Media das provas: <MP>
Caso o(a) aluno(a) tenha feito exame, a nota deve ser indicada:
Nota no exame: <Exame>
A situação final do(a) aluno(a) deve ser indicada por uma das strings abaixo:
Aprovado(a) por nota e frequencia.
Reprovado(a) por nota.
Reprovado(a) por frequencia.
Por último, a média final deve ser indicada:
Media final: <MFinal>
Para facilitar a visualização e a conferência o número de atividades conceituais e tarefas de laboratório é inferior ao que será proposto no semestre. Os oito testes abertos estão listados abaixo, acompanhados de alguns comentários sobre o desempenho do(a) aluno(a).
Entrada | Saída | Observações | ||
---|---|---|---|---|
arq1.in |
|
|
arq1.res | • Excelente desempenho em todos os itens. • Média final igual à média ponderada dos elementos. • Aprovado(a) sem exame. |
arq2.in |
|
|
arq2.res | • Ótimo desempenho em atividades conceituais e tarefas de laboratório. • Desempenho suficiente nas provas. • Média final igual à média ponderada dos elementos. • Aprovado(a) sem exame. |
arq3.in |
|
|
arq3.res | • Não realizou as atividades conceituais. • Desempenho suficiente nas provas e tarefas de laboratório. • Aprovado(a) sem exame. |
arq4.in |
|
|
arq4.res | • Ótimo desempenho em atividades conceituais e tarefas de laboratório. • Desempenho insuficiente nas provas. • Aprovado(a) após exame. |
arq5.in |
|
|
arq5.res | • Bom desempenho nas atividades conceituais e nas provas. • Desempenho insuficiente nas tarefas de laboratório. • Aprovado(a) após exame. |
arq6.in |
|
|
arq6.res | • Não realizou as atividades conceituais. • Desempenho insuficiente nas provas e tarefas de laboratório. • Reprovado(a) após o exame. |
arq7.in |
|
|
arq7.res | • Desempenho insuficiente em todos os itens. • Reprovado(a) sem direito a exame. |
arq8.in |
|
|
arq8.res | • Desempenho insuficiente em todos os itens. • Não atingiu frequência mínima. • Reprovado(a) sem direito a exame. |
Esta tarefa inclui mais dois testes fechados.
• Para ler a linha com as notas das atividades conceituais e montar
uma lista com elementos do tipo float
você pode
utilizar:
notas_ac = [float(x) for x in input().split()]
• Para imprimir a primeira nota formatada com uma casa decimal você pode usar:
print("Nota da primeira atividade conceitual:", format(notas_ac[0], ".1f"))
• Para ler a linha com as notas das tarefas de laboratório podemos
utilizar uma abordagem semelhante, mas definindo uma função especial
que retornará uma tupla com dois elementos, sendo o primeiro
um float
e o segundo um int
.
def tupla_float_int(x) :
x = x[1:-1] # remove parênteses
x = x.split(",") # separa em duas strings
f = float(x[0]) # converte primeiro elemento para float
i = int(x[1]) # converte segundo elemento para int
return (f,i) # retorna tupla
notas_lab = [tupla_float_int(x) for x in input().split()]
• Para imprimir a nota do primeiro lab formatada com uma casa decimal e o peso você pode usar:
print("Nota do Lab00:", format(notas_lab[0][0], ".1f"))
print("Peso do Lab00:", notas_lab[0][1])
Veja aqui
a página de submissão da tarefa. Lembre-se que o
arquivo a ser submetido deve se chamar lab07.py. No
link Arquivos auxiliares há um arquivo aux-07.zip
que
contém todos os arquivos de testes abertos e seus respectivos
resultados compactados. Os arquivos executa-testes.py
e executa-testes-windows.py
também estão
neste pacote.
Observe o limite máximo de 20 submissões.
A nota final é proporcional ao número de testes que executaram corretamente, desde que o código esteja coerente com o enunciado. A submissão de um código que não implementa o algoritmo requisitado, mas que exibe as saídas esperadas dos testes abertos a partir da comparação de trechos da entrada será considerada fraude e acarretará a atribuição de nota zero à média final da disciplina.
O peso desta tarefa é 3.
O prazo final para submissão é 21/10/2018.