Linguagem de Programacao 2 Prova 2a -- 06/11/96 1a) (2.0) Defina uma funcao equivalente ao repeat-until, que aplique uma funcao f repetidamente ao argumento ate' que uma condicao c seja verdadeira. Exemplo: cond x = x > 10 repeat (+3) 2 cond = (+3) ((+3) ((+3) 2)) = 11 repeat (+3) 11 cond = (+3) 11) = 14 1b) (2.0) Defina uma funcao equivalente ao while, que aplique uma funcao f repetidamente ao argumento enquanto uma condicao c e' verdadeira. exemplo: cond x = x < 10 while cond (+3) 2 = (+3) ((+3) ((+3) 2)) = 11 while cond (+3) 11 = 11 2) (3.0) Defina recursivamente uma funcao que some uma arvore e outra que dobre os elementos de uma arvore. Exemplo: sumTree (Bin (Leaf 1) (Bin (Leaf 4) (Leaf 2))) = 7 doubleTree (Bin (Leaf 1) (Bin (Leaf 4) (Leaf 2))) = (Bin (Leaf 2) (Bin (Leaf 8) (Leaf 4))) Prove que sumTree (doubleTree x) = 2 * sumTree x 3) (2.0) uma base de dados pode ser representada por uma arvore de tuplas, cada tupla representando informacoes sobre um funcionario: (nome, cargo, salario). Faca funcoes para: (1.0) dada uma lista com os aumentos a serem dados para cada cargo (cargo, aumento) faca uma funcao que retorne a base de dados de funcionarios apos o aumento (uma arvore com os funcionarios na mesma posicao). 3) (3.0) faca uma funcao que conte o numero de repeticoes de um elemento em uma lista ordenada, retornanado um par onde o primeiro elemento e' o elemento original e o segundo indica o numero de repeticoes. count [1,2,3,3,4,5,5,5,5,6] = [(1,1),(2,1),(3,2),(4,1),(5,4),(6,1)]