Você está aqui: Lisp ::: Fundamentos da Linguagem ::: Variáveis e Constantes

Como declarar variáveis locais em Lisp usando o comando let

Quantidade de visualizações: 677 vezes
Em várias situações nós gostaríamos de declarar variáveis que serão usadas em um espaço limitado, ou seja, dentro de uma função Common Lisp ou até mesmo em um bloco de código. Entram em cena as variáveis locais.

Variáveis locais, como o próprio nome indica, são visíveis apenas dentro do corpo de uma função ou dentro do bloco no qual elas são declaradas.

Em Common Lisp as variáveis locais são declaradas usando-se o comando let. Veja um exemplo no qual nós declaramos três variáveis locais e que serão usadas no corpo de uma função Multiplicar():

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

; vamos definir a função Multiplicar()
(defun Multiplicar()
  ; vamos usar o comando let para declarar
  ; três variáveis locais
  (let ((a 3)(b 9)(produto))
    ; agora vamos obter o produto das variáveis
    ; a e b
    (setq produto (* a b))
    ; e mostramos o resultado
    (format t "O produto dos dois valores é ~D" produto)
  )
)

; chamamos a função Multiplicar()
(Multiplicar)

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

O produto dos dois valores é 27

Agora veja como podemos declarar variáveis locais dentro de um bloco de código em Common Lisp:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

; vamos usar o comando let para declarar
; três variáveis locais (dentro de um bloco
; de código)
(let ((a 7)(b 5)(produto))
  ; agora vamos obter o produto das variáveis
  ; a e b
  (setq produto (* a b))
  ; e mostramos o resultado
  (format t "O produto dos dois valores é ~D" produto)
)

Execute este código e você terá o seguinte resultado:

O produto dos dois valores é 35

Nos dois trechos de código, se tentarmos acessar as variáveis locais fora de seus escopos, nós teremos o seguinte erro:

The variable PRODUTO is unbound.

Link para compartilhar na Internet ou com seus amigos:

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

Exercícios Resolvidos de Lisp - Como converter quilômetros em metros, centímetros e milímetros usando Lisp

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

Escreva um programa em Common Lisp para converter quilômetros em metros, centímetros e milímetros. Seu programa deverá pedir para o usuário informar a quantidade de quilômetros e exibir as conversões solicitadas.

Como sabemos, um Quilômetro = 1000 Metros, 100.000 Centímetros ou 1.000.000 Milímetros.

Seu programa deverá exibir uma saída parecida com:

Informe a distância em quilômetros: 2.5
Distância em Quilômetros: 2.5
Distância em Metros: 2500.0
Distância em Centímetros: 250000.0
Distância em Milímetros: 2500000.0
Resposta/Solução:

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

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

; Variáveis usadas na resolução do problema
(let ((quilometros)(metros)(centimetros)(milimetros))
  ; vamos ler a quantidade de quilômetros
  (princ "Informe a distância em quilômetros: ")
  ; talvez o seu compilador não precise disso
  (force-output)
  ; atribui o valor lido à variável quilometros
  (setq quilometros (read))
  
  ; vamos calcular a distância em metros
  (setq metros (* quilometros 1000.0))
  ; vamos calcular a distância em centímetros
  (setq centimetros (* quilometros 100000.0))
  ; e agora a distância em milímetros
  (setq milimetros (* quilometros 1000000.0))
  
  ; E mostramos o resultado
  (format t "Distância em Quilômetros: ~F" quilometros)
  (format t "~%Distância em Metros: ~F" metros)
  (format t "~%Distância em Centímetros: ~F" centimetros)
  (format t "~%Distância em Milímetros: ~F" milimetros)
)



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

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

Quantidade de visualizações: 830 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:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

; 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.


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: 854 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:

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:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

; 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)



Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica

Transporte de fluidos por bombas

