Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
+55 (062) 98553-6711
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO
+55 (062) 98243-1195

Você está aqui: Lisp ::: Desafios e Lista de Exercícios Resolvidos ::: Lisp Básico

Como somar dois números em Lisp - Escreva um programa Lisp que leia dois números e mostre a sua soma - Exercícios Resolvidos de Lisp

Quantidade de visualizações: 1509 vezes
Exercício Resolvido de Lisp - Como somar dois números em Lisp - Escreva um programa Lisp que leia dois números e mostre a sua soma

Pergunta/Tarefa:

Escreva um programa Common Lisp que solicita ao usuário dois números inteiros e mostre a sua soma.

Sua saída deverá ser parecida com:

1
2
3
Informe o primeiro valor: 2
Informe o segundo valor: 8
A soma é 10
Resposta/Solução:

Veja a resolução completa para o exercício em Common Lisp usando o compilador Steel Bank Common Lisp (SBCL), comentada linha a linha:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)
 
Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br
----------------------------------------------------------------------
 
; Vamos definir as variáveis que vamos
; usar no programa
(defvar n1)
(defvar n2)
(defvar soma)
 
; Este o programa principal
(defun Soma()
  ; Vamos ler o primeiro valor
  (princ "Informe o primeiro valor: ")
  ; talvez o seu compilador não precise disso
  (force-output)
  (setq n1 (read))
  ; Vamos ler o segundo valor
  (princ "Informe o segundo valor: ")
  ; talvez o seu compilador não precise disso
  (force-output)
  (setq n2 (read))
   
  ; Agora vamos efetuar a soma dos dois números
  (setq soma (+ n1 n2))
   
  ; E mostramos o resultado
  (format t "A soma é ~D" soma)
)
 
; Auto-executa a função Soma()
(Soma)


Link para compartilhar na Internet ou com seus amigos:

Lisp ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas

Como converter graus em radianos em LISP - Trigonometria em LISP

Quantidade de visualizações: 890 vezes
Quando estamos trabalhando com trigonometria na linguagem Common Lisp (e AutoLISP, para programadores AutoCAD), é importante ficarmos atentos ao fato de que todos os métodos e funções trigonométricas em Lisp recebem seus argumentos em radianos, em vez de graus.

Nesta dica veremos como converter graus em radianos (sem a chatice de ficar relembrando regra de três). Veja a fórmula abaixo:

Radianos=Graus×π180

Agora veja como esta fórmula pode ser escrita em código LISP:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)
 
Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br
----------------------------------------------------------------------
 
; programa LISP que converte graus em radianos
(let((graus)(radianos))
  ; valor em graus
  (setq graus 30)
  ; obtém o valor em radianos
  (setq radianos (* graus (/ pi 180)))
   
  ; mostra o resultado
  (format t "~F graus em radianos é ~F" graus radianos)
)

Ao executarmos este código Common Lisp nós teremos o seguinte resultado:

30 graus convertidos para radianos é 0.5235987755982988


Lisp ::: Dicas & Truques ::: Matemática e Estatística

Como calcular MMC em Lisp - Como calcular o Mínimo Múltiplo Comum na linguagem Lisp

Quantidade de visualizações: 836 vezes
O Mínimo Múltiplo Comum (MMC), ou LCM (Least Common Multiple) é um tipo de operação matemática utilizada para encontrar o menor número positivo, diferente de 0 (zero), que é múltiplo ao mesmo tempo de dois ou mais números. O MMC é utilizado, por exemplo, na soma e subtração de frações - quando é necessário um denominador comum.

Nesta dica mostrarei como podemos calcular o MMC de dois números inteiros informados pelo usuário. Veja o código Common Lisp completo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)
 
Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br
----------------------------------------------------------------------
 
; variáveis que vamos usar no programa
(let ((num1)(num2)(maior)(mmc))
  ; Vamos ler o primeiro número
  (princ "Informe o primeiro número: ")
  ; talvez o seu compilador não precise disso
  (force-output)
  ; atribui o valor lido à variável num1
  (setq num1 (read))
    
  ; Vamos ler o segundo número
  (princ "Informe o segundo número: ")
  ; talvez o seu compilador não precise disso
  (force-output)
  ; atribui o valor lido à variável num2
  (setq num2 (read))
    
  ; agora escolhemos o maior número
  (cond ((> num1 num2)(setq maior num1))
    (t (setq maior num2))
  )
   
  ; e entramos em um laço loop
  (loop
    ; testa se o maior é divisível por num1 e por num2
    (cond ((and (= 0 (rem maior num1))(= 0 (rem maior num2)))
      ; mmc recebe o maior e sai do laço
      (setq mmc maior)(return)))
         
    ; incrementa o valor da variável maior 
    (setq maior (+ maior 1))
  )
   
  ; mostra o resultado
  (format t "O MMC dos dois números é ~D" mmc)
)

