Nome : Número : Computação e Programação 2015-2016 Mestrado Integrado em Engenharia Civil Licenciatura Bolonha em Engenharia Geológica e de Minas DECivil Exame Época Normal 6 de janeiro de 2016 Exame sem consulta (2 horas). Se trouxe telemóvel, desligue-o e guarde-o fora de vista. Identifique (a tinta) cada folha do enunciado, no topo, com o seu nome e número. Resolva cada grupo unicamente na folha respetiva do enunciado. Utilize o verso da folha do grupo 4 unicamente para rascunho. Só desagrafe as 4 folhas no ato de entrega. Escreva as suas respostas com caligrafia clara e sem emas. Assuma que as questões dizem respeito ao MATLAB, a menos que haja indicação explícita do contrário. Só é necessário fazer verificações sobre os dados se isso estiver explicitado no enunciado. Se não se lembrar do nome de uma função que necessite, pode perguntar a um docente da cadeira. Grupo 1 (4 valores) Problema 1 (1 valor) Considere a seguinte expressão para uma função z = f(x, y): y 3 z = x 2x 7y 2 Escreva uma instrução que permita avaliar esta expressão para valores guardados em variáveis designadas por valorx e valory, e guardar o respetivo resultado numa variável valorz. valorz = valorx valory.^3./ (2.* valorx 7.* valory.^2); % a versão escalar também foi aceite como correta
Problema 2 (1 valor) Através de uma única instrução, e fazo uso do operador dois pontos, crie uma variável que guarde um vetor numérico conto o valor dois e todos os valores seguintes não negativos obtidos usando um decremento constante de três décimas. outrov = 2:-0.3:0; Problema 3 (1 valor) Considere a existência de um array com 2 dimensões (linhas e colunas) previamente preenchido e guardado na variável M. Escreva uma instrução para eliminar todos os elementos da primeira coluna em M. M(:,1) = []; Problema 4 (1 valor) Escreva um resultado possível da execução da instrução seguinte: disp([num2str(randi([2 2])) ' * ' num2str(randi([0 9]))]) 2 * 5
Nome : Número : Grupo 2 (8 valores) Problema 1 (2 valores) Considere a existência de um vetor numérico v1. Usando um ciclo, escreva as instruções para obter um outro vetor, v2, apenas com as componentes positivas de v1. v2 = []; for i = 1:length(v1) if v1(i) > 0 v2 = [v2, v1(i)]; Problema 2 (2 valores) Escreva as instruções para pedir ao utilizador o nome de um ficheiro, obter desse ficheiro a última palavra da última linha, e guardar essa palavra numa variável designada por pal. Pode utilizar as funções strtok, fgetl, feof e isempty. (Não tem que verificar situações de erro, nomeadamente, admita que o ficheiro existe, que contém pelo menos uma linha, e que a última linha contém pelo menos uma palavra.) f = input('nome do ficheiro > ', 's'); fin = fopen(f); while ~feof(fin) linha = fgetl(fin); [pal, resto] = strtok(linha); while ~isempty(resto) [pal, resto] = strtok(resto);
Problema 3 (2 valores) Utilizando a função plot, e sem utilizar a função linspace, escreva as instruções para visualizar o gráfico da função f(x) = sen(x)/x no domínio [ 2π, 2π]. Prete-se uma discretização com mais de 50 pontos. x = -2*pi : pi/20 : 2*pi; y = sin(x)./ x; plot(x, y) Problema 4 (2 valores) Desenvolva uma função oitoouoitenta (sem parâmetros de entrada e de saída), e uma subfunção verifica (com um número como parâmetro de entrada, e com um valor lógico como parâmetro de saída). A subfunção verifica retorna o valor lógico true, se, e só se, o parâmetro de entrada estiver no intervalo [0, 8] ou for superior a 80. De outro modo, retorna o valor lógico false. A função oitoouoitenta, pede ao utilizador um número, e, usando a subfunção anterior para verificar se esse número preenche as condições nela implementadas, escreve no ecrã uma das duas seguintes frases: Preenche as condições. ou Não preenche as condições.. function oitoouoitenta num = input('introduza um número. > '); if verifica(num) disp(' Preenche as condições.') else disp(' Não preenche as condições.') function y = verifica(x) y = ( x >= 0 && x <= 8 ) x > 80;
Nome : Número : Grupo 3 (4 valores) Problema 1 (1 valor) Desenvolva uma função para receber um vetor numérico e retornar o maior valor dentro do vetor entrado. Só pode usar as funções predefinidas length, size, e numel. function max = maximo(v) max = v(1); for i = 2:length(v) if v(i) > max max = v(i); Problema 2 (1 valor) Desenvolva uma função para receber uma matriz previamente preenchida com valores lógicos e retornar uma matriz semelhante à recebida, mas onde os elementos simultaneamente pertencentes a uma linha de ordem ímpar e a uma coluna de ordem par foram alterados. Só pode usar as funções predefinidas length, size, e numel. function m = g3p2(m) [nl, nc] = size(m); for i = 1:2:nL for j = 2:2:nC m(i,j) = ~m(i,j);
Problema 3 (1 valor) Desenvolva uma função para receber um vetor de células de strings cujos elementos são nomes de cidades e imprimir na janela de comandos as cidades começadas pela letra B. function g3p3(v) for i = 1:length(v) if v{i}(1) == 'B' disp(v{i}) Problema 4 (1 valor) Considere que é executado o código em C++ apresentado abaixo e fornecido o valor 5 sempre que é pedido um inteiro ao utilizador. O que será então mostrado no ecrã? #include <iostream> using namespace std; int main() { int a = 4, b = 1; } while (b!= 8) { b = b + a; a = a - 1; if (a > 2) { cout << "Introduza um inteiro. > " ; cin >> b; } } cout << a; Resposta: 2
Nome : Número : Grupo 4 (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) É possível executar um script a partir de qualquer editor de texto disponível no computador. F b) Tipicamente, a ordem pela qual os argumentos são passados a uma função é irrelevante. F c) O tipo int32 permite guardar valores com casas decimais. V d) Todos os parâmetros de entrada e de saída de uma função são definidos no seu cabeçalho. 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. V a) Todos os scripts, mesmo que gravados em ficheiros localizados em pastas diferentes, partilham o mesmo espaço em memória para a utilização de variáveis. V b) Cada função tem um espaço próprio em memória para a utilização de variáveis, o qual é criado quando a função começa a executar e é destruído quando a função termina de executar. V c) Uma expressão pode incluir invocações de função. V d) O MATLAB não assinala erros semânticos. 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. F a) Os objetos ou instâncias de uma mesma classe têm as mesmas propriedades e valores. V b) Uma expressão com o formato <identificador>(<inteiro>,..., <inteiro>) tanto pode corresponder à chamada de uma função como ao acesso a um array. V c) Uma única variável pode guardar vários valores de tipos diferentes. V d) A invocação de uma função no corpo da sua própria definição não gera um erro sintático.
Página para rascunho. (Não utilize para responder às questões.)