Essays.club - TCC, Modelos de monografias, Trabalhos de universidades, Ensaios, Bibliografias
Pesquisar

Código feito na linguagem scheme

Por:   •  18/1/2018  •  2.761 Palavras (12 Páginas)  •  370 Visualizações

Página 1 de 12

...

((equal? Pi ’*) (transfpolaux (el 4 matpol) Ex));busca a linha 4 que é do *

((equal? Pi ’/) (transfpolaux (el 5 matpol) Ex));busca a linha 5 que é do /

((equal? Pi ’<) (transfpolaux(el 6 matpol) Ex)))));busca a linha 6 que é do <

; função que recebe uma lista e verifica se o primeiro valor é um operador

(define testasimbolo

(lambda (E) (cond

( (equal? (car E) ’+) #t )

( (equal? (car E) ’-) #t )

( (equal? (car E) ’*) #t )

( (equal?(car E) ’/) #t )

( (equal? (car E) ’$) #t )

( (equal? (car E) ’<) #t )

( (equal? (car E) ’>) #t )

((symbol? (car E) ) #f)

((number? (car E)) #f)

((list? E) #f)

((null? E) (display L))

)

))

;a função busca o número que mostra a linha e a coluna dos símbolos de operação

(define polonesa

(lambda (E P C A x)

(if (equal? #t (testasimbolo E)) (situacao (transfpol (car P) (car E)) C P E A x)

(polonesa (cdr E) P (situacao2 C (car E)) A x)

)

)

)

;função que coloca o cifrão no final da expressao, usada no processo da polonesa reversa

(define cifrao (lambda (E) (if (null? E) (cons ’$ ’()) (cons (car E) (cifrao (cdr E))))))

;função que ira resolver uma expressão por meio da chama da polonesa

;após o resultado da expressão, volta para avalia sem o elemento anteriormente executado

(define programa

(lambda (E P C A x)

; A = lista de atribuições

(polonesa (cifrao (car E)) P C A x)

(newline)

(avalia (cdr E) A)

)

)

;função auxiliar para função situação

(define situacao2 (lambda (L v) (if (null? L) (cons v ’()) (cons (car L) (situacao2 (cdr L) v)))))

;função que determina as ações da polonesa de acordo com o numero adquirido na matriz

(define situacao (lambda (v C P E A x)

(cond

((= v 1) (polonesa (cdr E) (cons (car E) P) C A x) )

((= v 2) (polonesa E (cdr P) (situacao2 C (car P)) A x) )

((= v 3) (polonesa (cdr E) (cdr P) C A x) )

((= v 4) (prepara (substitui A C) ’() x))

)

)

)

;essa função essa função compara uma letra com a lista na forma polonesa e troca

(define sub (lambda (Ax Ca) (if (null? Ca) ’() (if (equal? (car Ax) (car Ca) )

(cons (cadr Ax) (sub Ax (cdr Ca)))

(cons (car Ca) (sub Ax (cdr Ca)))))))

;função essa função manda a letra para a função acima poder comparar

(define substitui (lambda (Ax Ca) (if (null? Ax) Ca (substitui (cdr Ax) (sub (car Ax) Ca) ) )))

; função para determinar se é uma atribuição ou expressão

; verifica se o segundo elemento de um parametro da função princiapl é =

(define verifica

(lambda (L) (if (equal? (cadr L) ’= ) #t #f)

))

;função que faz as atribuições das variaveis

; cria uma lista A de pares ordenados com as variaveis e seus valores;

;Ex: B = 3 C = 5

;(lista) A = ( (b 3) (c 5) )

(define atribui

(lambda(L A v)

(cons (cons (caar L) (cons (caddr (car L)) ’()) ) A)

(cond ((equal? v ’@) (display (cons (caar L) (cons (caddr (car L)) ’()) )) (newline)))

(avalia (cdr L ) (cons (cons (caar L) (cons (caddr (car L)) ’()) ) A))

)

)

;essa função busca a letra que é igual a uma armazenada em uma lista de lista (A)

; Ex: A=((a 5)(b 7) (c 9)) v =’c

(define busca(lambda (A v) (if (equal? (caar A) v) (car(cdr(car

...

Baixar como  txt (8.5 Kb)   pdf (48.2 Kb)   docx (14.5 Kb)  
Continuar por mais 11 páginas »
Disponível apenas no Essays.club