sábado, 28 de junho de 2008

Monte Carlo PI - Distribuído parte 2


Outro método interessante para o cálculo de π pode ser realizado através de Monte Carlo utilizando-se a estatística. Nesse método são sorteados aleatoriamente pontos num quadrado compreendido entre as coordenadas O = (0,0) e B = (1,1). Em seguida calcula-se a distância dos pontos sorteados cn = (xn,yn) até a origem O = (0, 0). π pode ser aproximado através do número de pontos inscritos na circunferência de raio 1 em relação ao total de pontos sorteados no quadrado de lado 1.

Código:

Versão 1 - Servidor se conecta ao cliente.
Versão 2 - Cliente se conecta ao Servidor.

Cliente e Servidor - Compactados, cliente e servidor.

quinta-feira, 17 de abril de 2008

Monte Carlo PI - Paralelismo parte 1



Valores de PI podem ser calculados de diversas maneiras. Vamos considerar o seguinte método
para calcular o valor de PI:
1. Inscreva um circulo em um quadrado de lado = 1
2. Gere pontos aleatórios dentro do quadrado
3. Determine o numero de pontos que cair˜ao dentro do círculo
4. Faça ser o numero de pontos dentro do círculo dividido pelo número de pontos gerados
5. PI = 4r
6. Quanto mais pontos s˜ao gerados, mais preciso é o número PI


O programa deve ser feito utilizando a biblioteca pthreads em C.
Deverá existir uma thread "mestre". Essa thread ir´a instanciar o número necessário de threads
"escravo" para executar o cálculo do PI. A thread "mestre" pode ser a execução do programa principal. O usuario deve entrar com a quantidade de threads "escravos" que seu programa ira criar. Alem disso, o usuario vai entrar com a quantidade de pontos a serem gerados. A thread "mestre" ir´a criar a quantidade de threads "escravos" e dividir a quantidade de pontos que cada thread "escravo" ira gerar. Ao final da execu¸c˜ao, a thread "escravo" ir´a atualizar uma variável compartilhada (utilizando seção crítica) para informar a quantidade de pontos gerado dentro do círculo.
Após o término de todas threads "escravo", a thread "mestre" ir´a encontrar o valor de PI fazendo: PI = 4r.


Código aqui

segunda-feira, 18 de junho de 2007

Projetos de Sistemas de Informação - Trabalho Final



Veja seqüência de figuras para descrever como foi feito a execução do projeto:

Figura 1 = Como o professor explicou...
Figura 2 = Como o líder do projeto entendeu...
Figura 3 = Como o analista projetou...
Figura 4 = Como o programador construiu...
Figura 5 = Como o Consultor de Negócios descreveu...
Figura 6 = Como o projeto foi documentado...
Figura 7 = Que funcionalidades foram instaladas...
Figura 8 = Como o professor foi cobrado...
Figura 9 = Como foi mantido...
Figura 10 = O que o professor realmente queria...


PROJETO DE DESENVOLVIMENTO DE UM SISTEMA PARA CONTROLE DE SERVIÇOS DE UMA OFICINA

Objetivo
O objetivo do Sistema de Gestão de serviços consiste em controlar todas as informações necessárias para a equipe da oficina e os gestores da empresa possam realizar seu trabalho.

Forma de Contratação e de Desenvolvimento
O sistema deve ser desenvolvido segundo critérios próprios de contratação da instituição, que envolve os seguintes passos, que são baseado na estrutura do RUP:
Concepção do SGATE
• Desenvolvimento de uma Visão inicial do sistema (proposta técnica).

Elaboração do SGATE• Desenvolvimento de protótipo de interface do usuário.
• Desenvolvimento de diagrama de casos de uso.
• Desenvolvimento de diagrama de classes do sistema.

Construção do SGATE
• Implementação do sistema

Transição do SGATE

• Apresentação ao contratante
Marco 3 : entrega do sistema definitivo
Neste marco, o sistema será apresentado ao cliente (no caso, o professor).

Trabalho da Disciplina
O trabalho da disciplina consiste de implementar o sistema conforme o critério de contratação acima, assim como os artefatos de cada fase.

Download Projeto - Clique aqui

domingo, 17 de junho de 2007

Banco de Dados - Trabalho Final

