Baixe o app para aproveitar ainda mais
Prévia do material em texto
1a prova de Computação 2 Turma: EPT/UFRJ Data: 25/04/2011 de 13h às 17h Professora: Bianca Ruivo 1) Escreva um programa que implemente uma classe Listas contendo os seguintes atributos e métodos: Atributos: • lista1; • lista2. Métodos: • agruparLista(l): retorna uma lista contendo os elementos repetidos da lista “l” agrupados. Ex: l = [3,3,3,3,7,7,13,13,23] agruparLista(l): retorna ['3^4', '7^2', '13^2', '23'] Obs: Ordene a lista “l” antes de agrupar seus elementos. • removeDuplicados(l): retorna uma lista contendo elementos distintos da lista “l”. Ex: l = [1,2,3,3,4] removeDuplicados(l): retorna [1,2,3,4] • intercalaElementos(): retorna uma lista contendo os elementos das listas “lista1” e “lista2” (atributos de classe) intercalados. Ex: l1 = [1,2,3] l2 = [4,5] intercalaElementos(): retorna [1,4,2,5,3] Observações: 1.1) O seu programa deverá ler 2 listas do teclado e passá-las como parâmetro para o método __init__, inicializando os atributos da classe; 1.2) O seu programa deverá mostrar os resultados das operações na tela, não sendo necessário criar um menu de opções. Ex: Digite a 1a lista de números: [3,3,3,4,4,7] Digite a 2a lista de números: [1,2,5] Agrupando a lista 1: ['3^3', '4^2', '7'] Agrupando a lista 2: ['1', '2', '5'] Retirando as duplicações da lista 1: [3,4,7] Retirando as duplicações da lista 2: [1,2,5] Intercalando os elementos das 2 listas: [3,1,3,2,3,5,4,4,7] 2) Escreva um programa que implemente uma classe Numeros contendo os seguintes atributos e métodos: Atributos: • n1; • n2. Métodos: • ehReversivel(n): retorna verdadeiro se o número “n” é reversível e falso caso contrário. Um número é considerado reversível quando a soma dele com o seu inverso só contiver algarismos ímpares; • saoAmigos(): retorna verdadeiro se os números “n1” e “n2” (atributos de classe) são amigos e falso caso contrário. Dois números “n1” e “n2” são considerados amigos se a soma dos divisores de “n1” (excluindo o próprio “n1”) for igual a “n2” e se a soma dos divisores de “n2” (excluindo o próprio “n2”) for igual a “n1”. Observações: 2.1) O seu programa deverá ler 2 números do teclado e passá-los como parâmetro para o método __init__, inicializando os atributos da classe; 2.2) O seu programa deverá mostrar os resultados das operações na tela, não tendo a necessidade de criar um menu de opções. 2.3) O seu programa só deverá aceitar números inteiros positivos (com exceção do -1, que sairá do programa), acusando um erro caso esta condição não seja satisfeita; Ex: Digite o primeiro número (-1 para sair): 284 Digite o segundo número (-1 para sair): 220 Os dois números são amigos. O primero número não é reversível. O segundo número não é reversível. Digite o primeiro número (-1 para sair): 10 Digite o segundo número (-1 para sair): 34 Os dois números não são amigos. O primero número é reversível. O segundo número é reversível. Digite o primeiro número (-1 para sair): -1 3) Escreva um programa que implemente uma classe Reta contendo os seguintes atributos e métodos: Atributos: • x1: coordenada x do ponto p1; • y1: coordenada y do ponto p1; • x2: coordenada x do ponto p2; • y2: coordenada y do ponto p2. Métodos: • calculaDistancia(): retorna a distância entre os pontos p1(x1,y1) e p2(x2,y2). A distância entre 2 pontos pode ser calculada pela fórmula d = sqrt( (x2 – x1) ** 2 + (y2 – y1) ** 2 ) ; • calculaCoeficienteAngular(): retorna o coeficiente angular da reta que passa pelos pontos p1(x1,y1) e p2(x2,y2). O cálculo do coeficiente angular pode ser feito pela fórmula abaixo: coef_ang = (y2 – y1) / (x2 – x1) • calculaCoeficienteLinear(): retorna o coeficiente linear da reta que passa pelos pontos p1(x1,y1) e p2(x2,y2). O coeficiente linear é calculado utilizando-se o coeficiente angular e um dos pontos, de acordo com a equação da reta (y = a*x + b). O coeficiente linear b pode ser obtido pela fórmula b = y – a * x (onde a é o coeficiente angular da reta) e x e y são as coordenadas de um dos pontos da reta; • encontraReta(): retornar a equação da reta que passa por esses pontos. Ex: encontraReta(p1,p2): retorna y = a*x + b onde: a = coeficiente angular da reta e b = coeficiente linear da reta Para p1 = (0,1) e p2 = (-0.5,0) Reta: y = 2*x + 1 • inclinacaoReta(): retorna o ângulo alfa (em graus) de inclinação da reta que passa pelos pontos p1(x1,y1) e p2(x2,y2). O ângulo alfa pode ser calculado de acordo com a fórmula abaixo: alfa = arctg(a) onde a é o coeficiente angular da reta. Observações: 3.1) O seu programa deverá ler do teclado as coordenadas x e y de 2 pontos do plano xy e passá-las, em forma de tupla, como parâmetro para o método __init__, inicializando os atributos da classe; 3.2) O seu programa deverá mostrar os resultados das operações na tela, não tendo a necessidade de criar um menu de opções. Ex: Digite a coordenada x do 1o ponto: 0 Digite a coordenada y do 1o ponto: 1 Digite a coordenada x do 2o ponto: -0.5 Digite a coordenada y do 1o ponto: 0 A distância entre os pontos é: 1.11 O coeficiente angular da reta que passa pelos pontos é: 2 O coeficiente linear da reta que passa pelos pontos é: 1 A equação da reta que passa pelos pontos é: y = 2*x + 1 O ângulo de inclinação da reta é de aproximadamente 64 graus. 4) Escreva um programa que leia um número inteiro positivo do teclado e chame um método paridade(n) para verificar a paridade do número “n”. Para verificar a paridade de “n” é necessário converter o número para binário, contar o número de algarismos iguais a 1 no número obtido e encontrar o resto da divisão entre o número de dígitos “1” e 2. O seu programa não deverá aceitar números negativos (com exceção do -1, que sairá do programa). Ex: Digite um número (-1 para sair): 10 A paridade do número 1010 é 0. Digite um número (-1 para sair): 4 A paridade do número 100 é 1. Digite um número (-1 para sair): -1 5) Escreva um programa para ler uma lista de palavras e imprimir apenas as palavras iniciadas por vogais (considere maiúsculas e minúsculas e assuma que nenhuma palavra será acentuada). O seu programa deverá ler as palavras até que seja digitado FIM para sair do programa e não deverá aceitar palavras em branco, acusando um erro neste caso. Caso não exista nenhuma palavra iniciada por vogal, o programa deverá imprimir a mensagem “Nenhuma palavra iniciada por vogal.” Ex: Digite a palavra (FIM para sair): teste Digite a palavra (FIM para sair): python Digite a palavra (FIM para sair): amor Digite a palavra (FIM para sair): ceu Digite a palavra (FIM para sair): esperança Digite a palavra (FIM para sair): cachorro Digite a palavra (FIM para sair): Andar Digite a palavra (FIM para sair): FIM As palavras iniciadas por vogais são: amor esperança Andar 6) Escreva um programa para ler números inteiros positivos do teclado e imprimir quais números lidos são primos e a posição deles na lista de números. O seu programa não deverá aceitar números negativos (com exceção do -1, que sairá do programa). Crie um método ehPrimo(n) que retornará verdadeiro se “n” for primo ou falso caso contrário. Caso não exista nenhum número primo na lista, o programa deverá imprimir a mensagem “Não há nenhum número primo na lista informada.” Obs: O número 1 não é primo! Ex: Digite um número (-1 para sair): 3 Digite um número (-1 para sair): 2 Digite um número (-1 para sair): 54 Digite um número (-1 para sair): 7 Digite um número (-1 para sair): 11 Digite um número (-1 para sair): -1 3 é primo e sua posição é 1. 2 é primo e sua posição é 2. 7 é primo e sua posição é 4. 11 é primo e sua posição é 5. 7) Escreva um programa para ler uma frase do teclado e imprimir uma tabela com o número de palavras de comprimento 1, 2, 3, etc. O seu programa deverá ler frases até que a palavra FIM seja digitada (para sair do programa) e não deverá aceitar frases em branco, acusando um erro neste caso. Além disso, assuma que nenhuma palavra da frase estará acentuada. Ex: Digite a frase: cursode python Comprimento da palavra Ocorrências 1 0 2 1 3 0 4 0 5 1 6 1 Digite a frase: a prova de python esta bem facil Comprimento da palavra Ocorrências 1 1 2 1 3 1 4 1 5 2 6 1 Digite a frase: o ceu e azul Comprimento da palavra Ocorrências 1 2 2 0 3 1 4 1 Digite a frase: FIM Esquema da prova: 1) Cada aluno sorteará 1 questão relativa à parte de orientação a objetos (questões 1, 2 e 3) e uma questão das outras 4 restantes (questões 4, 5, 6 e 7). Cada aluno terá 2h para realizar a prova. 2) Cada aluno deverá nomear seus arquivos .py de acordo com as questões sorteadas. Ex: P1_1.py e P1_6.py (questões 1 e 6 sorteadas). Dentro dos arquivos .py deverá constar o nome completo e o DRE do aluno.
Compartilhar