segunda-feira, 29 de dezembro de 2008

Procurando outros

To procurando alguns trabalhos mais recentes em java, tem muito legal, que simula um programa P2P em java, e outro que é um messenger ambos usando sockets.

Editado:
21-01-09 perdi os trabalhos na ultima vez q formatei meu note. Esqueci de copiar a pasta da facu, ainda bem que to de férias.

Mais um trabalho do segundo semestre

Esse tbm é com pascal e trabalha com arquivos:




Program Livraria;
Uses Fdelay, crt;
Const N_arq = 'trab_arq';
Type
T_Livro = Record
Autor : String[15];
Titulo: String[15];
ISBN: Integer;
Ano: Integer;
Edicao: Byte;
Preco: Real;
Quantidade: integer;
End;
T_Arquivo = File of T_livro;
Var
Livro: T_Livro;
Estoque: T_Arquivo;
Op: String;
ISBN, Pos: Integer;
Procedure Abre_Arq(var Estoque: T_Arquivo);
Begin
ClrScr;
Assign(Estoque, n_arq);
{$I-}
Reset(Estoque);
{$I+}
IF ioresult <> 0 then
Begin
ReWrite(Estoque);
WriteLn('Arquivo criado');
Delay (20000);
End
Else
Begin
WriteLn('Arquivo aberto');
Delay(20000);
End;
End;
Procedure Menu(var op: string);
Begin
ClrScr;
WriteLn('1 - Inserir');
WriteLn('2 - Pesquisar');
WriteLn('3 - Alterar');
WriteLn('4 - Excluir');
WriteLn('5 - Total do estoque');
WriteLn('6 - Sair');
op:=ReadKey;
End;
Procedure Pesquisar(var Livro:T_Livro; var Estoque: T_Arquivo; var Pos: Integer; ISBN: integer);
Var
X: integer;
Begin
x:=0;
Pos:=0;
Seek(Estoque, pos);
if filesize(estoque) <> 0 then
Repeat
Begin
Read(Estoque, Livro);
x:=x+1;
End;
Until ( x = filesize(estoque)) or (Livro.ISBN = ISBN) ;
If livro.isbn <> isbn then
Begin
pos:=1;
WriteLn('ISBN nao cadastrado');
Delay(20000);
End
Else
Begin
WriteLn('ISBN encontrado.');
pos:=filepos(estoque);
Delay(20000);
End;
End;
Procedure EntradaDeDados(Livro: T_Livro; var Estoque: T_Arquivo; Pos: Integer);
Begin
Seek(Estoque,Pos-1);
With Livro do
Begin
WriteLn('Digite o ISBN');
ReadLn(ISBN);
If isbn <> 0 then
Begin
WriteLn('Digite o nome do Autor');
ReadLn(Autor);
WriteLn('Digite o titulo do livro');
ReadLn(Titulo);
WriteLn('Digite o ano');
ReadLn(Ano);
WriteLn('Digite a edicao');
ReadLn(Edicao);
WriteLn('Digite o preco');
ReadLn(Preco);
WriteLn('Digite a quantidade');
ReadLn(Quantidade);
Write(Estoque,Livro);
WriteLN('Registro salvo');
End
Else
WriteLn('0 nao eh um numero valido para ISBN');
End;
End;
Procedure TotalEstoque(Livro: T_Livro; var Estoque: T_Arquivo);
Var
TotalEstoque: Real;
Begin
TotalEstoque:=0;
Seek(Estoque, 0);
While (not Eof(Estoque)) do
Begin
Read(Estoque, Livro);
If livro.isbn <> 0 then
With Livro do
Begin
TotalEstoque:= TotalEstoque + (Preco * Quantidade);
End;
End;
WriteLn('Valor total = ', TotalEstoque:3:2);
ReadKey;
End;

Procedure Teste (var estoque : t_arquivo; livro: t_livro);
Var
x,ISBN,Tam,Pos : Integer;
Begin
Tam := FileSize(estoque);
WriteLn('Tam ',Tam);

