Baixe o app para aproveitar ainda mais
Prévia do material em texto
2a prova de Computação 2 Turma: ET1/ER1 - UFRJ Datas: 01/06 e 03/06/2011 de 8h às 10h Professora: Bianca Ruivo 1) O seno de um ângulo “x”, dado em radianos, pode ser aproximado por um polinômio da seguinte forma: sen(x) ~ x – (x**3) / 3! + (x**5) / 5! - (x**7) / 7! + ... Crie uma classe Seno contendo os seguintes atributos e métodos: Atributos: • x: ângulo em graus; • n: número de termos do polinômio. Métodos: • calculaSeno(): retorna a aproximação do seno do ângulo “x”. O ângulo “x” deverá ser convertido para radianos antes do cálculo do seno; • fatorial(num): retorna o fatorial de “num”. Obs1: Os valores do ângulo “x” e do número de termos “n” do polinômio deverão ser lidos do teclado (até que a palavra “FIM” seja digitada, para sair do programa) e passados como parâmetro para o método __init__. Obs2: O seu programa deverá fazer o tratamento correto de exceções (utilizando “try/except” ou outro artifício quando o uso do “try/except” não for possível) de forma a: • aceitar somente números do tipo “float” (entre 0 e 360 graus, ambos inclusive) e não aceitar letras ou caracteres não numéricos para o ângulo (exceto o '.') ; • aceitar somente números inteiros positivos para o número de termos do polinômio. Se o valor “0” for digitado para “n”, o programa deverá mostrar a mensagem “Valor não permitido” e pedir novamente o valor de “n”. Exemplo de funcionamento do programa: Digite o ângulo em graus (entre 0 e 360 graus ou FIM para sair): 0.25 Digite o numero de termos: 2 O valor do seno eh 0.0043633092847333906 Digite o ângulo em graus (entre 0 e 360 graus ou FIM para sair): 0.5 Digite o número de termos: 0 Valor nao permitido. Digite o número de termos: 1 O valor do seno eh 0.0087266462599716477 Digite o ângulo em graus (entre 0 e 360 graus ou FIM para sair): FIM 2) Escreva um programa que leia um número inteiro “n” do teclado e grave no arquivo “saida.txt” os “n” primeiros elementos da série 1, 2, 4 ,7, 11, 16, 22, … Obs1: Os valores de “n” deverão ser lidos do teclado até que o valor “-1” seja digitado (para sair do programa). Obs2: Se “n” for negativo (com exceção do -1) ou zero o programa deverá imprimir na tela a mensagem “Nao aceito numeros negativos nem zero “ e pedir outro valor para “n”. Obs3: Para cada valor de “n” válido, o programa deverá imprimir na tela a mensagem “Arquivo de saída gravado com sucesso.” e no arquivo “saida.txt” a linha “Os n primeiros elementos da serie sao: ?, ?, ?”. Obs4: Faça o tratamento correto de exceções (utilizando “try/except”) de forma a aceitar somente números para o valor de “n” - não aceitar letras e demais caracteres. Exemplo de funcionamento do programa: Digite n (ou -1 para sair): 2 Arquivo de saida gravado com sucesso. Digite n (ou -1 para sair): 4 Arquivo de saida gravado com sucesso. Digite n (ou -1 para sair): 1 Arquivo de saida gravado com sucesso. Digite n (ou -1 para sair): -4 Nao aceito numeros negativos nem zero. Digite n (ou -1 para sair): 0 Nao aceito numeros negativos nem zero. Digite n (ou -1 para sair): -1 Arquivo “saida.txt”: Os 2 primeiros elementos da série são: 1, 2. Os 4 primeiros elementos da série são: 1, 2, 4 ,7. O 1o primeiro elemento da série eh: 1. 3) Escreva um programa que leia um número “n” do tipo “float” do teclado (n maior que 0 e menor ou igual a 999.99) e grave o valor de “n” por extenso (acrescentando somente as palavras “reais” e “centavos”) no arquivo “extenso.txt”, como abaixo: Exemplo de funcionamento do programa: Digite n (-1 para sair): 230.10 Valor de 230.10 por extenso gravado com sucesso. Digite n (-1 para sair): 1000.00 Valor invalido. Digite n (-1 para sair): 30.00 Valor de 30.00 extenso gravado com sucesso. Digite n (-1 para sair): -1 Arquivo “extenso.txt”: O valor de 230.10 por extenso eh: 230 reais e 10 centavos O valor de 30.00 por extenso eh: 30 reais Obs1: Os valores de “n” deverão ser lidos do teclado até que o valor “-1” seja digitado (para sair do programa). Obs2: Para cada valor de “n” válido, o programa deverá imprimir na tela a mensagem “Valor de n por extenso gravado com sucesso” e no arquivo “extenso.txt” a linha “O valor de n por extenso eh: ??? reais e ??? centavos.” Obs3: Faça o tratamento correto de exceções (utilizando “try/except” ou outro artifício quando não for possível o uso do “try/except”) de forma a aceitar somente números ponto-flutuante para o valor de “n” - não aceitar letras e demais caracteres (com exceção do '.') . Obs4: Faça o tratamento de números fora do intervalo especificado (maior que 0 e menor ou igual a 999.99) utilizando o comando “raise” e uma classe de exceção criada por você. Para números fora do intervalo especificado, o programa deverá imprimir a mensagem “Valor invalido.” . 4) Escreva um programa que leia um arquivo “palavras.txt” (contendo, em cada linha, uma palavra e um número inteiro, separados por espaço) e grave no arquivo “rotacoes.txt” cada palavra lida rotacionada “k” caracteres à direita. Exemplo de funcionamento do programa: Arquivo “palavras.txt”: abcd 1 abcdefghij 3 python 2 amor 3 ceu -2 Arquivo “rotacoes.txt”: Palavra “abcd” rotacionada 1 caracter a direita: dabc Palavra “abcdefghij” rotacionada 3 caracteres a direita: hijabcdefg Palavra “python” rotacionada 2 caracteres a direita: onpyth Palavra “amor” rotacionada 4 caracteres a direita: mora Palavra “ceu” rotacionada -2 caracteres a direita: Nao consegui rotacionar Obs1: Se “k” for igual a zero, a palavra rotacionada será idêntica à palavra original. Obs2: Se “k” for negativo ou for maior que o tamanho da palavra, o programa deverá gravar no arquivo de saída a mensagem “Nao consegui rotacionar.” . 5) Escreva um programa que leia frases do teclado e um número inteiro positivo “k” do teclado e aplique sobre as frases a “cifra de Cesar”. Cada frase lida deverá ser criptografada de acordo com o número “k” lido, de forma que cada caracter da frase deverá ser substituído pelo k-ésimo caracter do alfabeto à frente do caracter considerado. A frase criptografada deverá ser gravada no arquivo de saida “criptografadas.txt”. Por exemplo, para k = 3: O caracter 'a' vira 'd'. O caracter 'b' vira 'e'. … O caracter 'z' vira 'c'. O caracter 'A' vira 'D'. O caracter 'B' vira 'E'. O caracter 'Z' vira 'C'. Obs1: O seu programa deverá ler as frases do teclado até que a palavra “FIM” seja digitada. Considere frases contendo caracteres minúsculos e maiúsculos e não aceite frases em branco, imprimindo a mensagem “Frase invalida” neste caso e pedindo uma nova frase. Caracteres que não sejam alfabéticos (espaços, '@', '[', etc.) não deverão ser criptografados. Obs2: O seu programa deverá fazer o tratamento correto de exceções (utilizando “try/except/raise”) de forma a não aceitar letras para o valor de “k” nem números negativos. Se o valor de “k” for menor ou igual a zero, o programa deverá imprimir a mensagem “Valor de k invalido” e pedir outro valor para “k”. Obs3: Para cada valor válido para “k”, o programa deverá imprimir na tela a mensagem “Frase criptografada com sucesso.” e gravar a frase criptografada no arquivo “criptografadas.txt”. Exemplo de funcionamento do programa: Digite a frase (FIM para sair): curso de python Digite k: 2 Frase “curso de python” criptografada com sucesso. Digite a frase (FIM para sair): bianca Digite k: 0 Valor de k invalido. Digite k: 4 Frase “bianca” criptografada com sucesso. Digite a frase (FIM para sair): FIM Arquivo “criptografadas.txt” Frase “curso de python” criptografada com k = 2: ewtuq fg ravjqp Frase “bianca” criptografada com k = 4: fmerge 6) Escreva um programa que leia dois números inteiros “a” e “b” do teclado e grave no arquivo “soma.txt” a soma dos “b” números a partir de “a” (inclusive). Exemplo de funcionamento do programa: Digite o valor para a (s para sair): 3 Digite o valor para b: 2 Arquivo “soma.txt” gravado com sucesso. Digite o valor para a (s para sair): -2 Digite o valor para b: 0 Valor de b invalido. Digite o valor para b: 3 Arquivo “soma.txt”gravado com sucesso. Digite o valor para a (s para sair): 4 Digite o valor para b: 5 Arquivo “soma.txt” gravado com sucesso. Digite o valor para a (s para sair): s Arquivo “soma.txt” a b Soma 3 2 7 (3 + 4) -2 3 -3 (-2 + (-1) + 0) 4 5 30 (4 + 5 + 6 + 7 + 8) Obs1: O seu programa deverá ler os números do teclado até que a letra 's' seja digitada (para sair do programa). Obs2: O seu programa deverá fazer o tratamento correto de exceções (utilizando “try/except/raise”) de forma a não aceitar letras (exceto 's' para sair do programa) para os valores de “a” e “b” nem números negativos para o valor de “b”. Se o valor de “b” for menor ou igual a zero, o programa deverá imprimir a mensagem “Valor de b invalido” e pedir outro valor para “b”. Além disso, o valor máximo de “b” deverá ser 20 (inclusive) – utilize o comando “raise” neste caso, criando sua própria classe de exceção. Obs3: Para cada par de valores “a” e “b” válidos, o programa deverá gravar a soma dos “b” números a partir de “a” (inclusive) no arquivo “soma.txt”. Esquema da prova: 1) Cada aluno sorteará 2 questões dentre as 6 questões apresentadas. Cada aluno terá 2h para realizar a prova. 2) Cada aluno deverá nomear seus arquivos .py de acordo com as questões sorteadas. Ex: P2_1.py (questão 1 sorteada). Dentro do arquivo .py deverá constar o nome completo e o DRE do aluno.
Compartilhar