Ao executarmos este código Common Lisp nós teremos o seguinte resultado:

Informe o primeiro número: 6
Informe o segundo número: 3
O MMC dos dois números é: 6

Note que a linguagem Common Lisp possui uma função LCM() que permite calcular o MMC de dois ou mais números. Minha intenção com essa dica foi mostrar como o cálculo do MMC é feito em Common Lisp.


Lisp ::: Desafios e Lista de Exercícios Resolvidos ::: Lisp Básico

Exercícios Resolvidos de Lisp - Como multiplicar dois números em Lisp - Escreva um programa em Lisp para ler dois números inteiros informados

Quantidade de visualizações: 1687 vezes
Exercício Resolvido de Lisp - Como multiplicar dois números em Lisp - Escreva um programa em Lisp para ler dois números inteiros informados

Pergunta/Tarefa:

Escreva um programa Common Lisp que solicita ao usuário dois números inteiros e mostre a multiplicação dos dois valores, ou seja, o primeiro valor multiplicado pelo segundo.

Sua saída deverá ser parecida com:

1
2
3
Informe o primeiro valor: 3
Informe o segundo valor: 7
3 vezes 7 é 21
Resposta/Solução:

Veja a resolução completa para o exercício em Common Lisp usando o compilador Steel Bank Common Lisp (SBCL), comentada linha a linha:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)
 
Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br
----------------------------------------------------------------------
 
; Vamos definir as variáveis que vamos
; usar no programa
(defvar n1)
(defvar n2)
(defvar produto)
 
; Este o programa principal
(defun Multiplicacao()
  ; Vamos ler o primeiro valor
  (princ "Informe o primeiro valor: ")
  ; talvez o seu compilador não precise disso
  (force-output)
  (setq n1 (read))
  ; Vamos ler o segundo valor
  (princ "Informe o segundo valor: ")
  ; talvez o seu compilador não precise disso
  (force-output)
  (setq n2 (read))
   
  ; Agora vamos efetuar a multiplicação dos
  ; dois valores informados
  (setq produto (* n1 n2))
   
  ; E mostramos o resultado
  (format t "~D vezes ~D é ~D" n1 n2
    produto)
)
 
; Auto-executa a função Multiplicacao()
(Multiplicacao)



Lisp ::: Desafios e Lista de Exercícios Resolvidos ::: Lisp Básico

Exercícios Resolvidos de Lisp - Como calcular a soma, o produto, a diferença e o quociente de dois números inteiros informados pelo usuário

Quantidade de visualizações: 969 vezes
Pergunta/Tarefa:

Escreva um programa Common Lisp que pede para o usuário informar dois número inteiros. Em seguida mostre a soma, o produto, a diferença e o quociente dois dois números informados.

Sua saída deverá ser parecida com:

1
2
3
4
5
6
Informe o primeiro número: 8
Informe o segundo número: 3
A soma dos números é: 11
O produto dos números é: 24
A diferença dos números é: 5
O quociente dos números é: 2.66667
Resposta/Solução:

Veja a resolução comentada deste exercício usando Common Lisp:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)
 
Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br
----------------------------------------------------------------------
 
; Este é o programa principal
(defun Exercicio()
  ; Variáveis usadas na resolução do problema
  (let ((n1)(n2)(soma)(produto)
    (diferenca)(quociente))
    ; Vamos ler os dois números
    (princ "Informe o primeiro número: ")
    ; talvez o seu compilador não precise disso
    (force-output)
    ; atribui o valor lido à variável n1
    (setq n1 (read))
    (princ "Informe o segundo número: ")
    ; talvez o seu compilador não precise disso
    (force-output)
    ; atribui o valor lido à variável n2
    (setq n2 (read))
   
    ; vamos somar os dois números
    (setq soma (+ n1 n2))
    ; vamos calcular o produto
    (setq produto (* n1 n2))
    ; vamos calcular a diferença
    (setq diferenca (- n1 n2))
    ; vamos calcular o quociente
    (setq quociente (/ n1 (* n2 1.0)))
   
    ; E mostramos o resultado
    (format t "A soma dos números é ~D" soma)
    (format t "~%O produto dos números é ~D" produto)
    (format t "~%A diferença dos números é ~D" diferenca)
    (format t "~%O quociente dos números é ~F" quociente)  
  )
)
 
