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

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

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

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

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

Segunda Prova de Linguagens de Programação - DCC024 -

Prova Final de Linguagens de Programação - DCC024B - Sistemas de Informação

Primeira Prova de Linguagens de Programação - DCC024 - Sistemas de Informação

Prova Final de Linguagens de Programação - DCC024B - Sistemas de Informação

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

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

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

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

Prova Final de Linguagens de Programação - DCC024 - Sistemas de Informação

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

Exame Especial de Linguagens de Programação - DCC024 -

Prova Final de Linguagens de Programação - DCC024B - Sistemas de Informação

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

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

Primeira Prova de Linguagens de Programação - DCC024W - Sistemas de Informação

Primeira Prova de Linguagens de Programação - DCC024 - Sistemas de Informação

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

Exame Especial de Linguagens de Programação - DCC024 -

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

Prova Final de Linguagens de Programação - DCC024 -

Primeira Prova de Análise e otimização de Código - DCC888 -

MINISTÉRIO DA EDUCAÇÃO CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DIRETORIA DE GRADUAÇÃO

Principais paradigmas de programação. Programação imperativa Programação funcional Programação lógica Programação OO

Conceitos de Linguagem de Programação - 2

Fundamentos da Programação

Introdução à Programação. Conceitos Básicos de Orientação a Objetos

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

Grupo de Usuários Java do Noroeste Paulista. Tópicos Avançados em Java

Aula de hoje. Funções. Introdução. Função. Definição de funções. Exemplo. SCC Introdução à Programação para Engenharias

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação

Capítulo 9. Subprogramas

Gemini Vetrô. Fogão portátil. Descrições

Linguagens de Programação Princípios e Paradigmas

Paradigma de Programação Lógico. Marco A L Barbosa

Conceitos de Linguagens de Programação - Características. Paavo Soeiro

Computação II - Python Aula 1 - Apresentação do curso e revisão de programação modular

Estrutura de Dados Funções e Procedimentos

Prova Final de Linguagens de Programação - DCC024 -

Segunda Prova de Análise e otimização de Código - DCC888 -

Lista de Linguagens de Programação 16

Lista de Linguagens de Programação 19

Interfaces e Classes Abstratas

Computação 1 - Python Aula 12 - Teórica. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 22

PROGRAMAÇÃO E PYTHON. Laboratórios de Informática João Paulo Barraca, André Zúquete, Diogo Gomes

AULA 2 VISÃO BÁSICA DE CLASSES EM PHP

Templates. BCC Programação Orientada a Objectos(POO) Departamento de Computação - UFOP

Linguagens de Programação

Programação: Vetores

Computação II (MAB 225)

Aspectos preliminares

Linguagem Algorítmica OO. Linguagem Algorítmica

Introdução à Orientação a Objetos

Linguagem de Programação e Compiladores

Lista de Linguagens de Programação 7

Paradigmas de Programação

Programação Estruturada e Orientada a Objetos. Objetos e Métodos

Popularidade das Linguagens

Abaixo iremos pormenorizar cada um de seus atributos:

Prof. Rodrigo Rocha

Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.

Linguagens de Programação e Programação Funcional

Visibilidade e Encapsulamento

Fundamentos de Programação

PLANO DE UNIDADE DIDÁTICA- PUD

Introdução à Programação Aula 09. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Linguagens de Programação Aula 3

1/ 26. Computação 1 - Python Aula 1 - Prática: Primeiros Passos - Função

Conceitos Básicos da Programação OO

Aula passada. Aula passada... Sequências Funções puras e modificadores. Listas Tuplos

Paradigmas de Linguagem de Programação. Aspectos Básicos

CURSO BÁSICO DE PROGRAMAÇÃO AULA 19. Netbeans - Linguagem JAVA - Vetores - Matrizes - Métodos

Computação I - Python Aula 1 - Prática: Primeiros Passos- Função

1 Introdução e Conceitos básicos

Linguagem de Programação III Aula 2 - Apresentação da Disciplina

Introdução à Programação Funcional

1/ 23. Computação 1 - Python Aula 1 - Prática: Primeiros Passos - Função

Para entender o conceito de objetos em programação devemos fazer uma analogia com o mundo real:

