Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme...

42
Revis˜ ao Introdu¸c˜ ao a Scheme Listas Referˆ encias Conceitos de Linguagem de Programa¸ ao - 2 Arthur Jovita Guerra Thalles Santos Silva Universidade Estadual de Santa Cruz - Ilh´ eus, BA 1 de novembro de 2011 Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programa¸ ao - 2

Transcript of Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme...

Page 1: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

Conceitos de Linguagem de Programacao -

2

Arthur Jovita Guerra Thalles Santos Silva

Universidade Estadual de Santa Cruz - Ilheus, BA

1 de novembro de 2011

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 2: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

1 RevisaoNatureza das linguagens de ProgramacaoLinguagens Estaticas e DinamicasTipos de Linguagem

2 Introducao a SchemeIntroducao a SchemeFuncoes para construir funcoesControle de Fluxo

3 Listas

4 Referencias

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 3: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

Natureza das linguagens de ProgramacaoLinguagens Estaticas e DinamicasTipos de Linguagem

Uma linguagem de programacao e uma linguagem que possuisintaxe (formato) e semantica (significado), e e usada paraexpressar uma sequencia de acoes computacionais que formamum programa.

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 4: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

Natureza das linguagens de ProgramacaoLinguagens Estaticas e DinamicasTipos de Linguagem

Linguagens Estaticas e Dinamicas

As linguagens de programacao podem ser classificadas deacordo com o tipo de sistema que elas usam, ele define comosao os metodos e as variaveis da linguagem.Em uma linguagem de tipo estatico, o compilador deveconhecer o tipo de uma variavel ou metodo antes da execucaodo programa (por isso, o tipo de uma variavel normalmente eexplicitamente declarado).Em uma linguagem de tipo dinamico, o tipo de uma variavelou metodo e desconhecido ate a execucao do programa.

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 5: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

Natureza das linguagens de ProgramacaoLinguagens Estaticas e DinamicasTipos de Linguagem

Exemplos de linguagens de tipo estatico: Java, Pascal, C,C# e C++. Exemplos de linguagens de tipo dinamico:Python, Javascript, Perl e Ruby.

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 6: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

Natureza das linguagens de ProgramacaoLinguagens Estaticas e DinamicasTipos de Linguagem

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 7: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

Natureza das linguagens de ProgramacaoLinguagens Estaticas e DinamicasTipos de Linguagem

Tipificacao

A definicao de fortemente ou fracamente tipada tem relacaocom quao profundamente um sistema verifica as operacoesque podem ser feitas sobre uma estrutura de dados.

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 8: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

Natureza das linguagens de ProgramacaoLinguagens Estaticas e DinamicasTipos de Linguagem

Em linguagens fortemente tipadas:

as operacoes sao aplicadas para estruturas de dados bemdefinidas e cada operacao define os tipos de dados quedeve receber.

tendem a ter mais codigo para suas aplicacoes e suacurva de aprendizado pode ser maior.

o compilador tem garantias sobre o comportamento doprograma.

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 9: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

Natureza das linguagens de ProgramacaoLinguagens Estaticas e DinamicasTipos de Linguagem

Em linguagens fracamente tipadas:

As operacoes sao aplicadas para qualquer estrutura dedados, porem essas operacoes podem falhar em tempo deexecucao caso a estrutura nao suporte a operacao.

Sao mais simples em sua implementacao, porem e maisdifıcil encontrar o erro.

o compilador nao tem garantia sobre o comportamentodo programa porque uma estrutura de dados pode recebernovas funcionalidades em tempo de execucao.

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 10: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

Natureza das linguagens de ProgramacaoLinguagens Estaticas e DinamicasTipos de Linguagem

Em Java:

float soma(float a, int b) {return a + b;

}

Os tipos de dados que a operacao soma suporta estao bemdefinidos: a e float e b e int e o tipo de dado que a operacaodevolve tambem e definido float.

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 11: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

Natureza das linguagens de ProgramacaoLinguagens Estaticas e DinamicasTipos de Linguagem

Em Ruby:

def soma (a, b)return a + b

end

A funcao soma pode receber quaisquer tipos de dados para a eb, e a operacao sera aplicada sobre esses tipos, devolvendo umresultado de tipo desconhecido:

Se a e b forem String, o resultado sera uma Stringconcatenada de a e b;

