Fundamentos de Programação

Documentos relacionados
Fundamentos de Programação

Fundamentos de Programação

Estruturação de Procedimentos

Fundamentos de Programação

Fundamentos da Programação

Fundamentosde Programação

Exercícios para Fundamentos da Programação Utilizando Múltiplos Paradigmas

Fundamentos da Programação

Fundamentos da Programação

Fundamentos da Programação

Fundamentos de Programação

PROGRAMAÇÃO EM SCHEME:

Fundamentos de Programação

Fundamentos da Programação

Fundamentos da Programação

Fundamentos da Programação

FUNDAMENTOS DA PROGRAMAÇÃO 1º Teste, 19 de abril de 2013, 1h30m

Exercícios para Fundamentos da Programação

Fundamentos da Programação

Fundamentos da Programação

Fundamentos da Programação

Fundamentos de Programação

Introdução à Programação

Exercícios para Fundamentos da Programação Utilizando Múltiplos Paradigmas

2. Diga qual é a diferença entre tipos de informação elementares e tipos de informação estruturados.

Tipo de argumentos. valor. argumentos

PROCURA E PLANEAMENTO

Programação imperativa

Fundamentos da Programação

Inteligência Artificial Alameda e Taguspark

Fundamentos de Programação

Tuplos e Ciclos Contados

1º Exame de INTRODUÇÃO À PROGRAMAÇÃO Licenciatura em Engenharia Mecânica 30 de Junho de º Semestre

LÓGICA DE PROGRAMAÇÃO INTRODUÇÃO À PROGRAMAÇÃO DE COMPUTADORES

Teoria da Computação. Exercícios. 1 Máquinas de Registos Ilimitados 2013/2014

ÍNDICE. PREFÁCIO xv. 3 PROCESSOS GERADOS POR PROCEDIMENTOS Recursão Linear Cálculo de potências Cálculo de factoriais 91

Correção do 1º Exame de INTRODUÇÃO À PROGRAMAÇÃO Licenciatura em Engenharia Mecânica 30 de Junho de 2006, 2º Semestre

if not(isinstance(a, int)) or a < 0: raise ValueError ("misterio: arg nao e inteiro nao negativo") else: return misterio_aux(a, a + 1)

Introdução a Computação

Fundamentos da Programação

PROGRAMAÇÃO E ALGORITMOS (LEI) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2016/2017

USANDO UM MÉTODO INDUTIVO PARA RESOLVER PROBLEMAS. Bruno Maffeo Departamento de Informática PUC-Rio

FACULDADE LEÃO SAMPAIO

ALGORITMOS AULA 1. Profª Amanda Gondim

Fundamentos da Programação de Computadores

Fundamentos da Programação

Computação e Programação Exame Época de recurso

UNIVERSIDADE TÉCNICA DE LISBOA INSTITUTO SUPERIOR TÉCNICO

ALGORITMOS E ESTRUTURA DE DADOS

Disciplina de Algoritmos e Programação

a) Procurar um elemento em um vetor ordenado ou em um vetor não ordenado;

Introdução à Programação

(a) Indique, em português, o que realiza a seguinte função. [4 pontos]

MAT 104 Cálculo 1 Prof. Paolo Piccione. Prova

MAT 104 Cálculo 1 Prof. Paolo Piccione. Prova

MAT 111 Cálculo Diferencial e Integral I. Prova 2 14 de Junho de 2012

MAT 111 Cálculo Diferencial e Integral I. Prova 2 14 de Junho de 2012

PROCURA E PLANEAMENTO

Aulas Anteriores. Detalhes da linguagem de programação

Programação II RECURSÃO

MAT 3210 Cálculo Diferencial e Integral II. Prova 1 A

MAT 3210 Cálculo Diferencial e Integral II. Prova 1 B

MAT 3210 Cálculo Diferencial e Integral II. Prova 1 D

Inteligência Artificial Alameda e Taguspark

Introdução à Programação de Computadores Fabricação Mecânica

Conceitos de Linguagem de Programação - 2

MAT 111 Cálculo Diferencial e Integral I. Prova 2 5 de junho de 2014

MAT 111 Cálculo Diferencial e Integral I. Prova 2 5 de junho de 2014

MAT 111 Cálculo Diferencial e Integral I. Prova 2 5 de junho de 2014

Notas sobre Definições Recursivas

Aula 05: - Recursão (parte 1)

Conceitos básicos de algoritmos

Linguagens de Programação Aula 14

U.C Matemática Finita. 16 de junho de 2014

ALGORITMOS. O que é Algoritmo? Algoritmo é um dos processo para criação

AVALIAÇÃO DA CAPACIDADE PARA A FREQUÊNCIA DO CURSO DE LICENCIATURA EM ENGENHARIA ELETRÓNICA E TELECOMUNICAÇÕES E DE COMPUTADORES

INFORMÁTICA APLICADA AULA 02 ALGORITMOS

LINGUAGEM E TECNICAS DE PROGRAMAÇÃO

Sumário. Computador. Processador. Computador Noção de algoritmo Linguagem de programação Léxico, sintaxe e semântica Gramáticas Fluxogramas

INTELIGÊNCIA ARTIFICIAL

Ficha de Avaliação Sumativa. Notas Gerais:

Figura 3.1: Fluxograma do algoritmo da Programação Genética.

INTELIGÊNCIA ARTIFICIAL

algoritmo "exercício 5" var x, y, aux: inteiro inicio escreva ("Entre com um valor inteiro p/ variável x: ") leia (x) escreva ("Entre com um valor

TÉCNICO DE INFORMÁTICA - SISTEMAS

Lógica de Programação

Inteligência Artificial

Inteligência Artificial

Algoritmos e Estruturas de Dados I Linguagem C

Algoritmos Computacionais

É neste ponto que entra o conceito de lógica de programação.

INSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados

Algoritmos. Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi

Projeto de Compiladores

2. Criação de Algoritmos

Introdução à Ciência da Computação

Nome: Número: Primeira Parte (3 valores) Segunda Parte (7 valores) PERGUNTA 1.1 PERGUNTA RESPOSTA NOTA

Engenharia de Software

Computação e Programação Exame Época de recurso

Transcriçã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. A tradução de 3+6x para a notação do Scheme origina (+ 3 (* 6 x)). B. A tradução da expressão 5(x + 2)/3 para a notação do Scheme origina (/ (* 5 (+ x 2)) 3). C. A tradução da expressão 5(3 + f(x)) para a notação do Scheme origina (* 5 (+ 3 f(x))). D. A tradução da expressão z/y +2para a notação do Scheme origina (+ (/ z y) 2). C. 2. (2.0) Escolha a única resposta correcta para as seguintes questões. Cada resposta certa vale valor e cada resposta errada desconta 0.4 valores. (a) O valor da expressão ((lambda (x) (* x ((lambda (x) (* x x)) x))) 5) é: A. Um erro de execução B. #<procedure> C. 25 D. 5 C. (b) Considere a seguinte interacção em Scheme: > (define x ) > (define y 2) > (let ((x y) (y (+ x 2))) (* x y)) O resultado de avaliar a expressão let origina: A. Um erro de execução B. 6 C. 8 D. 2 B.

Número: Pág. 2 de 6 3. (.5) Defina um procedimento anónimo em Scheme que recebe dois números inteiros e que devolve o número real correspondente à soma dos seus argumentos. O seu procedimento não precisa de verificar se os argumentos são inteiros. (lambda (x y)(*.0 (+ x y))) 4. De um modo sucinto, (a) (0.5) Diga o que é um processo computacional Um ente imaterial que existe dentro de um computador durante a execução de um programa, e cuja evolução ao longo do tempo é ditada pelo programa. (b) (0.5) Diga o que é um algoritmo Uma sequência de passos, bem definida e sem ambiguidades, que, sendo seguida mecanicamente, garante atingir um dado objectivo. (c) (0.5) Diga o que é um procedimento Uma sequência de instruções escritas numa linguagem de programação que definem como atingir um dado objectivo. (d) (0.5) Relacione os três conceitos anteriores. Um procedimento corresponde a um algoritmo escrito numa linguagem de programação. A execução de um procedimento origina um processo computacional. 5. Considere as seguintes definições em notação BNF: <ling> ::= <início><meio><fim> <início> ::= { ( <fim> ::= } ) <meio> ::= <símbolo> <símbolo>, <meio> <símbolo> ::= a b c (a) (0.5) Diga quais são os símbolos terminais. {(}),abc (b) (0.5) Diga quais são os símbolos não terminais. ling início meio fim símbolo (c) (0.5) Para cada uma das seguintes frases, indique se esta pertence ou não pertence à linguagem (todas as frases têm igual cotação). Frase Pertence Não pertence { } X {a} X {a, b) X (a b) X (a, a, a, c, b, b, b) X

Número: Pág. 3 de 6 6. Considere o problema de somar todos os dígitos de um número inteiro. Por exemplo, a soma dos dígitos do número 342 é 9. (a) (.5) Escreva um procedimento que soma os dígitos de um número inteiro utilizando um processo recursivo. O seu procedimento não precisa de verificar se o argumento é um inteiro. (define (soma-digitos-rec n) (if (= n 0) 0 (+ (remainder n 0) (soma-digitos-rec (quotient n 0))))) (b) (.5) Escreva um procedimento que soma os dígitos de um número inteiro utilizando um processo iterativo. O seu procedimento não precisa de verificar se o argumento é um inteiro. (define (soma-digitos-iter n) (define (soma-aux n res) (if (= n 0) res (soma-aux (quotient n 0)(+ (remainder n 0) res)))) (soma-aux n 0)) 7. Considere o seguinte procedimento: (define (p-p a b) (define (p-a x) (if (> x 3) (* x b) (p-a (+ x 3)))) (p-a a)) (a) (.5) Com base nas regras utilizadas pelo interpretador do Scheme para avaliar uma combinação, desenhe a árvore que representa o funcionamento deste procedimento com a avaliação de (p-p 5). Mostre todos os ambiente criados e a avaliação de todos os nomes até chegar apenas a constantes e a procedimentos primitivos.

Número: Pág. 4 de 6 (p-p 5)? p-p : (lambda (a b)...) 5 (lambda (a b) (define (p-a x)...) (p-a a)) {z } (define (p-a x) (if...)? (p-a a) a : b : 5 p-a : (lambda (x)...) (lambda (x) (if (> x 3)...) {z } (if (> x 3) (* x b) (p-a (+ x 3))))? x : (p-a (+ x 3)))? (lambda (x) 4 (if (> x 3)...) {z } (if (> x 3) (* x b) (p-a (+ x 3))))? x : 4 (* x b)? #<primitive *> 4 5 (b) (.5) Considere todos nomes a que o procedimento p-a pode aceder (com excepção dos nomes pré-definidos em Scheme). Classifique-os como locais, livres e globais.

Número: Pág. 5 de 6 p-p: global p-a, a, b: livre x: local 8. Considere o seguinte procedimento: (define (m-p x y) (define (m-p-a z) (if (= z 0) (/ (m-p-a (- z )) x))) (m-p-a y)) (a) (.5) Apresente a evolução do processo na avaliação de (m-p 2 4) (m-p 2 4) (m-p-a 4) (/ (m-p-a 3) 2) (/ (/ (m-p-a 2) 2) 2) (/ (/ (/ (m-p-a ) 2) 2) 2) (/ (/ (/ (/ (m-p-a 0) 2) 2) 2) 2) (/ (/ (/ (/ 2) 2) 2) 2) (/ (/ (/ /2 2) 2) 2) (/ (/ /4 2) 2) (/ /8 2) /6 (b) (.5) O procedimento gera um processo recursivo ou iterativo? Justifique a sua resposta. O procedimento gera um processo recursivo pois existe uma fase de expansão devido à existência de operações adiadas (a divisão) seguido de uma fase de contracção que corresponde à execução dessas operações. (c) (.5) Se o procedimento gerar um processo recursivo, escreva um procedimento equivalente que gere um proceso iterativo; se o procedimento gerar um processo iterativo, escreva um procedimento equivalente que gere um proceso recursivo. (define (m-p x y) (define (m-p-a v z) (if (= z 0) v (m-p-a (/ v x)(- z )))) (m-p-a y)) 9. (.5) O logaritmo, base e, de um número chama-se logaritmo natural e é representado por ln. Uma das formas de calcular o logaritmo natural de um número corresponde a utilizar a fórmula ln(y) =2 n=0 2n + ( ) y 2n+ y +

Número: Pág. 6 de 6 Escreva um procedimento em Scheme que calcula o logaritmo natural de um número utilizando o método de cálculo anterior. É evidente que o seu procedimento não pode somar indefinidamente, pelo que terá de conter uma decisão para paragem. Pode utilizar o procedimento primitivo expt, em que (expt b e) devolve b e. Não é permitida a utilização do procedimento primitivo log. (define (ln y) (define (calc-ln y n) (let* ((doisn-mais-um (+ (* 2 n) )) (termo (* 2 (/.0 doisn-mais-um) (expt (/ (- y )(+ y )) doisn-mais-um)))) (if (desprezável? termo) termo (+ termo (calc-ln y (+ n )))))) (calc-ln y 0)) (define (desprezável? t) (< t 0.00000))