O objetivo no transporte de fluidos por bombas é transferir energia ao fluido, compensar as perdas por atrito e aumentar a vazão no transporte com diferença de altura ou de pressão. Suponha que escoe petróleo cru por uma tubulação horizontal com auxílio de uma bomba com eficiência de 85%. Qual potência deve ser fornecida na entrada da estação de bombeamento para vazão de 2,94m3/s? Considere que a queda de pressão estimada ao longo do escoamento é de 7,92MPa.

A) 23,30MW.

B) 27,41MW.

C) 19,80MW.

D) 85,00MW.

E) 7,96MW.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em

Dimensionamento de lajes maciças à flexão

As lajes de concreto armado são elementos planos e horizontais, submetidos a carregamentos perpendiculares ao plano. Esses carregamentos promovem o desenvolvimento de esforços internos de flexão.

Analise as afirmativas a seguir referentes aos tipos de flexão:

I. A flexão normal ocorre em uma seção transversal em que atuam apenas momento fletor e esforço normal de tração ou compressão.

II. A flexão reta ocorre quando os momentos fletores atuam em planos ortogonais aos eixos principais de inércia da seção transversal.

III. Diz-se que a seção transversal de uma laje está submetida à flexão pura quando sobre ela atuam somente momentos fletores.

IV. A seção transversal de uma laje está submetida à flexão composta quando, sobre esta, atuam momentos de flexão e forças normais.

Assinale a alternativa correta:

A) Apenas a afirmativa I está correta.

B) Apenas a afirmativa III está correta.

C) As afirmativas I, II e IV estão corretas.

D) As afirmativas II, III e IV estão corretas.

E) As afirmativas I, II, III e IV estão corretas.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Engenharia Civil - Instalações Hidráulicas Prediais

Sistema domiciliar de abastecimento de água

Uma instalação hidrossanitária será construída numa residência. Ela apresenta dois banheiros, uma cozinha e uma área de serviços. Cada banheiro tem uma bacia com caixa de descarga, um chuveiro elétrico e um lavatório. A cozinha apresenta duas pias, e a área de serviços tem um tanque e duas torneiras de uso geral.



Com base nesses dados, qual é vazão estimada de água fria em função dos pesos atribuídos às peças de utilização, em litros por segundo?

A) 0,57.

B) 0,65.

C) 0,68.

D) 0,78.

E) 0,91
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Ética e Legislação Profissional

Postura ética profissional

A resolução de dilemas éticos deve ser resultado de um processo de reflexão e análise, integrando valores morais e fatos para buscar uma solução moralmente correta.

Segundo Holtzapple e Reece (2006), quais os aspectos fundamentais para a resolução de dilemas éticos? Assinale a alternativa correta:

A) Ter clareza moral, ter clareza conceitual, manter-se parcial, conhecer todas as alternativas viáveis, ter razoabilidade.

B) Ter clareza moral, ter imprecisão conceitual, manter-se atualizado, conhecer todas as alternativas viáveis, ter razoabilidade.

C) Ter clareza moral, ter clareza conceitual, manter-se parcial, considerar exclusivamente as alternativas lucrativas, ter razoabilidade.

D) Ter variabilidade moral, ter clareza conceitual, manter-se alheio, conhecer todas as alternativas viáveis, ter razoabilidade.

E) Ter clareza moral, ter clareza conceitual, manter-se atualizado, conhecer todas as alternativas viáveis, ter razoabilidade.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em JavaScript

Analise o seguinte código JavaScript

var a = new Array(1, 2, 3);
for (var i in a) {
  window.alert("a[i] = " + a[i]);
}

Quantas vezes o diálogo alert será exibido?

A) 3 vezes (uma vez para cada elemento do array).

B) 4 vezes (uma vez para cada elemento e um alert adicional para a propriedade length do array).

C) 3 ou 4 vezes, dependendo do navegador.

D) O laço for...in não existe em JavaScript e vai provocar um erro.
Verificar Resposta Estudar Cards Todas as Questões

Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de Lisp

Veja mais Dicas e truques de Lisp

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

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



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