t1_comp2
9 pág.

t1_comp2


DisciplinaComputação II158 materiais479 seguidores
Pré-visualização2 páginas
Trabalho 1 de Computação 2
Data de entrega: 26/10/2011
Prof(a): Bianca Ruivo
O trabalho contém 2 programas a serem feitos em grupo de, no máximo, 
3 pessoas. O trabalho deverá ser entregue via e-mail (bianca.ruivo@gmail.com) 
até a data especificada (23:59 do dia 26/10/2011), no seguinte formato:
\u2022 Arquivo T1_Comp2_ET1.zip contendo os arquivos T1_1.py e 
T1_2.py com as resoluções dos programas 1 e 2, 
respectivamente, e um arquivo Grupo_T1_Comp2_ET1.txt 
com os nomes completos e DREs dos integrantes do grupo.
Critérios de correção:
Os critérios de correção a serem utilizados serão os seguintes:
1. organização e clareza do código; 
2. presença de comentários em pontos do código que não 
estejam muito claros;
3. nomes de variáveis/funções significativos, objetivos e 
autoexplicativos; 
4. definição de funções/métodos separada da parte de entrada 
de dados (programa principal) e presença do \u201creturn\u201d; 
5. o programa lê os dados de entrada conforme pedido e gera a 
saída corretamente;
6. o programa não aborta (não interrompe a sua execução);
Programa 1: Um instituto de pesquisa possui uma base de dados contendo 
nome, idade, sexo, estado civil, número de filhos e salário de habitantes de uma 
determinada região. Faça um programa que leia estes valores do teclado e faça 
as seguintes operações:
\u2022 adicionar uma nova pessoa;
\u2022 listar o número total de mulheres;
\u2022 listar o número total de homens;
\u2022 listar a média salarial das pessoas;
\u2022 listar o nome e salário das pessoas em ordem crescente de 
salário;
\u2022 listar a média de idade das pessoas e o nome e a idade das 
pessoas que possuem idade acima da média;
\u2022 listar o nome e o número de filhos das mulheres casadas e com 
mais de 3 filhos;
\u2022 listar o nome dos homens solteiros;
\u2022 listar o nome das mulheres com até 3 filhos e que recebem até 
R$ 500.00 de salário;
\u2022 listar todas as pessoas cadastradas no sistema.
Cada operação descrita acima representa uma opção de um menu de 
opções a ser mostrado pelo programa conforme descrito abaixo:
Menu de opções:
Digite 1 para adicionar uma nova pessoa
Digite 2 para mostrar o número total de mulheres
Digite 3 para mostrar o número total de homens
Digite 4 para mostrar a média salarial das pessoas
Digite 5 para mostrar o nome e salário das pessoas em ordem 
crescente de salário
Digite 6 para mostrar a média de idade das pessoas e o nome e a 
idade das pessoas que possuem idade acima da média
Digite 7 para mostrar o nome e o número de filhos das mulheres 
casadas e com mais de 3 filhos
Digite 8 para mostrar o nome dos homens solteiros
Digite 9 para mostrar o nome das mulheres com até 3 filhos e que 
recebem até R$ 500.00 de salário
Digite 10 para listar todos os dados de todas as pessoas
Digite 11 para sair do programa
Para tal, crie uma classe Pessoas contendo os seguintes atributos e 
métodos:
Atributos:
\u2022 dicionário contendo os valores recebidos por parâmetro, 
com o nome como chave e os demais valores como 
conteúdo, em forma de tupla.
Métodos:
\u2022 __init__(self,nome,idade,sexo,estado_civil,num_filhos,sa
l): cria um dicionário contendo os valores recebidos por 
parâmetro, com o nome como chave e os demais 
valores como conteúdo, em forma de tupla;
\u2022 totalPessoas(self): retorna o total de mulheres ou 
homens;
\u2022 mediaSalarial(self): retorna a média salarial das 
pessoas;
\u2022 listaNomesSalarios(self): retorna uma lista contendo o 
nome e os salários das pessoas, em ordem crescente de 
salário;
\u2022 mediaIdade(self): retorna a média de idade;
\u2022 totalIdade(self): retorna o nome e a idade das pessoas 
que possuem idade acima da média;
\u2022 mulheresCasadasNumFilhos3(self): retorna o nome e o 
número de filhos das mulheres que são casadas e têm 
mais de 3 filhos;
\u2022 homensSolteiros(self): retorna o nome dos homens 
solteiros;
\u2022 mulheresNumFilhos3Sal500(self): retorna o nome das 
mulheres com até 3 filhos e que recebem até R$ 500.00 
de salário;
\u2022 listaPessoas(): retorna todos os dados de todas as 
pessoas cadastradas.
Observações:
1. Os valores de nome, idade, sexo, estado civil, número de 
filhos e salário deverão ser lidos do teclado e passados como 
parâmetro para o método __init__. Utilize dicionários para 
armazenar os valores lidos;
2. O seu programa deverá aceitar somente os valores de 1 a 11 
para a opção do menu, imprimindo na tela a mensagem 
\u201cOpcao invalida\u201d quando for digitada uma opção fora do 
intervalo especificado; 
3. O seu programa deverá aceitar, como estado civil, os valores 
's' para solteiro, 'c' para casado, 'v' para viúvo e 'd' para 
divorciado. Qualquer valor diferente dos listados deverá ser 
considerado como inválido e a mensagem \u201cEstado civil 
invalido\u201d deverá ser impressa na tela. Além disso, o número de 
filhos deverá ser pedido somente se a pessoa for casada.
1.
4. O seu programa deverá aceitar os valores 'f' ou 'm' para o 
sexo.Qualquer valor diferente destes deverá ser considerado 
como inválido e a mensagem \u201cSexo invalido.\u201d deverá ser 
impressa na tela.
5. Caso não haja pessoas cadastradas, o programa deverá 
imprimir a mensagem \u201cNao ha pessoas cadastradas ainda.\u201d;
6. Faça o tratamento de exceções utilizando \u201ctry/except/raise\u201d de 
forma a:
\u25e6 aceitar somente números de 1 a 11 para a opção do 
menu;
\u25e6 aceitar somente números para os campos idade, 
número de filhos e salário (neste caso, números 
reais), imprimindo na tela a mensagem \u201cSo aceito 
numeros\u201d em caso de erro;
\u25e6 aceitar idades entre 1 e 90 anos, imprimindo na tela a 
mensagem \u201cIdade invalida\u201d em caso de erro \u2013 utilizar 
o \u201craise\u201d e criar uma classe de exceção;
\u25e6 aceitar nomes de até 30 caracteres e não aceitar 
nomes em branco, imprimindo na tela a mensagem 
\u201cNome invalido\u201d em caso de erro \u2013 utilizar o \u201craise\u201d e 
criar uma classe de exceção;
Exemplo do funcionamento do programa:
Digite 1 para adicionar uma nova pessoa
Digite 2 para mostrar o número total de mulheres
Digite 3 para mostrar o número total de homens
Digite 4 para mostrar a média salarial das pessoas
Digite 5 para mostrar o nome e salário das pessoas em ordem 
crescente de salário
Digite 6 para mostrar a média de idade das pessoas e o nome e a 
idade das pessoas que possuem idade acima da média
Digite 7 para mostrar o nome e o número de filhos das mulheres 
casadas e com mais de 3 filhos
Digite 8 para mostrar o nome dos homens solteiros
Digite 9 para mostrar o nome das mulheres com até 3 filhos e que 
recebem até R$ 500.00 de salário
Digite 10 para listar todos os dados de todas as pessoas
Digite 11 para sair do programa
Digite a sua opcao: 1
Digite o nome: maria
Digite a idade: 24
Digite o sexo (f ou m): f
Digite o estado civil (s ou c ou v ou d): c
Digite o numero de filhos: 1
Digite o salario: 1000.00
Pessoa cadastrada com sucesso.
Digite a sua opcao: 1
Digite o nome: joao
Digite a idade: 19
Digite o sexo (f ou m): m
Digite o estado civil (s ou c ou v ou d): s
Digite o salario: 1500.00
Pessoa cadastrada com sucesso.
Digite a sua opcao: 2
Total de mulheres = 1
Digite a sua opcao: 5
maria, 1000.00
joao, 1500.00
Digite a sua opcao: 10
maria, 24, f, c, 1, 1000.00
joao, 19, m, s, 0, 1500.00
Digite a sua opcao: llalala
Opcao invalida.
Digite a sua opcao: 11
Fim do programa.
Programa 2: Escreva um programa para calcular a matriz inversa de uma 
matriz \u201cA\u201d 3 x 3 lida do teclado. O seu programa deverá ler os elementos 
(números reais) da matriz um a um (até que FIM seja digitado para sair do 
programa), verificar se a matriz é quadrada e imprimir a matriz inversa da matriz 
digitada a partir da fórmula abaixo:
A-1 = (1 / det(A)) * (cof(A))T
onde cof(A) representa a matriz dos cofatores de A, ou seja, a matriz 
contendo os elementos cofij = (-1)i+j * Dij onde Dij representa o determinante 
obtido da eliminação da linha i e da coluna j da matriz.
Ex:
A = 3 4 5
 1 -1 2
 0 2 1
cof(A) = cof11 cof12 cof13
 cof21 cof22 cof23
 cof31 cof32 cof33