Cadeira de Procura e Planeamento
|
|
- Lorena Lage Quintão
- 6 Há anos
- Visualizações:
Transcrição
1 Cadeira de Procura e Planeamento Fausto Almeida Mestrado em Engenharia Informática e de Computadores 1º Ano 1
2 Lisp Diferentes ambientes de desenvolvimento Allegro Common Lisp v8.2 or v9.0 fortemente recomendado pois vai ser usado para testar os projectos Steel Bank Common Lisp C-lisp CMU-CL 2
3 Elementos da linguagem Elementos primitivos números: 10, 1.567, 5/8 símbolos: s1, if, +, -, * símbolos especiais: T, NIL Combinações notação prefixa listas (* ( ) 23) (- 23 (/ (* 57 34) 687)) (and (= 3 4) (< 3 4) (> 3 4)) 3
4 Avaliaçao Ciclo read-eval-print avaliação vs compilação Elementos primitivos Combinações Formas especiais quote, if,... Macros and, or, cond... 4
5 Avaliação > (and (= 10 10) (> 10 5)) T > (or 10 (> 22 8) teste) 10 > (and (= 10 10) teste) Error: Attempt to take the value of the unbound variable `TESTE'. [condition type: UNBOUND-VARIABLE] > 5
6 Listas Muitas Primitivas cons, list, consp, listp, first, rest, car, cdr, cadr, cdar (até 3 combinações de a e d), second (até 10), nth, length, append, find, filter, replace, remove, remove-duplicates... > (cons 1 ()) (1) > (cons 1 '(1 2 3)) ( ) > (cons 1 ( )) (1. 6) > (rest '( )) (1 2 3) > 6
7 Lisp - Hierarquia de tipos 7
8 Lisp - Hierarquia de tipos 8
9 Primitivas de Controle Mais comuns if, cond > (if (> 10 5) 10 5) 10 > (cond ((> 10 5) 10) (T 5)) 10 9
10 Funções > (defun meu-max (x y) (if (> x y) x y)) MEU-MAX > (meu-max 10 5) 10 10
11 Funções > (defun max (x y) (if (> x y) x y)) Error: Attempt to make a FUNCTION definition for the name MAX. This name is in the COMMON-LISP package and redefining it is a violation for portable programs. Replacing the current definition of #<Function MAX> may be dangerous. The package COMMON-LISP has PACKAGE-DEFINITION-LOCK set, which causes the system to signal this violation. [condition type: PACKAGE-LOCKED-ERROR] 11
12 Funções Recursivas > (defun comp (l) (if (null l) 0 (1+ (comp (rest l))))) COMP > (comp '(1 2 3)) 3 12
13 Funções Recursivas > (trace comp) (COMP) > (comp '(1 2 3)) 0: (COMP (1 2 3)) 1: (COMP (2 3)) 2: (COMP (3)) 3: (COMP NIL) 3: returned 0 2: returned 1 1: returned 2 0: returned
14 Funções que recebem funções > (funcall #' ) 6 > (apply #'+ '(1 2 3)) 6 > (mapcar #'1+ '(1 2 3)) (2 3 4) 14
15 Funções com Argumentos Opcionais > (defun ex (a b &optional c (d 66) &rest keys &key test (start 0)) (list a b c d keys test start)) EX > (ex 1 2) (1 2 NIL 66 NIL NIL 0) > (ex :test 'equal :start 50) ( (:TEST EQUAL :START 50) EQUAL 50) 15
16 Atribuição > (setf var1 20 var2 30) 30 > (psetf var1 100 var2 (+ var1 10)) NIL > var1 100 > var2 30 > 16
17 Constantes e variáveis globais USER(35): (defconstant VALOR-PI ) VALOR-PI USER(36): VALOR-PI USER(37): (setf VALOR-PI 3.14) Error: Cannot change the value of VALOR-PI -- it is a constant. 17
18 Constantes e variáveis globais USER(7): (defvar *ano* 2000) *ANO* USER(8): *ano* 2000 USER(9): (setf *ano* 2001) 2001 USER(10): (defvar *ano* 2005) *ANO* USER(11): *ano*
19 Constantes e variáveis globais USER(1): (defparameter *idade* 25) *IDADE* USER(2): *idade* 25 USER(3): (setf *idade* 23) 23 USER(4): *idade* 23 USER(5): (defparameter *idade* 18) *IDADE* USER(6): *idade* 18 19
20 Variáveis locais (let ((x 10)) (+ (let ((x 11) (y (+ x 4))) (+ x y)) (+ x 2))) > 37 (let ((x 10)) (+ (let* ((x 11) (y (+ x 4))) (+ x y)) (+ x 2))) > 38 20
21 Closures (defun contador () (let ((x 0)) # (lambda () (incf x)))) > (setf *contador-1* (contador)) #<Interpreted Closure (:INTERNAL #x20bd785a> > (funcall *contador-1*) 1 > (funcall *contador-1*) 2 > (setf *contador-2* (contador)) #<Interpreted Closure (:INTERNAL #x20bf8152> > (funcall *contador-2*) 1 21
22 Funções locais (defun soma-quadrados (x y) (flet ((quadrado (x) (* x x))) (+ (quadrado x) (quadrado y)))) (defun posicao (el l) (labels ((posicao-aux (pos l) (cond ((null l) nil) ((= el (first l)) pos) (t (posicao-aux (1+ pos) (rest l)))))) (posicao-aux 1 l))) 22
23 Devolver Múltiplos Valores > (values 1 2) 1 2 > (values 1 2 3) > (values) > (values 1) 1 > 23
24 Devolver Múltiplos Valores multiple-value-list form => list multiple-value-setq vars form => result > (multiple-value-setq (quotient remainder) (truncate 3.2 2)) 1 > quotient 1 > remainder 1.2 > 24
25 Devolver Múltiplos Valores multiple-value-bind (var*) values-form declaration* form* > (multiple-value-bind (f r) (floor 103 5) (list f r)) (20 3) > 25
26 Ciclos > (let ((n 0)) (loop (print (1+ n)) (setq n (1+ n)) (when (> n 100) (return 'fim)))) FIM > (do ((n 0 (1+ n))) ((>= n 100) 'fim) (print (1+ n))) FIM 26
27 Ciclos > (dotimes (n 100 'fim) (print (1+ n))) FIM > (dolist (n '(a b c) 'fim) (print n)) A B C FIM 27
28 Arrays USER(3): (array-dimensions #((1 2)(3 4))) (2) USER(1): (setf array1 (make-array '(3 3) :initial-contents '((1 2 3) (4 5 6) (7 8 9)))) #2A((1 2 3) (4 5 6) (7 8 9)) USER(2): (setf array2 (make-array '(3 3) :initial-element 1)) #2A((1 1 1) (1 1 1) (1 1 1)) USER(6): (array-dimensions array1) (3 3) USER(5): (aref array1 0 1) 2 USER(8): (setf (aref array1 0 2) 0) 0 USER(9): array1 #2A((1 2 0) (4 5 6) (7 8 9)) 28
29 Arrays > (defun conta-negativos (array-tri-dim) (let ((num-negativos 0)) (dotimes (i (array-dimension array-tri-dim 0) num-negativos) (dotimes (j (array-dimension array-tri-dim 1)) (dotimes (k (array-dimension array-tri-dim 2)) (if (< (aref array-tri-dim i j k) 0) (incf num-negativos))))))) CONTA-NEGATIVOS > (setf a1 (make-array '(2 2 2) :initial-contents '(((-1 2) (-1 2)) ((-1 2) (-1 2))))) #3A(((-1 2) (-1 2)) ((-1 2) (-1 2))) > (conta-negativos a1) 4 29
30 Structures Criação de um novo tipo de structure ALUNO : > (defstruct aluno nome numero ano) ALUNO São criadas automaticamente as primitivas: make-aluno, aluno-nome, aluno-numero, aluno-ano, aluno-p, copy-aluno > (setf aluno-1 (make-aluno)) #S(ALUNO :NOME NIL :NUMERO NIL :ANO NIL) > (aluno-nome aluno-1) NIL > (aluno-numero aluno-1) NIL > (aluno-ano aluno-1) NIL > (setf (aluno-nome aluno-1) "João Pereira") "João Pereira" > (aluno-nome aluno-1) "João Pereira" 30
31 Structures > (setf aluno-2 (make-aluno :nome "Luís" :numero :ano 2003)) #S(ALUNO :NOME "Luís" :NUMERO :ANO 2003) > (aluno-nome aluno-2) "Luís" > (aluno-p aluno-2) T > (setf aluno-3 (copy-aluno aluno-2)) #S(ALUNO :NOME "Luís" :NUMERO :ANO 2003) > (eq aluno-2 aluno-3) NIL 31
32 Hash Tables make-hash-table &key test size rehash-size rehashthreshold => hash-table Test é por defeito a função eql. Só é possível usar eql, eq e equal. gethash key hash-table &optional default => value, present-p hash-table-p object => generalized-boolean hash-table-count hash-table => count 32
33 Hash Tables > (setq table (make-hash-table)) #<EQL hash-table with 0 #x20ccb42a> > (gethash 1 table) NIL NIL > (setf (gethash 1 table) "one") "one > (gethash 1 table) "one T > 33
34 Hash Tables remhash key hash-table => generalized-boolean clrhash hash-table => hash-table maphash function hash-table => nil 34
35 Hash Tables > (setq table (make-hash-table)) #<EQL hash-table with 0 #x20cd88fa> > (dotimes (i 10) (setf (gethash i table) i)) NIL > (let ((sum-of-squares 0)) (maphash #'(lambda (key val) (let ((square (* val val))) (incf sum-of-squares square) (setf (gethash key table) square))) table) sum-of-squares)
36 Macros Uma macro é uma forma LISP que é expandida para outra forma. > (defmacro nil! (x) (list 'setf x nil)) NIL! > (setf a 5) 5 > a 5 > (nil! a) NIL > a NIL 36
37 Macros > (macroexpand-1 '(nil! a)) (SETF A NIL) T > (macroexpand '(nil! a)) (LET* ((#:G NIL)) (SETQ A #:G114294)) T 37
38 Macros > (defmacro while (test &rest body) (list* 'loop (list 'unless test '(return nil)) body)) WHILE > (setf i 8) 8 > (while (< i 10) (print (* i i)) (incf i)) NIL > (macroexpand-1 '(while (< i 10) (print (* i i)) (incf i))) (LOOP (UNLESS (< I 10) (RETURN NIL)) (PRINT (* I I)) (INCF I)) T 38
39 Macros Uso de backquote, vígula > (defmacro while-2 (test &rest body) `(loop (unless,test (return nil)),@body)) WHILE-2 > (macroexpand-1 '(while-2 (< i 10) (print (* i i)) (incf i))) (LOOP (UNLESS (< I 10) (RETURN NIL)) (PRINT (* I I)) (INCF I)) T > (macroexpand-1 '(while (< i 10) (print (* i i)) (incf i))) (LOOP (UNLESS (< I 10) (RETURN NIL)) (PRINT (* I I)) (INCF I)) T 39
40 Macros > (defmacro for (var start stop &body body) `(do ((,var,start (1+,var))) FOR > (macroexpand-1 '(for i 10 (fact 4) (print i))) (DO ((I 10 (1+ I))) ((> I (FACT 4))) (PRINT I)) 40
41 Macros Versão que não avalia repetidamente a forma de paragem > (defmacro for (var start stop &body body) `(do ((,var,start (1+,var)) (gstop,stop)) ((>,var gstop)),@body)) FOR 41
42 Macros Problemas > (for i (print i)) NIL > (for i (decf gstop) (print gstop)) NIL 42
43 Macros Utilização de gensym > (defmacro for (var start stop &body body) (let ((gstop (gensym))) `(do ((,var,start (1+,var)) (,gstop,stop)) FOR > (macroexpand-1 '(for i 10 (fact 4) (print i))) (DO ((I 10 (1+ I)) (#:G (FACT 4))) ((> I #:G114334)) (PRINT I)) T > (macroexpand-1 '(for i 10 (fact 4) (print i))) (DO ((I 10 (1+ I)) (#:G (FACT 4))) ((> I #:G114336)) (PRINT I)) T 43
44 Desenvolvimento Lisp 1- Desenvolvimento de um prototipo rápido, utilizando abstracção para facilitar as mudanças 2 - Instrumentação do programa atravs do profiling, de maneira a determinar onde é que se perde a maioria do tempo (regra dos 10%) 3 - Substituir as partes lentas por partes mais rápidas. 3.1 Alto nível Transformar processos recursivos em iterativos Memoization Lazy Evaluation 3.2 Baixo nível Evitar listas de argumentos complexas Evitar funções genéricas Evitar consing (utilização de funções destrutivas) Declarações Usar o tipo correcto de dados 44
45 Processos recursivos vs iterativos Recursão com operações adiadas processo recursivo (defun my-length (lst) (if (null lst) 0 (1+ (my-length (cdr lst))))) Recursão sem operações adiadas processo iterativo (defun my-length-tail (lst) (labels ((len (lst acc) (if (null lst) acc (len (cdr lst) (1+ acc))))) (len lst 0))) 45
46 Memoization Valores calculados por uma função são armazenados para posterior reulitização (let ((table (make-hash-table))) (defun fib (n) (multiple-value-bind (val found-p) (gethash n table) (if found-p val (setf (gethash n table) (if (<= n 1) 1 (+ (fib (1- n)) (fib (- n 2))))))))) 46
47 Memoization Generalização (defun memo (fn) (let ((table (make-hash-table))) #'(lambda (arg) (multiple-value-bind (val found-p) (gethash arg table) (if found-p val (setf (gethash arg table) (funcall fn arg))))))) 47
48 Memoization > (setf fact-fn (memo #'fact)) > (funcal fact-fn 5) > (trace fact) (FACT) > (funcall fact-fn 5) 0: (FACT 4) 1: (FACT 3) 2: (FACT 2) 3: (FACT 1) 3: returned 1 2: returned 2 1: returned 6 0: returned > (funcall fact-fn 5) 120 > (funcall fact-fn 6) 0: (FACT 5) 1: (FACT 4) 2: (FACT 3) 3: (FACT 2) 4: (FACT 1) 4: returned 1 3: returned 2 2: returned 6 1: returned 24 0: returned
49 Memoization Melhorias (defun memoize (fn-name) (setf (fdefinition fn-name) (memo (fdefinition fn-name)))) (defun memo (fn) (let ((table (make-hash-table :test #'equal))) #'(lambda (&rest args) (multiple-value-bind (val found-p) (gethash args table) (if found-p val (setf (gethash args table) (apply fn args))))))) 49
50 Memoization > (trace fact) > (memoize 'fact) #<Interpreted Closure (:INTERNAL #x280eb2aa> CL-USER(19): (fact 5) 0[9]: ((:INTERNAL MEMO) 5) 1[9]: ((:INTERNAL MEMO) 4) 2[9]: ((:INTERNAL MEMO) 3) 3[9]: ((:INTERNAL MEMO) 2) 4[9]: ((:INTERNAL MEMO) 1) 5[9]: ((:INTERNAL MEMO) 0) 5[9]: returned 1 4[9]: returned 1 3[9]: returned 2 2[9]: returned 6 1[9]: returned 24 0[9]: returned > (fact 5) 0[9]: ((:INTERNAL MEMO) 5) 0[9]: returned > (fact 6) 0[9]: ((:INTERNAL MEMO) 6) 1[9]: ((:INTERNAL MEMO) 5) 1[9]: returned 120 0[9]: returned > 50
51 Avaliação vs Compilação > (defun fib (n) (if (<= n 1) 1 (+ (fib (- n 1)) (fib (- n 2))))) FIB > (time (fib 30)) ; cpu time (non-gc) 46,126 msec user, 0 msec system ; cpu time (gc) 23,755 msec user, 0 msec system ; cpu time (total) 69,881 msec (00:01:09.881) user, 0 msec system ; real time 69,880 msec (00:01:09.880) ; space allocation: ; 26,925,472 cons cells, 0 symbols, 86,164,448 other bytes, 0 static bytes
52 Avaliação vs Compilação > (compile 'fib) FIB NIL NIL > (time (fib 30)) ; cpu time (non-gc) 181 msec user, 0 msec system ; cpu time (gc) 0 msec user, 0 msec system ; cpu time (total) 181 msec user, 0 msec system ; real time 180 msec ; space allocation: ; 1 cons cell, 0 symbols, 0 other bytes, 0 static bytes > 52
53 Directivas do Compilador Directivas para modificar a forma como as funções são compiladas em LISP: - speed - diz respeito à velocidade do código gerado - compilation-speed - Velocidade da compilação - safety - quantidade de verificação de erros no código gerado - space - espaço ocupado em memória pelo código gerado - debug - quantidade de informação retida para efeitos de debug Directivas podem ter associado um valor entre: 0 (pouco importante) e 3 (muito importante). Directivas podem ser introduzidas no código: - Globalmente através da instrução declaim - Localmente através da instrução declare 53
54 Directivas do Compilador Globalmente (declaim (optimize (speed 3) (compilation-speed 0) (space 3) (safety 0))) Localmente (defun fact (n) (declare (optimize (speed 3) (safety 0) (debug 0))) (if (= n 0) 1 (* n (fact (- n 1))))) 54
55 Evitar consing Implemantação 1 (defun totais (l) (reduce #'+ (remove-if #'oddp (mapcar #'first l)))) Implementação 2 (defun totais2 (l) (let ((res 0)) (dolist (elm l res) (when (not (oddp (first elm))) (incf res (first elm)))))) 55
56 Evitar consing > (setf *lista* (cria-lista 10000)) (( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )...) > (compile 'totais) TOTAIS NIL NIL > (compile 'totais2) TOTAIS2 NIL NIL 56
57 Evitar consing > (setf *lista* (cria-lista )) (( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )...) > (time (totais *lista*)) ; cpu time (non-gc) 0 msec user, 0 msec system ; cpu time (gc) 62 msec user, 0 msec system ; cpu time (total) 62 msec user, 0 msec system ; real time 62 msec ; space allocation: ; 150,001 cons cells, 1,063,384 other bytes, 0 static bytes
58 Evitar consing > (setf *lista* (cria-lista )) (( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )...) > (time (totais2 *lista*)) ; cpu time (non-gc) 0 msec user, 0 msec system ; cpu time (gc) 16 msec user, 0 msec system ; cpu time (total) 16 msec user, 0 msec system ; real time 16 msec ; space allocation: ; 1 cons cell, 1,063,384 other bytes, 0 static bytes
59 Tipificação Globalmente (declaim (single-float *count*)) Localmente (defun soma (x y) (declare (optimize (size 3) (speed 3) (debug 0) (safety 0)) (fixnum x y)) (+ x y)) 59
60 Tipificação (defun soma (x y) (+ x y)) (compile 'soma) (disassemble 'soma) ;; ;; code start: #x210460cc: ;; 0: 55 pushl ebp ;; 1: 8b ec movl ebp,esp ;; 3: 56 pushl esi ;; 4: 83 ec 24 subl esp,$36 ;; 7: 83 f9 02 cmpl ecx,$2 ;; 10: jz 14 ;; 12: cd 61 int $97 ; EXCL::TRAP-ARGERR ;; 14: 80 7f a3 00 cmpb [edi-93],$0 ; SYS::C_INTERRUPT ;; 18: jz 22 ;; 20: cd 64 int $100 ; EXCL::TRAP-SIGNAL-HIT ;; 22: 8b d8 movl ebx,eax ;; 24: 0b da orl ebx,edx ;; 26: f6 c3 03 testb bl,$3 ;; 29: 75 0e jnz 45 ;; 31: 8b d8 movl ebx,eax ;; 33: 03 da addl ebx,edx ;; 35: jo 45 ;; 37: 8b c3 movl eax,ebx ;; 39: f8 clc ;; 40: c9 leave ;; 41: 8b 75 fc movl esi,[ebp-4] ;; 44: c3 ret ;; 45: 8b 5f 9f movl ebx,[edi-97] ; EXCL::+_2OP ;; 48: ff call *[edi+39] ; SYS::TRAMP-TWO ;; 51: eb f3 jmp 40 ;; 53: 90 nop 60
61 Tipificação (defun soma (x y) (declare (optimize (size 3) (speed 3) (debug 0) (safety 0))) (+ x y)) (compile 'soma) (disassemble 'soma) ;; ;; code start: #x21049d3c: ;; 0: 8b d8 movl ebx,eax ;; 2: 0b da orl ebx,edx ;; 4: f6 c3 03 testb bl,$3 ;; 7: 75 0d jnz 22 ;; 9: 8b d8 movl ebx,eax ;; 11: 03 da addl ebx,edx ;; 13: jo 22 ;; 15: 8b c3 movl eax,ebx ;; 17: f8 clc ;; 18: 8b 75 fc movl esi,[ebp-4] ;; 21: c3 ret ;; 22: 8b 5f 9f movl ebx,[edi-97] ; EXCL::+_2OP ;; 25: ff jmp *[edi+39] ; SYS::TRAMP-TWO 61
62 Tipificação (defun soma (x y) (declare (optimize (size 3) (speed 3) (debug 0) (safety 0)) (fixnum x y)) (+ x y)) (compile 'soma) (disassemble 'soma) ;; ;; code start: #x2104b4cc: ;; 0: 03 c2 addl eax,edx ;; 2: f8 clc ;; 3: 8b 75 fc movl esi,[ebp-4] ;; 6: c3 ret ;; 7: 90 nop 62
Referências bibliograficas: * Paul Graham, Ansi Common Lisp, Prentice Hall, Livro com descrição da linguagem Common-Lisp.
Aulas práticas e 2 de Inteligência Artificial@IS Referências bibliograficas: * Paul Graham, Ansi Common Lisp, Prentice Hall, 996. Livro com descrição da linguagem Common-Lisp. * António Leitão, Introdução
Leia maisCommon-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
Leia maisIntroduçã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
Leia maisLISP - 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
Leia maisIntrodução à Programação Funcional
Introdução à Programação Funcional PPGIA - PUCPR Prof. Fabrício Enembreck Conteúdo Introdução ao Cálculo Lambda e à Programação Funcional Introdução ao LISP e ao Allegro Common Lisp Funções Lambda e binding
Leia maisAbstração de dados. Pedro Kröger. 5 de outubro de Um índice bibliográco poderia ser armazenado dessa maneira:
Abstração de dados Pedro Kröger 5 de outubro de 2006 1 Introdução Um índice bibliográco poderia ser armazenado dessa maneira: (setf livro-1 '((Paradigms of Artificial Inteligence) ; titulo (Peter Norvig)
Leia maisProgramaçã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
Leia maisExercí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
Leia maisAlgoritmo de Dijkstra em LISP
Algoritmo de Dijkstra em LISP Léo Willian Kölln 10 de Agosto de 2006 Curso de Ciências da Computação Programação Funcional - INE5363 INE - Departamento de Informática e Estatística CTC - Centro Tecnológico
Leia maisFundamentos de Programação
Fundamentos de Programação Soluções do primeiro teste 13 de Novembro de 2004 9:00-10:30 Nota Número: 20 Nome: Turma: Escreva o seu número em todas as folhas do teste. O espaço das respostas deve ser limitado
Leia maisProgramação Orientada a Objetos. Programação Funcional
Programação Orientada a Objetos Programação Funcional Cristiano Lehrer, M.Sc. Introdução (1/3) É uma categoria de linguagens não-imperativas. Imperativas: Uso eficiente das arquiteturas de computadores
Leia maisExercícios da cadeira de Introdução à Programação
Exercícios da cadeira de Introdução à Programação Cláudia Antunes Ana Cardoso Cachopo João Cachopo Francisco Couto António Leitão Inês Lynce César Pimentel H. Sofia Pinto Ano Lectivo 2002/2003 Parte II
Leia maisInteligência Artificial Alameda e Taguspark
Inteligência Artificial Alameda e Taguspark Repescagem do Primeiro Teste 13 de Fevereiro de 2009 17H00-18H30 Nome: Número: Este teste tem 7 perguntas e 5 páginas. Escreva o número em todas as páginas.
Leia maisEstruturas de controlo do C if-else statement
Análise do Instruction Set Architecture (3) Alteração do fluxo de execução de instruções Estrutura do tema ISA do IA-32 1. Desenvolvimento de programas no IA-32 em Linux 2. Acesso a operandos e operações
Leia maisProgramando em Assembly
Programando em Assembly precisa-se saber exatamente como interpretar & gerenciar a memória e como usar instruções de baixo nível para o processamento Não existem tipos e variáveis (apenas bytes na memória)
Leia maisInteligência Artificial Taguspark
Inteligência Artificial Taguspark Repescagem do Primeiro Teste 22 de Julho de 2006 9H00-10H30 Nome: Número: Este teste tem 7 perguntas e 12 páginas. Escreva o número em todas as páginas. Deve ter na mesa
Leia maisResolução de 8-Puzzle com A* em LISP
Resolução de 8-Puzzle com A* em LISP Léo Willian Kölln 13 de Agosto de 2006 Curso de Ciências da Computação Programação Funcional - INE5363 INE - Departamento de Informática e Estatística CTC - Centro
Leia maisTipo de argumentos. valor. argumentos
Operação Numero de argumentos Tipo de argumentos valor (+ ) 2 ou + Numérico Soma ( ) 2 ou + Numérico Subtração ( ) 1 Numérico Simétrico (/ ...) 2 ou + Numérico Divisão (cos
Leia maisPROCURA E PLANEAMENTO
POCUA E PLANEAMENTO Primeiro Exame 3 de Janeiro de 007 :00-3:30 Este exame é composto por 3 páginas contendo 6 grupos de perguntas. Identifique já todas as folhas do exame com o seu nome e número. Na mesa
Leia maisFundamentos de Programação
Fundamentos de Programação Primeiro Teste 21 de Abril de 2012 11:30 13:00 Nome: Número: Esta prova, individual e sem consulta, tem 5 páginas com 10 perguntas. A cotação de cada pergunta está assinalada
Leia maisIntel x AT&T - recapitulação
ASSEMBLY aula 2 Intel x AT&T - recapitulação mov mov int mov mov mov mov add lea sub Intel Code eax,1 ebx,0ffh 80h ebx, eax eax,[ecx] eax,[ebx+3] eax,[ebx+20h] eax,[ebx+ecx*2h] eax,[ebx+ecx] eax,[ebx+ecx*4h-20h]
Leia maisLinguagens de programação funcional
Linguagens de programação funcional Linguagens de Programação Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional. http://github.com/malbarbo/na-lp-copl
Leia maisFundamentos de Programação
Fundamentos de Programação Segundo Teste 9 de Junho de 2012 9:00 10:30 Nome: Número: Esta prova, individual e sem consulta, tem 6 páginas com 12 perguntas. A cotação de cada pergunta está assinalada entre
Leia maisINTELIGÊNCIA ARTIFICIAL
INTELIGÊNCIA ARTIFICIAL Primeiro Exame 7 de Julho de 2005 9:00-11:00 Este exame é composto por 9 págínas contendo 8 grupos de perguntas. Identifique já todas as folhas do exame com o seu nome e número.
Leia maisIntroduçã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
Leia maisProgramação Funcional
Programação Funcional Alguns paradigmas: imperativo, lógico, orientado a objetos, funcional Características centrais da programação funcional: Funções de alta ordem Recursão Abstração lambda Outras características
Leia maisInteligência Artificial
Licenciatura em Engenharia Informática e de Computadores Inteligência Artificial Primeiro Teste 31 de Outubro de 2009 09:00 10:30 Nome: Número: Esta prova, individual e sem consulta, tem 9 páginas com
Leia maisExemplo: ; ver exemplo de aplicação abaixo com mapcar. ; retorna uma lista formada pelos elementos indicados. ; retorna o número de elementos na lista
Instituto Superior Técnico Licenciatura em Arquitectura Desenho Assistido por Computador II Ano lectivo 2005/06, 2 ano Responsável: Assistente: Prof. José Pinto Duarte Arq. Deborah Benrós Notas de apoio
Leia maisFundamentos de Programação
Fundamentos de Programação Segundo Teste 6 de Janeiro de 2010 09:00 10:30 Nome: Número: Esta prova, individual e sem consulta, tem 8 páginas com 9 perguntas. A cotação de cada pergunta está assinalada
Leia maisLinguagens 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
Leia maisAlgoritmos de Ordenação em LISP
Algoritmos de Ordenação em LISP Léo Willian Kölln 8 de Agosto de 2006 Curso de Ciências da Computação Programação Funcional - INE5363 INE - Departamento de Informática e Estatística CTC - Centro Tecnológico
Leia maisFundamentos de Programação
Fundamentos de Programação Primeiro Teste 16 de Abril de 2011 09:00 10:30 Nome: Número: Esta prova, individual e sem consulta, tem 7 páginas com 9 perguntas. A cotação de cada pergunta está assinalada
Leia maisLinguagens de Programação
Linguagens de Programação Paradigma Imperativo Matheus Hafner Tiago Xavier CET 087 - Conceitos de Linguagens de Programação (CLP) 10 de novembro de 2011 Sumário 1 Introdução 2 Paradigma imperativo Modelo
Leia maisAssembly do IA-32 em ambiente Linux
Sistemas de Computação 2010/11 Assembly do IA-32 em ambiente Linux Trabalho para Casa: TPC5 Alberto José Proença Objectivo A lista de exercícios propostos em TPC5 para resolução antes e durante a próxima
Leia maisFluxo de Execução em Assembly
Fluxo de Execução em Assembly A forma natural de execução de um programa é sequencial: CPU busca instruções na memória em endereços sequenciais Instruções de desvio de assembly servem para quebrar a execução
Leia maisInteligência Artificial Alameda e Taguspark
Inteligência Artificial Alameda e Taguspark Primeiro Teste 31 de Outubro de 2008 19H00-20H30 Nome: Número: Este teste tem 7 perguntas e 7 páginas. Escreva o número em todas as páginas. Deve ter na mesa
Leia maisEstrutura de uma função ( / procedimento )
Análise do Instruction Set Architecture (4) Estrutura do tema ISA do IA-32 1. Desenvolvimento de programas no IA-32 em Linux 2. Acesso a operandos e operações 3. Suporte a estruturas de controlo 4. Suporte
Leia maisAnexo A. Resumo dos principais procedimentos do Scheme
Para processamento de booleanos Anexo A Resumo dos principais procedimentos do Scheme #f falso #t verdadeiro (boolean? x) se x for booleano, devolve #t se não, devolve #f (and x1 x2 x3...) calcula x1,
Leia maisProgramação Funcional
Programação Funcional 1 funções como valores argumentos resultado em variáveis em estruturas de dados programação sem efeitos colaterais funcionais ou funções de ordem superior recebem e retornam funções
Leia maisMovimentação de código
Avaliação de Desempenho no IA-32 (2) Otimização de código: técnicas independentes da máquina Estrutura do tema Avaliação de Desempenho (IA-32) 1. A avaliação de sistemas de computação 2. Técnicas de otimização
Leia maisA arquitectura IA32. A arquitectura de um processador é caracterizada pelo conjunto de atributos que são visíveis ao programador.
A arquitectura IA32 A arquitectura de um processador é caracterizada pelo conjunto de atributos que são visíveis ao programador. Tamanho da palavra Número de registos visíveis Número de operandos Endereçamento
Leia maisIntrodução à linguagem C++
Estrutura de Dados e Algoritmos e Programação e Computadores II Aula 2: Introdução à linguagem C++ Introdução à linguagem C++ Conceitos básicos: variáveis, tipos de dados, constantes, I/O, etc. Estruturas
Leia maisLista de Linguagens de Programação 7
Lista de Linguagens de Programação 7 Nome: Matrícula: 1. Dizemos que uma linguagem é segura quando esta linguagem não permite que operações sejam aplicadas a argumentos que não possuam os tipos previstos
Leia maisAssembly do IA-32 em ambiente Linux
MIEI: Sistemas de Computação 2015/16 Assembly do IA-32 em ambiente Linux Trabalho para Casa: TPC6 Alberto José Proença Objectivo A lista de exercícios propostos em TPC6 para resolução antes e durante a
Leia maisInteligê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
Leia maisA máquina SECD. Pedro Vasconcelos. 20 de Fevereiro de 2014
A máquina SECD Pedro Vasconcelos 20 de Fevereiro de 2014 O que é a máquina SECD? Um interpretador da linguagem funcional ISWIM (Landin, 1964) Máquina virtual para compilação LISP/Scheme (Henderson, 1980)
Leia maisFundamentos de Programação
Fundamentos de Programação Primeiro Teste 6 de Novembro de 200 09:00 0:30 SOLUÇÃO. (.0) Escolha a única afirmação incorrecta. Uma resposta certa vale valor e uma resposta errada desconta 0.4 valores. A.
Leia maisLinguagem C (continuação)
Linguagem C (continuação) Funções, arrays e ponteiros Slides adaptados, inspirados, muitos copiados dos slides do professor Pedro Pereira Centro de Cálculo Instituto Superior de Engenharia de Lisboa João
Leia maisInteligência Artificial
Inteligência Artificial Segundo Teste 15 de Janeiro de 2015 18:00-19:30 Este teste é composto por 9 páginas contendo 8 grupos de perguntas. Identifique já todas as folhas do teste com o seu nome e número.
Leia maisFundamentos da Programação
Fundamentos da Programação Solução do Primeiro Teste 29 de Março de 2014 09:00 10:30 1. (1.0) O que é um processo computacional? Qual a relação entre um programa e um processo computacional? Um processo
Leia maispara facilitar o trabalho com listas listas Cell model Lista é representada através de uma lista de células
PARADIGMA FUNCIONAL: LISP G Desenvolvida por John McCarthy (1960 para facilitar o trabalho com listas G Programas em Lisp são as próprias listas G Tipos de objetos Átomos - Representados por strings de
Leia maisArquitectura de Computadores Y86 Instruções
Arquitectura de Computadores Y86 Instruções Créditos Randal E. Bryant http://csapp.cs.cmu.edu António Pina e Luís Paulo Santos DI/UM Arquitectura do Jogo de Instruções Linguagem de montagem Estado do processador
Leia maisTestando o Teorema de De Morgan
Pedro Garcia http://www.sawp.com.br 04 de Fevereiro de 2010 Assembly Working Party Laboratório de Cálculos Científicos, Instituto de Física, Universidade de Brasília, Brasil O Teorema Teorema de De Morgan
Leia maisTrabalho 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)
Leia maisSQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.
LINGUAGEM SQL SQL CREATE DATABASE MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL. SQL CREATE TABLE SQL NOT NULL O valor NOT NULL obriga que o campo contenha sempre
Leia maisFundamentos de Programação
Fundamentos de Programação Solução do Segundo Teste 23 de Janeiro de 2012 09:00 10:30 Nome: Número: 1. (1.0) Explique em que consiste a abstracção de dados, usando os termos barreiras de abstracção, encapsulação
Leia maisInteligê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 Complementares de Lisp Inteligência Artificial Prof Joaquim Filipe Eng.
Leia maisPragmática das Linguagens de
Instituto Superior Técnico Pragmática das Linguagens de Programação 2004/2005 Primeiro Exame/Segundo Teste 17/12/2004 Número: Turma: Nome: Escreva o seu número em todas as folhas do teste. O tamanho das
Leia maisRevisões de PG. Programação Orientada por Objetos (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa
Revisões de PG (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa Pedro Alexandre Pereira (palex@cc.isel.ipl.pt) Compilar e executar programas em Java Ficheiro fonte (Prog.java) Ficheiro
Leia maisRevisões de PG. Programação Orientada por Objetos (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa
Revisões de PG (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa Pedro Alexandre Pereira (palex@cc.isel.ipl.pt) Compilar e executar programas em Java Ficheiro fonte (Prog.java) Ficheiro
Leia maisLinguagem Pascal. Prof. Antonio Almeida de Barros Junior
Linguagem Pascal Prof. Antonio Almeida de Barros Junior 1 Linguagem Pascal Criada para ser uma ferramenta educacional (Década de 70); Prof. Niklaus Wirth (Universidade de Zurique); Blaise Pascal (Matemático
Leia maisMovimentação de código
Avaliação de Desempenho no IA-32 (2) Otimização de código: técnicas independentes da máquina Estrutura do tema Avaliação de Desempenho (IA-32) 1. A avaliação de sistemas de computação 2. Técnicas de otimização
Leia maisEstrutura do tema Avaliação de Desempenho (IA-32)
Avaliação de Desempenho no IA-32 (2) Estrutura do tema Avaliação de Desempenho (IA-32) 1. A avaliação de sistemas de computação 2. Técnicas de otimização de código (IM) 3. Técnicas de otimização de hardware
Leia maisFundamentos da Programação
Fundamentos da Programação Exame 9 de Janeiro de 2015 09:00 11:00 1. De um modo sucinto, explique o que é: (a) (0.5) Um processo computacional. Um ente imaterial que existe dentro de um computador durante
Leia maisArquitectura e Organização de Computadores
Arquitectura e Organização de Computadores (micro-arquitectura) atributos visíveis ao programador: I.S.A. tamanho da palavra (bits) registos Componentes que realizam a arquitectura: organização do CPU
Leia maisComputadores de Programação (DCC/UFRJ)
Computadores de Programação (DCC/UFRJ) Aula 14: 04 de junho de 2013 1 2 ...antigamente.. No início da Computação, todos os programas eram escritos em linguagem de montagem Complexidade, propenso a erros,
Leia maisFundamentos da Programação
Fundamentos da Programação Segundo Teste 18 de Junho de 2014 15:00 16:30 1. (1.0) Diga quais as fases por que passa o desenvolvimento de um programa no modelo estudado e o que se faz em cada uma delas.
Leia maisEstudo de caso: codificação de Huffman (parte II)
Estudo de caso: codificação de Huffman (parte II) Profs. Diogo S. Mar ns e Emilio Francesquini {santana.mar ns,e.francesquini}@ufabc.edu.br MCTA016 - Paradigmas de Programação (Prá ca) 24 de julho de 2018
Leia maisComputadores e Programação (MAB ) Lista 2 - Grupo de até 3 alunos - 90 pontos
Computadores e Programação (MAB-353 2017-1) Lista 2 - Grupo de até 3 alunos - 90 pontos Entrega impressa em sala de aula até o dia 04 de maio (mesmo limite da lista1). Grupo: GABARITO... Questão 1 (45
Leia maisAssembly IA32 Procedimentos
1 Procedimentos Assembly IA32 Procedimentos Uma chamada a um procedimento implica a transferência de dados (na forma de parâmetros do procedimento e na forma de valores retornados pelo procedimento) e
Leia maisTÉ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
Leia maisPrincipais paradigmas de programação. Programação imperativa Programação funcional Programação lógica Programação OO
Principais paradigmas de programação Programação imperativa Programação funcional Programação lógica Programação OO Programação Imperativa É o paradigma mais usado. Programas são definidos através de sequências
Leia maisPROCURA E PLANEAMENTO
PROCURA E PLANEAMENTO Primeiro Exame 13 de Janeiro de 2007 11:00-13:30 Este exame é composto por 13 páginas contendo 6 grupos de perguntas. Identifique já todas as folhas do exame com o seu nome e número.
Leia maisNomes, vinculações e escopos
Nomes, vinculações e escopos Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual
Leia maisComputação e Programação
Computação e Programação MEMec, LEAN - 1º Semestre 2015-2016 Aula Teórica 22 Introdução a linguagem compilada C (2) Structs Ponteiros Arrays D.E.M. Área Científica de Controlo Automação e Informática Industrial
Leia maisAssembly do IA-32 em ambiente Linux
MCC Arquitectura de Computadores 2002/2003 Assembly do IA-32 em ambiente Linux Trabalho para Casa: TPC5 Alberto José Proença ------------------------------------------------------------------------------------------------------------------------------------------------
Leia maisEstruturação de Procedimentos
Capítulo 4 Estruturação de Procedimentos 4. Exercícios de revisão. Diga o que entende por linguagem estruturada em blocos. Descreva a regra associada a esta estrutura, e diga qual a sua importância. 2.
Leia maisConceitos de Linguagens de Programação
Conceitos de Linguagens de Programação Aula 09 Programação Funcional (Haskell) Edirlei Soares de Lima Programação Funcional A programação funcional modela um problema computacional
Leia maisINTELIGÊNCIA ARTIFICIAL
INTELIGÊNCIA ARTIFICIAL Primeiro Exame 20 de Junho de 2006 9:00-11:00 Este exame é composto por 11 páginas contendo 8 grupos de perguntas. Identifique já todas as folhas do exame com o seu nome e número.
Leia maisLigação e Relocação. Noemi Rodriguez Ana Lúcia de Moura Raúl Renteria.
Ligação e Relocação Noemi Rodriguez Ana Lúcia de Moura Raúl Renteria http://www.inf.puc-rio.br/~inf1018 Compilação e Ligação hello.c Preprocessador hello.i programa fonte expandido (texto) Compilador hello.s
Leia maisSequências e streams
Sequências e streams Paradigma de Programação Funcional Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional. Conteúdo Sequências
Leia maisT1: T2: T3: T4: T5: T6: T7: T: P: TEÓRICA
T1: T2: T3: T4: T5: T6: T7: T: P: Arquitectura de Computadores I - 2002/03 TEÓRICA As questões devem ser respondidas na própria folha do enunciado. As questões 1 a 4 são de escolha múltipla, e apenas uma
Leia maisControlo de Execução. K&R: Capitulo 3
Controlo de Execução K&R: Capitulo 3 IAED, 2009/2010 Controlo de Execução Instruções e Blocos if else-if switch Ciclos: Instruçõeswhile e for Instruçãodo-while break e continue goto e labels 2 IAED, 2009/2010
Leia maisAlgoritmos II prof. Daniel Oliveira
Algoritmos II prof. Daniel Oliveira Revisar conceitos abordados na disciplina anterior Abordar conceitos vistos com a linguagem C# Variáveis e listas Expressões Estruturas de controle do tipo condicional
Leia maisPROCURA E PLANEAMENTO
PROCURA E PLANEAMENTO Primeiro Exame 20 de Janeiro de 2009 17:00-19:30 Este exame é composto por 14 páginas contendo 6 grupos de perguntas. Identifique já todas as folhas do exame com o seu nome e número.
Leia maisIntrodução ao Assembly
Introdução ao Assembly Movimentação de Dados Operações Aritméticas e Lógicas Noemi Rodriguez Ana Lúcia de Moura http://www.inf.puc-rio.br/~inf1018 Representação de Programas O compilador gera o código
Leia maisTestes de correção (de defeitos)
Testes de correção (de defeitos) Revelam a presença de erros, mas NÃO a ausência Um teste bem sucedido é aquele que descobre o maior número de erros existentes. Deve ser utilizado em conjunto com técnicas
Leia maisCANape/vSignalyzer. Data Mining and Report Examples Offline Analysis V
CANape/vSignalyzer Data Mining and Report Examples Offline Analysis V16.0 2018-07-30 Offline Evaluation Tools On-line Tools CANalyzer. Messages CANoe. Messages CANape. Signals Off-line Tools vsignalyzer
Leia maisNomes, vinculações e escopos
Nomes, vinculações e escopos Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual
Leia maisPalavras Reservadas da Linguagem Java
Palavras Reservadas da Linguagem Java Palavras Reservadas da Linguagem Java: Categorias Tipos de dados primitivos Literais Pseudo-variáveis Desvio e controle de fluxo Pacotes Exceções Modificadores de
Leia maisMC336 - Paradigmas de programação Lisp
MC336 - Paradigmas de programação Lisp João Meidanis c Copyright 2011 J. Meidanis Conteúdo 1 Introdução 4 1.1 Calculando derivadas simbólicas................. 5 1.2 O psiquiatra............................
Leia maisAJProença, Sistemas de Computação, UMinho, 2017/18 1. Componentes (físicos) a analisar: a unidade de processamento / o processador:
Introdução aos Sistemas de Computação (4) Estrutura do tema ISC 1. Representação de informação num computador 2. Organização e estrutura interna dum computador 3. Execução de programas num computador 4.
Leia maisTEÓRICA. lb $t0, 1($t1)
T1: T2: T3: T4: T5: T6: T7: T: P: TEÓRICA As questões devem ser respondidas na própria folha do enunciado. As questões 1 a 4 são de escolha múltipla, e apenas uma das respostas está correcta, valendo 1
Leia maisGetting Started. Pedro Garcia de Janeiro de Assembly Working Party
Pedro Garcia http://www.sawp.com.br 22 de Janeiro de 2010 Assembly Working Party Laboratório de Cálculos Científicos, Instituto de Física, Universidade de Brasília, Brasil Motivação Tópicos 1 Motivação
Leia maisAlgoritmos e Modelação Computacional. Paulo Mateus MEBiom LMAC 2018
Algoritmos e Modelação Computacional Paulo Mateus MEBiom LMAC 2018 Objetivos Edição e compilação de programas Tipos e expressões Declaração de variáveis Atribuição, composição sequencial, iterativa e alternativa
Leia maisSistemas de Tipos. Prof. Alberto Costa Neto Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe
Linguagens de Programação Departamento de Computação Universidade Federal de Sergipe Tipos permitem que dados sejam descritos de forma efetiva Previnem operações sem sentido (ex: 5 * true) Programas mais
Leia maisProva 2 PMR3201 1o. semestre 2016 Prof. Thiago Martins
Prova 2 PMR3201 1o. semestre 2016 Prof. Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço. Os códigos fornecidos na seção Códigos-fonte de apoio podem ser referenciados
Leia maispior caso nas operações de manipulação é O(N) pior caso surge sistematicamente emusos correntes (ex: elementos previamente ordenados)
Tabelas de Dispersão (Hash( Tables) Sumário Definição. Características. Resolução de colisões: dispersão aberta e dispersão fechada. Teste quadrático. Desempenho de tabelas de dispersão. Interface de tabela
Leia maisEstruturas de controle no nível de sentença
Estruturas de controle no nível de sentença Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons
Leia mais