Exercícios

  1. Para cada item a seguir implemente a função que se pede. Atenção: não use a função min já pronta no R.

    1. Implemente uma função que recebe como argumento dois números reais e retorna o menor entre eles.
    2. Implemente uma função que recebe como argumento três números reais e retorna o menor entre eles.
    3. Implemente uma função que recebe como argumento um array de números e retorna o menor número dentro do array.
  2. Implemente uma função que recebe como argumento o tamanho de cada lado de um triângulo e retorna um objeto do tipo character com o texto informando se o triângulo é equilátero, isósceles ou escaleno. Antes de fazer o exercício pense:

    • Quantos argumentos a sua função vai receber?
    • Quais são os valores aceitáveis para esses argumentos?
    • Qual o tipo de objeto que a sua função deve retornar?
  3. Implemente uma função que recebe como argumento um array de números reais e retorna a quantidade de elementos positivos nesse array. Não se esqueça de inciar todas as variáveis locais usadas em sua função. Depois que a sua função estiver pronta invente vetores para o argumento de forma a verificar se a função está funcionando como o esperado. Por exemplo, use a função para contar o número de elementos positivos em v = c(1.0,3.2,-2.1,10.6,0.0,-1.7,-0.5).

  4. Implemente uma função que recebe como argumento um array de numerics denominado v e um número real a. Essa função retorna o número de elementos em v menores que a.

  5. Para cada item a seguir faça o que se pede. Não se esqueça de fazer as verificações necessárias para garantir que o usuário passe os argumentos de forma correta.

    1. Implemente uma função que recebe como argumento as variáveis n e m e retorna um array que guarda os n primeiros múltiplos de m.
    2. Implemente uma função que recebe como argumento as variáveis m e k e retorna um array com os múltiplos de m menores que k.
    3. Implemente uma função que recebe como argumento as variáveis m e k e retorna a quantidade de múltiplos de m menores que k.
    4. Classifique cada variável que aparece dentro das funções implementadas nesse exercício como “variável local” ou “argumento de entrada” da função. Todas as variáveis locais foram iniciadas dentro do corpo da função?
  6. Para cada item a seguir faça o que se pede. Não se esqueça de fazer as verificações necessárias para garantir que o usuário passe os argumentos de forma correta.

    1. Implemente uma função que recebe como entrada um número natural n e retorna uma matriz n \(\times\) n tal que as posições em linhas pares recebem o número 2 e as posições em linhas ímpares o número 1.
    2. Implemente uma função que recebe como entrada um numero natural n e retorna uma matriz n \(\times\) n tal que a coluna i dessa matriz guarda o valor i. Por exemplo, a primeira coluna deve ser preenchida com 1, a segunda com 2 e assim por diante, até a n-ésima coluna que deve ser preenchida com o número n.
    3. Implemente uma função que recebe como entrada um numero natural n e retorna uma matriz diagonal n \(\times\) n tal que na diagonal principal aparecem os valores de 1 até n. Por exemplo, a posição (1,1) deve ser preenchido com 1, a posição (2,2) com 2 e assim por diante. As demais posições devem ser nulas, uma vez que a matriz de saída é diagonal.
  7. Para cada item a seguir faça o que se pede. Não se esqueça de fazer as verificações necessárias para garantir que o usuário passe os argumentos de forma correta.

    1. Implemente uma função que recebe como entrada um vetor de número reais v e retorna uma matriz diagonal com os elementos de v guardados na diagonal principal.
    2. Implemente uma função que recebe como entrada um vetor de número reais v e retorna uma matriz quadrada cujas colunas são iguais ao vetor v.
    3. Implemente uma função que recebe como entrada um vetor de número reais v e retorna uma matriz quadrada cujas linhas são iguais ao vetor v.
  8. Para cada item a seguir faça o que se pede. Não se esqueça de fazer as verificações necessárias para garantir que o usuário passe os argumentos de forma correta.

    1. Implemente uma função que recebe como argumento o valor inicial x0 e retorna os 10 primeiros termos de uma p.a. cuja razão é 3.
    2. Implemente uma função que recebe como argumento o valor inicial x0, a razão r e retorna um vetor com os 10 primeiros termos dessa p.a.
    3. Implemente uma função que recebe como argumentos o valor inicial x0, a razão r, um inteiro n e retorna um vetor com os n primeiros termos de uma p.a. Nomeie essa função de pa.
    4. Implemente uma função que recebe como argumento o valor inicial x0, a razão r, um inteiro n e retorna a soma dos n primeiros termos de uma p.a. Nomeie essa função de soma_pa. Obs: Você deve chamar no corpo da função soma_pa a função pa implementasda no item anterior.
    5. Classifique cada variável que aparece dentro das funções soma_pa e pa como “variável local” ou “argumento de entrada” da função. Todas as variáveis locais foram iniciadas dentro do corpo da função?
  9. Implemente uma função que:

    1. recebe como argumento a variável n e retorna um vetor com os n primeiros termos da sequência de Fibonacci.
    2. recebe como argumento a variável k e retorna um vetor com os todos os termos da sequência de Fibonacci menores que k.
    3. recebe como argumento a variável k e retorna o número de termos da sequência de Fibonacci menores que k.
  10. Suponha que a função f apresentada a seguir foi implementada no R com o intuito de gerar um array com os naturais de 1 até n, sendo n passado como argumento pelo usuário. Após f ter sido definida ela foi chamada a partir da sequência de comandos também apresentada abaixo.

    1. Sem usar o computador, qual o valor de v e qual o valor de vet ao final dessa sequência de comandos?
    2. A saída da função f, guardada no array vet, é como o esperado? Caso negativo, qual mudança você faria em f para que essa função passe a funcionar corretamente?