Seek(Estoque,0);
if tam <> 0 then
For x:= 1 to filesize(estoque) do
Begin
Read(estoque ,livro);
Tam := FileSize(estoque);
Pos := FilePos(estoque);
WriteLN('Pos ',pos);
isbn:= livro.isbn;
WriteLn('ISBN ',ISBN);
ReadKey;
End;
End;

Begin
Abre_Arq(Estoque);
teste(estoque, livro);
op:='0';
While (op <> '1') and (OP <> '2') and (op <> '3') and (op <>'4') and (op <>'5') and (op <>'6') do
Begin
Menu(op);
if op = '1' then
Begin
Pos:= FileSize(Estoque)+1;
EntradaDeDados(Livro, Estoque, Pos);
ReadKey;
op:='0';
End;
If op = '2' then
Begin
WriteLn('Digite o ISBN a pesquisar');
ReadLN(ISBN);
If isbn <> 0 then
Begin
Pesquisar(Livro,Estoque, pos, ISBN);
Seek(Estoque, pos);
IF isbn = livro.isbn then
With Livro do
Begin
Writeln('Autor ',Autor);
End;
End
Else
WriteLn('0 nao eh um numero valido para ISBN');
ReadKey;
op:='0';
End;
If op = '3' then
Begin
WriteLn('Digite o ISBN a Alterar');
ReadLN(ISBN);
If isbn <> 0 then
Begin
Pesquisar(Livro,Estoque, pos, ISBN);
Seek(Estoque,Pos);
IF isbn = livro.isbn then
EntradaDeDados(Livro, Estoque, Pos);
End
Else
WriteLn('0 nao eh um numero valido para ISBN');
ReadKey;
op:='0';
End;
If op = '4' then
Begin
WriteLn('Digite o ISBN a excluir');
ReadLn(ISBN);
If isbn <> 0 then
Begin
Pesquisar(Livro, Estoque,Pos,ISBN);
Seek(Estoque,Pos-1);
IF isbn = livro.isbn then
With Livro do
Begin
ISBN:=0;
Write(Estoque,Livro);
End;
End
Else
WriteLn('0 nao eh um numero valido para ISBN');
ReadKey;
op:='0';
End;
IF op = '5' then
Begin
TotalEstoque(Livro, Estoque);
op:='0';
End;
If op <> '6' then
op:='7';
End;
Close(estoque);
End.

Trabalho do segundo semestre

Estava olhando uns e-mails antigos e achei esse trabalho do segundo semestre feito em pascal, acho que voi compilado no turbo pascal (uma IDE muito chata).

{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* *
* UNIVERSIDADE DE SANTA CRUZ DO SUL *
* *
* Departamento de Informatica *
* *
* Curso de Sistemas de Informacao - Capao da Canoa *
* *
* *
* ESTRUTURAS DE DADOS I (2006/02) *
* *
* ALUNOS: *
* Joseli de Souza Neto *
* Ramon Rosa da Silva *
* *
* *
* Trabalho 2: *
* Desenvolver um projeto do jogo ADIVINHA NUMEROS. *
* *
* O jogo funciona da seguinte forma: *
* *
* -> O jogo e composto por uma sequencia de N numeros escolhidos *
* aleatoriamente (este projeto tem uma sequencia 4 numeros); *
* -> A quantidade de numeros sorteados e informado ao jogador; *
* -> O jogador deve digitar uma sequencia tambem de N numeros; *
* -> A sequencia digitada pelo jogador deve ser conferida com *
* a sequencia gerada aleatoriamente; *
* -> O jogo deve informar ao jogador quantos numeros da sequencia *
* aleatoria ele acertou e quantos numeros estao na posicao correta; *
* -> O jogador deve ter um maximo de jogadas permitidas - tentativas *
* (este projeto foi permitidos 7 tentativas para adivinhar 5 numeros *
* na sequencia correta); *
* -> Ao final do jogo, deve ser armazenado o nome do jogador e seus *
* pontos (a lista de jogadores devera estar ordenada por pontos - *
* recorde); *
* -> Tambem, ao final do jogo, o jogador devera informar se deseja *
* realizar um novo jogo ou sair do sistema. *
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}