; Auto-executa a função Exercicio()
(Exercicio)



Lisp ::: Dicas & Truques ::: Matemática e Estatística

Como calcular MDC em Lisp usando a função GCD

Quantidade de visualizações: 801 vezes
Atualmente a definição de Máximo Divisor Comum (MDC) pode ser assim formalizada:

Sejam a, b e c números inteiros não nulos, dizemos que c é um divisor comum de a e b se c divide a (escrevemos c|a) e c divide b (c|b). Chamaremos D(a,b) o conjunto de todos os divisores comum de a e b.

Podemos calcular o Máximo Divisor Comum na linguagem Common Lisp usando a função GCD. Esta função aceita um número ilimitado de valores inteiros e retorna seu Máximo Divisor Comum.

Veja um trecho de código Common Lisp no qual pedimos para o usuário informar dois números inteiros e, em seguida, fazemos uso da função GCD para retornar o MDC:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)
 
Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br
----------------------------------------------------------------------
 
; variáveis que vamos usar no programa
(let ((num1)(num2)(mdc))
  ; Vamos ler o primeiro número
  (princ "Informe o primeiro número: ")
  ; talvez o seu compilador não precise disso
  (force-output)
  ; atribui o valor lido à variável num1
  (setq num1 (read))
   
  ; Vamos ler o segundo número
  (princ "Informe o segundo número: ")
  ; talvez o seu compilador não precise disso
  (force-output)
  ; atribui o valor lido à variável num2
  (setq num2 (read))
   
  ; Vamos obter o MDC dos dois números informados
  (setq mdc (gcd num1 num2))
   
  ; E mostramos o resultado
  (format t "O Máximo Divisor Comum é: ~D" mdc)
)

Ao executarmos este código Common Lisp nós teremos o seguinte resultado:

Informe o primeiro número: 9
Informe o segundo número: 12
O Máximo Divisor Comum é: 3


Lisp ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Controle

Exercícios Resolvidos de LISP - Um programa que lê duas notas, calcula a média aritmética e exibe uma mensagem de reprovado, exame ou aprovado

Quantidade de visualizações: 455 vezes
Pergunta/Tarefa:

Escreva um programa LISP ou Common Lisp que leia duas notas (como double ou float), calcule e mostre a média aritmética e uma mensagem de acordo com as seguintes regras:

1) Se a média for inferior a 4,0 escreva "Reprovado";
2) Se a média for igual ou superior a 4,0 e inferior a 7,0 escreva "Exame";
3) Se a média for igual ou superior a 7,0 escreva "Aprovado".

Sua saída deverá ser parecida com:

1
2
3
4
Informe a primeira nota: 8
Informe a segunda nota: 7.4
A média obtida foi: 7.7
Aprovado
Resposta/Solução:

Veja a resolução comentada deste exercício usando Common Lisp (a padronização da linguagem LISP):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)
 
Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br
----------------------------------------------------------------------
 
; Algoritmo LISP para calcular a média de um aluno
 
