Uma Aula Prática sobre LISP
|
|
|
- Maria do Mar Azevedo Botelho
- 9 Há anos
- Visualizações:
Transcrição
1 MAC Estruturas de Dados
2 Linguagem LISP Surgiu no final dos anos 50 - John McCarthy (MIT). Linguagem para processamento simbólico. Muito usada em aplicações em Inteligência Artificial. Outras aplicações incluem AutoCad, Editor Emacs, etc. Linguagem funcional - LISP puro não possui atribuições (livre de efeitos colaterais). Lisp não é compliado (código fonte para código objeto de máquina), mas sim interpretado por meio de um interpretador. Interpretador é implementado usando estruturas de listas encadeadas. Coletor de lixo faz parte do sistema.
3 MuLISP Há muitos dialetos de LISP: Mac Lisp Franz Lisp Common Lisp Golden Lisp MuLisp, etc. Uma página contendo vários sistemas LISP: mpmelo/ime4701/ htm
4 Linguagem Funcional Aplicação de função a seus argumentos, com a possibildiade de composição funcional. Uso intenso de recursão. LISP significa LISt Processor Dijkstra brincava dizendo: LISP é a maneira mais elegante de disperdiçar recursos :-) Outra brincadeira: LISP significa Lot of Irritating Stupid Parenthesis.
5 MuLISP5.1 MuLISP foi desenvolvido nos anos 80 para o sistema DOS. A partir de MuLISP a empresa Soft Warehouse de Honolulu desenvolveu o MuMath cujo sucessor é o sistema Derive, um sistema de álgebra computacional. MuLISP é bem compacto. O código ocupa apenas 38 Kbytes. Possui aritmética de precisão ilimitada (como o nosso programa 1 do curso).
6 Demonstração MuLISP No prompt do sistema DOS, tecle mulisp. O sinal de prompt do MuLISP é o sinal de dólar $ Depois do prompt $ pode-se entrar uma função seguida de argumentos, se houver. O interpretador MuLISP vai avaliar a função e retornar o resultado da avaliação. Exemplos: $ 5 5 A função constante 5 vai devolver o número 5. $ (+ 3 5) 8 O primeiro elemento da lista + é interpretado como uma função (soma), os demais elementos (3 e 5) são argumentos da função. O MuLISP retorna o valor da soma.
7 Demonstração MuLISP $ (+ 3 5) ou (quote (+ 3 5)) (+ 3 5) O símbolo ou a função quote faz com que o argumento em seguida seja tratado como um valor literal que, portanto, não é avaliado. $ (+ 3 (- 10 2)) 11 Composição de funções é possível. $ (+ (* 5 2) (- 10 2)) 18 Mais composições de funções. $ (* ) Precisão ilimitada : cada número é armazenado como uma lista ligada de algarismos. (system) Termina o interpretador MuLISP e retorna-se ao DOS.
8 Demonstração MuLISP $ (zerop 9) nil A função zerop testa se o argumento é zero. Se sim retorna T caso contrário retorna nil. $ (zerop (- 100 ( ))) T $ (sub1 60) 59 A função sub1 subtrai um. $ (defun cubo (n) (* n n n)) cubo Defun serve para definir uma função. Após a definição o sistema retorna o nome da função. De agora em diante, pode-se usar a função definida. $ (cubo 2) 8
9 Demonstração MuLISP $ (defun fatorial (n) (cond ( (zerop n) 1) ( T (* n (fatorial (sub1 n)))) ) ) fatorial Cond é uma condicional. Segindo Cond vêm pares de funções. Avalia-se o primeiro elemento de cada par, sucessivamente, até se chegar a um valor não-nil. Entao o valor de Cond é o valor do segundo elemento do par. $ (fatorial 5) 120 Experimente chamar fatorial com número bem grande. $ (rds doctor.lsp) doctor A função rds lê o programa escrito em MuLISP especificado pelo argumento e inicia a avaliação.
10 Próximo termo de uma sequência Este programa recebe uma sequência de números e tenta descobrir o próximo. Por ex: $ (nextterm (quote ( ) )) vai produzir o número 6. Experimente outras sequências.
Linguagens de Programação Funcional
Linguagens de Programação Funcional Conceitos de Linguagens de Programação Pedro Libório Setembro de 2013 2 Roteiro Introdução Funções matemáticas Fundamentos das linguagens de programação funcionais A
Introdução à Programação Funcional
Introdução à Programação Funcional PPGIA - PUCPR Prof. Fabrício Enembreck 1 Conteúdo Introdução ao Cálculo Lambda e à Programação Funcional Introdução ao LISP e ao CLisp Funções Lambda e binding Funções
LINGUAGENS FORA DO PADRÃO DE MERCADO
LINGUAGENS FORA DO PADRÃO DE MERCADO Alunos: Clayton Reis da Silva Leonardo Lessa Aramaki Leonardo Machado Azevedo Manoel Mariano Siqueira Júnior Essas pessoas criaram as linguagens de programação Forth,
Exercícios da cadeira de Inteligência Artificial. Helena Sofia Pinto João Cachopo Daniel Gonçalves Carlos Lopes António Inês Lynce Pedro Matos
Exercícios da cadeira de Inteligência Artificial Helena Sofia Pinto João Cachopo Daniel Gonçalves Carlos Lopes António Inês Lynce Pedro Matos Ano Lectivo 2001/2002 1 Prefácio Este documento reúne os exercícios
Linguagens de Programação Programação Funcional (Haskell)
Linguagens de Programação Programação Funcional (Haskell) Andrei Rimsa Álvares Sumário Introdução Programação funcional Linguagens funcionais Haskell Casamento de padrões Funções de ordem superior Avaliação
Programação Funcional. Programação Funcional LISP. Paradigma de programação baseado em Funções Matemáticas
Programação Funcional Programação Funcional Paradigma de programação baseado em Funções Matemáticas Essência de Programação: combinar funções para obter outras mais poderosas PLP 2009/1 Profa. Heloisa
LISP - Introdução. Existem vários dialectos de LISP: COMMON LISP (o mais sofisticado e mais utilizado) Outros: MAC LISP, INTERLISP, XLISP
LISP - Introdução Linguagem de alto nível, criada por John McCarty em 1959, tendo em vista facilitar a programação de sistemas de raciocínio baseados em lógica Foi adoptada como linguagem principal em
Trabalho de Programação Funcional Linguagem Scheme
Trabalho de Programação Funcional Linguagem Scheme Fábio Davanzo F. de Oliveira, Daniel C. Santos Bacharelado em Ciências da Computação quarta fase, 2002 Departamento de Informatica e Estatística (INE)
ao paradigma imperativo
PARADIGMA FUNCIONAL PARADIGMA FUNCIONAL: INTRODUÇÃO G Exemplos de linguagens funcionais LISP - Início: LP puramente funcional - Depois: acréscimo de alguns recursos imperativos (aumentaram eficiência de
AutoLISP -I Introdução
AutoLISP -I Introdução João Manuel R. S. Tavares Joaquim Oliveira Fonseca Bibliografia Programação em AutoCAD, Curso Completo Fernando Luís Ferreira, João Santos FCA Programando em AutoLISP Kramer, W.
CFAC: AutoLISP (I) - Introdução
AutoLISP -I Introdução João Manuel R. S. Tavares / JOF Bibliografia Programação em AutoCAD, Curso Completo Fernando Luís Ferreira, João Santos FCA Programando em AutoLISP Kramer, W. e Kramer MAKRON Books
AutoLISP - I Introdução. João Manuel R. S. Tavares Joaquim Oliveira Fonseca
AutoLISP - I Introdução João Manuel R. S. Tavares Joaquim Oliveira Fonseca Bibliografia Programação em AutoCAD, Curso Completo Fernando Luís Ferreira, João Santos FCA Programando em AutoLISP Kramer, W.
Técnicas de análise de algoritmos
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS Técnicas de análise de algoritmos Algoritmos e Estruturas de Dados I Natália Batista https://sites.google.com/site/nataliacefetmg/ [email protected]
Cálculo Lambda Sem Tipos
Cálculo Lambda Sem Tipos Cálculo lambda sem tipos Peter Landin (60 s) observou que uma linguagem de programação pode ser compreendida formulando-a em um pequeno núcleo capturando suas características essenciais
Programação Procedimental
Programação Procedimental Maria Adriana Vidigal de Lima Universidade Federal de Uberlândia - 2013 1 Escrita de Algoritmos 1.1 Técnicas de Programação e Algoritmos Na elaboração de programas maiores e complexos
Introdução à Programação Funcional. Conteúdo
Introdução à Programação Funcional PPGIA - PUCPR Prof. Fabrício Enembreck 1 Conteúdo Introdução ao Cálculo Lambda e à Programação Funcional Introdução ao LISP e ao Common Lisp Funções Lambda e binding
Aula de hoje. Expressões. Expressões. Expressões. Exemplos. Programa em Python. SCC Introdução à Programação para Engenharias
SCC 124 - Introdução à Programação para Engenharias Expressões Professor: André C. P. L. F. de Carvalho, ICMC-USP Pos-doutorando: Isvani Frias-Blanco Monitor: Henrique Bonini de Britto Menezes Aula de
Programação de Computadores IV. Introdução a Linguagens de Programação Simone Martins SLIDES CEDIDOS POR BRUNO MARQUES 1
Programação de Computadores IV Introdução a Linguagens de Programação Simone Martins [email protected] SLIDES CEDIDOS POR BRUNO MARQUES 1 Arquitetura de programação 2 O Que é um Dado? Dado é o elemento
Capítulo 2 Operadores. A função scanf()
Capítulo 2 Operadores A função scanf() A função scanf() é outra das funções de E/S implementadas em todos os compiladores e nos permite ler dados formatados da entrada padrão (teclado). Sintaxe: scanf(
Algoritmos e Linguagem de Programação I
Algoritmos e Linguagem de Programação I Roberto Ferreira [email protected] 2014.1 Módulo I Aula 3 Algoritmos Computacionais Na aula anterior vimos... Quais são os passos para solucionar
Resolução Exe 2.12 Monolítico Recursivo
Resolução Exe 2.12 Monolítico Recursivo Recursivo P R é R 1 onde R 1 def (se T1 então R 2 senão R 3 ) R 2 def F; R 3 R 3 def (se T2 então R 4 senão R 7 ) R 4 def G; R 5 R 5 def (se T1 então R 7 senão R
Inteligência Artificial
Instituto Politécnico de Setúbal Escola Superior de Tecnologia de Setúbal Departamento de Sistemas e Informática Guia de Exercícios das Aulas Práticas Inteligência Artificial Prof Joaquim Filipe Eng. Adelaide
USANDO UM MÉTODO INDUTIVO PARA RESOLVER PROBLEMAS. Bruno Maffeo Departamento de Informática PUC-Rio
USANDO UM MÉTODO INDUTIVO PARA RESOLVER PROBLEMAS Bruno Maffeo Departamento de Informática PUC-Rio MÉTODO INDUTIVO O método indutivo para resolver problemas aqui empregado inspira-se na formulação mais
Programação Estruturada Aula - Introdução a Linguagem de Programação
Programação Estruturada Aula - Introdução a Linguagem de Programação Prof. Flávio Barros [email protected] www.flaviobarros.com.br ORGANIZAÇÃO BÁSICA DE UM COMPUTADOR 2 ORGANIZAÇÃO BÁSICA DE UM COMPUTADOR
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO TEORIA DA COMPUTAÇÃO Aula 04 Programa Recursivo e Máquinas Prof.ª Danielle Casillo Funções recursivas Alguma função é recursiva quando
Programação de Computadores:
Instituto de C Programação de Computadores: Introdução a Linguagens de Programação Luis Martí Instituto de Computação Universidade Federal Fluminense [email protected] - http://lmarti.com Seis Camadas Problema
Algoritmos e Programação
ESTADO DE MATO GROSSO SECRETARIA DE ESTADO DE CIÊNCIA E TECNOLOGIA UNIVERSIDADE DO ESTADO DE MATO GROSSO CAMPUS UNIVERSITÁRIO DE SINOP FACULDADE DE CIÊNCIAS EXATAS E TECNOLÓGICAS CURSO DE ENGENHARIA ELÉTRICA
Organização e Arquitetura de Computadores INTRODUÇÃO
Organização e Arquitetura de Computadores INTRODUÇÃO A Arquitetura de Computadores trata do comportamento funcional de um sistema computacional, do ponto de vista do programador (ex. tamanho de um tipo
Compiladores. Conceitos Básicos
Compiladores Conceitos Básicos Processadores de Linguagem De forma simples, um compilador é um programa que recebe como entrada um programa em uma linguagem de programação a linguagem fonte e o traduz
Linguagens de Programação
Visão Geral Faculdade de Computação - UFU Agosto - 2009 1 Princípios 2 O que é uma linguagem de programação? Linguagens naturais facilitam a expressão e o intercâmbio de idéias entre as pessoas. Assim
Conceitos de Linguagens de Programação - Características. Paavo Soeiro
Conceitos de Linguagens de Programação - Características Paavo Soeiro Motivação Para que possa escolher uma linguagem apropriada ao problema. Melhorar o entendimento da linguagem utilizada. Facilitar o
Questões de Paradigmas de Programação Matéria: Prova 1 4ª EDIÇÃO
Questões de Paradigmas de Programação Matéria: Prova 1 4ª EDIÇÃO QUESTÃO 1 : Enviada por: Francisco Carlos Moraes Junior Duvidas: Thaise Domínios de programação são áreas onde os computadores são usados.
Engenharia Civil. Representação da Informação. Introdução à Computação
Engenharia Civil Representação da Informação Introdução à Computação Sumário Retomada... Representação de informação Bit, byte Conversão numérica Exercício Referência link na página 2.2.1 O bit, o byte,
Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados
Métodos Computacionais Operadores, Expressões Aritméticas e Entrada/Saída de Dados Tópicos da Aula Hoje aprenderemos a escrever um programa em C que pode realizar cálculos Conceito de expressão Tipos de
LINGUAGEM C: FUNÇÕES FUNÇÃO 04/07/2017. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.
LINGUAGEM C: FUNÇÕES Prof. André Backes FUNÇÃO Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. printf(): função que escreve na tela scanf(): função que lê o teclado
Módulo Tópicos Adicionais. Recorrências
Módulo Tópicos Adicionais Recorrências Módulo Tópico Adicionais Recorrências 1 Exercícios Introdutórios Exercício 1 Considere a sequência definida por x 1 d e x n r + x n 1, para n > 1 Trata-se de uma
Common-Lisp (introdutório).
Common-Lisp (introdutório). Índice Conceitos Básicos Funções e predicados numéricos Funções sobre pares e listas Constantes, variáveis e atribuições Formas especiais Definição de funções Recursão Rastreio
Algoritmos Lógica e Programação Prof. Me. Adelson Felipe Dias Nogueira
Algoritmos Lógica e Programação 2016-2 Prof. Me. Adelson Felipe Dias Nogueira E-mail: [email protected] Plano de Ensino MÓDULOS: 1.Conceitos iniciais de Algoritmos: 2.Desenvolvimento de
Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang
Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Introdução [email protected] Processadores de linguagem Linguagens de programação são notações para se descrever
Introdução a Computação
O que é um computador? Um computador é uma coleção de componentes que realizam operações lógicas e aritméticas sobre um grande volume de dados. (F. K. Miyazawa) Um computador é composto por: Introdução
Programação I A Linguagem C. Prof. Carlos Alberto
Programação I A Linguagem C Prof. Carlos Alberto [email protected] [email protected] 2 Origem A linguagem C foi desenvolvida em 1972, nos Laboratórios Bell, por Dennis Ritchie. Implementada
INFORMÁTICA: Informação automática
INTRODUÇÃO INFORMÁTICA: Informação automática Definição: Principais funções: Ø Ø Ø Ø 1 COMPUTADOR: 2 Sistema de Computação 3 Objetivo: Processamento de Dados: 4 Software Software ou Programas: básicos
Algoritmos e Programação
ESTADO DE MATO GROSSO SECRETARIA DE ESTADO DE CIÊNCIA E TECNOLOGIA UNIVERSIDADE DO ESTADO DE MATO GROSSO CAMPUS UNIVERSITÁRIO DE SINOP FACULDADE DE CIÊNCIAS EXATAS E TECNOLÓGICAS Algoritmos e Programação
LINGUAGEM C: COMANDOS DE CONTROLE CONDICIONAL
LINGUAGEM C: COMANDOS DE CONTROLE CONDICIONAL Prof. André Backes FLUXOGRAMAS Condição ou Decisão Representado por losangos Normalmente contém uma pergunta do tipo Sim/Não ou um teste de Verdadeiro/Falso.
Programação Python. Nesta aula... 1 Programação. 2 Python. Operadores e Operandos Variáveis, Expressões, Instruções Funções Ciclos Comentários
Nesta aula... 1 2 Introdução à - minor Ciência de computadores: incluí tópicos de matemática (linguagens formais para especificar ideias) engenharia (projetar, juntar componentes para formar um sistema,
Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA)
Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA) Expressões e Definições Regulares Revisão Expressões regulares descrevem todas as linguagens que podem ser construídas
Aula prática 5. Funções Recursivas
Programação Funcional UFOP DECOM 2014.1 Aula prática 5 Funções Recursivas Resumo Definições recursivas são comuns na programação funcional. Nesta aula vamos aprender a definir funções recursivas. Sumário
ARQUITETURA DE COMPUTADORES
Representação de Dados Professor: Airton Ribeiro de Sousa E-mail: [email protected] 1 REPRESENTAÇÃO DE DADOS: SÍMBOLO: Marca visual ou gráfica que representa um objeto que desejamos identificar
LINGUAGEM C: FUNÇÕES FUNÇÃO 08/01/2018. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.
LINGUAGEM C: FUNÇÕES Prof. André Backes FUNÇÃO Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. printf(): função que escreve na tela scanf(): função que lê o teclado
Paradigmas de Linguagens de Programação. Expressões e Instruções de Atribuição
Expressões e Instruções de Atribuição Cristiano Lehrer Introdução Expressões são o meio fundamental de especificar computações em uma linguagem de programação: Familiarização com as ordens de avaliação
EVOLUÇÃO DAS LINGUAGENS DE PROGRAMAÇÃO
EVOLUÇÃO DAS LINGUAGENS DE PROGRAMAÇÃO Profª. Msc. Vanderlene Covre Rocha ALTAMIRA/PA 04 de novembro de 2016 O que são linguagens de programação? Por que elas existem? Como computadores eram programados
Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;
1 Microprocessador Um microprocessador é um circuito eletrônico capaz de realizar diversas tarefas conforme os comandos específicos. Para isso ele deve ler esses comandos da memória de programa (ROM) e
Arquitetura de Von Neumann
Arquitetura de Von Neumann Leandro Tonietto Algoritmos e Programação em C++ Curso de Segurança da Informação [email protected] http://www.inf.unisinos.br/~ltonietto/tsi/apc/arqvonneumann.pdf Fev-2008
Capítulo 1. Aspectos Preliminares
Capítulo 1 Aspectos Preliminares Tópicos do Capítulo 1 Razões para estudar conceitos de linguagens de programação Domínios de programação Critérios de avaliação de linguagens Influências no projeto de
Computação Eletrônica. Tipos de dados, constantes, variáveis, operadores e expressões. Prof: Luciano Barbosa
Computação Eletrônica Tipos de dados, constantes, variáveis, operadores e expressões Prof: Luciano Barbosa Site da disciplina: www.cin.ufpe.br/~if165/ Recapitulando num cubo = n * n * n cubo Algoritmo
Disciplina de Algoritmos e Programação
Disciplina de Algoritmos e Programação Atividades Plano de ensino Conteúdos da disciplina, definição das datas, critérios de avaliação e bibliografias Início da matéria Conceito e definição de algoritmos
Comando de Seleção em Java
Universidade Federal do ABC (UFABC) Disciplina: Processamento da Informação (BC-0505) Assunto: Comando de Seleção Comando de Seleção em Java Conteúdo 1. Introdução... 1 2. Comando de seleção... 2 3. Comandos
Paradigmas de Programação
Paradigmas de Programação Prof.: Edilberto M. Silva http://www.edilms.eti.br Aula 2 Linguagens de Programação Desenvolvimento e execução de programas Características de linguagens Execução de programas
ARQUITETURA DE COMPUTADORES
Representação de Dados Professor: Airton Ribeiro de Sousa E-mail: [email protected] 1 Ao longo dos anos, muitos padrões e convenções foram estabelecidas para determinar certos aspectos da
FACULDADE PITÁGORAS PRONATEC
FACULDADE PITÁGORAS PRONATEC DISCIPLINA: ARQUITETURA DE COMPUTADORES Prof. Ms. Carlos José Giudice dos Santos [email protected] www.oficinadapesquisa.com.br Objetivos Ao final desta apostila,
Capítulo 7. Expressões e Sentenças de Atribuição
Capítulo 7 Expressões e Sentenças de Atribuição Introdução Expressões são os meios fundamentais de especificar computações em uma linguagem de programação Para entender a avaliação de expressões, é necessário
TÉCNICO DE INFORMÁTICA - SISTEMAS
782 - Programação em C/C++ - estrutura básica e conceitos fundamentais Linguagens de programação Linguagem de programação são conjuntos de palavras formais, utilizadas na escrita de programas, para enunciar
CP Introdução à Informática Prof. Msc. Carlos de Salles
CP 1015.1 Prof. Msc. Carlos de Salles PROGRAMA 1. CONCEITO DE SISTEMAS 1.1 Sistemas e sua classificação 1.2 Informações e Dados 1.3 O Processamento de Dados 1.4 O Computador e sua História 2. ESTRUTURA
Sistema Computacional
Algoritmos e Lógica de Programação Conceitos Básicos Abstração Reinaldo Gomes [email protected] O que é um? Integração de componentes atuando como uma entidade, com o propósito de processar dados, i.e.
Algoritmos e Estruturas de Dados I. Universidade Federal de São João del-rei Pedro Mitsuo Shiroma Sala 119 Bloco 3
Algoritmos e Estruturas de Dados I Universidade Federal de São João del-rei Pedro Mitsuo Shiroma Sala 119 Bloco 3 Exercício - Seleção Escreva um algoritmo que leia o ano, mês e dia que uma pessoa nasceu
Técnicas de Programação
Técnicas de Programação Algoritmos Anderson Gomes Eleutério Lógica A lógica de programação é necessária para pessoas que desejam trabalhar com desenvolvimento de sistemas e programas, ela permite definir
CONJUNTO DE INSTRUÇÕES
CONJUNTO DE INSTRUÇÕES 1 CARACTERÍSTICAS DE INSTRUÇÕES DE MÁQUINA Quando um programador usa uma linguagem de alto-nível, como C, muito pouco da arquitetura da máquina é visível. O usuário que deseja programar