Projetar e implementar um sistema de banco de dados para manter as informações relativas
a uma aplicação definida pelo grupo e aprovada pelo professor. Os temas para desenvolvimento poderão ser os mesmos utilizados nas disciplinas Gerência de Projetos
e/ou Projeto de Sistemas.
Outros temas poderão ser escolhidos, a critério do grupo e com aprovação do professor. O
esquema relacional resultante do projeto deverá gerar, no mínimo, 10 tabelas.
Tarefas a serem cumpridas:

1) Representar o esquema conceitual do banco de dados através do diagrama entidaderelacionamento e do diagrama de classes.
2) Fazer o mapeamento do diagrama entidade-relacionamento ou do diagrama de classes para um esquema relacional, respeitando as regras de normalização.
3) Escrever comandos CREATE TABLE para as tabelas do esquema relacional gerado, considerando a existência de chaves primárias e estrangeiras.
4) Elaborar consultas SQL com as seguintes características (cada consulta deverá incluir, no mínimo, 3 tabelas):
· Duas consultas envolvendo junção.
· Três consultas envolvendo operações de conjuntos (união, interseção e diferença).
· Quatro consultas envolvendo operações agregadas (SUM, COUNT, MAX, MIN,
AVG), pelo menos uma das consultas deve envolver as cláusulas GROUP BY e
HAVING.
· Três consultas envolvendo os operadores LIKE, BETWEEN e IN.
· Criar duas visões, cada uma envolvendo pelo menos três tabelas.

OBS: Essas consultas deverão ser não apenas elaboradas, em termos de SQL Plus, mas deverão ser criadas na interface de programação.

5) Fazer uma interface para entrada de dados utilizando um ambiente de desenvolvimento integrado (Delphi, C++ Builder), java ou alguma ferramenta para desenvolvimento Web. Essa interface deverá contemplar a implementação de pelo menos cinco regras de negócio definidas para a aplicação.

segunda-feira, 11 de junho de 2007

Gerente..




Uma empresa, achando que era hora de mudar o estilo de administração, contratou um novo gerente. O novo Chefão veio determinado a balançar as bases, romper paradigmas e tornar a empresa mais produtiva. No primeiro dia, acompanhado dos principais assessores, fez uma inspeção por toda a empresa.

No setor de empacotamento, todos estavam trabalhando duro, mas um rapaz novo, estava encostado na parede, com as mãos nos bolsos. Vendo aí uma boa oportunidade de demonstrar sua nova filosofia de trabalho e, logicamente, a possibilidade de brilhar profusamente diante de seus novos companheiros de trabalho, o gerente perguntou ao rapaz:

- Quanto você ganha por mês, meu rapaz ?

- Duzentos reais, - respondeu o rapaz sem saber do que se tratava - porquê ?

O Gerente tirou 200 reais do bolso e deu para o fulano dizendo:

- Aqui estão seus 200 reais deste mês. Agora suma daqui e não volte mais.

O rapaz embolsou o dinheiro e saiu o mais depressa que pôde.

O gerente, enchendo o peito, pergunta ao grupo de operários:

- Algum de vocês sabe o que esse sujeito fazia aqui ?

- Ele era o entregador de pizza - respondeu um dos operários

domingo, 10 de junho de 2007

Gerência de Projetos - Trabalho Final



I.Meta: Elaborar, até a data de entrega estabelecida pelo professor, os documentos pedidos em uma das fases:

-Fase I: Proposta técnica-comercial;
-Fase II: Plano de projeto;

Em anexo, segue todo o trabalho e enunciado para o mesmo.

Clique aqui para fazer o DOWNLOAD

Defeitos em monitor Samsung



O documento contém imagens de como consertar solda fria em monitores samsung, foi um colega meu que me mandou e estou disponibilizando para vocês.

Conserto de : 1 Imagem sem cor, cor oscilando, imagem descentralizada, imagem não fecha por completo na tela.

Download documento com imagens

PROGRAMA P2P - Uma variável do EA-Share



PROGRAMA P2P é um programa de comunicação peer-to-peer como o Napster. A idéia é disponibilizar a lista de arquivos locais em um servidor para que todos os clientes possam pesquisá-los. Porém a transferência de arquivos é feita entre cada usuário diretamente sem a passagem dos dados pelo servidor.

