Diferenças entre edições de "Teste de Avaliação de 21 de janeiro"
(Criou nova página com '==== Pergunta 1 (Escolha múltipla): Gerar triângulos de pitágoras ==== O teorema de Pitágoras estabelece a seguinte propriedade: se os lados a e b de um triângulo f...') |
(→Pergunta 7 (Escolha múltipla): Resolução de equações) |
||
(Há 6 edições intermédias do mesmo utilizador que não estão a ser apresentadas) | |||
Linha 82: | Linha 82: | ||
</li> | </li> | ||
</ol> | </ol> | ||
+ | |||
+ | ==== Pergunta 2 (Escolha múltipla): Sequência de Lucas ==== | ||
+ | |||
+ | Considere a seguinte função que gera uma sequência de Lucas: | ||
+ | |||
+ | <syntaxhighlight> | ||
+ | function luc = lucas(n) | ||
+ | luc = zeros(n,1); | ||
+ | luc(1) = 2; | ||
+ | luc(2) = 1; | ||
+ | for k = 3:n | ||
+ | luc(k) = luc(k-1) + luc(k-2); | ||
+ | end | ||
+ | endfunction | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Diga qual das seguintes sequências é gerada com a invocação: | ||
+ | |||
+ | <syntaxhighlight> | ||
+ | lucas(10) | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | # <span style="color: green;">Correta</span><syntaxhighlight enclose="none"> 2 1 3 4 7 11 18 29 47 76</syntaxhighlight> | ||
+ | # <span style="color: red;">Errada</span><syntaxhighlight enclose="none"> 1 2 3 5 8 13 21 34 55 89</syntaxhighlight> | ||
+ | # <span style="color: red;">Errada</span><syntaxhighlight enclose="none"> 1 2 3 4 5 6 7 8 9 10</syntaxhighlight> | ||
+ | # <span style="color: red;">Errada</span><syntaxhighlight enclose="none"> 1 1 2 3 5 8 13 21 34 55</syntaxhighlight> | ||
+ | |||
+ | ==== Pergunta 3 (Escolha múltipla): Gerar matriz ==== | ||
+ | |||
+ | Considere a seguinte matriz: | ||
+ | |||
+ | <math> | ||
+ | A = | ||
+ | \begin{pmatrix} | ||
+ | 1 & 2 & 3 & 4 & 5 & 6 \\ | ||
+ | 9 & 7 & 5 & 3 & 1 & -1 \\ | ||
+ | 4 & 8 & 16 & 32 & 64 & 128 | ||
+ | \end{pmatrix} | ||
+ | </math> | ||
+ | |||
+ | Diga qual das seguintes expressões poderia ser utilizada para gerar a matriz A. | ||
+ | |||
+ | # <span style="color: green;">Correta</span><syntaxhighlight>A = [1:6; 9:-2:-1; 2.^(2:7)]</syntaxhighlight> | ||
+ | # <span style="color: red;">Errada</span><syntaxhighlight>A = [1:6; 9:-2:-1; 4.*1:4:32]</syntaxhighlight> | ||
+ | # <span style="color: red;">Errada</span><syntaxhighlight>A = [1:6; fliplr(-1:2:9); 2^(2:7)]</syntaxhighlight> | ||
+ | # <span style="color: red;">Errada</span><syntaxhighlight>A = [[1 2 3 4 5 6] [9 7 5 3 1 -1] [4 8 16 32 64 128]]</syntaxhighlight> | ||
+ | |||
+ | ==== Pergunta 4 (Responder numa linha): Matrizes mágicas ==== | ||
+ | |||
+ | Uma matriz de n por n contendo os números de 1 até n² diz-se uma matriz mágica, se cada uma das colunas, cada uma das linhas e as duas diagonais principais tiverem a mesma soma. | ||
+ | |||
+ | Considere a matriz M e a matriz N. | ||
+ | |||
+ | <math> | ||
+ | M = | ||
+ | \begin{pmatrix} | ||
+ | 8 & 1 & 6 \\ | ||
+ | 3 & 5 & 7 \\ | ||
+ | 4 & 9 & 2 | ||
+ | \end{pmatrix}, | ||
+ | N = | ||
+ | \begin{pmatrix} | ||
+ | 16 & 2 & 3 & 13 \\ | ||
+ | 5 & 11 & 10 & 8 \\ | ||
+ | 9 & 7 & 6 & 12 \\ | ||
+ | 4 & 14 & 15 & 1 | ||
+ | \end{pmatrix} | ||
+ | </math> | ||
+ | |||
+ | A soma das linhas de M, das colunas de de cada uma das diagonais dá sempre 15. Da mesma forma, a soma das linhas de N, das colunas e das diagonais dá sempre 34. Ambas são matrizes mágicas. | ||
+ | |||
+ | Verifica-se o também a seguinte propriedade: a soma de cada linha, coluna ou diagonal é igual à soma de todos os elementos da matriz a dividir pela dimensão da mesma. Ou seja, na matriz M todas as linhas, colunas e diagonais somam 15 que é igual a 45 (soma de todos os elementos da matriz) a dividir por 3 (a dimensão da matriz). De igual modo, todos os elementos da matriz N somam 136, que dividindo por 4, dá 34, que é a soma das linhas, colunas e diagonais. | ||
+ | |||
+ | Escreva numa única linha um predicado (uma expressão que dá 1 ou 0, consoante seja verdade ou falso) que diga se uma dada matriz M verifica a seguinte propriedade: | ||
+ | |||
+ | ''a soma das colunas são todas iguais'' | ||
+ | |||
+ | O predicado anterior tem que dar 1 (verdadeiro) aplicado a qualquer uma das matrizes anteriores. | ||
+ | |||
+ | ===== Resposta ===== | ||
+ | |||
+ | <syntaxhighlight>range(sum(N)) == 0</syntaxhighlight> | ||
+ | |||
+ | ou | ||
+ | |||
+ | <syntaxhighlight>length(unique(sum(N))) == 1</syntaxhighlight> | ||
+ | |||
+ | ==== Pergunta 5 (Escolha múltipla): Passar um programa para função ==== | ||
+ | |||
+ | Num exame anterior, foi pedido que escrevesse um programa para calcular o alcance e o tempo de viagem de uma bola de golf. Esse mesmo exercício está resolvido no wiki da disciplina, em [[Exame de Recurso#Programa para calcular o alcance de uma bola de golfe]]. | ||
+ | |||
+ | Pretende-se '''uma função''' que faça apenas o '''cálculo da distância alcançada pela bola de golf''', sabendo os mesmos dados: o ângulo e a velocidade inicial. | ||
+ | |||
+ | Escolha a implementação que lhe parece melhor conseguida. | ||
+ | |||
+ | |||
+ | <ol> | ||
+ | <li><span style="color: green;">Correta</span><syntaxhighlight> | ||
+ | function Xmax = golf(angulo, velocidade) | ||
+ | g = 9.80665; | ||
+ | Xmax = 2 * ( velocidade^2/g) * sind(angulo) * cosd(angulo); | ||
+ | endfunction | ||
+ | </syntaxhighlight> | ||
+ | </li> | ||
+ | <li><span style="color: red;">Errada</span><syntaxhighlight> | ||
+ | function golf(angulo, velocidade) | ||
+ | angulo = input("Angulo de lançamento?"); | ||
+ | velocidade = input("Velocidade inicial?"); | ||
+ | g = 9.80665; | ||
+ | theta = angulo*pi/180; | ||
+ | Xmax = 2 * ( velocidade^2/g) * sin(theta) * cos(theta); | ||
+ | printf("Uma bola de golf lançada a %.2f graus a uma velocidade de %.2f m/s, atinge o solo a uma distância de %.2f m", angulo, velocidade, Xmax ); | ||
+ | endfunction | ||
+ | </syntaxhighlight> | ||
+ | </li> | ||
+ | <li><span style="color: red;">Errada</span><syntaxhighlight> | ||
+ | function golf(angulo, velocidade) | ||
+ | angulo = input("Angulo de lançamento?"); | ||
+ | velocidade = input("Velocidade inicial?"); | ||
+ | g = 9.80665; | ||
+ | theta = angulo*pi/180; | ||
+ | Xmax = 2 * ( velocidade^2/g) * sin(theta) * cos(theta); | ||
+ | disp(Xmax); | ||
+ | endfunction | ||
+ | </syntaxhighlight> | ||
+ | </li> | ||
+ | <li><span style="color: red;">Errada</span><syntaxhighlight> | ||
+ | function res = golf(angulo, velocidade) | ||
+ | g = 9.80665; | ||
+ | theta = angulo*pi/180; | ||
+ | Xmax = 2 * ( velocidade^2/g) * sin(theta) * cos(theta); | ||
+ | disp(res); | ||
+ | endfunction | ||
+ | </syntaxhighlight> | ||
+ | </li> | ||
+ | </ol> | ||
+ | |||
+ | ==== Pergunta 6 (Escolha múltipla): Resolução de equações ==== | ||
+ | |||
+ | A Matilde comprou três maças, uma dúzia de bananas e uma laranja por 6,80 €. | ||
+ | A Sara comprou uma dúzia de maças e duas laranjas por 2,50 €. | ||
+ | A Rita comprou duas bananas e três laranjas por 2,05 €. | ||
+ | Quanto custa uma peça de cada fruta? | ||
+ | |||
+ | Para resolver este problema, escreveram-se as três equações seguintes, em que temos igualmente três variáveis, que são o preço unitário de cada peça de fruta. | ||
+ | |||
+ | <math>\begin{align} | ||
+ | 3 x_1 & + & 12 x_2 & + & x_3 & = 6,80 \\ | ||
+ | 12 x_1 & & & + & 2 x_3 & = 2,50 \\ | ||
+ | & & 2 x_2 & + & 3 x_3 & = 2,05 | ||
+ | \end{align}</math> | ||
+ | |||
+ | Recorrendo a matrizes, podemos escrever estas equações da forma: <math>A x = b</math>, cuja solução é <math>x = A^{-1} b</math>. | ||
+ | |||
+ | Indique, portanto, o resultado desta equação. | ||
+ | |||
+ | # <span style="color: red;">Errada</span><syntaxhighlight enclose="none"> x = [1.15; 0.25; 0.35]</syntaxhighlight> | ||
+ | # <span style="color: green;">Correta</span><syntaxhighlight enclose="none"> x = [0.15; 0.5; 0.35]</syntaxhighlight> | ||
+ | # <span style="color: red;">Errada</span><syntaxhighlight enclose="none"> x= [0.10; 0.50; 0.65]</syntaxhighlight> | ||
+ | # <span style="color: red;">Errada</span><syntaxhighlight enclose="none"> x= [0.50; 0.35; 0.45]</syntaxhighlight> | ||
+ | # <span style="color: red;">Errada</span><syntaxhighlight enclose="none"> x= [0.12; 0.45; 0.80]</syntaxhighlight> | ||
+ | # <span style="color: red;">Errada</span><syntaxhighlight enclose="none"> x= [0.80; 0.30; 0.50]</syntaxhighlight> | ||
+ | |||
+ | ==== Pergunta 7 (Escolha múltipla): Invocar função ==== | ||
+ | |||
+ | Considere que já tem disponível a a seguinte função auxiliar '''menorde3''': | ||
+ | |||
+ | <syntaxhighlight> | ||
+ | function n = menorde3(t) | ||
+ | n = min(t); | ||
+ | endfunction | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Qual dos seguintes programas usaria para calcular o menor de 3 números indicados pelo utilizador, tirando proveito da função anterior '''menorde3'''? | ||
+ | |||
+ | # <span style="color: green;">Correta</span><syntaxhighlight enclose="none"> t = input("Valores?"); menorde3(t)</syntaxhighlight> | ||
+ | # <span style="color: red;">Errada</span><syntaxhighlight enclose="none"> a = input("a?"); b = input("b?"); c= input("c?"); menorde3(a, b, c)</syntaxhighlight> | ||
+ | # <span style="color: red;">Errada</span><syntaxhighlight enclose="none"> a = input("a?"); b = input("b?"); c= input("c?"); maiorde3([a, b, c])</syntaxhighlight> | ||
+ | # <span style="color: red;">Errada</span><syntaxhighlight enclose="none"> t = input("Valores?"); menorde3(t(1), t(2), t(3))</syntaxhighlight> | ||
+ | |||
+ | ==== Pergunta 8 (Escolha múltipla): Ano bissexto ==== | ||
+ | |||
+ | De x em x anos, em vez de 365 dias, o ano tem 366 dias, o qual é designado ano bissexto. Isto é feito com o objetivo de manter o calendário anual ajustado com a translação do planeta. Diga qual das seguintes expressões calcula corretamente o número de anos bissextos que já se verificaram (depois de Cristo). | ||
+ | |||
+ | # <span style="color: green;">Correta</span><syntaxhighlight enclose="none"> sum(is_leap_year(4:4:2014))</syntaxhighlight> | ||
+ | # <span style="color: red;">Errada</span><syntaxhighlight enclose="none"> length(anos(mod(anos,4)==0))</syntaxhighlight> | ||
+ | # <span style="color: red;">Errada</span><syntaxhighlight enclose="none"> length(anos(bissexto(anos)))</syntaxhighlight> | ||
+ | # <span style="color: red;">Errada</span><syntaxhighlight enclose="none"> round(2014/4)</syntaxhighlight> |
Edição atual desde as 15h34min de 4 de fevereiro de 2014
Índice
- 1 Pergunta 1 (Escolha múltipla): Gerar triângulos de pitágoras
- 2 Pergunta 2 (Escolha múltipla): Sequência de Lucas
- 3 Pergunta 3 (Escolha múltipla): Gerar matriz
- 4 Pergunta 4 (Responder numa linha): Matrizes mágicas
- 5 Pergunta 5 (Escolha múltipla): Passar um programa para função
- 6 Pergunta 6 (Escolha múltipla): Resolução de equações
- 7 Pergunta 7 (Escolha múltipla): Invocar função
- 8 Pergunta 8 (Escolha múltipla): Ano bissexto
Pergunta 1 (Escolha múltipla): Gerar triângulos de pitágoras
O teorema de Pitágoras estabelece a seguinte propriedade: se os lados a e b de um triângulo formam um ângulo reto, então verifica-se que a²+b²=h², em que h é o lado oposto ao ângulo reto, designado hipotenusa.
Considere o seguinte algoritmo para gerar um triângulo de Pitágoras:
- Comece por um número ímpar, x.
- Seja y igual a esse número mais 2, sendo que y é também ímpar.
- Crie duas frações unitárias, com x e y no denominador (1/x e 1/y), e some-as.
- A fração obtida tem no numerador e no denominador os dois lados de um triângulo de pitágoras, a e b
- A hipotenusa ser calculada com a fórmula: h = √(a² + b²)
Este algoritmo pode ser ilustrado, começando por escolher 3
- x = 3
- y = 5
- 1/3 + 1/5 = 8/15
- a = 8 (numerador), b= 15 (denominador)
- h = √(8² + 15²) = 17
Resulta, nesta ilustração do algoritmo, o rectângulo com os lados 8, 15 e 17.
Diga qual dos seguintes programas melhor implementa o referido algoritmo?
- Correta
do x = input("Numero impar?"); until (rem(x, 2) != 0); y = x + 2; a = lcm(x,y)/x + lcm(x,y)/y; b = lcm(x,y); h = sqrt(a^2 + b^2); printf("O triangulo de pitagoras tem os lados %d, %d e %d\n", a, b, h);
- Errada
do x = input("Numero impar?"); until (rem(x, 2) != 0); do y = input("Numero impar?"); until (rem(y, 2) != 0); if (y-x != 2) disp("y tem que ser igual a x mais 2"); else a = lcm(x,y)/x + lcm(x,y)/y; b = lcm(x,y); h = sqrt(a^2 + b^2); printf("O triangulo de pitagoras tem os lados %d, %d e %d\n", a, b, h); endif
- Errada
x = input("Numero impar?"); y = input("Numero impar?"); if (y-x != 2 & rem(x,2)!= 0) disp("y tem que ser igual a x mais 2"); else n1 = lcm(x,y)/x; n2 = lcm(x,y)/y; a = n1 + n2; b = lcm(x,y); h = sqrt(a^2 + b^2); printf("O triangulo de pitagoras tem os lados %d, %d e %d\n", a, b, h); endif
- Errada porque a expressão rem(x,0) dá sempre x
x = input("Numero impar?"); y = x+2; if (rem(x,0)==0) disp("x tem que ser impar"); else mmc = lcm(x,y); a = mmc/x + mmc/y; b = mmc; h = sqrt(a^2 + b^2); printf("O triangulo de pitagoras tem os lados %d, %d e %d\n", a, b, h); endif
Pergunta 2 (Escolha múltipla): Sequência de Lucas
Considere a seguinte função que gera uma sequência de Lucas:
function luc = lucas(n) luc = zeros(n,1); luc(1) = 2; luc(2) = 1; for k = 3:n luc(k) = luc(k-1) + luc(k-2); end endfunction
Diga qual das seguintes sequências é gerada com a invocação:
lucas(10)
- Correta 2 1 3 4 7 11 18 29 47 76
- Errada 1 2 3 5 8 13 21 34 55 89
- Errada 1 2 3 4 5 6 7 8 9 10
- Errada 1 1 2 3 5 8 13 21 34 55
Pergunta 3 (Escolha múltipla): Gerar matriz
Considere a seguinte matriz:
Diga qual das seguintes expressões poderia ser utilizada para gerar a matriz A.
- Correta
A = [1:6; 9:-2:-1; 2.^(2:7)]
- Errada
A = [1:6; 9:-2:-1; 4.*1:4:32]
- Errada
A = [1:6; fliplr(-1:2:9); 2^(2:7)]
- Errada
A = [[1 2 3 4 5 6] [9 7 5 3 1 -1] [4 8 16 32 64 128]]
Pergunta 4 (Responder numa linha): Matrizes mágicas
Uma matriz de n por n contendo os números de 1 até n² diz-se uma matriz mágica, se cada uma das colunas, cada uma das linhas e as duas diagonais principais tiverem a mesma soma.
Considere a matriz M e a matriz N.
A soma das linhas de M, das colunas de de cada uma das diagonais dá sempre 15. Da mesma forma, a soma das linhas de N, das colunas e das diagonais dá sempre 34. Ambas são matrizes mágicas.
Verifica-se o também a seguinte propriedade: a soma de cada linha, coluna ou diagonal é igual à soma de todos os elementos da matriz a dividir pela dimensão da mesma. Ou seja, na matriz M todas as linhas, colunas e diagonais somam 15 que é igual a 45 (soma de todos os elementos da matriz) a dividir por 3 (a dimensão da matriz). De igual modo, todos os elementos da matriz N somam 136, que dividindo por 4, dá 34, que é a soma das linhas, colunas e diagonais.
Escreva numa única linha um predicado (uma expressão que dá 1 ou 0, consoante seja verdade ou falso) que diga se uma dada matriz M verifica a seguinte propriedade:
a soma das colunas são todas iguais
O predicado anterior tem que dar 1 (verdadeiro) aplicado a qualquer uma das matrizes anteriores.
Resposta
range(sum(N)) == 0
ou
length(unique(sum(N))) == 1
Pergunta 5 (Escolha múltipla): Passar um programa para função
Num exame anterior, foi pedido que escrevesse um programa para calcular o alcance e o tempo de viagem de uma bola de golf. Esse mesmo exercício está resolvido no wiki da disciplina, em Exame de Recurso#Programa para calcular o alcance de uma bola de golfe.
Pretende-se uma função que faça apenas o cálculo da distância alcançada pela bola de golf, sabendo os mesmos dados: o ângulo e a velocidade inicial.
Escolha a implementação que lhe parece melhor conseguida.
- Correta
function Xmax = golf(angulo, velocidade) g = 9.80665; Xmax = 2 * ( velocidade^2/g) * sind(angulo) * cosd(angulo); endfunction
- Errada
function golf(angulo, velocidade) angulo = input("Angulo de lançamento?"); velocidade = input("Velocidade inicial?"); g = 9.80665; theta = angulo*pi/180; Xmax = 2 * ( velocidade^2/g) * sin(theta) * cos(theta); printf("Uma bola de golf lançada a %.2f graus a uma velocidade de %.2f m/s, atinge o solo a uma distância de %.2f m", angulo, velocidade, Xmax ); endfunction
- Errada
function golf(angulo, velocidade) angulo = input("Angulo de lançamento?"); velocidade = input("Velocidade inicial?"); g = 9.80665; theta = angulo*pi/180; Xmax = 2 * ( velocidade^2/g) * sin(theta) * cos(theta); disp(Xmax); endfunction
- Errada
function res = golf(angulo, velocidade) g = 9.80665; theta = angulo*pi/180; Xmax = 2 * ( velocidade^2/g) * sin(theta) * cos(theta); disp(res); endfunction
Pergunta 6 (Escolha múltipla): Resolução de equações
A Matilde comprou três maças, uma dúzia de bananas e uma laranja por 6,80 €. A Sara comprou uma dúzia de maças e duas laranjas por 2,50 €. A Rita comprou duas bananas e três laranjas por 2,05 €. Quanto custa uma peça de cada fruta?
Para resolver este problema, escreveram-se as três equações seguintes, em que temos igualmente três variáveis, que são o preço unitário de cada peça de fruta.
Recorrendo a matrizes, podemos escrever estas equações da forma: , cuja solução é .
Indique, portanto, o resultado desta equação.
- Errada x = [1.15; 0.25; 0.35]
- Correta x = [0.15; 0.5; 0.35]
- Errada x= [0.10; 0.50; 0.65]
- Errada x= [0.50; 0.35; 0.45]
- Errada x= [0.12; 0.45; 0.80]
- Errada x= [0.80; 0.30; 0.50]
Pergunta 7 (Escolha múltipla): Invocar função
Considere que já tem disponível a a seguinte função auxiliar menorde3:
function n = menorde3(t) n = min(t); endfunction
Qual dos seguintes programas usaria para calcular o menor de 3 números indicados pelo utilizador, tirando proveito da função anterior menorde3?
- Correta t = input("Valores?"); menorde3(t)
- Errada a = input("a?"); b = input("b?"); c= input("c?"); menorde3(a, b, c)
- Errada a = input("a?"); b = input("b?"); c= input("c?"); maiorde3([a, b, c])
- Errada t = input("Valores?"); menorde3(t(1), t(2), t(3))
Pergunta 8 (Escolha múltipla): Ano bissexto
De x em x anos, em vez de 365 dias, o ano tem 366 dias, o qual é designado ano bissexto. Isto é feito com o objetivo de manter o calendário anual ajustado com a translação do planeta. Diga qual das seguintes expressões calcula corretamente o número de anos bissextos que já se verificaram (depois de Cristo).
- Correta sum(is_leap_year(4:4:2014))
- Errada length(anos(mod(anos,4)==0))
- Errada length(anos(bissexto(anos)))
- Errada round(2014/4)