Computação e Programação Exame Resolvido 1ª Época

Documentos relacionados
LISTA DE EXERCÍCIOS 2

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

Computação Científica com MATLAB. Melissa Weber Mendonça

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

PROGRAMAÇÃO DE MICROPROCESSADORES 2011 / 2012

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

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

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

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

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

Aula 15 Variáveis Indexadas (vetores)

Curso básico de JavaScript Aula 2

Linguagem C++ Estruturas de controle Parte II Estruturas de repetição

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: Operadores relacionais e lógicos estruturas condicionais If...

Programação: Vetores

2 Programação de Simulink S-functions

1ª LISTA DE EXERCÍCIOS

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

PROGRAMAÇÃO FUNÇÕES NA LINGUAGEM C

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

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

Estruturas II UFOP 1/35

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

INFORMÁTICA APLICADA AULA 05 LINGUAGEM DE PROGRAMAÇÃO C++

LINGUAGEM C: ARRAY: VETORES E MATRIZES

ponteiros INF Programação I Prof. Roberto Azevedo

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

11 - Estrutura de um programa em C

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

Revisão C++ - Parte 1

PROGRAMAÇÃO DE MICROPROCESSADORES 2009 / 2010

Mini apostila de Python - Oficina de Vestibulandos. PET Computação - UFPR September 2016

Introdução a Matrizes

Ficha de Avaliação Sumativa. Notas Gerais:

MC102 Algoritmos e Programação de Computadores

Curso de PHP. FATEC - Jundiaí TIPOS DE VARIÁVEIS

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

Linguagem C (repetição)

Fundamentos de Programação. Turma CI-240-EST. Josiney de Souza.

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

CURSO BÁSICO DE PROGRAMAÇÃO AULA 15. Revisão Vetores e Matrizes Trabalho

Fundamentos de Programação. Linguagem C++ aula II - Variáveis e constantes. Prof.: Bruno Gomes

EXERCÍCIOS: Estrutura Sequencial, IF (SE), ELSE (Senão)

Variáveis primitivas e Controle de fluxo

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

Introdução à Programação

21 Variáveis estruturadas

Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação. Material preparado pela profa Silvana Maria Affonso de Lara

Introdução ao MATLAB. Parte 2

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

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis

Gauss-Seidel para Solução de Sistemas com Matrizes Banda Usando Armazenamento Especial

Introdução à Programação. Vanessa Braganholo

Fundamentos de Programação

Aula 25: Funções com Arrays

CAPÍTULO 5 ESTRUTURAS DE REPETIÇÃO

1. Programação - Linguagem C /20

Exercícios: Vetores e Matrizes

1) Operadores de auto incremento ++ e auto decremento --

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

Exercícios: Comandos de Repetição

UNISINOS - UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática

Capítulo 7 Matriz. Roteiro

Apresentação da ferramenta de programação. Comandos de entrada e saída. Prof. Alex Camargo

Linguagem C Princípios Básicos (parte 1)

Ficha de trabalho nº3

CADERNO DE EXERCÍCIOS ALGORITMOS

Escreva a função e_caracter que verifica se um determinado caracter é um numero ou não. Escreva um Programa de teste da função.

Programação em MATLAB

Métodos Computacionais

Array em Java. Figura 1 - Exemplo de um array de inteiros

Aula 4 Estruturas de Controle

I-3 Introdução ao Matlab

9. Comando de repetição com variável de controle (para.. de.. até.. faça)

Questão 1. Nome para o arquivo fonte questao1.c

Computação e Programação

Escrever scripts de PHP com HTML

Capítulo 7. Expressões e Sentenças de Atribuição

1ª Lista de Exercícios

Gestão de Base de dados Tabelas e Chaves

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 Resolvido 1ª Época 9 de janeiro de 2012 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) Utilizando a função linspace, escreva uma instrução para construir e guardar na variável primeirov um vetor com 10 valores decrescentes entre 21 (inclusive) e 14 (inclusive), igualmente espaçados. primeirov = linspace(21, 14, 10); Problema 2 (1 valor) Considere a seguinte função real de variáveis reais : Escreva uma instrução para avaliar a expressão desta função matemática e guardar o resultado numa variável com um nome à sua escolha. Utilize as variáveis x e y, assumindo-as como to sido previamente criadas e devidamente inicializadas. z = (x^3 - (x - y)^3) / (x^2 - (x - y)^2); Problema 3 (1 valor) Assumindo a existência prévia de um vetor de números guardado na variável primeirov, escreva uma instrução para criar e guardar na variável segundov um novo vetor construído a partir do primeiro, copiando os valores que se encontrem separados por três posições, a começar pelo valor na segunda posição. segundov = primeirov(2 : 4 : )

Problema 4 (1 valor) Escreva uma instrução para criar e guardar uma tabela com três linhas e quatro colunas conto 12 reais aleatórios entre -2 (inclusive) e 3 (inclusive). rand(3, 4) * 5-2 Grupo 2 (4 valores) Problema 1 (2 valores) Defina uma função fporextenso para receber um número inteiro no intervalo [0, 3] e devolver um string (array de char s) com o nome do número entrado (e.g., se entrou o número 2, a função retorna o string dois ). Se o número recebido através do parâmetro de entrada não respeitar as limitações impostas, a função deve retornar um string vazio. function [ nome ] = fporextenso( num ) if num == 0 nome = 'zero'; elseif num == 1 nome = 'um'; elseif num == 2 nome = 'dois'; elseif num == 3 nome = 'três'; else nome = '' Problema 2 (2 valores) Desenvolva um script sporextenso para obter do utilizador um número inteiro no intervalo [20, 23] e, usando a função do problema anterior( 1 ), imprimir na janela de comandos o nome do número fornecido pelo utilizador. O script deve garantir que o utilizador acabará por introduzir um número inteiro no intervalo [20, 23]. ( 1 ) Se não fez o problema anterior, assuma que a função em causa existe, e está disponível. n = input('um inteiro no intervalo [20, 23]: '); while ~(n == 20 n == 21 n == 22 n == 23) n = input('vá lá! Um inteiro no intervalo [20, 23]: '); if n == 20 disp('vinte') else disp( [ 'vinte e ' fporextenso(n-20) ] ) 2

Grupo 3 (4 valores) Problema 1 (1 valor) Desenvolva uma função funlin para (1) receber uma matriz de números, de dimensões M x N, e um vetor de números de dimensão N, e (2) devolver uma matriz de números de dimensões M x N. A matriz devolvida deverá conter em cada linha ou a linha correspondente da matriz entrada ou o vetor entrado. Para cada linha correspondente nas duas matrizes, se a soma dos elementos da matriz de entrada for superior à soma dos elementos do vetor, a linha da matriz devolvida será igual à da matriz de entrada. De outro modo, será igual ao vetor. Deve utilizar instruções de ciclo encadeadas (não pode usar a função sum, ou outra equivalente). function matout = funlin( matin, vecin ) [nl nc] = size(matin); matout = zeros(nl, nc); % opcional no exame, mas desejável for i = 1:nL somam = 0; somav = 0; for j = 1:nC somam = somam + matin(i,j); somav = somav + vecin(j); if somam > somav % sum(matin(i,:)) > sum(vecin) % isto está impedido matout(i,:) = matin(i,:); else matout(i,:) = vecin; Problema 2 (1 valor) Desenvolva uma função fun e uma subfunção subfun. subfun deverá receber um número inteiro N > 1, e devolver três números inteiros pseudoaleatórios no intervalo [1, N]. fun não deverá ter parâmetros. Deverá obter do utilizador um número inteiro superior a 1, utilizá-lo para invocar subfun, e mostrar ao utilizador os três números recebidos a partir de subfun, por ordem decrescente. function fun x = input('um inteiro superior a 1: '); [a(1), a(2), a(3)] = subfun(x); a = sort(a, 'desc'); disp( a ); function [ pseudo1, pseudo2, pseudo3 ] = subfun( N ) pseudo1 = randi(n); pseudo2 = randi(n); pseudo3 = randi(n); 3

