Cadeira de Procura e Planeamento

Tamanho: px
Começar a partir da página:

Download "Cadeira de Procura e Planeamento"

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.

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 mais

Common-Lisp (introdutório).

Common-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 mais

Introdução à Programação Funcional. Conteúdo

Introduçã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 mais

LISP - Introdução. Existem vários dialectos de LISP: COMMON LISP (o mais sofisticado e mais utilizado) Outros: MAC LISP, INTERLISP, XLISP

LISP - 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 mais

Introdução à Programação Funcional

Introduçã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 mais

Abstraçã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 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 mais

Programação Funcional. Programação Funcional LISP. Paradigma de programação baseado em Funções Matemáticas

Programaçã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 mais

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

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 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 mais

Algoritmo de Dijkstra em LISP

Algoritmo 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 mais

Fundamentos de Programação

Fundamentos 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 mais

Programação Orientada a Objetos. Programação Funcional

Programaçã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 mais

Exercícios da cadeira de Introdução à Programação

Exercí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 mais

Inteligência Artificial Alameda e Taguspark

Inteligê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 mais

Estruturas de controlo do C if-else statement

Estruturas 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 mais

Programando em Assembly

Programando 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 mais

Inteligência Artificial Taguspark

Inteligê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 mais

Resolução de 8-Puzzle com A* em LISP

Resoluçã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 mais

Tipo de argumentos. valor. argumentos

Tipo 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 mais

PROCURA E PLANEAMENTO

PROCURA 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 mais

Fundamentos de Programação

Fundamentos 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 mais

Intel x AT&T - recapitulação

Intel 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&plus;3] eax,[ebx+20h] eax,[ebx+ecx*2h] eax,[ebx+ecx] eax,[ebx+ecx*4h-20h]

Leia mais

Linguagens de programação funcional

Linguagens 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 mais

Fundamentos de Programação

Fundamentos 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 mais

INTELIGÊNCIA ARTIFICIAL

INTELIGÊ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 mais

Introdução à Programação Funcional

Introduçã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 mais

Programação Funcional

Programaçã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 mais

Inteligência Artificial

Inteligê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 mais

Exemplo: ; ver exemplo de aplicação abaixo com mapcar. ; retorna uma lista formada pelos elementos indicados. ; retorna o número de elementos na lista

Exemplo: ; 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 mais

Fundamentos de Programação

Fundamentos 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 mais

Linguagens de Programação Funcional

Linguagens 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 mais

Algoritmos de Ordenação em LISP

Algoritmos 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 mais

Fundamentos de Programação

Fundamentos 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 mais

Linguagens de Programação

Linguagens 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 mais

Assembly do IA-32 em ambiente Linux

Assembly 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 mais

Fluxo de Execução em Assembly

Fluxo 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 mais

Inteligência Artificial Alameda e Taguspark

Inteligê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 mais

Estrutura de uma função ( / procedimento )

Estrutura 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 mais

Anexo A. Resumo dos principais procedimentos do Scheme

Anexo 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 mais

Programação Funcional

Programaçã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 mais

Movimentação de código

Movimentaçã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 mais

A 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. 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 mais

Introdução à linguagem C++

Introduçã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 mais

Lista de Linguagens de Programação 7

Lista 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 mais

Assembly do IA-32 em ambiente Linux

Assembly 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 mais

Inteligência Artificial

Inteligê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 mais

A máquina SECD. Pedro Vasconcelos. 20 de Fevereiro de 2014

A 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 mais

Fundamentos de Programação

Fundamentos 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 mais

Linguagem C (continuação)

Linguagem 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 mais

Inteligência Artificial

Inteligê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 mais

Fundamentos da Programação

Fundamentos 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 mais

para facilitar o trabalho com listas listas Cell model Lista é representada através de uma lista de células

para 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 mais

Arquitectura de Computadores Y86 Instruções

Arquitectura 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 mais

Testando o Teorema de De Morgan

Testando 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 mais

Trabalho de Programação Funcional Linguagem Scheme

Trabalho 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 mais

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.

SQL 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 mais

Fundamentos de Programação

Fundamentos 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 mais

Inteligência Artificial

Inteligê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 mais

Pragmática das Linguagens de

Pragmá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 mais

Revisões de PG. Programação Orientada por Objetos (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa

Revisõ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 mais

Revisões de PG. Programação Orientada por Objetos (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa

Revisõ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 mais

Linguagem Pascal. Prof. Antonio Almeida de Barros Junior

Linguagem 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 mais

Movimentação de código

Movimentaçã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 mais

Estrutura do tema Avaliação de Desempenho (IA-32)

Estrutura 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 mais

Fundamentos da Programação

Fundamentos 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 mais

Arquitectura e Organização de Computadores

Arquitectura 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 mais

Computadores de Programação (DCC/UFRJ)

Computadores 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 mais

Fundamentos da Programação

Fundamentos 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 mais

Estudo de caso: codificação de Huffman (parte II)

Estudo 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 mais

Computadores e Programação (MAB ) Lista 2 - Grupo de até 3 alunos - 90 pontos

Computadores 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 mais

Assembly IA32 Procedimentos

Assembly 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 mais

TÉCNICO DE INFORMÁTICA - SISTEMAS

TÉ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 mais

Principais 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 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 mais

PROCURA E PLANEAMENTO

PROCURA 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 mais

Nomes, vinculações e escopos

Nomes, 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 mais

Computação e Programação

Computaçã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 mais

Assembly do IA-32 em ambiente Linux

Assembly 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 mais

Estruturação de Procedimentos

Estruturaçã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 mais

Conceitos de Linguagens de Programação

Conceitos 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 mais

INTELIGÊNCIA ARTIFICIAL

INTELIGÊ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 mais

Ligaçã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. 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 mais

Sequências e streams

Sequê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 mais

T1: T2: T3: T4: T5: T6: T7: T: P: TEÓRICA

T1: 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 mais

Controlo de Execução. K&R: Capitulo 3

Controlo 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 mais

Algoritmos II prof. Daniel Oliveira

Algoritmos 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 mais

PROCURA E PLANEAMENTO

PROCURA 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 mais

Introdução ao Assembly

Introduçã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 mais

Testes de correção (de defeitos)

Testes 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 mais

CANape/vSignalyzer. Data Mining and Report Examples Offline Analysis V

CANape/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 mais

Nomes, vinculações e escopos

Nomes, 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 mais

Palavras Reservadas da Linguagem Java

Palavras 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 mais

MC336 - Paradigmas de programação Lisp

MC336 - 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 mais

AJProença, Sistemas de Computação, UMinho, 2017/18 1. Componentes (físicos) a analisar: a unidade de processamento / o processador:

AJProenç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 mais

TEÓRICA. lb $t0, 1($t1)

TEÓ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 mais

Getting Started. Pedro Garcia de Janeiro de Assembly Working Party

Getting 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 mais

Algoritmos e Modelação Computacional. Paulo Mateus MEBiom LMAC 2018

Algoritmos 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 mais

Sistemas de Tipos. Prof. Alberto Costa Neto Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe

Sistemas 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 mais

Prova 2 PMR3201 1o. semestre 2016 Prof. Thiago Martins

Prova 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 mais

pior caso nas operações de manipulação é O(N) pior caso surge sistematicamente emusos correntes (ex: elementos previamente ordenados)

pior 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 mais

Estruturas de controle no nível de sentença

Estruturas 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