O servidor é implementado em Unix e os clientes em Windows . Para isso ele deve fazer o controle das conexões TCP/IP ativas e tratar eventuais desconexões. Deve ser implementado um protocolo simples de mensagens, entrada e saída de usuários. Toda busca de arquivos efetuada por um cliente, é pesquisada nos arquivos do servidor e o cliente deve receber o resultado da busca contendo o número IP dos demais clientes que possuem o arquivo requisitado. A transferência é feita diretamente entre os clientes.

O trabalho acima é uma variação do EA-SHARE, um amigo meu o (Eder - Link pro blog dele) fez uma nova versão daquele antigo, pra apresentar na matéria de Redes de Computadores neste primeiro semestre de 2007.

Este software não tem qualquer tipo de garantia, e o autor não poderá ser responsabilizado por qualquer tipo de prejuízo causado pela sua execução ou distribuição do mesmo. A execução deste programa correrá por sua conta e risco. Este programa tem licença gratuita e pode ser distribuído livremente...


quarta-feira, 6 de junho de 2007

Banco de Dados Exercício 7



1. Selecione os nomes de todos os empregados do departamento 'Research' que trabalham mais de 10 horas por semana no projeto 'ProdutoX'.

SELECT E.FNAME
FROM R11_EMPLOYEE E, R11_WORKS_ON W, R11_PROJECT P, R11_DEPARTMENT D
WHERE P.PNUMBER = W.PNO AND W.ESSN = E.SSN AND W.HOURS > 10
AND P.DNUM = D.DNUMBER AND P.PNAME = 'ProdutoX' AND D.DNAME = 'Research';

2. Selecionar o nome dos empregados que tenham um dependente com o mesmo primeiro nome que o deles.

SELECT E.FNAME' 'E.LNAME
FROM R11_EMPLOYEE E
WHERE E.FNAME = ANY
(SELECT D.DEPENDENT_NAME
FROM R11_DEPENDENT D
WHERE D.ESSN = E.SSN)

3. Selecionar o nome dos empregados que são diretamente supervisionados por 'Franklin Wong'.

SELECT E.FNAME' 'E.LNAME
FROM R11_EMPLOYEE E
WHERE E.SUPERSSN =
(SELECT E1.SSN
FROM R11_EMPLOYEE E1
WHERE E1.FNAME = 'Franklin' AND E1.LNAME = 'Wong');

4. Selecionar o nome do projeto e o número total de horas por semana (de todos os empregados) gastas no projeto.

SELECT P.PNAME, SUM(W.HOURS)
FROM R11_PROJECT P, R11_WORKS_ON W
WHERE P.PNUMBER = W.PNO GROUP BY P.PNAME;

5. Selecionar o nome dos empregados que trabalham em todos os projetos.

SELECT E.FNAME
FROM R11_EMPLOYEE E, R11_WORKS_ON WO, R11_PROJECT P
WHERE WO.PNO = P.PNUMBER AND WO.ESSN = E.SSN
GROUP BY E.FNAME;

6. Selecionar o nome dos empregados que não trabalham em nenhum projeto.

SELECT E.FNAME
FROM R11_EMPLOYEE E, R11_WORKS_ON WO, R11_PROJECT P
WHERE WO.PNO = P.PNUMBER AND WO.ESSN NOT IN E.SSN
GROUP BY E.FNAME;

7. Selecionar o nome do departamento e a média salarial de seus empregados.

SELECT DPTO.DNAME, AVG(E.SALARY) AS MEDIA_SALARIO
FROM R11_DEPARTMENT DPTO, R11_EMPLOYEE E
WHERE E.SSN = DPTO.MGRSSN
GROUP BY DPTO.DNAME;

8. Selecione a média salarial dos empregados do sexo feminino.

SELECT AVG(E.SALARY)
FROM R11_EMPLOYEE E
WHERE E.SEX = 'F';

9. Selecione o nome e o endereço dos empregados que trabalhem em pelo menos um projeto localizado em 'Houston', mas cujo departamento não se localiza em 'Houston'.

