1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

trabalho 3 (notação polaca)

Discussão em 'Programação' iniciada por S|N, 25 de Maio de 2005. (Respostas: 9; Visualizações: 1610)

  1. S|N

    S|N Power Member

    Olá. Este é o meu 3º trabalho na disciplina de AED. Se alguem pode-me ajudar por favor.... Não sei bem como o fazer. Alguem pode-me dizer o que raio é "notação polaca"?
    Obrigado.


    Trabalho nº 3

    Prazo de entrega: 23 horas do dia 9 de Junho de 2005

    Este trabalho visa implementar um programa para simulação parcial de uma unidade lógica de um microprocessador, designada por unidade lógica rápida (ULR).

    Comecemos então pela especificação de expressões lógicas a avaliar pela unidade lógica:

    * os operandos são 4 bits
    * as expressões lógicas a avaliar são recebidas na forma posfixa (notação polaca)
    * os operadores lógicos a utilizar nas expressões são: & (and); | (or); ^ (xor) , bem como o operador unário ~ (not).

    Expressão posfixa

    Considere a expressão infixa "0011 & 0110". Esta expressão avalia a conjunção, bit a bit, de 0011 com 0110. A mesma operação pode ser escrita na forma posfixa:"0011 0110 &", isto é, começando pelos dois operandos e de seguida o operador. Por exemplo, a avaliação da expressão posfixa "0011 0101 0001 & 0010 | ^ ~" resulta no valor 1111. Na forma infixa a mesma operação seria "~(0011 ^((0101 & 0001) | 0010)).

    Para mais informações sobre notação polaca consultar, por exemplo, a ligação

    http://en.wikipedia.org/wiki/Reverse_Polish_notation

    A ULR pode ainda recorrer a uma tabela de símbolos com valores previamente guardados. Estes valores são memorizados pela ULR usando o comando cons. Os nomes pelos quais são reconhecidos estes símbolos devem ter 4 letras. A tabela de símbolos, com um número médio estimado de 50 símbolos, deve ser acedida de forma eficiente, isto é, usando uma tabela de dispersão.

    A ULR deve ser implementada usando o tipo abstracto de dados Pilha, que deve ser implementado sobre listas. A gestão de memória, relacionada com a pilha, é dinâmica.

    Os comandos a processar pela ULR devem ser introduzidos através de uma linha de comandos, um por linha (100 caracteres no máximo e termina com enter). Os comandos a implementar são:

    * aval expr , que avalia a expressão expr e imprime no ecrã o resultado;
    * cons nome valor , que adiciona à tabela de símbolos o nome que vale valor;
    * impr , que imprime todos os símbolos e valores associados existentes na tabela de símbolos;
    * sair , que termina a execução do programa.

    Apresenta-se de seguida um exemplo de utilização da ULR:
    ulr>aval 0100 1010 &
    0000
    ulr>aval 1100 1010 | 1000 & ~
    0111
    ulr>aval 0011 0101 0001 & 0010 | ^ ~
    1111
    ulr>cons dois 0010
    ulr>aval dois
    0010
    ulr>cons oito 1000
    ulr>aval dois 1111 & oito |
    1010
    ulr>sair
    adeus!

    A apresentação de resultados deve ser exactamente igual ao exemplo acima apresentado.

    Prazos e material a entregar

    O programa deve estar organizado em várias módulos, sob a forma de ficheiros .h e .c. Como sugestão, considere os seguintes nomes de ficheiros:

    * elem.h
    * elem.c
    * listasimples.h
    * listasimples.c
    * pilha.h
    * pilha.c
    * tabdispersao.h
    * tabdispersao.c
    * ulr.h
    * ulr.c

    Todos os ficheiros devem estar identificados com o nome, número, turno e e-mail dos alunos, os quais devem ser arquivados num ficheiro ZIP para entrega electrónica até às 23 horas do dia 9 de Junho de 2005.

    Importante: o trabalho começa a ser realizado durante as aulas práticas e, até ao dia 2 de Junho, os alunos devem enviar por email ao docente do respectivo turno prático os ficheiros .h que utilizam.
     
  2. sapropel

    sapropel Power Member

    queres que te façam o trabalho?!
    pah, estuda, tenta fazer e aparece com duvidas especificas.. não a pedir pra fazer o tpc.
     
    Última edição: 26 de Maio de 2005
  3. Karmack

    Karmack Power Member

    Um exemplo de notação polaca é teres dois numeros na stack por exemplo 1 1 e depois aplicas um +. Retira-se (pop) os dois numeros aplicas a operação (+) e pões na stack o resultado (2).
     
  4. S|N

    S|N Power Member

    O meu problema é que o prof desistiu de fazer código nas aulas e ainda não temos o módulo de lista simples (listasimples.c e listasimples.h) a funcionar. Sem isso a funcionar sem erros Não conseguiremos fazer nada, dito pelos próprios professores. Aguém me ajuda a por a lista.c a funcionar? Tenho já os ficheiros de teste (programas) para a coisa....

    Qualquer coisa [email protected]
    Obrigado
     
  5. Karmack

    Karmack Power Member

    No livro da cadeira não tem o pseudocódigo das listas ligadas? É até simples fazer isso.
     
  6. HiGhVoIcE

    HiGhVoIcE Power Member

    e onde está o codigo das listas simples?
     
  7. fap

    fap Power Member


    se não sabes fazer um simples módulo de listas com funções de inserção, remoção, adição, etc... não mereces estar no curso em que estás (apesar de não saber qual é) :x2:
     
  8. S|N

    S|N Power Member

    O curso é eng física.... Para começar não tivemos programação em lado nenhum a não ser no ensino superior... Os profs só explicam algoritmos (bem fáceis de entender) mas não ensinam a PROGRAMAR. Invés disso os profs divertem-se a fazem quadrados, setinhas e bolinhas explicando os algoritmos. Não é que não seja necessário mas que se lembrem também que os alunos de eng fisica não vêm de tecnológicos com programação desde o 10º ano.... Essa é a nossa principal dificuldade uma vez que não mexemos muito em computadores! Desculpem se fui injusto mas ainda estou a quente de não perceber nada prático daquilo. Tenho que ter pelo menos 1.5 no trabalho para ir a exame (de 0 a 3) e corro o risco de acabar o semestre a saber algo de algoritmos mas sem saber programar :S :'( em C.
     
  9. S|N

    S|N Power Member

    Se alguem me disser o que fazer faço o melhor que conseguir. Não sou preguiçoso! Quero mesmo fazer o trabalho mas preciso de um guideline.... Tenho listasimples.c e listasimples.h incompletas.
    Acho boa ideia começar por ai.... Se alguem me explicar como implementar as listas na pilha......

    "A ULR deve ser implementada usando o tipo abstracto de dados Pilha, que deve ser implementado sobre listas. A gestão de memória, relacionada com a pilha, é dinâmica."
     
  10. S|N

    S|N Power Member

    Correção: listasimples.h está completa mas isto são só os protótipos e pouco mais....
     

Partilhar esta Página