Responda conforme a questão:
Escreva códigos em Lisp para executar as seguintes tarefas:
Somar os elementos de uma lista (6 escores)

Passo 1

O enunciado pede uma função em Lisp que receba uma lista de seis escores e devolva a soma de todos eles. Para resolver, podemos usar recursão ou aproveitar a função de ordem superior reduce, que itera sobre a lista aplicando um operador.

Passo 2

Definimos uma função recursiva soma-lista que verifica se a lista está vazia. Se estiver, retorna 0; caso contrário, soma o primeiro elemento ao resultado da chamada recursiva sobre o restante.

Passo 3

Alternativamente, definimos soma-lista-reduce usando reduce com o operador +, percorrendo toda a lista e acumulando o total, iniciando em 0.

Passo 4

Testamos com uma lista de exemplo, por exemplo '(\(1087965\)), e esperamos obter 45.

Resposta

(defun soma-lista (lista)
 "Soma recursivamente todos os elementos de LISTA."
 (if (null lista)
 0
 (+ (first lista)
 (soma-lista (rest lista)))))

(defun soma-lista-reduce (lista)
 "Soma todos os elementos de LISTA usando reduce."
 (reduce #'+ lista :initial-value 0))

;; Exemplo de uso:
;; (soma-lista '(\(1087965\))) ; \(\Rightarrow 45\)
;; (soma-lista-reduce '(\(1087965\))) ; \(\Rightarrow 45\)

Exercícios relacionados