Se a e b forem inteiros, o resultado sera um inteiro querepresenta a soma a+b;

Se a for um float e b um inteiro, o resultado sera um floatque representa a soma a+b.

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 12: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

Natureza das linguagens de ProgramacaoLinguagens Estaticas e DinamicasTipos de Linguagem

Vale a pena observar que em linguagens fracamente tipadas, apossibilidade de erros em tempo de execucao e muito maior.Por isso, e muito recomendavel o uso de testes para verificarerros antes de colocar um sistema em producao.Exemplos de linguagens fortemente tipadas: Java, Pascal, Ce C++.Exemplos de linguagens fracamente tipadas: Perl e Ruby.

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 13: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

Introducao a SchemeFuncoes para construir funcoesControle de Fluxo

Introducao a Scheme

Nomes em Scheme podem consistir em letras, emdigitos(nao no comeco), caracteres especiais(excetoparenteses)

Scheme nao e case Sensitive

O interpretador Scheme e um laco infinito deleitura-avaliacao-escrita. Le repetidamente uma expressaodigitada, interpreta-a e exibe o resultado

Os parametros em Scheme sao passados por valor, assim,indepedentemente se as funcoes alteram o valor real dosparametros nao sao afetados.

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 14: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

Introducao a SchemeFuncoes para construir funcoesControle de Fluxo

Inclui funcoes primitivas para as operacoes aritmeticasbasicas(+ - * /) que podem ter zero ou mais parametros

Se * nao receber nenhum parametro retorna 1,

se + nao recebe parametro retorna 0

Na subtracao todos os valores, exceto o primeiro, saosubtraıdos do primeiro.

A divisao e semelhante a subtracao

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 15: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

Introducao a SchemeFuncoes para construir funcoesControle de Fluxo

Expressao Valor50 50(* 2 5 ) 10(+ 1 2 3 ) 6(- 9 8 ) 1( / 10 2 ) 5

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 16: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

Introducao a SchemeFuncoes para construir funcoesControle de Fluxo

Scheme usa a notacao Lambda na forma de lista para definirfuncoes. Por exemplo,

( LAMBDA (L) (CAR(CDR L)))

e uma funcao que retorna o segundo elemento da lista L.

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 17: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

Introducao a SchemeFuncoes para construir funcoesControle de Fluxo

A funcao de forma especial DEFINE serve para duas coisas:vincular um nome a um valor e a uma expressao lambda.

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 18: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

Introducao a SchemeFuncoes para construir funcoesControle de Fluxo

Por exemplo,

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 19: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

Introducao a SchemeFuncoes para construir funcoesControle de Fluxo

Qual o resultado da chamada:

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 20: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

Introducao a SchemeFuncoes para construir funcoesControle de Fluxo

Simulando a chamada anterior:

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 21: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

Introducao a SchemeFuncoes para construir funcoesControle de Fluxo

LET

Fazendo uma funcao chamada percentagem-lado-perimetro-1que visualiza o perımetro do triangulo e as porcentagens dosseus lados em relacao ao perımetro.

Vemos que o calculo do perımetro, (+ a b c), e repetidoquatro vezes

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 22: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

Introducao a SchemeFuncoes para construir funcoesControle de Fluxo

Para evitar repeticoes deste tipo, bastaria definir uma variavellocal, com o valor correspondente ao calculo repetido, pronta aser utilizada sempre que fosse necessaria.

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 23: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

Introducao a SchemeFuncoes para construir funcoesControle de Fluxo

Estrutura do if

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 24: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

Introducao a SchemeFuncoes para construir funcoesControle de Fluxo

Exemplo:

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 25: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

Introducao a SchemeFuncoes para construir funcoesControle de Fluxo

Operador Logico

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 26: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

Introducao a SchemeFuncoes para construir funcoesControle de Fluxo

COND

Vemos que IF requer um numero fixo de parametros e naopermite que mais de um predicado seja verdadeiro no mesmomomento. Para estes casos usamos o COND, cuja forma gerale:

(COND(predicado1 expressao expressao)(predicado2 expressao expressao)(predicado3 expressao expressao)(ELSE expressao expressao)

)

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 27: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

Introducao a SchemeFuncoes para construir funcoesControle de Fluxo

Exemplo de funcao cond

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 28: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

Introducao a SchemeFuncoes para construir funcoesControle de Fluxo