{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* *
* OBS: *
* Os assentos deste programa serao omotidos, o Pascal nao os reconhece *
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}

Program Adivinha_Numeros;
Uses fdelay, crt, dos;

{---------------------------------------------------------------------------
Declaracao de constantes do programa principal
---------------------------------------------------------------------------}
const
n=4;
qtdjogadas = 2;
Tempo = 50;

{---------------------------------------------------------------------------
Declaracao de tipo do programa principal
-> Foi utilizado um registro
---------------------------------------------------------------------------}
Type
Nod = ^Lv;

Lv = Record
Nome: String[15];
Pontos: Integer;
Prox: Nod;
END;

{---------------------------------------------------------------------------
Declaracao de variveis do programa principal
-> Foi utilizado 2 vetores com 4 posicoes
---------------------------------------------------------------------------}
var
num,senha:array[1..n] of integer;
op, tent,i:byte;
Segundos, Ptos,x:integer;
Livro : Lv;
Nodo: Nod;
Ini: Nod;
aux: Nod;
ganho: boolean;
{---------------------------------------------------------------------------
PROCEDIMENTOS
---------------------------------------------------------------------------}

{--- Limpa a Tela e Dimenciona Janela ---}
Procedure LimpaTela;
Begin
textbackground(0);
window(1,1,80,25);
clrscr;
End;

{--- Cria uma Janela na Tela ---}
Procedure Janela(col1,lin1,col2,lin2,cor:Byte;titulo:string);

var {--- Declaracao variavel local ---}
Tamanho:Byte;

begin
Tamanho := length(Titulo);
textbackground(3);
window(col1,lin1,col2,lin2);
clrscr;
if Tamanho < (col2 - col1) then
begin
Tamanho := (col2-col1) - Tamanho;
Tamanho := Tamanho DIV 2;
Gotoxy(Tamanho,1);
textcolor(14+128);
Writeln(Titulo);
end;
textbackground(7);
window(col1+1,lin1+1,col2-1,lin2-1);
clrscr;
gotoxy(18,2);
textcolor(0);
end;

{--- Tela Inicial ---}
Procedure Janela_1;
begin
LimpaTela;
Janela(20,5,60,10,6,' >> SuperJogos << ');
gotoxy(5,2);writeln('A D I V I N H A - N U M E R O S');
delay(20000);
Limpatela;
end;

{--- Informa se o jogador quer continuar o jogo ou nao ---}
Procedure Janela_3(var op, tent: byte);

begin
Limpatela;
Janela(20,10,60,20,6,' ATENCAO !!!: ');
gotoxy(5,2);writeln('QUER CONTINUAR ?');
gotoxy(5,4);writeln('Digite [1]-Jogar [2]-Sair');
gotoxy(5,6);write('OPCAO: ');
readln(op);
end;

{--- Compara as duas sequencias, a sorteada com a digitada pelo jogador ---}
Procedure Compara(var ptos: integer; var ganho : boolean);
Var
pos, na,j, y,x: integer;
existe: boolean;
begin
na:=0;
pos:=0;

for x:=1 to n do
For y:=1 to n do
Begin
existe:= false;
If num[x] = senha[y] then
Begin
for j:= 1 to y-1 do
if senha[y] = senha[j] then
existe:= true;
for j:= 1 to x-1 do
if num[y] = num[j] then
existe:= true;
IF existe = false then
na:=na+1;
End;

if (x = y) and (num[x] = senha[y]) then
pos:= pos +1;
End;
Ptos:= pos + na + Ptos;
LimpaTela;
Janela(20,10,60,20,6,' Voce esta jogando ');
gotoxy(5,2);writeln('VOCE ACERTOU:');
gotoxy(5,4);writeln('-> ',na,' NUMEROS !');
gotoxy(5,5);writeln('-> ',pos,' NA POSICAO CORRETA !');
ReadLn;
if pos = n then
ganho:= true;
End;

