Você está aqui: Lisp ::: Dicas & Truques ::: Struct (Estruturas, Registros) |
Como criar estruturas em LISPQuantidade de visualizações: 323 vezes |
A linguagem LISP (incluindo a implementação ANSI Common Lisp e a AutoLISP, a versão LISP para o AutoCAD) permite, como a maioria das linguagens de programação, a criação de estruturas. Uma estrutura é um tipo de dados definida pelo usuário, e que permite o agrupamento de dados de tipos diferentes. Podemos pensar em estruturas como se fosse um registro. Na verdade, as linguagens Pascal e Delphi mantém um tipo de dados chamado record. Assim, uma estrutura "aluno" poderia agrupar a matrícula do aluno, o seu nome, sua idade, seu curso, etc, cada informação sendo de um tipo de dados diferente. Como usar a macro defstruct da LISP para criar estruturas A definição de estruturas na linguagem LISP é feita por meio da macro defstruct. Veja, por exemplo, um trecho de código que cria uma estrutura chamada produto: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- ; Vamos definir a estrutura produto (defstruct produto codigo nome preco ) ; Esta é a função principal (defun principal() ; vamos declarar as variáveis locais que precisamos (let ((p)) ; vamos criar uma nova instância da estrutura produto (setq p (make-produto :codigo 45 :nome "Arroz Tipo 1" :preco 8.23)) ; E mostramos o resultado (princ "Os dados do produto são:") (terpri) (princ p) ) ) ; Auto-executa a função principal() (principal) Ao executar este código LISP nós teremos o seguinte resultado: Os dados do produto são: #S(PRODUTO :CODIGO 45 :NOME Arroz Tipo 1 :PRECO 8.23) Note como usamos a função make-produto para criar um novo objeto da estrutura produto. Esta função é um construtor criado implicitamente pela linguagem para que possamos criar as novas instâncias da estrutura. Se você observar bem o código anterior você verá que exibimos todo o conteúdo da estrutura produto por meio da variável p. Porém, haverá situações nas quais queremos exibir os valores individuais dos atributos. Veja: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- ; Vamos definir a estrutura produto (defstruct produto codigo nome preco ) ; Esta é a função principal (defun principal() ; vamos declarar as variáveis locais que precisamos (let ((p)) ; vamos criar uma nova instância da estrutura produto (setq p (make-produto :codigo 45 :nome "Arroz Tipo 1" :preco 8.23)) ; E mostramos o resultado (format t "O código do produto é ~D" (produto-codigo p)) (format t "~%O nome do produto é ~S" (produto-nome p)) (format t "~%O preço do produto é ~S" (produto-preco p)) ) ) ; Auto-executa a função principal() (principal) Ao executarmos esta nova versão do código LISP nós teremos o seguinte resultado: O código do produto é 45 O nome do produto é "Arroz Tipo 1" O preço do produto é 8.23 Finalmente, o valor dos atributos das instância de uma estrutura LISP podem ser modificados da seguinte forma: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- ; Vamos definir a estrutura produto (defstruct produto codigo nome preco ) ; Esta é a função principal (defun principal() ; vamos declarar as variáveis locais que precisamos (let ((p)) ; vamos criar uma nova instância da estrutura produto (setq p (make-produto :codigo 45 :nome "Arroz Tipo 1" :preco 8.23)) ; Vamos mostrar o código do produto (format t "O código do produto é ~D" (produto-codigo p)) ; Vamos modificar o código do produto (setf (produto-codigo p) 87) ; E mostramos o novo código (format t "~%O novo código do produto é ~D" (produto-codigo p)) ) ) ; Auto-executa a função principal() (principal) Ao executar esta versão final do código nós teremos: O código do produto é 45 O novo código do produto é 87 |
![]() |
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árioQuantidade de visualizações: 928 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 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) |
Lisp ::: Fundamentos da Linguagem ::: Estruturas de Controle |
Como testar uma condição em Lisp usando a macro ifQuantidade de visualizações: 1009 vezes |
Nesta dica mostrarei como podemos usar a macro if da linguagem Common Lisp para testar uma condição. Por se tratar de um exemplo básico, não mostrarei um caminho alternativo, ou seja, a mensagem será exibido somente se a condição for satisfeita. Em outras dicas eu complemento com o desvio opcional. Veja um exemplo no qual solicitamos um número ao usuário e informamos se o valor lido é maior que 10: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- ; Vamos definir as variáveis que vamos ; usar no programa (defvar numero) ; Este é o programa principal (defun Estudos() ; Vamos ler o número (princ "Informe um número: ") ; talvez o seu compilador não precise disso (force-output) ; atribui o valor lido à variável numero (setq numero (read)) ; vamos testar se este número é maior que 10 (if (> numero 10) (format t "~D é maior que 10~%" numero)) ; E mostramos o número informado (format t "O número informado foi: ~D" numero) ) ; Auto-executa a função Estudos() (Estudos) Ao executar este código Common Lisp nós teremos o seguinte resultado: Informe um número: 12 12 é maior que 10 O número informado foi: 12 |
Lisp ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas |
Como calcular o cosseno de um ângulo em LISP e AutoLISP (AutoCAD) usando a função cos() - Calculadora de cosseno em LISPQuantidade de visualizações: 597 vezes |
Em geral, quando falamos de cosseno, estamos falando do triângulo retângulo de Pitágoras (Teorema de Pitágoras). A verdade é que podemos usar a função cosseno disponível nas linguagens de programação para calcular o cosseno de qualquer número, mesmo nossas aplicações não tendo nenhuma relação com trigonometria. No entanto, é sempre importante entender o que é a função cosseno. Veja a seguinte imagem: ![]() Veja que temos um triângulo retângulo com as medidas já calculadas para a hipotenusa e os dois catetos, assim como os ângulos entre eles. Assim, o cosseno é a razão entre o cateto adjascente e a hipotenusa, ou seja, o cateto adjascente dividido pela hipotenusa. Veja a fórmula: \[\text{Cosseno} = \frac{\text{Cateto adjascente}}{\text{Hipotenusa}} \] Então, se dividirmos 30 por 36.056 (na figura eu arredondei) nós teremos 0.8320, que é a razão entre o cateto adjascente e a hipotenusa (em radianos). Agora, experimente calcular o arco-cosseno de 0.8320. O resultado será 0.5881 (em radianos). Convertendo 0.5881 radianos para graus, nós obtemos 33.69º, que é exatamente o ângulo em graus entre o cateto adjascente e a hipotenusa na figura acima. Pronto! Agora que já sabemos o que é cosseno na trigonometria, vamos entender mais sobre a função cos() da Common Lisp e da AutoLISP (a implementação LISP do AutoCAD). Esta função recebe um valor numérico e retorna um valor, também numérico) entre -1 até 1 (ambos inclusos). Veja: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- (format t "Cosseno de 0 = ~F~%" (cos 0)) (format t "Cosseno de 1 = ~F~%" (cos 1)) (format t "Cosseno de 2 = ~F" (cos 2)) Ao executar este código LISP nós teremos o seguinte resultado: Cosseno de 0 = 1.0 Cosseno de 1 = 0.5403023 Cosseno de 2 = -0.41614684 Note que calculamos os cossenos dos valores 0, 1 e 2. Observe como os resultados conferem com a curva da função cosseno mostrada abaixo: ![]() |
Veja mais Dicas e truques de Lisp |
Dicas e truques de outras linguagens |
Java - Como usar null em Java |
Códigos Fonte |
![]() 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 |
![]() 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 |