Nesta p�gina ser�o disponibilizados informa��es relativas �s tarefas a
serem desenvolvidas para avalia��o na disciplina.
Tarefas |
Coment�rios |
|
|
|
|
|
|
Emulador
�ltima corre��o no enunciado: 07/07/2003
Objetivos: desenvolver um applet/aplicativo para emular um computador simplificado
- Entrada do "programa": 3 modos, via teclado diretamente teclando sobre as c�lulas de mem�ria;
via arquivo na vers�o aplicativa; e via par�metro na vers�o applet.
- N�mero de instru��es: 10
- Posi��es de mem�ria: 100
- N�meros: com at� 6 d�gitos, sendo 5 se negativo
- Um acumulador (AC) e um registrador para "Endere�o de Pr�xima Instru��o" (EPI)
Entrega: dia 27/06
Entregar: arquivo compactado (*.tgz: tar cvfz nome_grupo_tarefa3.tgz seu_diretorio_com_arquivos
Em triplas
|
Algumas dicas:
- Implementa a partir de "applet", mas deve rodar tamb�m como aplicativo
- Applet: permitir entrada de "programa" manual ou n�o (de acordo com configura��o) e
eventualmente ler de par�metro se houver o par�metro PROGRAMA
- Aplicativo: permitir ler "programa" de arquivo, permitir entrada manual e permitir gravar "programa" (na mem�ria)
- Cada posi��o de mem�ria ter� 6 caracteres, por�m se for instru��o ser�o usados apenas os 3 primeiro (IEE: I n�mero
da instru��o e EE complemento, em geral um endere�o de mem�ria)
- Modelo e instru��es:
0 AC <- cEE (se EE<>00, sen�o final de progr.) | Sa�da:______________
1 EE <- cAC | +---+
2 AC <- cAC + cEE | |EPI| +--+--+...+--+ o In�cio
3 AC <- cAC - cEE | +---+ | | | | | o Passo-a-passo
4 AC <- cAC * cEE | ... o ...
5 AC <- cAC / cEE | +--+ +--+--+ +--+
6 cAC>0 => EPI <- EE | |AC| | | | | |
7 EE <- leitura teclado | +--+ +--+--+...+--+
8 sa�da cEE | Entrada:____________
9 EPI <- EE (desvio incondicional) |
Sobrecarga de comandos para conseguirmos maior "poder" de computa��o:
- Instru��o "0EE": "0-0000" => "final de programa";
"0-0011" => "AC <- 11";
"0--011" => "AC <- -11";
- Instru��o "1EE": "1-0011" => "EE <- 11";
"1--011" => "EE <- -11";
Um exemplo: como traduzir "le(x); le(y); le(z); w = x+y+z; imprime(w);" ?
Mais simples: "799...", "798...", "797...", "099...", "298...", "297...", "108...", "808...".
Aten��o � instru��o "108...", o n�mero "08" corresponde � posi��o de mem�ria 8 que
corresponderia � pilha de execu��o. Mas isso � preocupa��o aos que
far�o o compilador (vide abaixo se tiver curiosidade de como "compilar/gera c�digo para" isso).
Entregar via
Panda2
|
|
|
|
Compilador
�ltima corre��o no enunciado: 07/07/2003
Objetivos: desenvolver um "compilador" simplificado, que gere c�digo para o emulador acima
- Primeiro, N�O deixe de examinar o exemplo j� pronto de "compilador" para express�es aritm�ticas em
ex_compilador.tgz!!! Come�e a partir deste exemplo.
- Monte o diagrama sint�tico de EXPR_LOG usando o modelo no exemplo ex_compilador.tgz
Entrega: dia 27/06
Entregar: arquivo compactado (*.tgz: tar cvfz nome_grupo_tarefa3.tgz seu_diretorio_com_arquivos
Em triplas
|
Algumas dicas:
O compilador ser� para um subconjunto reduzido para uma linguagem tipo Java, com:
- EXPR: com express�o artim�tica, com '+', '-', '*' e '/' (vide
ex_compilador.tgz)
- EXPR_LOG: com express�o l�gica, com '&&', '||' e '!' ('e', 'ou' e 'n�o') e com os relacionais
'<','>','<=','>=','==','!='
- atribui��o: 'variavel = EXPR;'
- if: comando de sele��o, 'if (EXPR_LOG) comando1;', 'if (EXPR_LOG) comando1; else comando2;'
- while: comando de repeti��o, 'while (EXPR_LOG) comando;', 'while (EXPR_LOG) { comando1; ... }'
- le: comando simplificado para leitura de um valor, 'le(var1,var2...)'
- escreve: idem para sa�da, 'escreve(var1,var2...)'
Aten��o: pegue as instru��es de "m�quina" no enunciado do "emulador".
Um exemplo: como traduzir um programa em "alto n�vel" para "linguagem de m�quina" ?
Alto n�vel: "le(x); le(y); le(z); w = x+y+z; imprime(w);" ?
C�digo de "maquina": "799...", "798...", "797...", "099...", "298...", "297...", "108...", "808...".
Relevante ao projeto Compilador:
muita aten��o � instru��o "108...", o n�mero "08" corresponde � posi��o de mem�ria 8, esta posi��o
corresponderia, no exemplo, � pilha de execu��o. Para conseguir gerenciar isso de modo
eficiente � necess�rio adiar a montagem final do arquivo (guardando o c�digo de "m�quina" num "buffer"),
e usando endere�o relativo: usa-se "end_ultima_instrucao + pos_relativa" para estas posi��es de mem�ria
sendo que ao final sabe-se quantas instru��es o programa precisou e portanto o valor de "end_ultima_instrucao".
Entregar via
Panda2
|
|
|
|
Buscador
�ltima corre��o no enunciado: 07/07/2003
Objetivos: construir um "processador" de conte�dos para p�ginas Web
Fazer um processador para p�ginas Web que, a partir de uma p�gina local monta buscador
de palavras e p�ginas alcan��veis a partir da inicial.
Entrega: dia 27/06
Entregar: arquivo compactado (*.tgz: tar cvfz nome_grupo_tarefa3.tgz seu_diretorio_com_arquivos
Em triplas
|
Estrutura geral:
- P�ginas referenciadas: monta uma p�gina Web contendo "links" para todas as referidas pela inicial
e pelas seguintes (p�ginas "alcanc�veis")
- Banco de palavras: fazer um banco de palavras, em mem�ria, para buscas r�pidas em qualquer das p�ginas
"alcanc�veis" (implementar como B-�rvore 2-3 ou como AVL)
- Tempo de busca: use as fun��es internas do Java para fornecer o tempo de busca
- Applet: para usar vers�o applet gere um arquivo com as palavras chaves de busca e p�ginas em que ocorrem
Algumas dicas:
- A lista de palavras n�o deve ser construida para "palavras" dentro de TAGs, p.e., em '< td align="center">'
n�o se deve inserir na �rvore de busca os termos 'td', 'align' e nem 'center'
- Pode usar algum algoritmo pronto de �rvore 2-3 ou de AVL, mas indique de onde veio o c�digo
- Implemente de modo bem "encapsulado", de modo que fique f�cil trocar a estrutura interna de representa��o
(p.e., trocar de 2-3 para AVL e vice-versa)
a partir da discuss�o na
lista
Para conseguir ler um arquivo remotamente a partir de um "applet" (que esteja no diret�rio "http" em que o "applet"
se encontra), veja:
http://www.ime.usp.br/~leo/mac323/03-1/exemplos/ex_pega_arq.zip
Para conseguir abrir o navegador com uma p�gina espec�fica, veja o exemplo que preparei em:
http://www.ime.usp.br/~leo/mac323/03-1/exemplos/abrir_navegador.java
Entregar via
Panda2
|
|
Express�es Aritm�ticas: parte gr�fica AWT
�ltima corre��o no enunciado: 28/05/2003
Objetivos: desenvolver um sistema gr�fico para a parte
anterior do projeto
o usu�rio pode entrar com v�rias express�es aritm�ticas (in-fixa),
digitando inclusive par�metros e escolhendo-se intervalos para visualiza��o.
Exemplo: A * x^2 + B
Sendo A e B par�metros, o usu�rio escolhe intervalo de varia��o de x, e de A
ou B (um s� deles, podendo ser constante - in�cio=fim). O par�metro escolhido � o ativo.
Entrega: dia 06/06 (adida em 1 semana)
Entregar: arquivo compactado (*.tgz: tar cvfz nome_grupo_tarefa2b.tgz seu_diretorio_com_arquivos
Em duplas
|
Implementar:
- Use apenas AWT, seu programa deve funcionar tamb�m na vers�o applet e
a vers�o aplicativa poder� gravar as fun��es dispon�veis.
- O programa deve permitir visualizar mais que uma fun��o (dentre as dispon�veis - usando os mesmos valores
de janela, para x e para o par�metro "ativo")
- A vers�o "applet" deve ter um par�metro de configura��o (tipo
<applet ... <param name="1" value="A * x^2 + B">
<param name="2" value="sin(x)">
</applet>
(vide exemplo ex_awt_mouse.zip)
Algumas dicas: (alterado em 22/05/2003)
Desenho da fun��o (x,f(x)):
- Precis�o: em alguma vi�vel est�tica
pode ser definido o n�mero de pontos a serem empregados em cada
gr�fico (quanto maior mais preciso), mas tamb�m pode ser
deixado para o usu�rio definir este valor.
- Representa��o gr�fica: deve-se usar uma interpola��o
linear entre cada par de pontos
[(xi, f(xi)), (xi+1, f(xi+1))] do gr�fico
(se quiser pode deixar uma "checkbox" para o usu�rio
escolher desenho com linhas ou apenas com pontos - no �ltimo
caso pode desenhar o "ponto" atrav�s de um g.drawOval(x,y, raio_x,raio_y)).
Pegando coordenada (x,f(x)) do gr�fico:
- Coordenada: Quando o usu�rio passar o "mouse" sobre o gr�fico de uma das
fun��es, digamos f(.), o programa pode listar (atrav�s de texto em alguma barra de
mensagem, e no caso de "aplicativo", poder�a-se temb�m colocar um "pop-up menu").
- Como fazer: Usando o m�todo "mouseMoved", que pega a coordena
(x,y) do "mouse" na tela, convertendo-a para a coordenada do
gr�fico e fazendo uma busca nas fun��es ativas na tela.
Veja como usar o "mouseMoved" no exemplo AWT-mouse.
Entregar via
Panda2
|
|
Express�es Aritm�ticas
�ltima corre��o no enunciado: 18/03/2003
Objetivos: dada uma express�o aritm�tica (in-fixa)
Exp(x), envolvendo Oper abaixo
descrito, montar uma lista ligada (ou vetor, ou
pilha...) em nota��o p�s-fixa
e implementar m�todos de avalia��o.
Oper: a express�o poder� envolver operadores, constantes, par�metros, fun��es e
vari�vel x, por exemplo,
a*(sin(x))^2 + b
Entrega: dia 25/04
Entregar: arquivo compactado (*.tgz: tar cvfz nome_grupo_tarefa2.tgz seu_diretorio_com_arquivos
Em duplas
|
Algumas dicas: (alterado em 22/04/2003, 14/04/2003)
- Oper: os operadores, par�metros, fun��es e constantes aceitas
- operadores: *, +, -, %, / e ^ (pot�ncia)
- constantes: qualquer valor "real"
- par�metros: quaisquer letras do alfabeto latino
- fun��es: as fun��es da classe
java.lang.Math: sin(.), cos(.),
tan(.), asin(.), acos(.),
atan(.), exp(.), log(.),
sqrt(.)
- Implementar um m�todo para listar a express�o na forma original
(in-fixa) e sua correspondente p�s-fixa.
O usu�rio deve poder escolher uma op��o para listar as express�es
chamando este m�todo.
- Usar as classes:
|No| -> |NoOp|, |NoVar|, |NoConst|, |NoParam|
|Exp| = |No inicio; m�t. avalia expressao(); m�t. converte in-p�s(); verifica sintaxe() ...|
Vector com cada Exp criada (Vector v=new Vector(); v.addElement( ... ))
- Usu�rio pode criar quantas express�es (Exp) desejar, sendo
cada uma inserida num Vector (a express�o original pode
ser armazenada como String, mas a outra tem que
ficar em p�s-fixa);
- Colocar m�todos para teste, deixando o usu�rio escolher express�o
para listar, valor de par�metros, par�metro a variar, intervalos
de varia��o da vari�vel x e do par�metro "ativo" e a
quantidade n�meros a serem de valores. Por exemplo: listar
a*x^2 + b, com a (par�metro "ativo") variando -1 entre
1, fixando-se b=1, e para cada valor do par�metro "ativo",
listar 10 valores para
x entre -1 entre 1 (-1,
-0.9,...,0.9,1).
O objetivo posterior deste teste � coloc�-lo na forma gr�fica,
assim o usu�rio pode ver o gr�fico de a*x^2 + b e qual o
impacto da varia��o do a (ver mudan�a na concavidade) e
do b (mudan�a no v�rtice da par�bola).
Entregar via
Panda2
|
|
Problema da satisfatibilidade
Objetivos: dada uma express�o f envolvendo N vari�veis l�gicas, encontrar valores
para estas vari�veis de modo que f(v1,...,vN) = true
Entrega: dia 19/03
Entregar: arquivo compactado (*.tgz: tar cvfz nome_grupo_tarefa1.tgz seu_diretorio_com_arquivos
Em duplas
|
Implementar uma �rvore bin�ria, com uma classe noExp e duas sub-classes
noExpOperando e noExpOperador:
- implementar um m�todo que avalia uma express�o l�gica; e
- implementar um m�todo que testa todas as poss�veis atribui��es para as vari�veis
buscando uma que resulte true
- conven��es: * � e;
+ � ou; e
! � n�o; .
- exemplo de entrada: f(.) definida por v1 * ( v2 + v3 ) + v1 * ( v2 * v3)
Entregar via
Panda2
|
|