No - PowerPoint PPT Presentation

About This Presentation
Title:

No

Description:

No es de lisp Lisp: LISp Processing – PowerPoint PPT presentation

Number of Views:61
Avg rating:3.0/5.0
Slides: 22
Provided by: Jorg2160
Category:
Tags: calculo

less

Transcript and Presenter's Notes

Title: No


1
Noções de lisp
  • Lisp LISp Processing

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?

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!

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.

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.

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?

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.

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.

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.

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 (,)

11
Sintaxe de Lisp
  • Linguagem Lisp
  • Lisp atom lista
  • Atom identificador identificador reservado
    número
  • Lista (atom) (atom lista)

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.

13
Semantica operacional de Lisp Puro
  • Seletores car, cdr
  • gt (car (a d f))
  • gt A
  • gt (cdr (a s d f g))
  • gt (s d f g)
  • Construtor
  • gt (cons a (s d f g))
  • gt (a s d f g)
  • Predicado atômico
  • gt (atom jane)
  • gt T
  • gt (atom (a s d f g))
  • gt NIL
  • Predicado egalitário
  • gt (eql casa casa)
  • gt T
  • gt (eql 10 20)
  • gt NIL

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

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))
  • D
  • (atom v)
  • Nil
  • (eql v v)
  • T
  • (eql v v)
  • nil

16
Operações aritméticas
  • ( 2 3 4 5)
  • 14
  • (1 2)
  • 3
  • (2 3)
  • 6
  • ( 2 3 4 )
  • 24
  • ( ( 2 3) ( 1 2 3))
  • 30
  • ( 2 ( 5 6 3) 2)
  • 360
  • e assim não é preciso chamar a calculadora do
    computador...

17
Novas Funções
  • (defun nome-da-função (variáveis ligadas)
  • (corpo da definição))
  • Corpos
  • Cond
  • Program
  • if

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 (( gt n 0) (Numero negativo não tem
    fatorial))
  • (( n 0) 1)
  • (( n 1) 1)
  • (T (fat (- n 1)))))

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

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 gt e lt 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?

21
Que faço com isso tudo?
  • 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!
Write a Comment
User Comments (0)
About PowerShow.com