Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation
Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement.Téléchargez la présentation en cliquant sur ce lien.Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.
Um pouco de História Scheme foi criada em 1975 no laboratório de AI do MIT por Guy L. Steele e Gerald J. Sussman que queriam criar uma linguagem de semântica simples e clara. Scheme foi influenciada pelo cálculo lambda, que é uma das primeiras linguagens de programação funcional no mundo, também teve seu escopo estático herdade de Algol e a sintaxe de Lisp. É uma linguagem muito bem desenhada e de propósito geral.
Características A flexibilidade de Scheme é gatantida devido a ausência de restrições, assim o porder da linguagem não limitando . Utilização de sistema de recursão denominado “Tail Recursion” (recursão de cauda).
Características Homogeneidade com sua notação pré-fixada, ou seja, existe basicamente uma regra que rege a escrita de qualquer expressão: (+ 2 3) (squart 5) (f x y)
Características A passagem de parâmetros é feita por valor. Utilização de Listas como mecanismo básico de estruturação de dados. Suporta multiplos-paradigmas como, programação funcional, imperativa , orientação a objetos, etc.
Tipos de Dados Boolean: #t = True (Qualquercoisadiferente de zero e “Listavazia”). #f = False (Zero ou “Listavazia”).
Tipos de Dados Numbers: Number = (42). Complex = (2+3i). Real = (3.1416), (22/7), (42)
Tipos de Dados Numbers: Rational = (3.1416), (22/7) Integer = (42). Number = Complex = Real = Rational = Integer.
Tipos de Dados Characteres: São representadospelaprefixo #\ #\c = caracter (c). #\newline = (nova linha). #\space = (espaçoembranco).
Tipos de Dados Symbols: Apesar de ser tipo simples, ouseja, primitivocomoosanteriores, sãotratadoscomoidentificadores de variáveis, portantoseu valor é o valor contidonamesma. Para especificarmos um símbolousamos a palavrareservadaquoteouaspa simple antes do símbolo.
Tipos de Dados String: Não é um tipo simples, ouseja, primitivocomoosanteriores, é compostapelacombinação de caracteres, sendoassimumaseqüência de caracteres de modoestruturado e entre aspasduplas “”.
Tipos de Dados String: (string #\h #\e #\l #\l #\o) ) => "hello" "Hello, World!" => "Hello, World!"
Tipos de Dados Vectors: São seqüênciascomo as Strings mas, seuselementospodem ser umaseqüência de qualquertipo e nãoapenas de caracteres. (vector 0 1 2 3 4) => #(0 1 2 3 4)
Tipos de Dados Dotted pair: É composto de doisvaloresarbitrarios, sendo o primeirochamado de car e o segundo de cdr e suacombinação é realizada com a palavrareservadacons.
Tipos de Dados List: Listaspodem ser construídassimplesmentecolocandoosvaloresdesejados entre parênteses e utilizandoaspa simple antes do primeiroparênteseouutilizando a palavrareservadalist. Listaspodemconterqualquer valor inclusive lista de lista.
Tipos de Dados List: Assimcomoemvetores, podemosutilizarcar e cdrparaacessarmos o 1º elemento e o restantedalistarespectivamente. > (car (list 2 4 6 8 10)) => 2
Tipos de Dados List: Podemosutilizarváriascombinações de car e cdr. > (cadr (list 2 4 6 8 10)) => 4 > (cddr (list 2 4 6 8 10)) => (6 8 10)
Tipos de Dados List: (caarls) ; is the same as (car (car ls)) (cadrls) ; is the same as (car (cdrls)) (cdarls) ; is the same as (cdr (car ls)) (cddrls) ; is the same as (cdr (cdrls)) (caaarls) ; is the same as (car (car (car ls))) (caadrls) ; is the same as (car (car (cdrls))) (cadarls) ; is the same as (car (cdr (car ls))) (caddrls) ; is the same as (car (cdr (cdrls))) (cdaarls) ; is the same as (cdr (car (car ls))) (cdadrls) ; is the same as (cdr (car (cdrls))) (cddarls) ; is the same as (cdr (cdr (car ls))) (cdddrls) ; is the same as (cdr (cdr (cdrls)))
Tipos de Dados List: (cadaarls) ; is the same as (car (cdr (car (car ls)))) (cadadrls) ; is the same as (car (cdr (car (cdrls)))) (caddarls) ; is the same as (car (cdr (cdr (car ls)))) (cadddrls) ; is the same as (car (cdr (cdr (cdrls)))) (cdaaarls) ; is the same as (cdr (car (car (car ls)))) (cdaadrls) ; is the same as (cdr (car (car (cdrls)))) (cdadarls) ; is the same as (cdr (car (cdr (car ls)))) (cddadrls) ; is the same as (cdr (cdr (car (cdrls)))) (cdddarls) ; is the same as (cdr (cdr (cdr (car ls)))) (cddddrls) ; is the same as (cdr (cdr (cdr (cdrls))))
Expressões Condicionais Existemtrêstipos de expressõescondicionais: Usando a palavrareservadaIf. Usando a palavrareservadaCond. Usando a palavrareservadaCase.
Declarações Utilizamos a palavrareservadadefineparadeclararvariáveisglobais: (define a 10) a =>10
Declarações Utilizamos a palavrareservadaset! Para alterarvariáveis: (define a 10) a =>10 (set! a 5) a => 5
Declarações Podemosdeclarar procedures utilizando a palavrareservadadefineoulambda. Nãoexistediferença entre as declarações. (define square (lambda (x) (* x x)))
Declarações Utilizando a palavrareservadadefine: (define (square x) (* x x)) (square 2) => 4
Declarações Utilizamos a palavrareservadalet e let* paracriarvariáveislocais. A diferença entre as duasdeclarações é que let* é um aninhamento de lets, ouseja, umavariáveldeclaradaem um let mais a esquerdapode ser usadaem um let mais a direita. (let ((var1 exp1) (var2 exp2) . . . (varn expn)) body)
Declarações Utilizando a palavrareservadalet. (let ((x 2) (y 10)) (+ x y)) => 12 (let ((x 2) (y 10)) (/ y x)) => 5
Declarações Utilizando a palavrareservadalet. (define x 10) (+ (let ((x 5)) (* x (+ x 2))) x) => 45 (define x 10) (let ((x 5) (y (* x 2))) (+ x y)) => 25