Problema 3 (2 valores) Desenvolva uma função para ler um ficheiro de texto chamado nomeepeso.txt e devolver um vetor de células (de strings) e um vetor numérico, com todos os dados desse ficheiro. O ficheiro terá um qualquer número de linhas, so todas compostas por uma palavra (um apelido) e um número (um peso) separados por uma vírgula. Os vectores devolvidos terão que ter um tamanho coincidente com o número de linhas do ficheiro. O primeiro vetor devolvido (o vetor de células) deve ser composto pelos nomes, e o segundo (o vetor numérico) pelos pesos. Os dados de cada linha devem ser lidos para os vetores pela mesma ordem, ou seja, a primeira componente de cada vetor guardará os valores lidos da primeira linha, e assim sucessivamente, até que a última componente guardará os valores lidos da última linha. function [ vcel, vnum ] = G3P3 fich = fopen('nomeepeso.txt'); i = 0; % contador de linhas while ~feof(fich) i = i + 1; [apelido, peso] = strtok( fgetl(fich), ',' ); vcel{i} = apelido; vnum(i) = str2num( peso ); Grupo 4 (4 valores) Problema 1 (1 valor) Desenvolva uma função procuranafronteira para receber: (1) um vetor com um número indeterminado de reais, (2) um primeiro valor real, e (3) um segundo valor real. Esta função deverá devolver um valor que pertença ao vetor e que resulte na maior diferença possível entre um valor do vetor e o primeiro valor recebido, mas sem que esta diferença ultrapasse o segundo valor recebido. function resp = procuranafronteira(vetor, valorref, limdif) % A função devolverá o valor -Inf se todas as diferenças % abs(vetor(i) - valorref) % ultrapassarem o valor limdif. resp = -Inf; difatual = -1; for i = 1 : length(vetor) novadif = abs(vetor(i) - valorref); if novadif <= limdif && novadif > difatual resp = vetor(i); difatual = novadif; 4

Problema 2 (1 valor) Desenvolva uma função calcpe para receber dois vetores, e, conto três reais cada um, e para devolver um vetor com três reais calculados de acordo com as seguintes três expressões matemáticas( 1 ): ( 1 ) Denota-se por o valor guardado na posição do vetor. function vsaida = calcpe(a, b) vsaida(1) = a(2) * b(3) - a(3) * b(2); vsaida(2) = a(3) * b(1) - a(1) * b(3); vsaida(3) = a(1) * b(2) - a(2) * b(1); Problema 3 (1 valor) a) Desenvolva uma função anónima para implementar a função matemática apresentada no Problema 2 do Grupo 1, guardando a respetiva referência (function handle) com o nome func. func = @(x, y)(x^3 - (x - y)^3) / (x^2 - (x - y)^2); b) Escreva uma instrução para testar a função desenvolvida na alínea anterior com valores escolhidos por si. func(2,2) 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 -1, seguido do valor -2. O que é depois mostrado ao utilizador? -1 cout << "Introduza dois valores >" ; int a, b, n = 0; cin >> a; cin >> b; while(n < 3) { int aux = b; b = a; a = aux; n = n + 1; } cout << b; 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. V a) Uma instrução pode incluir uma invocação de função. F b) Uma subfunção é uma função que se invoca a si mesma. F c) O valor numérico 1 pode ser escrito com ou sem plicas, ou seja, 1 ou 1. V d) Cada script corresponde a um ficheiro de texto. 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) O MATLAB possibilita a edição da interface gráfica de programas através da ferramenta GUIDE. F b) As variáveis criadas no espaço de trabalho base (base workspace) podem ser utilizadas nas funções, ou seja estão em âmbito no corpo das funções. V c) É possível atribuir a variáveis distintas vários valores devolvidos pela mesma chamada de função. V d) Diferentes propriedades de uma classe podem guardar valores de tipos distintos. 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) Um compilador só gera um ficheiro executável no caso de não existirem erros semânticos. V b) Uma expressão com o formato <nome>(<valor inteiro>, <valor inteiro>) tanto pode corresponder à chamada de uma função como ao acesso a um array de duas dimensões. V c) Uma subfunção não pode ser invocada fora do ficheiro onde está definida. F d) Existem para MATLAB e para C++ interpretadores distintos que suportam sintaxes distintas. 6