A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Noções de lisp Lisp: LISp Processing J.M.Barreto INE-CTC-UFSC.

Apresentações semelhantes


Apresentação em tema: "Noções de lisp Lisp: LISp Processing J.M.Barreto INE-CTC-UFSC."— Transcrição da apresentação:

1 Noções de lisp Lisp: LISp Processing J.M.Barreto INE-CTC-UFSC

2 Qual a razão de conhecer LISP?
Segundo McDermot e Charniac a razão é a mesma de aprender francês se vai estudar na França: é a lingua natural falada pelos franceses! Será isto ainda verdade? Nem tanto, mas... Será a Programação Funcional? J. M. Barreto UFSC_INE

3 Razões para usar LISP (1/4)
LISP é uma linguagem funcional pobre, mas raros são os profissionais de IA que escolhem LISP por suas características funcionais. Exatamente por esta razão ela é pobre em termos funcionais: juntam-se outras facilidades que mascaram o estilo funcional puro! J. M. Barreto UFSC_INE

4 Razões para usar LISP (2/4)
LISP é estensível e se não se gosta de um interface oferecido é fácil criar outro. LISP tem programa e dados com a mesma estrutura de dados: listas. Logo, um programa pode facilmente ler a ele mesmo, modificar-se durante a execução e continuar funcionando modificado sem interrupção: isto é, torna-se fácil implementar algoritmos de aprendizado. J. M. Barreto UFSC_INE

5 Razões para usar LISP (3/4)
Estruturas de dados são facilmente manipuladas em LISP. Por exemplo: A pilha é a própria lista; Existem primitivas para ler, juntar novo elemento na pilha, etc. Árvores são implementadas como listas de listas., s3endo fácil percorrê-las e modificá-las. J. M. Barreto UFSC_INE

6 Razões para usar LISP (4/4)
É fácil aprender LISP e seu aprendizado ajuda a desenvolver capacidades mentais. Foi exatamente acreditando nisto que Papert, criou no MIT a linguagem LOGO, subconjunto de LISP, com ênfase gráfica, para uso do aprendizado de crianças. As experiências tem sido animadoras. E como nasceu esta linguagem? J. M. Barreto UFSC_INE

7 Lisp: Nota histórica (1/3)
John McCarthy vinha trabalhando há anos em uma linguagem que fosse, como provado por Turing, equivalente à sua máquina. Em 1960, dando aula no MIT demonstrou que a função “eval” era capaz de simular a máquina de Turing, resultado teórico de grande valor. J. M. Barreto UFSC_INE

8 Lisp: Nota histórica (2/3)
Um dos alunos de John McCarthy, Steve Russel comentou: “sendo verdade este teorema, basta implementar “eval” e teremos a Máquina de Turing”, ao que McCarthy contestou “Não confunda teoria com prática, este é um resultado teórico, para ter valor prático tem de percorrer um longo caminho”. J. M. Barreto UFSC_INE

9 Lisp: Nota histórica (3/3)
Russel não se satisfez. Implementou “eval” e algumas outras funções em Máquina IBM704, apresentou seu trabalho e assim nasceu Lisp, linguagem fruto do espírito prático de aluno com grande conhecimento teórico. Guarda ainda hoje lembranças do passado: car: “contents of address register; cdr: “contents of decrement register; Símbolos do assembler do IBM704. J. M. Barreto UFSC_INE

10 Sintaxe de Lisp Vocabulário de Lisp:
Atomos: elementos indivisíveis, podendo ser: Números; ex: 1, 13, 15, -.35, etc. Identificadores: sequencias de letras e números; ex: Lisa, Jane1, fibo, etc. Identificadores reservados: +, -, /, *, car, cdr, etc. Delimitadores: (,) J. M. Barreto UFSC_INE

11 Sintaxe de Lisp Linguagem Lisp: Lisp* = atom | lista
Atom = identificador | identificador reservado | número Lista = (atom) | (atom lista) J. M. Barreto UFSC_INE

12 Lisp Puro Lisp Puro contem as seguintes funções primitivas:
Car primeiro elemento de uma lista; Cdr: o que sobra de uma lista tirando o 1º elemento Cons: constroi lista dado um elemento e uma lista; Eql: retorna T se os dois elementos que se seguem são iguais, NIL no caso contrario; Atom: retorna T se elemento que o segue é atomico, NIL em caso contrário. J. M. Barreto UFSC_INE

13 Semantica operacional de Lisp Puro
Seletores: car, cdr > (car ´(a d f)) > A > (cdr ´(a s d f g)) > (s d f g) Construtor: > (cons ‘a ‘(s d f g)) > (a s d f g) Predicado atômico: > (atom ‘jane) > T > (atom ‘(a s d f g)) > NIL Predicado egalitário > (eql ‘casa ‘casa) > (eql 10 20) J. M. Barreto UFSC_INE

14 Assignação e valor de atomo
(set ‘a 10) A (setq b 20) B 20 ‘B (atom ‘b) T (atom b) (setq c ‘(a s d)) C (a s d) (car c) A (cdr c) (s d) (atom c) NIL (atom ‘c) T J. M. Barreto UFSC_INE

15 Manipulação de listas; exemplos
(setq ‘v ‘(e i o u)) V (cons ‘a v) (a e i o u) (car ‘(q w e r t)) Q (cdr ‘(q w e r t)) (w e r t) (cdr (car v)) nil (car (cdr (cdr ‘(a s d f g)))) D (caddr ‘(a s d f g)) (atom v) Nil (eql ‘v ‘v) T (eql ‘v v) nil J. M. Barreto UFSC_INE

16 Operações aritméticas
( ) 14 (+1 2) 3 (*2 3) 6 (* ) 24 (* (+ 2 3) ( )) 30 (* 2 (* 5 6 3) 2) 360 e assim não é preciso chamar a calculadora do computador... J. M. Barreto UFSC_INE

17 Novas Funções (defun nome-da-função (variáveis ligadas)
(corpo da definição)) Corpos: Cond Program if J. M. Barreto UFSC_INE

18 Exemplos de novas funções
Encontra o segundo elemento de uma lista: (defun segundo (lista) (cadr lista)) Calcula o fatorial de um número: (defun fat (n) (cond (( > n 0) (‘Numero negativo não tem fatorial’)) (( = n 0) 1) (( = n 1) 1) (T (fat (- n 1))))) J. M. Barreto UFSC_INE

19 Lê uma lista até um elemento dado retornando o que sobra:
(defun resto (lista elemento) (cond ((eql (car lista) elemento) cdr lista) (T (resto ((cdr lista) elemento ))))) J. M. Barreto UFSC_INE

20 Exercícios Escreva 2 funções Lisp para juntar novos telefones e consultar uma lista de nomes e de telefones. Sugestão: use como estrutura de dados uma lista de pares, (nome telefone) Sabendo que sua verão de Lisp usa > e < para ordem alfabética, escreva função Lisp para colocar em ordem um lista de nomes. E se fosse a lista de endereços do exercício anterior? J. M. Barreto UFSC_INE

21 Que faço com isso tudo? Jogou! Não!
Não jogue o pobre cálculo  no lixo! Ele é a base das linguagens funcionais e de Lisp, que apesar de todas as suas impurezas vale o estudo! Jogou! J. M. Barreto UFSC_INE


Carregar ppt "Noções de lisp Lisp: LISp Processing J.M.Barreto INE-CTC-UFSC."

Apresentações semelhantes


Anúncios Google