L`Ultra Marin en quelques chiffres…
Transcription
L`Ultra Marin en quelques chiffres…
Princípios de Programação
Trabalho para casa 4
Universidade de Lisboa
Faculdade de Ciências
Departamento de Informática
Licenciatura em Engenharia Informática
2015/2016
No 3o trabalho desenvolvemos algumas funções Haskell para manipular
tabelas. Neste trabalho procuramos implementar funcionalidades
semelhantes, desta vez recorrendo à linguagem Java.
A informação numa tabela pode ser representada por uma lista, isto é, por um
objeto do tipo java.util.List<T>. Cada elemento na lista representa uma linha da
tabela, sendo que o seu tipo T é definido em cada caso. O número de linhas na
tabela é dado pelo tamanho da lista.
1. Comece por escrever um método que emula o funcionamento da função
Haskell foldl, com a seguinte assinatura:
static <T, R> R foldl(BiFunction<R, T, R> funcao, R zero, List<T> lista)
Por exemplo, o seguinte pedaço de código
List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6, 7);
System.out.println (foldl((acc, e) −> acc + e ∗ e, 0, numeros));
deverá imprimir
140
2. Utilizando a função foldl criada na alínea anterior, escreva agora um
método que receba uma função de comparação e uma lista, e que calcule
o elemento máximo desta, tal como determinado pela função de
comparação. Eis a assinatura do método pretendido:
static <T> T maximo(Comparator<T> comparador, List<T> lista)
Por exemplo, o seguinte pedaço de código
List<String> lista = Arrays.asList(
"Ana,30,RH,1500,3",
"Rui,40,Vendas,1000,2",
"Luis,45,RH,3333,5",
"Maria,55,Admin,2000,4");
Comparator<String> maisVelho =
Comparator.comparing(s −> Integer.valueOf(s.split(",")[1]));
System.out.println(maximo(maisVelho, lista));
deverá imprimir
Maria,55,Admin,2000,4
3. Escreva uma simples classe Funcionario que represente um funcionário
numa firma. A classe deverá conter um atributo para cada informação
relativa a um funcionário: o seu nome, idade, departamento onde
trabalha, ordenado e dimensão do agregado familiar. Junte um método
toString() adequado.
4. Baseado no código desenvolvido nas alíneas anteriores, escreva agora o
método maiorOrdenado com o mesmo significado que no 3o trabalho.
static Funcionario maiorOrdenado(List<Funcionario> lista)
Por exemplo, o seguinte pedaço de código
List<Funcionario> firma = Arrays.asList(
new Funcionario("Ana", 30, "RH", 1500, 3),
new Funcionario("Rui", 40, "Vendas", 1000, 2),
new Funcionario("Luis", 45, "RH", 3333, 5),
new Funcionario("Maria", 55, "Admin", 2004, 4));
System.out.println(maiorOrdenado(firma));
deverá imprimir
Funcionario{nome=Luis, idade=45, departamento=RH,
ordenado=3333, agregado=5}
ou outro texto semelhante retornado pelo método toString() da classe
Funcionario.
Notas
1. Deverá entregar uma só classe chamada TPC4_NNNNN, onde NNNNN é o
seu número de aluno. Esta classe deverá estar definida num ficheiro
com o mesmo nome, e pertencer ao package trabalho4 (a indicar na
primeira linha do ficheiro). Adicionalmente, esta classe deverá conter a
classe static class Funcionario { ... }, e os métodos foldl, maximo e
maiorOrdenado, todos eles static. Tome atenção aos nomes das classes e
métodos pedidos. Deverá também utilizar os tipos int e String para
representar inteiros e cadeias de carateres, respetivamente.
2
2. Os trabalhos serão avaliados semi-automaticamente. Como tal, terá de
respeitar integralmente o ponto anterior.
3. Não se esqueça de juntar documentação Javadoc para cada classe e
método que escrever.
Entrega. Este é um trabalho de resolução individual. Os trabalhos devem
ser entregues no Moodle até às 23:55 do dia 20 de novembro de 2015.
Certifique-se que realmente entregou o trabalho certo. Não serão aceites
reparos posteriores.
Ética. Os trabalhos de todos os alunos serão comparados por uma aplicação
computacional. Lembre-se: “Alunos detetados em situação de fraude ou
plágio, plagiadores e plagiados, ficam reprovados à disciplina (sem prejuízo
de ser acionado processo disciplinar concomitante)”.
3
Documents pareils
Les objectifs 2016 - Raid Golfe du Morbihan
regroupant plusieurs courses pédestres, empruntant les
chemins de randonnée tracés par le Conseil Général du
Morbihan.
Un évènement puisant son identité dans le
patrimoine breton
L'Ultra Marin trav...