Colocar Resposta 
 
Avaliação do Tópico:
  • 1 votos - 5 Média
  • 1
  • 2
  • 3
  • 4
  • 5
Programacao em Scheme
20-10-2009, 16:48 (Esta mensagem foi modificada pela última vez a: 20-10-2009 16:50 por Ferreira.)
Mensagem: #1
Programacao em Scheme
Ola,


Sera que alguem me poderia ajudar e mostrar-me (com uma explicacao se possivel :confusedSmile como posso obter uma nova versao do procedimento abaixo, mas gerando um processo iterativo em vez de recursivo. Obrigado Smile


Código:
(define (soma x)
   (if (= x 0)
       x
       (+ (transforma x) (soma (- x 1)))))
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
20-10-2009, 16:52
Mensagem: #2
RE: Programacao em Scheme
Precisas de uma função auxiliar que tenha um argumento adicional que guarde o resultado actual.

Depois mais chamando essa função actualizando o resultado a cada chamada.

[Imagem: pplware_moderator.png]
http://twitter.com/ferreira
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
20-10-2009, 17:01
Mensagem: #3
RE: Programacao em Scheme
Obrigado pela resposta.

Sera que nao me poderias escrever 1 ou 2 linhas, para eu tentar perceber. Rolleyes

a ver se consigo fazer depois de engrenar

obg
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
20-10-2009, 17:03
Mensagem: #4
RE: Programacao em Scheme
Algo do tipo:

Código:
(if (= x 0)
    resultado
    (soma (- x 1) (+ resultado (transforma x))))

[Imagem: pplware_moderator.png]
http://twitter.com/ferreira
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
20-10-2009, 17:26 (Esta mensagem foi modificada pela última vez a: 20-10-2009 17:27 por Ferreira.)
Mensagem: #5
RE: Programacao em Scheme
Código:
(define soma2 (lambda (x) (resultado)))
(if (= x 0)
    resultado
    (soma (- x 1) (+ resultado (transforma x))))

assim esta correcto?


este e o prog completo:


Código:
(define (transforma x)
  (if (even? x) (* x x)
        (* 3 x) ))

(define (soma x)
   (if (= x 0)
       x
       (+ (transforma x) (soma (- x 1)))))


(define soma2 (lambda (x) (resultado)))
(if (= x 0)
    resultado
    (soma2 (- x 1) (+ resultado (transforma x))))





esta.me a dar um erro (reference to undefined identifier: x) no x do segundo if.
Podes.me ajudar Sad. Estou a tentar, mas estou um pouco confuso.
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
20-10-2009, 17:28
Mensagem: #6
RE: Programacao em Scheme
Para que é esse lambda? Porque é que não fazes como tens feito na outra função?

[Imagem: pplware_moderator.png]
http://twitter.com/ferreira
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
24-10-2009, 18:09 (Esta mensagem foi modificada pela última vez a: 24-10-2009 18:26 por Ferreira.)
Mensagem: #7
RE: Programacao em Scheme
Código:
(define (transforma n)
  (if (even? n) (* n n)
      (* 3 n)))
(define (soma n)
  (if (= n 1)
      3
      (+ (transforma n) (soma (- n 1)))))
(define (soma2 n)
(if (= n 0)
    0
    (+ (soma (- n 1)) (+ 0 (transforma n)))))
Podem-me dizer se este código está bem feito? Os valores de soma e soma2 saem iguais, mas é para confirmar a sintaxe. Obrigado.
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
24-10-2009, 18:27
Mensagem: #8
RE: Programacao em Scheme
Se corre é porque a sintaxe está correcta.

[Imagem: pplware_moderator.png]
http://twitter.com/ferreira
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
01-11-2009, 00:19 (Esta mensagem foi modificada pela última vez a: 01-11-2009 00:41 por Fcena.)
Mensagem: #9
RE: Programacao em Scheme
basicamente, o que vocês querem é este codigo Big Grin

Código:
(define (transforma n)
      (if (odd? n)
          (* 3 n)
          (expt n 2)))

(define (soma n)
    (cond ( (or (not (integer? n))
                (<= n 0))
            (error "inserir n inteiro positivo"))
          ( (= n 1) (transforma n))
          (else (+ ((soma (- n 1)) (transforma n))))))

(define (soma-aux n soma-ac)
    (cond ( (or (not (integer? n))
                (<= n 0))
            (error "inserir n inteiro positivo"))
          ( (= n 1) (+ (transforma n) soma-ac))
          (else (soma-aux (- n 1) (+ soma-ac (transforma n))))))
(define (soma n) (soma-aux n 0))

Isto foi o trabalho de casa de Fp ... LEIC alameda Mr Green

Cumprimentos
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
01-11-2009, 00:51
Mensagem: #10
RE: Programacao em Scheme
Excelente curso, esse. Tongue

[Imagem: pplware_moderator.png]
http://twitter.com/ferreira
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
Colocar Resposta 


Saltar Fórum:


Utilizadores a ver este tópico: 1 Visitante(s)