{--- Jogador jogada ---}
Procedure Janela_2(var op, tent: byte; var ganho : boolean);
Var
hh1,hh,mm1,mm,ss1,ss, ms1,ms : word;
begin
tent:=0;
while (op <> 1) do
begin
LimpaTela;
Janela(20,10,60,20,6,' ATENCAO !!!: ');
gotoxy(5,2);writeln('OPCAO INCORRETA');
gotoxy(5,4);writeln('Digite [1]-Jogar [2]-Sair');
gotoxy(5,6);write('OPCAO: ');
readln(op);
end;
while (tent < qtdjogadas) and (not ganho) and (segundos <= tempo) do
begin
GetTime(hh,mm,ss,ms);
LimpaTela;
Tent:= tent +1;
Janela(20,10,60,20,6, ' Voce esta jogando ');
gotoxy(1,2);writeln('Digite uma sequencia de quatro numeros:');
for i:=1 to n do
begin
gotoxy(6,i+3);write('-> ');
readln(num[i]);

end;
GetTime(hh1,mm1,ss1,ms1);
If ((ss1 - ss) >= tempo) and ((mm1-mm)= 0)then
Begin
tent := qtdJogadas;
WriteLn('tempo esgotado');
End
Else
If ((ss1- ss) <>0) then
Begin
tent := qtdJogadas;
WriteLn('tempo esgotado');
End
Else
Compara(ptos, ganho);
LimpaTela;
end;
end;

{--- Escolhe a Opcao ---}
Procedure Menu(Var Op, tent : byte);
Begin
Janela(20,10,60,20,6,' Digite a OPCAO: ');
gotoxy(5,2);writeln('1- Jogar');
gotoxy(5,3);writeln('2- Sair');
gotoxy(5,6);write('OPCAO: ');
readln(op);
tent:=0;
LimpaTela;
End;

{--- Sortea os numeros ---}
Procedure sortea;
begin
clrscr;
randomize;
writeln;
write(' ');
for i:=1 to n do
begin
senha[i]:=random(9);
write(senha[i]);
end;
readln;

end;
{------------------------------------------------------------
Programa Principal
-------------------------------------------------------------}
Begin
Nodo:=Nil;
Aux:=Nil;
Ptos:=0;
CLRSCR;
Janela_1;
Menu(op,tent);
while op <> 2 do
Begin
Ptos:=0;
Janela(20,5,60,10,6,'Senha Sorteada');
Sortea;
Janela_2(op,tent, ganho);
If ganho = true then
Begin
LimpaTela;
New(Aux);
Janela(20,10,60,20,6,' !!!: ');
gotoxy(5,2);writeln('DIGITE SEU NOME');
ReadLn(Aux^.Nome);
Aux^.pontos:= ptos;
If nodo = nil then
Begin
New(Nodo);
Nodo := Aux;
Nodo^.prox:=Nil; {ver ............1}
end
Else
If aux^.pontos < nodo^.pontos then
Begin
Aux^.prox:=Nodo;
Nodo:= Aux;
{ver.............2}
End
else
Begin
While (nodo^.pontos <> nil) do
nodo:= nodo^.prox;
aux^.prox:=nodo^.prox; {ver ..................3}
Nodo^.prox:=Aux;
End;


End;
Janela(20,10,60,20,6,' RECORDES: ');
aux:=Nodo;
x:= 2;
Gotoxy(5,2);
If aux = nil then
WriteLn('ainda nao existem recordx');
ReadLn;
While aux <> nil do
Begin
gotoxy(5,x);writeln(x-2,' lugar -',aux^.Nome,', ',aux^.pontos);
x:=x+1;
aux:= aux^.prox;
readln;
End;
ganho:= false;
Janela_3(op, tent);
End;
end.