AULA 2: INTRODUÇÃO A PYTHON. Luís Feliphe Silva Costa

Classes e Objetos. Sintaxe de classe em Java

Programação de Computadores IV. Introdução a Linguagens de Programação Simone Martins SLIDES CEDIDOS POR BRUNO MARQUES 1

Fundamentos da Programação

Lista de Linguagens de Programação 17

Linguagem de Programação I Apresentação da Disciplina

Universidade da Beira Interior Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática

Programação I Funções. Prof. Carlos Alberto

Programação Python. Nesta aula... 1 Programação. 2 Python. Operadores e Operandos Variáveis, Expressões, Instruções Funções Ciclos Comentários

Fundamentos de Programação

LINGUAGEM C: FUNÇÕES FUNÇÃO 08/01/2018. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.

Computação 1 - Python Aula 10 - Teórica: Estrutura de Dados - Dicionário. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 18

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }

Fundamentos de Programação 1

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

Classes e Objetos em Java. Algoritmos e Programação I. Classes. Classes. Modificadores de Acesso. Classes. Revisão

A sintaxe básica para definir uma função é: function nome_da_função([arg1, arg2, arg3]) { Comandos;... ; [return <valor de retorno>]; }

CAP Exame de Admissão 16/12/2013. Instruções Gerais (leia atentamente)

Transcrição:

Prova Final de Linguagens de Programação - DCC024B - Ciência da Computação Nome: Eu dou minha palavra de honra que não trapacearei neste exame. Número de matrícula: As regras do jogo: A prova é sem consulta. Quando terminar, não entregue nada além do caderno de provas para o instrutor. Quando escrever código, a sintaxe correta é importante. Cada estudante tem direito a fazer uma pergunta ao instrutor durante a prova. Traga o caderno de provas quando vier à mesa do instrutor. São perguntas: Posso fazer uma pergunta? ou Quanto tempo falta? A prova termina uma hora e quarenta minutos após seu início. Seja honesto e lembre-se: você deu sua palavra de honra. Alguns conselhos: Escreva sempre algo nas questões, a fim de ganhar algum crédito parcial. Se não entender a questão, e já tiver gasto sua pergunta, escreva a sua interpretação da questão junto à resposta. A prova não é difícil, ela é divertida, então aproveite! Tabela 1: Pontos acumulados (para uso do instrutor) Questão 1 Questão 2 Questão 3 Questão 4 Extra Questão Extra (0.5 Pontos): complete as próximas quatro palavras do trecho que falta da letra da seguinte música popular brasileira: Se avexe não. Observe quem vai subindo a ladeira. Seja princesa ou seja lavadeira. Pra ir mais alto,.. 1

1. (1 Ponto cada item) A maior parte das linguagens orientadas a objetos utiliza o conceito de classes para criar objetos. Por outro lado, é possível criá-los sem essa noção. A figura abaixo mostra duas maneiras de criar objetos sem que classes sejam necessárias: Python def createcounter(n): t = {'x': n t['inc'] = lambda: t.update({'x': t['x'] + 1) t['get'] = lambda: t['x'] return t o0 = createcounter(1) o0['inc']() print o0['get']() o1 = createcounter(100) o1['inc']() print o1['get']() JavaScript function createcounter(n) { function inc() {n++; function get() { return n; return {inc: inc, get: get; var o0 = createcounter(1); o0.inc(); alert(o0.get()); var o1 = createcounter(100); o1.inc(); alert(o1.get()); (a) (1 Pontos) Que tipo de estrutura é retornada pela função createcounter no programa em Python? (b) (2 Pontos) O estado dos objetos o0 e o1 no programa em Python pode ser alterado sem que o método [ inc ]() seja usado? 1 Justifique sua resposta. (c) (1 Pontos) Que tipo de estrutura é retornada pela função createcounter no programa em JavaScript? (d) (2 Pontos) O estado dos objetos o0 e o1 no programa em JavaScript pode ser alterado sem que o método inc() seja usado? Justifique sua resposta. (e) (4 Pontos) Escreva uma classe cuja semântica seja similar à função createcounter no programa em Python. Instâncias de sua classe devem ter funcionalidades similares (não necessariamente iguais) àquelas dos objetos criados via createcounter. Não é necessário mostrar como objetos são instanciados. 1 Nesta questão, e na letra (d) assuma que não existem outras referências apontando para a variável n. 2

2. Muitos autores definem Python como uma linguagem multi-paradigmas, o que significa que ela pode ser usada de forma imperativa ou declarativa. Nesta questão veremos algumas características funcionais dessa linguagem. (a) (3 Pontos) Mostre um exemplo de função de alta ordem sendo usada em Python. definir a função, ou pode reusar uma função que já existe. Você pode (b) (2 Pontos) Mostre um exemplo de list comprehension em Python. (c) (3 Pontos) Um programa escrito em Python parece um programa escrito em ML, no que toca o sistema de tipos, pois nessas duas linguagens quase sempre é possível escrever código sem especificar o tipo dos valores que existem no programa. Contudo, o sistema de tipos dessas duas linguagens é bem diferente. Qual é a principal diferença entre esses dois sistemas de tipos? (d) (2 Pontos) Mostre um exemplo de um programa que pode ser escrito em Python, mas cujo código equivalente, escrito em ML, não passaria pela verificação de tipos. 3

3. Esta questão se refere ao seguinte programa, escrito em uma pseudo-linguagem de programação: function bar { int[] array = new int[2]; array[0] = 0; array[1] = 2; foo(array[0], array[array[0]]); print(array[0], array[1]); function foo (int x, int y) { x = 1; y = 10; (a) Diga o que será impresso se o mecanismo de passagem de parâmetros nessa linguagem fosse cada um dos seguintes: i. (2 Pontos) Passagem por valor. ii. (2 Pontos) Passagem por referência. iii. (2 Pontos) Passagem por expansão de macros. (b) Um mecanismo de passagem de parâmetros pode ser estrito ou não-estrito (tardio). Classifique cada um dos mecanismos de passagem de parâmetros abaixo como estrito ou tardio: (1 Ponto) Passagem por valor. (1 Ponto) Passagem por referência. (1 Ponto) Passagem por expansão de macros. (1 Ponto) Passagem por necessidade. 4

4. Esta questão refere-se a três predicados em prolog: car, pessoa e modelo. Exemplos desses predicados podem ser vistos logo abaixo. car(fiat, azul, joao). car(fiat, verde, maria). car(gol, prata, jose). car(onyx, preto, joao). car(up, preto, antonio). car(onyx, prata, maria). car(onyx, azul, telma). pessoa(joao, professor, casado). pessoa(maria, dentista, casado). pessoa(jose, fazendeiro, solteiro). pessoa(antonio, professor, casado). pessoa(telma, policial, solteiro). pessoa(lidia, fiscal, solteiro). modelo(fiat, azul). modelo(fiat, verde). modelo(fiat, prata). modelo(gol, preto). modelo(gol, prata). modelo(onyx, preto). modelo(onyx, prata). modelo(onyx, azul). modelo(up, preto). modelo(up, vermelho). (a) (2 Pontos) Considerando os exemplos de predicados acima, qual o valor de Carros que torna o predicado abaixo verdadeiro? findall(carro, (modelo(carro, Cor), not(car(carro, Cor, _))), Carros). (b) (2 Pontos) Complete o predicado abaixo. Ele é verdadeiro se Pessoa possui um carro azul: possui_azul(pessoa) :- (c) (2 Pontos) Escreva um predicado todas cores(pessoa, Cores), que seja verdadeiro caso Cores for a lista de todas as cores de carros que Pessoa possui. Por exemplo:?- todas_cores(joao, Cores). Cores = [azul, preto]. (d) (2 Pontos) Escreva um predicado nao tem carro(pessoa), que seja verdadeiro caso Pessoa nao possua nenhum carro. Por exemplo:?- nao_tem_carro(pessoa). Pessoa = lidia. (e) (2 Pontos) Escreva um predicado solteiro com carro(pessoa), que seja verdadeiro se Pessoa for uma pessoa solteira que possua pelo menos um carro. Por exemplo:?- solteiro_com_carro(pessoa). Pessoa = jose ; Pessoa = telma ; 5