SELECT E.FNAME, E.ADDRESS
FROM R11_EMPLOYEE E, R11_PROJECT P, R11_DEPARTMENT DPT, R11_DEPT_LOCATIONS DL, R11_WORKS_ON W
WHERE E.DNO = DPT.DNUMBER AND DPT.DNUMBER = DL.DNUMBER
AND DL.DLOCATION <> 'Houston' AND E.SSN = W.ESSN
AND W.PNO = P.PNUMBER AND P.PLOCATION = 'Houston'
GROUP BY E.FNAME, E.ADDRESS;

10. Selecione o nome de todos os gerentes de departamento que não tenham dependentes.

SELECT E.FNAME
FROM R11_EMPLOYEE E, R11_DEPARTMENT DPT
WHERE E.SSN = DPT.MGRSSN AND E.SSN NOT IN
(SELECT D.ESSN
FROM R11_DEPENDENT D);

Banco de Dados Exercício 6


a) Selecionar os nomes dos os alunos do curso de “CIÊNCIA DA COMPUTAÇÃO”.

SELECT A.NOME
FROM R10_ALUNO A, R10_DEPARTAMENTO D
WHERE A.CODDEPTO = D.CODDEPTO AND D.NOMEDEPTO = 'Ciencia da Computacao';

b) Selecionar os nomes das disciplinas que o professor “KING” lecionou entre 1998 e1999.
SELECT D.NOMEDISC
FROM R10_DISCIPLINA D, R10_TURMA T
WHERE D.CODDISC = T.CODDISC AND T.PROFESSOR = 'King' AND T.ANO BETWEEN 1998 AND 1999;

c) Selecionar o nome da disciplina, o código da turma, o semestre, o ano e o número dealunos matriculados para as disciplinas que do professor “KING”.

SELECT D.NOMEDISC , T.CODTURMA, T.SEMESTRE, T.ANO, COUNT(A.MATRICULA) AS NUM_ALUNOS
FROM R10_DISCIPLINA D, R10_TURMA T, R10_HISTORICO H, R10_ALUNO A
WHERE D.CODDISC = T.CODDISC AND T.CODTURMA = H.CODTURMA AND H.MATRICULA = A.MATRICULA AND T.PROFESSOR = 'King' GROUP BY D.NOMEDISC , T.CODTURMA, T.SEMESTRE, T.ANO;

d) Selecionar o código da disciplina, o nome da disciplina, o número de créditos, osemestre, o ano e o conceito obtido pelo aluno em seu histórico escolar.

SELECT D.CODDISC, D.NOMEDISC, D.CREDITOS, T.SEMESTRE, T.ANO, H.CONCEITO
FROM R10_DISCIPLINA D, R10_TURMA T, R10_HISTORICO H, R10_ALUNO A
WHERE D.CODDISC = T.CODDISC AND T.CODTURMA = H.CODTURMA AND H.MATRICULA = A.MATRICULA;

e) Selecione o nome do aluno e o nome do departamento para os alunos que possuemapenas conceito “A”.

SELECT DISCTINCT A.NOME,D.NOMEDEPTO
FROM R10_HISTORICO H,R10_ALUNO A,R10_DEPARTAMENTO D
WHERE A.MATRICULA=H.MATRICULA AND A.CODDEPTO=D.CODDEPTO ANDA.NOME NOT IN
(SELECT DISTINCT A.NOME
FROM R10_HISTORICO H,R10_ALUNO AWHERE A.MATRICULA=H.MATRICULA AND UPPER(H.CONCEITO)<>'A');

f) Selecionar o nome do aluno e o nome do departamento para os alunos que nãoobtiveram nenhum conceito “A”.

SELECT DISTINCT A.NOME,D.NOMEDEPTO
FROM R10_HISTORICO H,R10_ALUNO A,R10_DEPARTAMENTO D
WHERE A.MATRICULA=H.MATRICULA AND A.CODDEPTO=D.CODDEPTO AND A.NOME NOT IN
(SELECT DISTINCT A.NOME
FROM R10_HISTORICO H,R10_ALUNO A
WHERE A.MATRICULA=H.MATRICULA AND UPPER(H.CONCEITO)='A');

g) Inserir na tabela alunos os seguintes valores <25,’johnson’,02).>
INSERT INTO R10_Aluno VALUES (25,'Johnson',02);

h) Inserir na tabela disciplina os seguintes valores <’CC4390’,’Engenharia doConhecimento’,3,01>.

INSERT INTO R10_Disciplina VALUES ('CC4390','Engenharia doConhecimento',3,01);