f <- function(n){
   for(i in 1:n){
       v[i] <- i
   }
   return(v)
}
v <- c(0,0,0,0,0)
vet <- f(3)
  1. Uma progressão geométrica (p.g.) é uma sequência numérica em que cada termo, a partir do segundo, é igual ao produto do termo anterior por uma constante q. Esta constante q é chamada razão e o primeiro termo da sequência será chamado de x0.
    1. Implemente uma função cujas entradas são x0, q e n e a saída é um array com os n primeiros termos de uma p.g. cujo termo inicial x0 e a razão é q.
    2. Implemente uma função cujas entradas são x0, q e m e a saída é a soma dos m primeiros termos de uma p.g. com termo inicial x0 e razão q.
    3. Usando as funções implementadas, encontre a soma dos 10 primeiros termos da p.g. de razão \(\frac{1}{2}\) e valor inicial \(\frac{1}{2}\).
    4. Usando as funções implementadas, encontre a soma dos 30 primeiros termos da p.g. de razão \(\frac{1}{2}\) e valor inicial \(\frac{1}{2}\).
    5. Você acredita que essa soma converge, ou seja, você acha que \(\frac{1}{2} + \frac{1}{2}^2 + \ldots \frac{1}{2}^n = \sum_{i=1}^n \frac{1}{2}^i \xrightarrow[n \to \infty ]{} a \in \mathbb{R}?\)
    6. É possível demonstrar se essa série convergência ou não pelo computador? OBS: Use o comando options(digits=22) se quiser usar o número máximos de casas decimais que o R aceita, que é 22.
  2. Questão Desafio.
    1. Implemente uma função que recebe como entrada um número natural positivo k e retorna um array com a fatoração de k em números primos. Isto é, o array de saída contém somente números primos tais que o produto deles é igual a k.
    2. Implemente uma função que recebe como entrada um número k e retorna TRUE se k for primo e FALSE caso contrário.
    3. Implemente uma função que recebe como entrada um número n e retorna um array com os n primeiros primos. Dica: dentro desta função chame a função implementada no item (b).