Buscar

Trabalho3_et1

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

3o trabalho de Computação 2
Turma: ET1/ER1
4a e 6a de 8h às 10h
Professora: Bianca Ruivo
Data de entrega: 13/07/2011
Apresentações: 13/07/11 e 15/07/11 de 8h às 10h
Os temas relativos ao trabalho estão descritos abaixo. Cada grupo (de, no 
máximo, 5 alunos) deverá escolher um tema e desenvolver um programa 
orientado a objetos (obrigatoriamente) e utilizando o módulo Tkinter do Python 
(e, também, outros módulos quando necessário) para implementar o tema 
escolhido. Como há mais grupos que temas, o mesmo tema poderá ser usado 
por mais de 1 grupo. No entanto, cada tema deverá ser escolhido no mínimo 1 
vez e no máximo 2 vezes.
Cada grupo deverá entregar o trabalho no dia 13/07 (no horário da aula) 
no seguinte formato: um diretório com o nome T3_Tema?_Nome contendo os 
arquivos T3_?.py e Grupo_T3.txt onde ? representa o número do tema 
escolhido e Nome representa o nome do primeiro integrante do grupo. 
As apresentações dos trabalhos, obrigatórias, serão nos dias 13/07 e 
15/07 de 8h às 10h. Cada grupo terá cerca de 15 minutos para apresentar o 
trabalho. O trabalho valerá 10.00 pontos. O grupo que não apresentar o 
trabalho perderá 2.0 pontos na nota final do mesmo e o grupo que apresentar o 
trabalho poderá receber até 2.0 pontos a mais na nota final do trabalho, pontos 
estes relativos à apresentação.
Abaixo, estão listados os temas a serem escolhidos.
Tema 1 – Sistemas Lineares: 
Escreva um programa que resolva sistemas de equações lineares. O seu 
programa deverá ler as equações na forma a*w ± b*x ± c*y … = d e resolver o 
sistema, apresentando a solução do mesmo em forma de tupla.
O programa deverá verificar se o sistema linear tem o número de 
equações igual ao número de incógnitas (caso contrário, uma mensagem de 
erro deverá ser mostrada ao usuário) e se os valores dos coeficientes a, b, c, 
etc são números inteiros. Não há limite para o número de equações/incógnitas.
Faça o tratamento correto de exceções (utilizando “try/except”) quando 
necessário.
Utilize o módulo “numpy” para resolver o sistema linear. Este módulo pode 
ser encontrado no link http://numpy.scipy.org/ .
Exemplo do funcionamento do programa:
3*w + 4*x = 10
1*w – 2*x = 3
Vetor solução: (3.2, 0.1)
Tema 2 - Biblioteca:
Escreva um programa que modele um sistema de uma biblioteca. O seu 
programa deverá ter controle sobre o cadastro de usuários/livros e empréstimos 
dos livros, conforme abaixo:
Dados para o cadastro de usuários (todos os itens são obrigatórios):
• CPF – 11 caracteres (sem o hífen);
• nome completo – no máximo 20 caracteres;
• endereço – no máximo 30 caracteres;
• telefone residencial – 13 caracteres (com DDD e no formato 
(xx)xxxx-xxxx);
• telefone celular – 13 caracteres (com DDD e no formato (xx)xxxx-
xxxx);
• data de nascimento – 10 caracteres (no formato dd/mm/yyyy);
• sexo (feminino ou masculino);
• e-mail – no máximo 30 caracteres.
Dados para o cadastro de livros (todos os itens são obrigatórios):
• nome do livro – no máximo 30 caracteres;
• identificador do livro – número inteiro positivo (gerado pelo 
programa) começando com 1 e incrementando de 1 
automaticamente;
• autor – no máximo 20 caracteres;
• editora – no máximo 10 caracteres;
• ano de publicação – 4 caracteres;
• número de exemplares – no máximo 10;
• variável que representa se o livro está emprestado ou não.
Empréstimos dos livros (todos os itens são obrigatórios):
• identificador do livro;
• CPF da pessoa que pegou o livro emprestado;
• data de empréstimo do livro – 10 caracteres (no formato 
dd/mm/yyyy);
• data de devolução do livro – 10 caracteres (no formato dd/mm/yyyy);
Todos os dados descritos acima deverão ser armazenados no formato de 
arquivo .txt. Os dados dos livros deverão ser gravados no arquivo “livros.txt”, os 
dados dos usuários no arquivo “usuarios.txt” e os dados dos empréstimos no 
arquivo “emprestimos.txt”.
O seu programa deverá ter algumas telas, de acordo com a especificação 
abaixo:
• tela para cadastro de usuários;
• tela para cadastro de livros;
• tela para empréstimos dos livros;
• tela para listar CPF e nome dos usuários cadastrados e as opções 
de alterar dados cadastrais e remover usuários. Esta tela também 
deverá mostrar os livros (pelo identificador) que estão emprestados 
para cada usuário. Ao clicar no identificador do livro, os dados 
completos do mesmo deverão aparecer numa nova janela;
• tela para listar identificador, nome e autor dos livros cadastrados 
com opção de alterar ou remover dados do livro. Esta tela também 
deverá mostrar se o livro está emprestado (e para quem, mostrando 
o CPF do usuário) e a data de devolução do mesmo.
O seu programa deverá fazer o tratamento correto de exceções (utilizando 
“try/except” e “raise”) de forma a:
• não aceitar letras nos campos de telefone (residencial e celular), 
CPF;
• validar a data de nascimento digitada;
• o campo e-mail deverá conter, obrigatoriamente, o “@”;
• não aceitar letras nos campos ano de publicação do livro e número 
de exemplares;
• validar a data de empréstimo e a data de devolução do livro.
Tema 3 – Calculadora notação polonesa reversa:
Escreva um programa que modele uma calculadora com notação 
polonesa reversa. A calculadora deverá realizar as operações de soma, 
subtração, multiplicação e divisão.
Exemplo da notação polonesa reversa:
• 3 + 5 => 3 5 + => resposta: 8
• 8 – 3 => 8 3 - => resposta: 5
• (1 + 7) / 2 => 1 7 + 2 / => resposta: 4
• ((0 * 2) – (2 * 2)) / (1 * 4) => 0 2 * 2 2 * - 1 4 * / => resposta: -1
• 35 + 4 => 35 4 + => resposta: 39
O seu programa deverá mostrar os botões contendo os algarismos de 0 a 
9, além dos símbolos “+”, “-”, “*”, “/” e “=”. Além disto, deverá ter um botão para 
limpar o que foi digitado.
Faça o tratamento correto de exceções (utilizando “try/except”) de forma 
não aceitar letras na expressão a ser calculada (aceitar somente os dígitos de 0 
a 9, +, -, *, /, ( e )).
Tema 4 – Sistema hoteleiro:
Escreva um programa que modele um sistema de controle de hóspedes e 
quartos de um hotel, conforme abaixo:
Dados para o cadastro de hóspedes (todos os itens são obrigatórios):
• CPF – 11 caracteres (sem o hifen);
• nome completo – no máximo 20 caracteres;
• endereço – no máximo 30 caracteres;
• cidade – no máximo 30 caracteres;
• estado – 2 caracteres;
• telefone residencial – 13 caracteres (com DDD e no formato 
(xx)xxxx-xxxx);
• telefone celular – 13 caracteres (com DDD e no formato (xx)xxxx-
xxxx);
• data de nascimento – 10 caracteres (no formato dd/mm/yyyy);
• sexo (feminino ou masculino); 
• e-mail – no máximo 30 caracteres;
• data de entrada no hotel – 10 caracteres (no formato dd/mm/yyyy);
• data de saída do hotel – 10 caracteres (no formato dd/mm/yyyy).
Dados para o cadastro de quartos:
• número do quarto – inteiro positivo >= 100 e <= 400;
• tipo do quarto (solteiro simples, solteiro duplo, casal, triplo ou 
quádruplo);
• preço da diária;
• itens: TV, frigobar, ar condicionado – opcionais.
Controle dos quartos:
• número do quarto;
• CPFs dos ocupantes do quarto – 11 caracteres (sem o hifen);
• variável que indique se o quarto está ocupado ou não.
Todos os dados descritos acima deverão ser armazenados no formato de 
arquivo .txt. Os dados dos hóspedes deverão ser gravados no arquivo 
“hospedes.txt”, os dados dos quartos no arquivo “quartos.txt” e os dados dos 
controles dos hóspedes e quartos no arquivo “controles.txt”.
O seu programa deverá ter algumas telas, de acordo com a especificação 
abaixo:
• tela para cadastro de hóspedes;
• tela para cadastro de quartos;
• tela para controle dos quartos – no momento do “check-in” do 
hóspede, o programa deverá associar o número do quarto ao CPF 
do hóspede e marcar o quarto como ocupado. No momento do 
“check-out” do hóspede, o programa deverá calcular o valor total 
das diárias, apresentar este valor e marcar o quarto em questão 
como desocupado;
• tela para listar CPF e nome dos hóspedes cadastrados e a opção de 
alterar dados cadastrais dos hóspedes. Esta tela também deverá 
mostraro número do quarto ocupado por cada hóspede;
• tela para listar os números dos quartos e se estão ocupados ou não. 
Quando eu clicar no número do quarto o programa deverá uma 
janela com todos os itens do quarto.
O seu programa deverá fazer o tratamento correto de exceções (utilizando 
“try/except” e “raise”) de forma a:
• não aceitar letras nos campos de telefone (residencial e celular), 
CPF e número do quarto;
• validar a data de nascimento, de entrada e saída do hóspede do 
hotel;
• o campo e-mail deverá conter, obrigatoriamente, o “@”;
Tema 5 – Sistema de cursos de informática:
Escreva um programa que modele um sistema de controle de cursos de 
informática, conforme abaixo:
Dados para o cadastro de alunos (todos os itens são obrigatórios):
• CPF – 11 caracteres (sem o hifen);
• nome completo – no máximo 20 caracteres;
• endereço – no máximo 30 caracteres;
• cidade – no máximo 30 caracteres;
• estado – 2 caracteres;
• telefone residencial – 13 caracteres (com DDD e no formato 
(xx)xxxx-xxxx);
• telefone celular – 13 caracteres (com DDD e no formato (xx)xxxx-
xxxx);
• data de nascimento – 10 caracteres (no formato dd/mm/yyyy);
• sexo (feminino ou masculino); 
• e-mail – no máximo 30 caracteres.
Ao final do cadastro de um aluno, o programa deverá gerar, 
automaticamente, um número de matrícula para o mesmo. O número de 
matrícula deverá ser inteiro positivo maior ou igual a 1000 e menor ou igual a 
5000.
Dados para o cadastro de cursos (todos os itens são obrigatórios):
• identificador do curso – número inteiro positivo gerado pelo 
programa (começando com 1 e incrementando de 1 
automaticamente);
• nome do curso – máximo de 30 caracteres;
• número mínimo de alunos para que o curso ocorra;
• data de início do curso no formato dd/mm/yyyy;
• duração do curso (em horas).
Controle de inscrição dos alunos nos cursos:
Para cada curso o programa deverá receber o número de matrícula 
dos alunos que desejam se inscrever no curso e incrementar o número de 
alunos inscritos no curso. Atenção! Cada aluno poderá se inscrever em, no 
máximo, 5 cursos!
Todos os dados descritos acima deverão ser armazenados no formato de 
arquivo .txt. Os dados dos alunos deverão ser gravados no arquivo “alunos.txt”, 
os dados dos cursos no arquivo “cursos.txt” e os dados dos controles de 
inscrição dos alunos nos cursos no arquivo “controles.txt”.
O seu programa deverá ter algumas telas, de acordo com a especificação 
abaixo:
• tela para cadastro de alunos;
• tela para cadastro de cursos;
• tela para controle de inscrição dos alunos nos cursos – nesta tela, 
será possível fazer a inscrição dos alunos nos cursos, lembrando 
que cada aluno só poderá se inscrever em, no máximo, 5 cursos;
• tela para listar nome e matrícula dos alunos cadastrados e a opção 
de alterar dados cadastrais dos alunos. Esta tela também deverá 
mostrar os cursos que os alunos estão inscritos (pelo identificador 
do curso).
• Tela para listar os cursos cadastrados (pelo identificador) e as 
matrículas dos alunos inscritos, bem como o total de alunos no 
curso. Quando eu clicar no identificador do curso, o programa 
deverá abrir uma janela mostrando todos os dados referentes 
aquele curso.
O seu programa deverá fazer o tratamento correto de exceções (utilizando 
“try/except” e “raise”) de forma a:
• não aceitar letras nos campos de telefone (residencial e celular), 
CPF, número mínimo de alunos no curso e duração do curso;
• validar a data de nascimento do aluno e a data de início do curso;
• o campo e-mail deverá conter, obrigatoriamente, o “@”;
Tema 6 - Polinômios:
Escreva um programa que realize as operações de soma, subtração, 
multiplicação e divisão entre 2 polinômios, além de obter as raízes dos 
mesmos. O programa deverá ler 2 polinômios do usuário de acordo com o 
formato abaixo:
Polinômio 1 (p1): 1*x^2 + 2*x – 3 (representa x2 + 2x - 3)
Polinômio 2 (p2): 2*x^2 - 2*x + 4 (representa 2x2 – 2x + 4)
E apresentar os resultados das operações no formato abaixo:
Soma (p1 + p2): 3x2 + 1
Subtração (p1 – p2): -1x2 + 4x - 7
Multiplicação (p1 * p2): 2x4 + 2x3 – 6x2 + 14x - 12
Divisão (p1 / p2): Quociente: ½ e Resto: 3x - 5
Raízes de p1: -3 e -1
Raízes de p2: Nao há raízes reais
O programa deverá aceitar polinômios de qualquer grau sendo que o grau 
do 1o polinômio deverá ser maior ou igual ao grau do 2o polinômio. O programa 
deverá ser capaz de ler os polinômios no formato a*x^? ± b*x^? ± …. ± z onde 
a, b,..., z são números inteiros e ? são núméros inteiros positivos distintos e 
decrescentes.
Utilize o módulo “numpy” para realizar as operações com os polinômios. 
Este módulo pode ser encontrado no link http://numpy.scipy.org/ .
Faça o tratamento correto de exceções (utilizando “try/except”) conforme 
necessário.
Tema 7 - Matriz:
Escreva um programa que realize as seguintes operações sobre uma 
matriz A (de qualquer dimensão porém quadrada) escolhida pelo usuário:
• multiplicação de A por um escalar k inteiro positivo (a ser informado 
pelo usuário);
• inversa de A;
• determinante de A;
• potenciação de A (matriz A elevada a algum número inteiro positivo j 
que será informado pelo usuário);
• mostrar os elementos da diagonal principal de A.
 As operações descritas acima (bem como a forma de carregar a matriz 
para o programa) deverão ser acionadas em itens de um menu superior a ser 
criado na janela principal do programa.
O programa deverá ter 2 opções para leitura da matriz: por arquivo texto 
ou por digitação manual dos seus elementos (neste caso, o programa deverá 
pedir a dimensão da matriz e posteriormente, seus elementos).
Caso o usuário escolha carregar a matriz através de um arquivo texto, o 
programa poderá assumir que o mesmo estará no formato abaixo (elementos 
da matriz linha a linha, separados por um espaço em branco):
Exemplo de arquivo “matriz.txt”:
1 2 3
4 5 6
7 8 9
Faça o tratamento de exceções (utilizando “try/except”) de forma a aceitar 
somente números para os valores de “k” e “j” e para os elementos da matriz, 
caso ela tenha sido digitada manualmente. Além disso, verifique se o arquivo 
informado pelo usuário existe (caso a matriz seja carregada por meio de 
arquivo), informando um erro caso o mesmo não exista.
Utilize o módulo “numpy” para realizar as operações com a matriz. Este 
módulo pode ser encontrado no link http://numpy.scipy.org/ .
Tema 8 - Arquivos:
Escreva um programa que leia um diretório informado pelo usuário e 
realize as seguintes operações:
• liste todos os arquivos “.txt” contidos no diretório;
• permita ao usuário escolher 2 arquivos .txt no diretório para que o 
programa crie um 3o arquivo .txt (com nome a ser informado pelo 
usuário) com o conteúdo dos 2 arquivos selecionados;
• permita ao usuário criar um novo arquivo .txt (com nome a ser 
informado por ele) no diretório;
• permita ao usuário escolher um arquivo .txt do diretório e alterar o 
seu conteúdo.
• Permita a compressão de arquivos .txt (criação de um arquivo .zip 
com nome a ser informado) escolhidos pelo usuário.
 As operações descritas acima deverão ser acionadas em itens de um 
menu superior a ser criado na janela principal do programa.
Faça o tratamento correto de exceções (utilizando “try/except”) de forma a
verificar se o diretório informado existe.
Para trabalhar com o diretório e arquivos .txt utilize os módulos “os” e 
“os.path”. Para “zipar” os arquivos selecionados pelo usuário utilize o módulo 
“zipfile”.

Outros materiais