Exemplo de chamadas a funcao cond:

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 29: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

Introducao a SchemeFuncoes para construir funcoesControle de Fluxo

Avaliacao do predicado COND

Os predicados dos parametros sao avaliados em ordem a partirdo primeiro ate que um seja #T, quando o primeiro predicado#T e encontrado suas expressoes sao avaliadas e o valor daultima e retornado como o de COND.

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 30: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

Listas

Listas sao principais estruturas de dados da Scheme. Eexistem dois seletores de lista primitivos: CAR e CRD.

CAR retorna o cabeca da lista

CRD retorna a lista sem o elemento cabeca. Por exemplo,

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 31: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

(CAR ’(A B C)) retorna A(CAR ’((A B) C D)) retorna (A B)(CAR ’()) e um erro.(CRD ’(A B C)) retorna (B C)(CRD ’((A B) C D)) retorna (C D)(CRD ’(A)) retorna ()

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 32: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

Como fazemos para criar listas?

CONS

E uma funcao que recebe dois argumentos e forma uma listacom ambos, sendo que o primeiro argumento pode ser atomoou lista e o segundo geralmente e uma lista.CONS concatena o segundo argumento no primeiro, assim oprimeiro parametro e o CAR da nova lista.

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 33: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

(CONS ’A ’()) retorna (A)(CONS ’A ’(B C)) retorna (A B C)(CONS ’() ’(A B)) retorna (() A B)(CONS ’(A B) ’(C D)) retorna ((A B) C D)

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 34: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

E quando queremos montar uma lista com um grande numerode parametros?

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 35: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

Existe uma outra funcao de criacao de listas chamada LIST,ela constroi listas a partir de um numero variavel deparametros.

(LIST ’uesc’ ’itabuna’ ’ilheus’)

E o mesmo que:

(CONS ’uesc (CONS ’itabuna (CONS ’ilheus ’() )))

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 36: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

Scheme tambem possui 3 funcoes de predicado importantes,sao elas: EQ?, NULL?, e LIST?. Elas sao funcoes booleanas,por isso terminam com ?.

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 37: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

EQ?

EQ? recebe dois parametros e retorna #T ambos forematomos e forem iguais, caso contrario retorna lista vazia () emvez de #F.

(EQ? ’A ’A) retorna #T

(EQ? ’A ’B) retorna ()

(EQ? ’A ’(A B)) retorna ()

(EQ? ’(A B) ’(A B)) retorna () ou #T

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 38: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

No ultimo caso, depende da implementacao de EQ?. Antes decriar uma nova lista o interpretador verifica se essa lista jaexiste, caso ela exista apenas e criado um novo ponteiro paraessa lista, retornando #T. Porem, em alguns casos, e difıcildetectar a presenca de uma lista identica, assim uma nova listae criada na memoria, retornando ().

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 39: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

LIST?

A funcao LIST? recebe apenas um argumento e retorna #T sefor uma lista, se nao for retorna ().

(LIST? ’(X,Y)) retorna #T

(LIST? ’X) retorna ()

(LIST? ’()) retorna #T

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 40: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

NULL?

A funcao NULL? retorna #T se seu unico argumento e umalista vazia.

(NULL? ’(A B)) retorna ()

(NULL? ’()) retorna #T

(NULL? ’(())) retorna ()

E neste ultimo caso?

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 41: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

NULL?

A funcao NULL? retorna #T se seu unico argumento e umalista vazia.

(NULL? ’(A B)) retorna ()

(NULL? ’()) retorna #T

(NULL? ’(())) retorna ()

E neste ultimo caso? O que acontece e que uma lista epassada, e esta lista contem um elemento, que e uma listavazia.

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2

Page 42: Conceitos de Linguagem de Programa˘c~ao - 2 · 2014. 3. 17. · Revis~ao Introdu˘c~ao a Scheme Listas Refer^encias 1 Revis~ao Natureza das linguagens de Programa˘c~ao Linguagens

RevisaoIntroducao a Scheme

ListasReferencias

Referencias

Sebesta, Robert W Conceitos de Linguagem deProgramacao. Editora Bookman, Porto Alegre: 2000

http://haskell.tailorfontela.com.br/introduction

Arthur Jovita Guerra, Thalles Santos Silva Conceitos de Linguagem de Programacao - 2