Submissões no período de 06 a 12 de julho só serão computadas para alun*s em recuperação de Média dos Laboratórios.
O critério para 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). Utilizaremos as regras previstas no plano de desenvolvimento divulgado após a adaptação das disciplinas de Graduação da Unicamp ao modelo não-presencial, ocorrida em virtude da pandemia do Coronavírus.
Para que o exercício seja mais simples, o cálculo não incluirá eventuais bônus pela execução de simulados e/ou tarefas extras de laboratório que venham a ser divulgadas na página principal da disciplina. Com o encerramento do semestre, você poderá adaptar o código desenvolvido nesta tarefa para realizar o cálculo exato da sua nota final.
Tarefas de laboratório: são os programas
desenvolvidos e entregues para correção
automática
via SuSy. Juntamente
com o enunciado de cada tarefa de laboratório é indicado
o peso desta tarefa. A média das tarefas de
laboratório, ML
, é a
média ponderada das notas obtidas.
Provas mediadas por tecnologia: provas com questões a serem
respondidas via Moodle na
área MC102
- 1S2020. A média MP
destas
avaliações será composta pela
prova P1
de peso 3 e a
prova P2
de peso 4.
Como as atividades neste semestre serão não-presenciais, não haverá controle de frequência às aulas. O resultado final será calculado exclusivamente em função das notas obtidas nas tarefas de laboratório, nas provas mediadas por tecnologia e, eventualmente, no exame final.
Caso MP ≥ 5
e
ML ≥ 5
:
O(A) aluno(a) estará aprovado(a) por nota e frequência com Média Final:
MFinal = 0.7 * MP + 0.3 * ML
Caso o(a) aluno(a) não esteja aprovado(a) pela regra anterior
e MP ≥ 2.5
e ML ≥ 2.5
:
O(A) aluno(a) deverá realizar o exame. O cálculo da Média Final será feito tendo como base a Média Preliminar, como descrito abaixo:
MPreliminar = min(4.9, 0.7 * MP +
0.3 * ML)
MFinal = (MPreliminar + 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 MP < 2.5
ou
ML < 2.5
:
O(A) aluno(a) estará reprovado(a) por nota
com MFinal =
min(MP, ML)
.
Os elementos da entrada estarão separados por linhas:
A primeira linha conterá m
tuplas (nota_labi,peso_labi)
indicando a nota da tarefa de laboratório e seu respectivo peso para o cálculo da média das tarefas de laboratório.
A segunda linha conterá as notas da Prova 1 e da Prova 2, nesta ordem.
De maneira geral, o formato da entrada será:
(<nota_lab00>,<peso_lab00>) ... (<nota_labn-1>,<peso_labn-1>)
<nota_prova1> <nota_prova2>
<nota_exame>
A primeira parte da saída conterá as médias das tarefas de laboratório e avaliações mediadas por tecnologia obtidas pelo(a) aluno(a), precedidas por strings explicativas escritas propositalmente sem acentos:
Media das tarefas de laboratorio: <ML>
Media das provas: <MP>
Caso o(a) aluno(a) deva realizar o exame, a média preliminar e a nota no exame deverão ser indicadas nas próximas linhas:
Media preliminar: <MPreliminar>
Nota no exame: <Exame>
A situação final do(a) aluno(a) deverá ser indicada por uma das strings abaixo:
Aprovado(a) por nota e frequencia
Reprovado(a) por nota
Por último, a média final deve ser indicada:
Media final: <MFinal>
Todos os valores deverão estar formatados com apenas uma casa decimal (veja as dicas para formatação).
Para ler a linha com as notas das tarefas de
laboratório e montar uma lista de tuplas no
formato [(<nota_lab00>,<peso_lab00>), ..., (<nota_labn-1>,<peso_labn-1>)]
podemos
utilizar list
comprehension e uma função que retornará
uma tupla com dois elementos, sendo o primeiro um float
e o segundo um int
. Observe o código abaixo:
def tupla_float_int(x) :
x = x[1:-1] # remove parenteses
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 ler a linha com as notas da
prova P1
e da
prova P2
você poderá
utilizar:
prova1, prova2 = [float(x) for x in input().split()]
Para facilitar a visualização e a conferência dos resultados, o número de tarefas de laboratório é inferior ao que será proposto no semestre. Além disso, os pesos apresentados nem sempre correspondem aos pesos propostos nos enunciados. Os oito testes abertos estão listados abaixo, acompanhados de alguns comentários sobre o desempenho do(a) aluno(a). Esta tarefa inclui mais dois testes fechados.
Entrada | Saída | Observações | ||
---|---|---|---|---|
arq01.in |
|
|
arq01.res | • Excelente desempenho em todos os itens. • Aprovado(a) sem exame. |
arq02.in |
|
|
arq02.res | • Ótimo desempenho nas tarefas de laboratório. • Desempenho suficiente nas provas. • Aprovado(a) sem exame. |
arq03.in |
|
|
arq03.res | • Desempenho suficiente nas tarefas de laboratório. • Ótimo desempenho nas provas. • Aprovado(a) sem exame. |
arq04.in |
|
|
arq04.res | • Ótimo desempenho nas tarefas de laboratório. • Desempenho insuficiente nas provas. • Aprovado(a) após exame. |
arq05.in |
|
|
arq05.res | • Desempenho insuficiente nas tarefas de laboratório. • Ótimo desempenho nas provas. • Aprovado(a) após exame. |
arq06.in |
|
|
arq06.res | • Desempenho insuficiente nas tarefas de laboratório. • Desempenho insuficiente nas provas. • Reprovado(a) após exame. |
arq07.in |
|
|
arq07.res | • Bom desempenho nas tarefas de laboratório. • Desempenho abaixo de 2.5 nas provas. • Reprovado(a) sem direito a exame. |
arq08.in |
|
|
arq08.res | • Desempenho abaixo de 2.5 nas tarefas de laboratório. • Bom desempenho nas provas. • Reprovado(a) sem direito a exame. |
Veja aqui a
página de submissão da tarefa. O arquivo a ser
submetido deve se chamar lab09.py. No
link Arquivos
auxiliares há um
arquivo aux09.zip
que
contém todos os arquivos de testes abertos e seus respectivos
resultados compactados.
Utilize o sistema SuSy com o mesmo login e senha que você utiliza para fazer acesso ao sistema da DAC. Se você não estiver inscrito corretamente, envie email para .
O limite máximo será de 30 submissões. Serão considerados os resultados da última submissão.
O peso desta tarefa é 3.
O prazo final para submissão é 07/06/2020.
A nota desta tarefa é 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.