LISP
07/04/2014
Nomes: RA’s
Passo a Passo
1º passo: Verificar se a EXPRESSÃO passada retorna algum erro:
2º passo:
Caso a função erro retorna ‘t (true) , significa que não tem erros ( letras, duas operações seguidas, dois números seguidos, etc), então o programa chama a função (soma/sub (mult/div x)) , que primeiramente faz as multiplicações e divisões, depois as somas e subtrações:
3º passo:
No passo anterior , usamos uma função sublista para verificar se há sublistas dentro da lista principal, caso haja alguma sublista, o programa chama novamente a função EXPRESSAO passando o x como parâmetro e refazendo os cálculos novamente:
Diário
No começo do projeto, tentamos pensar em alguma forma de fazer as operações sem qualquer restrição (sem os possíveis erros e sem fazer multiplicação ou divisão primeiro) , demoramos algum tempo para conseguir pensar no modo que faríamos, mas depois começou a fluir as idéias e terminamos a aula fazendo as operações sem restrições.
Na outra semana tentamos pensar em um jeito de fazer as multiplicações e divisões primeiro, demoramos um tempo para pensar na lógica, e quando conseguimos, o programa começou a apresentar erros, que foi difícil de encontrar, e perdemos muito tempo nisso. Alguns dias depois começamos a pensar como faríamos para verificar se há sublistas dentro da lista principal, que não tivemos muitas dificuldades com isso, só demoramos pra acertar na hora de fazer as operações usando a função sublista, levou um bom tempo pra descobrir o que tava dando de errado, e no outro dia fomos descobrir que a condição de parada estava errada, em vez de utilizarmos: ((equal (cdr x) 'nil) x) , estávamos usando ((equal (cdr x) 'nil) (car x)) , e nesse erro bobo demoramos horas tentando implementar outro jeito de calcular, que acabou não resultando em nada.
Depois de acertar o erro, começamos a pensar em como checar se haveria erro