Você está aqui: LISP ::: Dicas & Truques ::: Struct (Estruturas, Registros) |
Como criar estruturas em LISPQuantidade de visualizações: 495 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:
; 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:
; 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:
; 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 |
|
|
Veja mais Dicas e truques de LISP |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |






