Fundamentos da Programação de Computadores

Documentos relacionados
Programação imperativa

Fundamentos de Programação

Fundamentos de Programação

Fundamentos de Programação

Fundamentos de Programação

Tipo de argumentos. valor. argumentos

Algoritmos Fundamento e Prática

Conceitos de Linguagem de Programação - 2

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

Fundamentos de Programação

Fundamentos da Programação

Fundamentos de Programação

Fundamentos de Programação

Fundamentos de Programação

Fundamentos da Programação

Exercícios para Fundamentos da Programação

Fundamentos da Programação

Encriptação de Mensagens

I LINGUAGENS E PROCESSADORES: INTRODUÇÃO 1

Estrutura de Dados e Lógica de Programação. Cátia Alves Marcelo Nunes 102 h/a 17/08/2015 a 12/12/2015

Computação e Programação

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

Aula Prática 2. Paradigmas da Programação I / Programação Funcional

AVALIAÇÃO DA CAPACIDADE PARA A FREQUÊNCIA DO CURSO DE LICENCIATURA EM

PROVA Duração da prova: 120 minutos. Grupo 1 - Três questões de resposta múltipla de matemática.

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

A palavra ALGORITMO teve origem com um Matemático Persa, al. Khawarizmi. O seu trabalho mais famoso foi Al-jabr walmuquabalah,

Prova Escrita de Matemática Aplicada às Ciências Sociais

Teste Intermédio de Matemática A Matemática A Versão 1 10.º Ano de Escolaridade COTAÇÕES GRUPO I 50 pontos GRUPO II

Prova Escrita de Matemática A

Estruturas de Decisão. APROG (Civil) Aula 6

AVALIAÇÃO DA CAPACIDADE PARA A FREQUÊNCIA DO CURSO DE LICENCIATURA EM

ao paradigma imperativo

BCC Introdu c ao ` a Programa c ao Portugol Guillermo C amara-ch avez UFOP 1/35

1ª LISTA DE EXERCÍCIOS

PROVA Duração da prova: 120 minutos

Fundamentos da Programação

CURSO DE ENGENHARIA DE COMPUTAÇÃO REGULAMENTO DO TRABALHO DE CONCLUSÃO DE CURSO (TCC) CAPÍTULO I DAS DISPOSIÇÕES PRELIMINARES

Compilador de LP3 para C3E e P3

Introdução à Programação em C (I)

Programação Funcional Apontamentos (Versão 1.16)

Laboratórios de Comunicações III MiECom (2 o ano)

Fundamentos da Programação

CAPÍTULO I DAS DISPOSIÇÕES PRELIMINARES

INTELIGÊNCIA ARTIFICIAL E SISTEMAS DE DECISÃO Ano Lectivo 2005/2006 Semestre de Inverno. 1º Exame, 13/Janeiro/2006

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

Teste Intermédio de Matemática A Matemática A Versão 1 11.º Ano de Escolaridade COTAÇÕES GRUPO I 50 pontos GRUPO II 150 pontos

Introdução à Computação. Estruturas de Decisão. ISEP DEI, Angelo Martins 2006 Estruturas de Decisão - 1

1 Autómatos Finitos Deterministas

Expressões Condicionais

UNIVERSIDADE LUSÍADA DE LISBOA. Programa da Unidade Curricular INTRODUÇÃO À PROGRAMAÇÃO Ano Lectivo 2010/2011

Linguagens de Programação Princípios e Paradigmas

TÉCNICO DE INFORMÁTICA - SISTEMAS

Fundamentos da Programação. Ano lectivo , 2 o Semestre Projecto Primeira Parte 1. Nim

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

Lógica de Hoare. Abordagem que usaremos: aplicar o método de Hoare sobre uma linguagem de programação imperativa simplificada.

2.2.5 EXPRESSÕES - Regras para o cálculo de valores

Linguagem Haskell. Universidade Estadual Santa Cruz Conceitos de Linguagens de Programação. Tiago Carneiro 19 Agosto 2013

Primeira Prova de Linguagens de Programação - DCC024B -

Departamento de Informática

Prova Escrita de Matemática A

8º ANO. Lista extra de exercícios

Mestrado em Exercício e Bem-Estar (2º Ciclo, 2º ano) DISSERTAÇÃO NORMAS ORIENTADORAS. Ano Lectivo de 2016/2017

Cálculo proposicional

EXERCÍCIOS DE PROGRAMAÇÃO EM LÓGICA

ÍNDICE GERAL PARTE I PROGRAMAÇÃO PROCEDIMENTAL INTRODUÇÃO 3 2 VISÕES (I 39 OBJETIVOS... 39

Paradigmas de Programação

Aula 4 - Operadores. Prof. Laura Silva de Assis. Engenharia de Computação 2 o Período

Matemática A COTAÇÕES. GRUPO I... (5 10 pontos)... GRUPO II... Teste Intermédio de Matemática A. Versão 1. Teste Intermédio.

Apresentação. !! Familiarização com os métodos de construção de compiladores de linguagens e com as técnicas de compilação mais habituais.

Fundamentos de Algoritmos - Aula 1

Mestrado Integrado em Engenharia Electrotécnica e de Computadores 2006/2007. Programação 2. Trabalho Prático P1A

Paradigmas. Fortran, Algol, Algol-68, Pascal, C, Cobol, PL/I

Organização de Computadores

Programação de Computadores

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

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95

Informática para as Ciências e Engenharias - 2º semestre 2015/2016

Algoritmos e Estruturas de Dados I IEC012. Linguagem C - Estruturas de Controle - Seleção. Prof. César Melo

Prova Escrita de Matemática A

Prova Escrita de Matemática Aplicada às Ciências Sociais

UNIVERSIDADE LUSÍADA DE LISBOA. Programa da Unidade Curricular INTRODUÇÃO À PROGRAMAÇÃO Ano Lectivo 2017/2018

Teste Intermédio de Matemática A Matemática A Versão 1 11.º Ano de Escolaridade COTAÇÕES GRUPO I 50 pontos GRUPO II

MAC 0316/5754 Conceitos de Linguagens de Programação Primeiro Semestre de 2011 Primeira Prova 29 de março de 2011

Representação do Conhecimento

Prova Escrita de Matemática A

UNIVERSIDADE LUSÍADA DE LISBOA. Programa da Unidade Curricular ANÁLISE MATEMÁTICA Ano Lectivo 2013/2014

Linguagens de Programação

Procedimentos e Algorítmos Programas e Linguagens de Programação Tese de Church-Turing Formas de Representação de Linguagens

Fundamentos de programação

Noções de algoritmos - Aula 1

Lógica e Linguagem de Programação Convertendo um algoritmo em pseudocódigo para a linguagem C Professor: Danilo Giacobo

Fundamentos da Programação

Apresentação. Informação geral + Conceitos iniciais

Linguagens de Programação Aula 13

Fundamentos da Programação

Prova Escrita de Matemática A

Transcrição:

Universidade do Minho Escola de Engenharia Departamento de Sistemas de Informação Fundamentos da Programação de Computadores Licenciatura em Tecnologias e Sistemas de Informação 1º Ano 1º Semestre Ano Lectivo 2008/2009 Projecto 01 Data de Lançamento: 6 de Outubro de 2008 Data Limite de Entrega: 13 de Outubro de 2008 (12:00) Prof. Filipe de Sá-Soares Outubro de 2008

Observações ˆ A resolução do Projecto pode ser efectuada individualmente ou em grupo. No caso de resolução por grupo, os grupos de trabalho devem ser compostos por dois elementos. Adicionalmente, estabelece-se que os grupos sejam formados por elementos pertencentes ao mesmo turno PL. ˆ Por norma, a resolução do Projecto deve ser auto-contida, ou seja, os alunos não devem colaborar uns com os outros na resolução dos problemas propostos, excepto no caso da resolução em grupo, em que os alunos que formam o grupo colaboram entre si na resolução do projecto. Se, a título excepcional, ocorrerem colaborações com outros alunos para a resolução dos problemas propostos, tal deve ser explicitamente indicado nos resultados submetidos (ver ponto adiante). ˆ A submissão dos resultados alcançados na resolução do Projecto deve ser realizada via moodle, até à data e hora indicadas anteriormente. Cada aluno deverá submeter o seu trabalho, quer o mesmo tenha sido elaborado individualmente quer em grupo. Não serão aceites submissões para além dessa data/hora. ˆ Os resultados a submeter devem constar de um ficheiro de texto (formato ASCII). O nome do ficheiro deve ser composto pelos seguintes campos: identificação do projecto (na forma Pii, em que ii é o número do projecto), caracter lowline, números de aluno dos seus autores, separados por lowline, e extensão.txt. Para o caso de projectos resolvidos de forma individual, apenas deverá ser indicado um número de aluno (correspondente ao aluno que o resolveu). O corpo desse ficheiro principiará com a identificação do projecto, seguindo-se a indicação do(s) número(s) e nome(s) do(s) aluno(s) que resolveu(ram) os problemas propostos e de eventuais colaborações (números e nomes). Depois, deverão surgir as respostas aos problemas propostos, com a devida sinalização da questão a que se refere cada resposta, e sem alteração de ordem (caso não responda a uma questão, não deixe de sinalizar a identificação dessa questão, apesar de não fornecer resposta). Seguidamente, dá-se um exemplo do início de um desses ficheiros de texto, cuja designação deveria ser P01 12345 12346.txt. Note que nesse exemplo, não foi dada resposta à questão A.1.iii e não existiram colaborações extra-grupo. Projecto 01 Autores 12345 - Filipe de Sá-Soares 12346 - Miguel Abrunhosa de Brito Colaboraç~oes sem colaboraç~oes A.1.i - 25 A.1.ii - erro A.1.iii - A.1.iv - (define a 101). 2

Questões A. Introdução à Computação 1. Distinga entre conhecimento declarativo e conhecimento imperativo. 2. Explique as diferenças existentes entre os conceitos de procedimento e processo computacionais. 3. Explique o que se entende por vocabulário, sintaxe e semântica de uma linguagem. 4. Enumere as principais ferramentas para a gestão da complexidade em sistemas de larga escala. 5. Uma linguagem de programação pode caracterizar-se pela apresentação das suas primitivas, meios de combinação e meios de abstracção. Explique o que entende por primitiva, meio de combinação e meio de abstracção. B. Introdução ao Scheme 1. Indique o ano de criação da linguagem de programação Scheme e os apelidos dos seus dois autores. 2. O Scheme é uma dialecto de que linguagem de programação? 3. Que tipo de notação é utilizado em Scheme? 4. Forneça exemplos de primitivas, meios de combinação e meios de abstracção disponibilizados por Scheme. 5. Esclareça a sintaxe e a semântica de uma combinação Scheme. 6. É comum abreviar-se o funcionamento do interpretador Scheme por intermédio da sigla REPL. Expanda essa sigla e explique-a. C. Introdução ao DrScheme 1. Explique o que se entende por ambiente integrado de programação. 2. Nomeie as duas janelas principais do DrScheme e explique para que servem. 3. Indique os passos a seguir no DrScheme para se alterar a língua de interacção com o DrScheme. 4. Indique os passos a seguir no DrScheme para se alterar o nível de linguagem que o interpretador utiliza. 5. Indique os passos a seguir no DrScheme para se aplicar o Stepper. D. Avaliação de Expressões Scheme Simples 1. Quais os valores das seguintes expressões Scheme? i. 55 ii. (* 3 6) iii. (- 2 9) iv. (- 2-9) v. (- (+ 5 11) (/ 9 (+ 1 2))) 2. Considere que as seguintes expressões Scheme são avaliadas pela ordem apresentada. Quais os valores de cada uma das expressões? (Pode responder erro, procedimento ou indefinido quando apropriado). 3

i. (define x (+ 5 3)) ii. x iii. (+ x 4) iv. x v. (define x 13) vi. x E. Validação de Expressões 1. Quais das seguintes expressões são expressões Scheme válidas sob o ponto de vista sintáctico? i. 8 + 2 ii. (8 + 2 iii. (8 + 2) iv. (8 2 +) v. (+ 8 2) vi. -4 vii. - 4 viii. (- 4) ix. (+ (* 3 5) (/ 21 7) x. (define x) 2. Quais das seguintes expressões são expressões Scheme válidas sob o ponto de vista sintáctico e semântico? i. 3 ii. * iii. (*) iv. (+ 4 5) v. (1 2 3) vi. (9-6) vii. 3.33 viii. (/ 3.33 1.11) ix. Após (define b 2), o valor de b x. Após (define b 2), o valor de (+b 4) xi. Após (define b 2), o valor de (+ b 4) xii. ((+ 1 2)) xiii. (+ -10-20) xiv. (define 4 3) F. Definições Scheme Considere que as seguintes expressões Scheme são avaliadas sequencialmente. Indique o valor de cada uma das expressões. 1. (define c (+ (* 5 6) 2)) 2. c 3. (- c 2) 4

4. c 5. (define r 2) 6. (define s (+ r 1)) 7. s 8. (define r 3) 9. s 10. (define r s) 11. r 12. s G. Introdução aos Procedimentos Scheme 1. Qual a forma geral dos procedimentos Scheme? 2. Distinga entre parâmetro formal e argumento. 3. Quais as directivas a seguir na abstracção de processos computacionais? H. Avaliação de Procedimentos Scheme Considere que se definiu a seguinte expressão Scheme: (define (dobro x) (* x 2)) Depois, avaliaram-se as seguintes expressões Scheme de forma sequencial. Indique o valor de cada uma das expressões. 1. (dobro 3) 2. (dobro -3) 3. (dobro (+ 4 7)) 4. (dobro (* (- 10 8) (/ 6 2))) 5. (dobro (dobro (dobro (dobro 2)))) I. Escrita de Procedimentos Simples em Scheme 1. Escreva um procedimento Scheme que, dado um valor x, retorne o triplo desse valor (apresente duas versões para o procedimento pedido). 2. Escreva um procedimento Scheme que, dado um valor y, determine o valor da expressão de terceira ordem 4y 3 2y 2 + 7y 3 (use de modularidade). 3. Escreva um procedimento Scheme que, dados dois valores x e y, determine o valor da expressão de segunda ordem 3xy 2 + x 2 y 3x 6y + 9 (use de modularidade). J. Modelo de Substituição 1. Indique as regras de avaliação que compõem o Modelo de Substituição para o caso de objectos auto-avaliativos, abstracções por intermédio de define, aplicação de procedimentos e formas especiais cond e if. 5

2. Considere que se definiram os seguintes dois procedimentos Scheme: (define (maxi a b) (if (> a b) a b)) (define (soma-maxi a b) (maxi (+ a b) (- a b))) Aplicando o Modelo de Substituição, indique todas as reduções a que o interpretador Scheme procede para avaliar a expressão (soma-maxi 3-4). Escreva erro caso ocorra um erro em algum dos passos da avaliação. 3. Considere que se avaliou a seguinte definição Scheme: (define (unid a b) (* (/ a b) (/ b a))) Aplicando o Modelo de Substituição, indique todas as reduções a que o interpretador Scheme procede para avaliar a expressão (unid (+ 1-1) 1). Escreva erro caso ocorra um erro em algum dos passos da avaliação. K. Introdução às Expressões Condicionais em Scheme 1. Indique a forma geral da forma especial cond. 2. Explique o que se entende por predicado, por consequente e por alternativa. 3. Indique a forma geral da forma especial if. L. Avaliação de Expressões Condicionais em Scheme 1. Considere o seguinte fragmento de código: (cond ((< x -10) 1) ((< x -50) 2) ((< x 0) 3) ((> x 15) 4) (else 0)) Para cada um dos seguintes valores de x, indique o valor que resulta de se avaliar o cond anterior: i. para x igual a 7 ii. para x igual a -20 iii. para x igual a -50 iv. para x igual a -80 v. para x igual a -1 vi. para x igual a 100 vii. para x igual a 4 2. Para as seguintes expressões Scheme, indique o número de predicados que são avaliados. Considere x igual a -5 e y igual a 5. i. (and (< x 4) (= x 5) (> y 2) (< y -5) (= x y)) ii. (or (< x 4) (= x 5) (> y 2) (< y -5) (= x y)) iii. (and (< x y) (> 4 x) (< 3 y)) 3. Para as seguintes expressões Scheme, indique o resultado da sua avaliação. Considere x igual a -5 e y igual a 5. i. (not (= x -5)) ii. (not (not (> y 0))) 6

iii. (and (or (<= x -5) (> 6 y)) (and (>= y x) (not (= (* x -2) (/ 20 y))))) M. Tradução de Expressões Condicionais em Scheme 1. Traduza para Scheme as seguintes expressões escritas em linguagem matemática: i. 12 < x ii. 10 < x 40 iii. a b c iv. p (q (r s)) 2. Traduza para linguagem matemática a seguinte expressão Scheme (sugestão: recorra à notação x para designar o módulo de x). ((if (> b 0) + -) a b) 3. Escreva o seguinte fragmento de código Scheme usando cond em vez de if: (if (< x -4) (* x -4) (if (< x 5) (+ x x) (* x 3))) N. Escrita de Procedimentos com Expressões Condicionais em Scheme 1. Escreva um procedimento Scheme que, dados dois argumentos, retorne a raiz quadrada do primeiro argumento se o primeiro argumento for maior que o segundo, caso contrário deverá retorna o quadrado do segundo argumento. 2. Escreva um procedimento Scheme que, dados dois números, retorne o menor deles (nota: não use o procedimento primitivo Scheme min). 3. Escreva um procedimento Scheme que, dados três números, retorne o menor deles (nota: não use o procedimento primitivo Scheme min). Prova de Avaliação Experimental ˆ Para os alunos avaliados segundo o perfil P1 ou segundo o perfil P2, a prova de avaliação experimental do presente projecto decorrerá na semana que se inicia a 13 de Outubro de 2008, tendo lugar na sessão PL em que o aluno se encontrar inscrito. ˆ A realização da prova de avaliação experimental deverá ser efectuada com recurso ao moodle, pelo que cada aluno deve garantir previamente o correcto acesso à sua conta na comunidade moodle FPC, sob pena de não poder realizar a prova. ˆ Quando se apresentarem à prova de avaliação experimental, os alunos devem ser capazes de responder às questões do presente projecto sem necessitarem de recorrer ao interpretador Scheme. ˆ A não comparência de um aluno avaliado segundo o perfil P1 ou segundo o perfil P2 à prova de avaliação experimental traduz-se na atribuição de uma classificação de 0 (zero) valores nessa prova. 7