MC102 - Algoritmos e Programação de Computadores
MC102 Oferecimento anterior

Smiley faces Tarefa de laboratório 07

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!

Elementos componentes da avaliação

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.

Resultado final

Considerando Freq a porcentagem de frequência às aulas, o resultado final será computado seguindo as regras abaixo:

Descrição da entrada

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>

Descrição da saída

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>

Testes para o SuSy

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
10 10 10 10 10 
(10,1) (10,2) (10,3)
10 10
100
Media das atividades conceituais: 10.0
Media das tarefas de laboratorio: 10.0
Media das provas: 10.0
Aprovado(a) por nota e frequência.
Media final: 10.0
arq1.res • Excelente desempenho em todos os itens.
• Média final igual à média ponderada dos elementos.
• Aprovado(a) sem exame.
arq2.in
10 10 10 10 10 10 
(10,1) (10,2) (8,3) (9,2)
6.0 5.0
100
Media das atividades conceituais: 10.0
Media das tarefas de laboratorio: 9.0
Media das provas: 5.4
Aprovado(a) por nota e frequencia.
Media final: 6.9
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
0 0 0 0 0 0
(0,1) (7.5,2) (5,3)
5.0 5.0
100
5.5
Media das atividades conceituais: 0.0
Media das tarefas de laboratorio: 5.0
Media das provas: 5.0
Aprovado(a) por nota e frequencia.
Media final: 5.0
arq3.res • Não realizou as atividades conceituais.
• Desempenho suficiente nas provas e tarefas
de laboratório.
• Aprovado(a) sem exame.
arq4.in
10 9 8 9.5 10
(10,1) (7.5,2) (9,3) (9,2) (10,3)
3.0 4.5
100
7.0
Media das atividades conceituais: 9.3
Media das tarefas de laboratorio: 9.1
Media das provas: 3.9
Nota no exame: 7.0
Aprovado(a) por nota e frequencia.
Media final: 5.5
arq4.res • Ótimo desempenho em atividades conceituais
e tarefas de laboratório.
• Desempenho insuficiente nas provas.
• Aprovado(a) após exame.
arq5.in
10 9 8 7 6
(0,1) (7.5,2) (5,3) (5,2) (0,3)
5.5 7
100
7.0
Media das atividades conceituais: 8.0
Media das tarefas de laboratorio: 3.6
Media das provas: 6.4
Nota no exame: 7.0
Aprovado(a) por nota e frequencia.
Media final: 5.3
arq5.res • Bom desempenho nas atividades conceituais
e nas provas.
• Desempenho insuficiente nas tarefas de
laboratório.
• Aprovado(a) após exame.
arq6.in
0 0 0 0 0 0 0 
(0,1) (5.0,2) (4.0,3) (7.0,2) (0,3)
4.0 4.5
100
4.0 
Media das atividades conceituais: 0.0
Media das tarefas de laboratorio: 3.3
Media das provas: 4.3
Nota no exame: 4.0
Reprovado(a) por nota.
Media final: 3.6
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
5 3 5 6 4 2.5 0 
(0,1) (0,2) (6.0,3) (0,2) (4.0,3)
2.0 1.5 
100
Media das atividades conceituais: 3.6
Media das tarefas de laboratorio: 2.7
Media das provas: 1.7
Reprovado(a) por nota.
Media final: 1.7
arq7.res • Desempenho insuficiente em todos os itens.
• Reprovado(a) sem direito a exame.
arq8.in
10 8 5 0 0 0 0 
(10,1) (5.0,2) (5.0,3) (0,2) (0,3)
4.0 0 
50
Media das atividades conceituais: 3.3
Media das tarefas de laboratorio: 3.2
Media das provas: 1.6
Reprovado(a) por frequencia.
Media final: 1.6
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.

Dicas de Python 3 para esta tarefa:

• 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])

Orientações para submissão

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.