Você está na página 1de 3

FUNES E DADOS

INTRODUO
Inicialmente comearemos com uma viso geral dos conceitos de funo e de dados, seguido por
exemplos de vrias funes Lisp embutidas.
Vamos comear explicando o que so funes e dados .
Dados em Lisp so como nmeros, palavras ou listas de coisas. Voc pode pensar em uma funo
como uma caixa, atravs da qual os dados fluem. A funo opera sobre o dados, de alguma forma, e
o resultado o que flui para fora da caixa.
Depois de estudarmos algumas funes embutidas fornecidas pelo Lisp, aprenderemos a colocar
funes existentes em conjunto. Em seguida, vrias tcnicas para a criao de novas funes sero
apresentadas.

FUNES E NMEROS

Provavelmente as funes mais conhecidas so as funes aritmticas de adio, subtrao,
multiplicao e diviso. Aqui est como representamos a adio de dois nmeros:



O nome da funo '' + '.' . Podemos descrever o que est acontecendo na figura de vrias
maneiras. Do ponto de vista dos dados: Os nmeros 2 e 3 fluem para dentro da funo, e o nmero
5 flui para fora dela.
Do ponto de vista da funo: A funo '+' 'recebeu os nmeros 2 e 3 como entrada, e produz como
resultado o nmero 5.
Do ponto de vista do programador: Chamamos a funo de '+' com os nmeros 2 e 3 para entrada, e
a funo retorna o nmero 5. Estes diferentes pontos de vistas sobre as funes e dados so
equivalentes
Aqui est uma tabela de funes em Lisp que utilizam nmeros:

+ Adiciona dois nmeros
- Subtrai o segundo nmero do primeiro
* Multiplica dois nmeros
/ Divide o primeiro nmero pelo segundo
ABS valor absoluto de um nmero
SQRT A raiz quadrada de um nmero

Vejamos outro exemplo de como os dados fluem atravs de uma funo. A sada da funo de valor
absoluto, ABS, a mesma que a sua entrada, exceto nmeros negativos so convertidos para
positivos.



O nmero -4 entra. A funo ABS, que calcula o valor absoluto e gera como sada o valor 4
(positivo).


1.3 Nmeros em Lisp

Em nossas atividades com o Lisp trabalharemos na maior parte, com nmeros inteiros. Outro tipo de
nmero em Lisp, so os nmeros de ponto flutuante. Um nmero de ponto flutuante sempre
escrito com um ponto decimal. Por exemplo, o nmero cinco em ponto flutuante seria escrito da
seguinte forma: 5.0.
A funo SQRT (funo que retorna a raiz quadrada de um nmero) geralmente retorna um nmero
com ponto flutuante como resultado, mesmo quando recebe como entrada um nmero inteiro.


Nmeros racionais (fraes) so outros tipos de nmero. Em uma calculadora de bolso, a metade de
1 representado em notao de ponto flutuante, como 0,5, mas em Lisp, podemos tambm escrever
um meio, como a razo meia. O Lisp simplifica automaticamente fraes para utilizar o menor
denominador possvel. Por exemplo, as relaes de 4/6, 6/9, 10/15 e seriam simplificadas para dois
teros.
Quando chamamos uma funo aritmtica com entradas inteiras, o Lisp normalmente ir produzir
um resultado inteiro ou de fracional. Se usarmos uma mistura de nmeros inteiros e nmeros de
ponto flutuante, o resultado ser um nmero de ponto flutuante:



A IMPORTNCIA DA ORDEM DE ENTRADA DE DADOS PARA UMA FUNO

Por conveno, quando nos referimos 'primeira' para uma funo, queremos dizer a seta superior
entrando para a caixa de funo. A "segunda" entrada a prxima seta de maior ordem, e assim por
diante. A ordem em que as entradas so fornecidas para uma funo importante. Por exemplo, a
diviso por 2 por 8 no o mesmo que dividindo por 8 por 2:


Quando dividimos 8 por 2 obtemos 4 com resultado. Quando dividimos 2 por 8 temos a uma frao
com resultado. Por exemplo: