Computação e Programação Exame 2ª Época

Documentos relacionados
Outras Linguagens. Aulas 26 e 27. DECivil Departamento de Engenharia Civil, Arquitectura e Georrecursos

PROGRAMAÇÃO DE MICROPROCESSADORES 2011 / 2012

Exame de 1ª Época Introdução à Programação IGE e ETI 2003/02/25-1º semestre de 2002/2003 ISCTE

Ficheiros de texto 1. Ficheiros de texto. 1. Implementar um programa que leia uma frase do teclado e a escreva num ficheiro.

UNIVERSIDADE LUSÓFONA DE HUMANIDADES E TECNOLOGIAS 1º Semestre 2007/2008

Programação: Vetores

Resolução De Problemas Em Informática. Docente: Ana Paula Afonso Resolução de Problemas. 1. Analisar o problema

Programação. Folha Prática 5. Lab. 5. Departamento de Informática Universidade da Beira Interior Portugal. Copyright 2010 All rights reserved.

Escrever scripts de PHP com HTML

LISTA DE EXERCÍCIOS 2

Faculdade Anglo-Americano Curso de Ciência da Computação Linguagem de Programação. Lista de Exercícios 1

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

Inteligência Computacional Aula 2 - Introdução ao MatLab Graduação /2

UNIVERSIDADE LUSÓFONA DE HUMANIDADES E TECNOLOGIAS 1º Semestre 2014/2015

ALGORITMOS COM SELEÇÃO 1 - ESTRUTURA CONDICIONAL (ESTRUTURAS DE CONTROLE)

1ª LISTA DE EXERCÍCIOS

CADERNO DE EXERCÍCIOS ALGORITMOS

Programação Básica. Estrutura de um algoritmo

2ª Licenciatura AED1 e PC1 Prof. Eduardo 1 1 MODULARIZAÇÃO

Computação e Programação (2009/2010-1º Semestre)

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem Python

Ficha de Avaliação Sumativa. Notas Gerais:

Processamento Simbólico Polinómios e Equações Gráficos

Tópicos avançados sobre funções

Programação Universidade da Beira Interior Departamento de Informática 2007/08

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

Revisão C++ - Parte 1

Introdução ao MATLAB. Parte 2

Funções. Capítulo (2) Considere a seguinte interacção em Python: >>> def f1(x):... return x * x... >>> f1(5) 25 >>> f2 = f1 >>>

Introdução à Linguagem C

Trabalho Linguagem e Programação de Compiladores

Vetores. e o programa deverá ler os valores separadamente:

PROGRAMAÇÃO FUNÇÕES NA LINGUAGEM C

Algoritmo e Programação Matemática

Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores

A resposta apresentada em aula, no quadro, (em Chapin e/ou Português Estruturado) está correta?

LINGUAGEM C: ARRAY: VETORES E MATRIZES

Algoritmos RESUMO - LINGUAGEM C

Linguagens compiladas: C++ Fora do livro adoptado

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Curso básico de JavaScript Aula 2

Algoritmos e Estruturas de Dados. Grupo 1

MATLAB. Programação básica. Abordagem topo-base. Início. Definição das. Divisão em Sub-problemas. Divisão em Sub-problemas. Abordagem topo-base

Capítulo IV : A Linguagem Pascal Ficheiros de Texto

Algoritmos e Estruturas de Dados

Sequencial Estrutura de controlo mais simples. As instruções são executadas sequencialmente.

Cell arrays e estruturas: exemplos

Recursividade UFOP 1/48

Lista de Exercícios Algoritmos Vetores. 10) Escreva um algoritmo em PORTUGOL que armazene em um vetor todos os números

Vetores são estruturas indexadas utilizadas para armazenar dados de um mesmo tipo: int, char, float ou double. Oexemploaseguirédeumvetordeinteiros:

Para cada programa, por mais simples que seja, comece sempre por esboçar a solução desenhando um fluxograma.

ALGORITMOS COM SELEÇÃO 1 - ESTRUTURA CONDICIONAL (ESTRUTURAS DE CONTROLE)

Exercícios sobre algoritmos

Funções em Matlab. Subprogramas em Matlab são funções.

Noções de algoritmos - Aula 1

Introdução a linguagem C. Introdução à Programação 06/07

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

Objectivos. Programação I (2010/2011) 2 o Trabalho de Programação

PROGRAMAÇÃO DE MICROPROCESSADORES 2009 / 2010

Fábio da Fontoura Beltrão Felipe Augusto Chies Lucas Fialho Zawacki Marcos Vinicius Cavinato Matheus de Carvalho Proença

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição

Algoritmos e Programação

CONCEITOS DE ALGORITMOS

Programação de Computadores:

Prova de Recuperação

BAC004 Informática Teórica T2 Professora: Fabiana Costa Guedes Lista 05 Vetores e Matrizes Vetores

Métodos Computacionais

Lista de Exercícios 1

Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Segunda Aula Prática - 29 de agosto de 2008

4ª Lista de Exercícios de Programação I

Algoritmos e Estruturas de Dados I Prof. Eduardo 1 1 MODULARIZAÇÃO

Introdução à Programação em C

Programação de Computadores:

UNIVERSIDADE FEDERAL DO PAMPA CAMPUS BAGÉ ALGORITMOS E PROGRAMAÇÃO. Estruturas de repetição. Prof. Alex Camargo

Linguagem C: Introdução

Inteiro Os dados do tipo inteiro são quantidades numéricas inteiras. Os dados deste tipo podem ser constantes, variáveis, funções e expressões.

Controle de Fluxo. Laços e Desvios incondicionais

Comando Portugol (Visualg) Java

Exercícios de Linguagem C

1.Quais serão os valores de x, y e p ao final do trecho de código abaixo? int x, y, *p;y = 0; p = &y; x = *p; x = 4; (*p)++; --x; (*p) += x;

INTRODUÇÃO AO SCILAB

Introdução à Programação

Licenciatura em Informática Introdução a Ciência dos Computadores 1º Ano

Módulo 1: Introdução ao MatLab. (scripts e functions) Interfaces Gráficas (GUIs)

TESTE INTERMÉDIO DE MATEMÁTICA A. 15 de Março de 2007 CRITÉRIOS DE CLASSIFICAÇÃO - VERSÃO 2

Curso de Introdução à Liguagem de. Grupo PET-Tele. Universidade Federal Fluminense. July 16, 2012

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C

1. Programação - Linguagem C /20

Trabalho de Desenho de Linguagens de Programação e de Compiladores. Mini Pascal

Unidade 5: Introdução à Programação com C/C++

ITENS FUNDAMENTAIS Programando em C++

Variáveis primitivas e Controle de fluxo

LISTA DE EXERCÍCIOS - ro. 04

Linguagem C (repetição)

Conceitos básicos de programação

Fábio Rodrigues / Israel Lucania

Algoritmos e Programação. Linguagem C Procedimentos e. Eliane Pozzebon

Capítulo 6: Arquivos

Desenho de algoritmos

Transcrição:

Computação e Programação 2012-2013 Mestrado Integrado em Engenharia Civil Licenciatura Bolonha em Engenharia Geológica e de Minas DECivil Exame 2ª Época 30 de janeiro de 2013 Exame sem consulta (2 horas + 30 minutos de tolerância). Se trouxe telemóvel, desligue-o e guarde-o fora de vista. Identifique (a tinta) todas as folhas da sua resolução, no topo, com o seu nome e número. Escreva as suas respostas com caligrafia clara, e sem emas. Resolva os grupos em folhas separadas. No final, os grupos deverão ser entregues separadamente, inclusive os não respondidos (com essa indicação). O Grupo 5 deve ser resolvido no próprio enunciado, identificado com nome e número, e entregue com o resto da resolução. A menos que isso seja indicado explicitamente, não precisa fazer verificações sobre valores para beneficiar a robustez no código desenvolvido. Grupo 1 (4 valores) Problema 1 (1 valor) Escreva uma instrução que permita criar a seguinte variável e respetivo conteúdo (matriz), utilizando o operador dois pontos: mat = 1 3 5 7 9 90 85 80 75 70 mat = [1:2:10 ; 90:-5:70] Problema 2 (1 valor) Considere a seguinte função real de variável real : Escreva uma instrução que permita avaliar esta função matemática e guardar o resultado. Para tal, deverá utilizar variáveis com nomes valorx e valory. valory = (12 * valorx + 9) / (3 * (4 * valorx^2 + 3)) Problema 3 (1 valor) Considerando a existência da matriz anteriormente criada no Problema 1, escreva duas expressões para aceder: (1) ao elemento na segunda linha, terceira coluna; e (2) à terceira coluna completa. mat(2,3) mat(:,3)

Problema 4 (1 valor) Considere a existência de um valor real entre 0 e 1, correspondente a uma taxa de juro anual e guardado na variável taxajuroanual; e a existência de outro valor real positivo, correspondente ao montante inicial de um depósito bancário, e guardado em montanteinicial. Escreva duas instruções para calcular dois valores e guardar ambos os valores num único vetor. Os valores pretidos correspondem às atualizações do valor guardado em montanteinicial para os dois primeiros anos de investimento. O montante atualizado para cada ano decorre do montante do ano anterior, de acordo com a seguinte fórmula:. anos(1) = montanteinicial * (1 + taxajuroanual) anos(2)= anos(1) * ( 1 + taxajuroanual) Grupo 2 (4 valores) Problema 1 (2 valores) Escreva uma função, doisaleatorios, sem parâmetros de entrada, que retorne dois números pseudoaleatórios inteiros no intervalo [10, 20]. Os dois números retornados têm de ser diferentes. function [ ale1, ale2 ] = doisaleatorios ale1 = randi([10 20]); ale2 = randi([10 20]); while ale2 == ale1 ale2 = randi([10 20]); Problema 2 (2 valores) Escreva um script cujo objetivo é implementar um jogo de tiro ao alvo. O script deve começar por, usando a função do problema anterior( 1 ), obter dois números pseudoaleatórios inteiros no intervalo [10, 20]. Estes dois números definirão os limites de um intervalo fechado que será considerado o alvo a atingir. Seguidamente, o script deve pedir ao utilizador (o jogador) um número inteiro no intervalo [10, 20]. Se este número estiver dentro do intervalo alvo, o script deve escrever a mensagem Parabéns! Acertou.. Senão, deve escrever a mensagem Azar! Falhou por N., onde N representa a diferença entre o número introduzido pelo jogador, e o limite mais próximo do intervalo alvo. ( 1 )Se não fez o problema anterior, assuma que a função em causa existe, e está disponível. 2

[a1 a2] = doisaleatorios; liminf = min(a1, a2); limsup = max(a1, a2); tiro = input('um inteiro no intervalo [10, 20]: '); if liminf <= tiro && tiro <= limsup disp('parabéns! Acertou.') else erro = max( liminf - tiro, tiro - limsup ); fprintf('azar! Falhou por %d.\n', erro) Grupo 3 (4 valores) Problema 1 (1 valor) Desenvolva uma função fun1 para (1) receber duas matrizes de números, coincidentes em número de linhas e em número de colunas, e (2) devolver uma matriz de números, com as mesmas dimensões das matrizes entradas. Cada elemento da matriz devolvida será igual a um dos elementos correspondentes nas matrizes de entrada. Se o produto dos elementos correspondentes nas matrizes de entrada for superior a 200, o elemento correspondente na matriz devolvida será igual ao da 1ª matriz recebida. De outro modo, será igual ao da 2ª matriz recebida. Deve utilizar instruções de ciclo encadeadas. function mat3 = fun1( mat1, mat2 ) [nl nc] = size(mat1); mat3 = zeros(nl, nc); % opcional no exame, mas desejável for i = 1:nL for j = 1:nC if mat1(i,j) * mat2(i,j) > 200 mat3(i,j) = mat1(i,j); else mat3(i,j) = mat2(i,j); Problema 2 (1 valor) Desenvolva uma função mainf e uma subfunção subf. subf deverá receber um número,, e devolver três números separadamente, através de três parâmetros de saída. Os valores devolvidos corresponderão, por esta ordem, a,, e. mainf deverá ter zero parâmetros de entrada e três parâmetros de saída. Deverá obter do utilizador um número, utilizá-lo para invocar subf, e, depois, devolver os três números recebidos a partir de subf, por ordem crescente, utilizando cada um dos parâmetros de saída para devolver cada um dos números. function [ val1, val2, val3 ] = mainf x = input('um número: '); [a(1), a(2), a(3)] = subf(x); a = sort(a); val1 = a(1); val2 = a(2); val3 = a(3); function [ seno, coseno, cubo ] = subf( x ) seno = sin(x); 3

coseno = cos(x); cubo = x^3; Problema 3 (2 valores) Desenvolva uma função para ler um ficheiro de texto chamado entrada.txt e devolver um vetor (array) de estruturas (structs) com todos os dados desse ficheiro. O ficheiro terá um qualquer número de linhas, so todas compostas por uma palavra e um número real separados por um espaço. O vetor devolvido terá que ter um tamanho coincidente com o número de linhas do ficheiro. Todas as estruturas devolvidas no vetor terão que ser compostas por dois campos, chamados pal e num, nos quais deverão ser guardados (como string e número real, respetivamente) os dois valores lidos a partir de uma linha do ficheiro. Os dados de cada linha devem ser lidos para uma estrutura distinta no vetor, pela mesma ordem, ou seja, a primeira estrutura guardará os valores lidos da primeira linha, e assim sucessivamente, até que a última estrutura guardará os valores lidos da última linha. function vs = G3P3 fid = fopen('entrada.txt'); i = 0; % contador de linhas while ~feof(fid) i = i + 1; [palavra numero] = strtok(fgetl(fid)); vs(i) = struct( 'pal', palavra, 'num', str2num(numero) ); Grupo 4 (4 valores) Problema 1 (1 valor) Desenvolva uma função mediap para receber dois vetores do mesmo tamanho: (1) um vetor de reais, e (2) um vetor de inteiros. Esta função deverá devolver a média dos valores no primeiro vetor, ponderados com os valores nas posições correspondentes no segundo vetor. Não pode utilizar vetorização nem funções estatísticas pré-definidas do Matlab. function saida = mediap(v, p) numerador = 0; denominador = 0; for i=1:length(v) numerador = numerador + v(i) * p(i); denominador = denominador + p(i); saida = numerador / denominador; Problema 2 (1 valor) Desenvolva uma função mediapvetorizada para fazer o mesmo que a função pedida no problema anterior, mas agora to de recorrer a vetorização e a funções estatísticas pré-definidas do Matlab. function saida = mediapvetorizada(v, p) saida = sum(v.* p) / sum(p); Problema 3 (1 valor) 4

a) Desenvolva uma função anónima para implementar a função matemática apresentada na pergunta do Problema 2 do Grupo 1, guardando a respetiva referência (function handle) com o nome funcao. funcao = @(x)(12 * x^2 + 9) / (3 * (4 * x + 3)) b) Utilizando o resultado da alínea anterior, escreva uma expressão em Matlab para calcular a expressão matemática. funcao(2) + funcao(3) Problema 4 (1 valor) Numa execução do trecho de código em C++ apresentado abaixo, o utilizador introduz na linha de comandos o valor -2, seguido do valor 2. O que é depois mostrado ao utilizador? 1.2 cout << "Introduza dois valores >" ; int x, y, iterador; double resultado = 0; cin >> x; cin >> y; iterador = x; while(iterador <= y) { } if(iterador < 0) resultado = resultado - iterador; else resultado = resultado + iterador; iterador = iterador + 1; cout << resultado / (y - x + 1); 5

Nome Nº Grupo 5 (4 valores) Problema 1 (4 x 0,25 valores) Para cada frase, escreva, antes da alínea, se a mesma é verdadeira (V) ou falsa (F). Cada resposta certa soma 0,25 valores, e cada resposta errada desconta 0,25 valores. F a) A definição de uma função não pode incluir uma invocação da própria função. V b) Uma função pode invocar uma subfunção definida no mesmo ficheiro. F c) Um nome (ou identificador) pode conter espaços. V d) A função plot permite receber um vetor com os valores para as abcissas e outro com os valores para as ordenadas e, como resultado, desenhar um gráfico para a função correspondente. Problema 2 (4 x 0,5 valores) Para cada frase, escreva, antes da alínea, se a mesma é verdadeira (V) ou falsa (F). Cada resposta certa soma 0,5 valores, e cada resposta errada desconta 0,5 valores. F a) Os erros semânticos são assinalados pelo Matlab. V b) Uma variável criada no espaço de trabalho local de uma função não pode ser utilizada em código introduzido na janela de comandos. V c) Um array de células permite guardar valores de tipos diferentes. V d) Existem vários tipos de dados para representar números inteiros, os quais suportam limites (mínimo e máximo) de representação diferentes. Problema 3 (4 x 0,25 valores) Para cada frase, escreva, antes da alínea, se a mesma é verdadeira (V) ou falsa (F). Cada resposta certa soma 0,25 valores, e cada resposta errada desconta 0,25 valores. V a) A possibilidade de definir classes permite ao programador criar novos tipos de dados. V b) A função eval permite avaliar valores do tipo cadeia de caracteres (strings) como instruções. F c) O GUIDE é um compilador para Matlab, permitindo criar ficheiros executáveis a partir de ficheiros com a extensão.m. V d) Uma expressão com o formato <nome>(<valor inteiro positivo>, <valor inteiro positivo>,<valor inteiro positivo>) tanto pode corresponder à chamada de uma função com três parâmetros de entrada como ao acesso a um array de três dimensões. 6