; variáveis que vamos usar no programa
(let ((n1)(n2)(media))
  ; vamos solicitar as duas notas do aluno
  (princ "Informe a primeira nota: ")
  (force-output)
  (setq n1 (read))
  (princ "Informe a segunda nota: ")
  (force-output)
  (setq n2 (read))
 
  ; vamos calcular a média aritmética
  (setq media (/ (+ n1 n2) 2))
  (format t "A média obtida foi ~F" media)
 
  ; vamos verificar se o aluno foi reprovado, está de exame ou aprovado
  (cond
    ((< media 4.0) ; reprovado
      (format t "~%Reprovado"))
    ((and (>= media 4.0)(< media 7.0)) ; exame
      (format t "~%Exame")) 
    (t (format t "~%Aprovado"))
  
)



Lisp ::: LISP para Engenharia ::: Geometria Analítica e Álgebra Linear

Como converter Coordenadas Polares para Coordenadas Cartesianas em LISP - LISP para Engenharia

Quantidade de visualizações: 655 vezes
Nesta nossa série de LISP e AutoLISP para Geometria Analítica e Álgebra Linear, mostrarei um código 100% funcional para fazer a conversão entre coordenadas polares e coordenadas cartesianas. Esta operação é muito frequente em computação gráfica e é parte integrante das disciplinas dos cursos de Engenharia (com maior ênfase na Engenharia Civil).

Na matemática, principalmente em Geometria e Trigonometria, o Sistema de Coordenadas Polares é um sistema de coordenadas em duas dimensões no qual cada ponto no plano é determinado por sua distância a partir de um ponto de referência conhecido como raio (r) e um ângulo a partir de uma direção de referência. Este ângulo é normalmente chamado de theta (θ). Assim, um ponto em Coordenadas Polares é conhecido por sua posição (r, θ).

Já o sistema de Coordenadas no Plano Cartesiano, ou Espaço Cartesiano, é um sistema que define cada ponto em um plano associando-o, unicamente, a um conjuntos de pontos numéricos.

Dessa forma, no plano cartesiano, um ponto é representado pelas coordenadas (x, y), com o x indicando o eixo horizontal (eixo das abscissas) e o y indicando o eixo vertical (eixo das ordenadas). Quando saímos do plano (espaço 2D ou R2) para o espaço (espaço 3D ou R3), temos a inclusão do eixo z (que indica profundidade).

Antes de prosseguirmos, veja uma imagem demonstrando os dois sistemas de coordenadas:



A fórmula para conversão de Coordenadas Polares para Coordenadas Cartesianas é:

x = raio × coseno(θ)
y = raio × seno(θ)

E aqui está o código LISP completo que recebe as coordenadas polares (r, θ) e retorna as coordenadas cartesianas (x, y):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)
 
Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br
----------------------------------------------------------------------
 
; programa LISP que converte Coordenadas Polares
; em Coordenadas Cartesianas
(let((raio)(theta)(graus)(x)(y))
  ; vamos ler o raio e o ângulo
  (princ "Informe o raio: ")
  (force-output)
  (setq raio (read))
  (princ "Informe o theta: ")
  (force-output)
  (setq theta (read))
  (princ "Theta em graus (1) ou radianos (2): ")
  (force-output)
  (setq graus (read))
   
  ; o theta está em graus?
  (if(eq graus 1)
    (setq theta (* theta (/ pi 180.0)))   
  )
   
  ; fazemos a conversão para coordenadas cartesianas
  (setq x (* raio (cos theta)))
  (setq y (* raio (sin theta)))
   
  ; exibimos o resultado
  (format t "As Coordenadas Cartesianas são: (x = ~F, y = ~F)"
    x y)
)

Ao executar este código LISP nós teremos o seguinte resultado:

Informe o raio: 1
Informe o theta: 1.57
Theta em graus (1) ou radianos (2): 2
As Coordenadas Cartesianas são: (x = 0,00, y = 1,00)


Lisp ::: Dicas & Truques ::: Matemática e Estatística

Como testar se um número é par ou ímpar em Lisp

Quantidade de visualizações: 928 vezes
Muitas vezes precisamos saber se um determinado número é par ou ímpar. Isso pode ser feito em Common Lisp usando-se a função REM, que retorna o resto de uma divisão por inteiros.

Veja o exemplo a seguir:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)
 
Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br
----------------------------------------------------------------------
 
; variáveis que vamos usar no programa
(let ((num))
  ; Vamos ler um número inteiro
  (princ "Informe um valor inteiro: ")
  ; talvez o seu compilador não precise disso
  (force-output)
  ; atribui o valor lido à variável num
  (setq num (read))
    
  ; vamos testar se o número informado é par ou ímpar
  (cond
    ((= 0 (rem num 2))
      (princ "Você informou um número par"))
    (T (princ "Você informou um número ímpar"))
  )
)

Ao executar este programa Common Lisp nós teremos o seguinte resultado:

Informe um valor inteiro: 8
Você informou um numero par

É importante observar que a maioria das implementações Lisp fornecem as funções EVENP e ODDP que permitem testar se um número é par ou ímpar. O objetivo dessa dica foi fazer uma comparação entre a Common Lisp e outras linguagens de programação na realização desta tarefa.


Veja mais Dicas e truques de Lisp

Dicas e truques de outras linguagens

E-Books em PDF

E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 25 usuários muito felizes estudando em nosso site.