Exercícios Javascript
Funções geradoras
Funções que geram coleções de valores.
Uma coleção é uma estrutura de dados que armazena ou produz valores, como arrays ou listas.
Por exemplo:
const numbers = [1, 2, 3, 4];
- Escreva uma função
repete(x, n)
que devolve umarray
comn
cópias dex
. - Escreva uma função
aleatorios(n)
que devolve umarray
comn
números aleatórios. - Escreva uma função
intervalo(a, b)
que devolve umarray
com os números inteiros entrea
eb
incluindo ambos os extremos. Seb < a
o resultado deve ser a lista vazia[]
. - Escreva uma função
linspace(a, b, n)
que enche umarray
comn
números reais (float
) entrea
eb
, igualmente espaçados.- Por exemplo
linspace(0, 1, 3)
devolve[0.0, 0.5, 1.0]
.
- Por exemplo
Filtros
Funções que selecionam elementos de uma coleção.
Em geral, a seleção pode ser feita por meio de condições booleanas.
Por exemplo:
const even_numbers = numbers.filter(x => x % 2 === 0);
// [2, 4]
- Escreva uma função
pares(x)
que tem como argumento umarray x
de números inteiros e que devolve umarray
apenas com os números pares.- Por exemplo
pares([1, 2, 4, 5, 2, 3])
devolve[2, 4, 2]
.
- Por exemplo
- Escreva uma função
positivos(x)
que tem como argumento umarray x
de números reais e que devolve umarray
apenas com os números positivos.- Por exemplo
positivos([1, -2.5, 0.4, 0.0, -1.5, 2, 2.3])
devolve[1, 0.4, 2, 2.3]
.
- Por exemplo
- Escreva uma função
limite_sup(x, a)
que tem como argumentos umarray x
de números reais e um valora
e que devolve umarray
apenas com os números menores ou iguais que o valora
.- Por exemplo
limite_sup([1, -2.5, 0.4, 0.0, -1.5, 2, 2.3], 0.4)
devolve[-2.5, 0.4, 0.0, -1.5]
.
- Por exemplo
- Escreva uma função
filtro(f, x)
que tem como argumentos uma funçãof: float -> boolean
e umarray x
de números reais e que devolve umarray
apenas com os númerosxi
dex
tais quef(xi) === true
.- Por exemplo
filtro(x => x % 2 === 0, [1, 2, 4, 5, 2, 3])
devolve[2, 4, 2]
. Quais das alíneas acima consegue tornar a resolver usando esta função?
- Por exemplo
Mapas
Funções que transformam elementos de uma coleção.
Em geral, a transformação pode ser feita por uma função que aplica um valor num outro valor.
Por exemplo:
const square_numbers = numbers.map(x => x ** 2);
// [1, 4, 8, 16]
- Escreva uma função
dobro(x)
que tem como argumento umarray x
de números reais e que devolve umarray
com os dobros desses números.- Por exemplo
dobro([1, 2.1, 4, 5, -2, 3])
devolve[2, 4.2, 8, 10, -4, 6]
.
- Por exemplo
- Escreva uma função
quadrado(x)
que tem como argumento umarray x
de números reais e que devolve umarray
com os quadrados desses números.- Por exemplo
quadrado([1, -2.5, 0.4])
devolve[1, 6.25, 0.16]
.
- Por exemplo
- Escreva uma função
unicos(x)
que tem como argumento umarray x
de números reais e que devolve umarray
sem valores repetidos.- Por exemplo
quadrado([1, -2.5, 1])
devolve[1, -2.5]
.
- Por exemplo
- Escreva uma função
crescente(x)
que tem como argumento umarray x
de números reais e que devolve umarray
com os valores por ordem crescente.- Por exemplo
crescente([1, -2.5, 1])
devolve[-2.5, 1, 1]
.
- Por exemplo
- Escreva uma função
estender(x, n)
que tem como argumento umarray x
de números reais e um valor inteiron
e que devolve umarray
exatamente de comprimenton
. Se o comprimento dex
for menor quen
devem ser acrescentados zeros suficientes. Se o comprimento dex
for maior quen
os valores a mais são descartados.- Por exemplo
estender([1, -2.5], 4)
devolve[1, -2.5, 0, 0]
, eestender([1, 6.25, 0.16], 2)
devolve[1, 6.25]
.
- Por exemplo
- Escreva uma função
mapa(f, x)
que tem como argumentos uma funçãof: float -> float
e umarray x
de números reais e que devolve umarray
com númerosyi = f(xi)
em quex = [ ..., xi, ...]
.- Por exemplo
mapa(x => 2 * x, [1, 2.1, 4, 5, -2, 3])
devolve[2, 4.2, 8, 10, -4, 6]
. Quais das alíneas acima consegue tornar a resolver usando esta função?
- Por exemplo
Combinações
Funções que combinam uma ou várias coleções numa coleção nova.
Por exemplo:
const descending_numbers = numbers.reverse();
// [4, 3, 2, 1]
const seesaw = numbers.concat(descending_numbers);
// [1, 2, 3, 4, 4, 3, 2, 1]
-
Escreva uma função
inverte(x)
que tem como argumentos oarray x
de números reais e que devolve umarray
com os valores dex
por ordem inversa (do último para o primeiro). -
Assegure-se que
x = cadeia(cabeca(n, x), cauda(n, x))
para qualquerx
e qualquern
, em que:- A função
cadeia(x, y)
tem como argumentos doisarray x, y
de números reais e devolve umarray
com os valores dex
seguidos pelos valores dey
.- Por exemplo
cadeia([1, 2.1, 4], [5, -2, 3])
devolve[1, 2.1, 4, 5, -2, 3]
.
- Por exemplo
- A função
cabeca(n, x)
tem como argumentos oint n
e oarray x
de números reais e devolve oarray
dos primeirosn
valores dex
. - A função
cauda(n, x)
tem como argumentos oint n
e oarray x
de números reais e devolve oarray
com os valores dex
a partir don
-ésimo elemento.
- A função
-
Escreva uma função
somar(x, y)
que tem como argumentos doisarray x, y
de números reais e que devolve umarray
com os valores dex
somados aos valores dey
pela mesma ordem. Se os argumentos tiverem comprimentos diferentes o resultado deve ser a lista vazia:[]
.- Por exemplo
somar([1, 2.1, 4], [5, -2, 3])
devolve[6, 0.1, 7]
esomar([1, 2], [3])
devolve[]
.
- Por exemplo
-
Escreva uma função
emparelhar(x, y)
que tem como argumentos doisarray x, y
de números reais e que devolve umarray
com objetos{x: xi, y: yi}
ondexi, yi
estão nas mesmas posições dex, y
. Se os argumentos tiverem comprimentos diferentes o resultado deve ser a lista vazia:[]
.- Por exemplo
emparelhar([1, 2.1, 4], [5, -2, 3])
devolve[{x: 1, y: 5}, {x: 2.1, y: -2}, {x: 4, y: 3}]
eemparelhar([1, 2], [3])
devolve[]
. Consegue usar a funçãomapa
do exercício anterior para resolver esta alínea?
- Por exemplo
Reduções
Funções que reduzem uma coleção a um valor.
Por exemplo:
const numbers_count = numbers.length;
// 4
Math.min(...numbers);
// 1
- Escreva uma função
conta(x)
que tem como argumento umarray x
de números reais e que devolve o comprimento doarray
.- Por exemplo
conta([1, 2, 3, 4])
devolve4
.
- Por exemplo
- Escreva uma função
soma(x)
que tem como argumento umarray x
de números reais e que devolve a soma desses números.- Por exemplo
soma([1, 2, 3, 4])
devolve10
.
- Por exemplo
- Escreva uma função
media(x)
que tem como argumento umarray x
de números reais e que devolve a média desses números.- Por exemplo
media([1, 2, 3, 4])
devolve2.5
.
- Por exemplo
- Escreva uma função
max(x)
que tem como argumento umarray x
de números reais e que devolve o maior desses números.- Por exemplo
max([1, 2, 3, 4])
devolve4
.
- Por exemplo
- Escreva uma função
min(x)
que tem como argumento umarray x
de números reais e que devolve o menor desses números.- Por exemplo
min([1, 2, 3, 4])
devolve1
.
- Por exemplo
- Escreva uma função
stats(x)
que tem como argumento umarray x
de números reais e que devolve um sumário estatístico desses valores: um objeto com atributoscount, mean, stdev, min, max
. O atributocount
é o comprimento dex
, os valores demean, min, max
resultam das alíneas anteriores estdev
(o desvio padrão) pode ser calculado pela fórmula onde é a dimensão do vetor e a sua média.- Por exemplo
stats([1, 2, 3, 4])
devolve{count: 4, mean: 2.5, stdev: 1.291, min: 1, max: 4}
.
- Por exemplo
Álgebra Linear
Métodos numéricos fundamentais para a computação gráfica.
Por exemplo:
Um segmento pode ser definida por dois pontos, e . O comprimento deste segmento resulta do produto interno através da fórmula
- Escreva uma função
dot(x, y)
que tem como argumentos doisarray x, y
de números reais e que devolve o produto interno dos vetores e . O produto interno de e é Se os argumentos tiverem comprimentos diferentes o resultado deve ser a lista vazia:[]
.- Por exemplo
dot([1, 2, 3], [4, 5, 6])
devolve32
. Torne a resolver esta alínea usando as alíneas e exercícios anteriores.
- Por exemplo
- Escreva uma função
norma(x)
que tem como argumento umarray x
de números reais e que devolve a norma do vetor .- Por exemplo
norma([1, 1])
devolve1.4142135624
. Lembre-se que a norma de um vetor é
- Por exemplo