Linguagem de Programação S
Fundamentos e Aplicações em Recursos Florestais
5. Noções de Programação


Exercícios

5.1. Programação Orientada a Objetos


Exercício 5.1.A. Freqüência de Espécies

Considere o vetor com nome de espécies:
> sp
[1] "Myrcia sulfiflora"      "Syagrus romanzoffianus" "Tabebuia cassinoides"
[4] "Myrcia sulfiflora"
>

Para obter a freqüência das espécies podemos usar a função table:

> table( sp )
     Myrcia sulfiflora Syagrus romanzoffianus   Tabebuia cassinoides
                     2                      1                      1
> 

Qual a classe do objeto que a função table retorna? Quais são os seus attributos?

Exercício 5.1.B. Classe da Classe

Qual a classe do objeto produzido pelo comando class( x )?


5.2. Funções Simples


Exercício 5.2.A. Logaritmo na Base 2

Construa uma função que calcula automaticamente o logaritmo na base 2.

Exercício 5.2.B. Índices de Dispersão I

Existe uma série de índices de dispersão baseados em dados de contagem para verificar o padrão espacial de uma espécie.

Alguns deles são:

  • Razão Variância-Média: $s^2 / \overline{x}$;
  • Coeficiente de Green: $\left[ (s^2 /\overline{x}) - 1\right] / \left[ \sum x_i - 1 \right]$;
  • Índice de Morisita: $n \left[ \sum x_i^2 - \sum x_i \right] / \left[ (\sum x_i)^2 - \sum x_i \right]$.

onde $x_i$ são dados de contagem de uma espécie por parcela.

Construa uma função para cada um desses índices, assumindo como argumento os valores de $x_i$. Aplique aos dados de caixetais, verificando a dispersão da árvores de caixeta em cada caixetal.

Exercício 5.2.C. Gráfico de Whittaker

Faça uma função para construir o gráfico de diversidade de espécies de Whittaker: logaritmo da abundância contra a ordem (descrescente) da abundância das espécies. Construa essa função de forma que qualquer parâmetro gráfico possa ser alterado.

Exercício 5.2.D. Somatório do Primeiros Números Naturais

Construa uma função que calcula o somatório dos primeiros n números naturais.

Por exemplo se n=4 a função deve retornar o valor: 1+2+3+4.


5.3. Controle de Fluxo


Exercício 5.3.A. Loop para Demonstrar o TCL

Construa uma função para demonstrar o Teorema Central do Limite, gerando amostras da distribuição uniforme.

Exercício 5.3.B. Fatorial

Construa uma função para calcular o fatorial de um número natural: $$n! = n\times (n-1)\times (n-2)\times \cdots\times 2\times 1$$ $$5! = 5\times 4\times 3\times 2\times 1$$


5.4. Vetorização


Exercício 5.4.A. Vetorizando o Desvio Padrão

Repita o exemplo de vetorização com a função dnorm utilizando a função sapply, mas mantenha a média constante e vetorize o desvio padrão (sd).


5.5. Exemplo de Algumas Funções


Exercício 5.5.A. Índices de Diversidade de Espécies

Construa funções para computar os seguintes índices de diversidade de espécies:
  • Índice de Shannon: $H = - \sum_{i=1}^S p_i \ln( p_i )$
  • Índice de Simpson: $D = \sum_{i=1}^S (p_i)^2$ onde $p_i$ é a proporção da espécie $i$.

Considere que os argumentos da sua função serão:

  • um vetor character com o nome das espécies para cada planta,
  • um vetor character que define o índice de diversidade: se Shannon ou se Simpson.

Exercício 5.5.B. Tabela de Fitossociologia

Construa uma função que gera uma tabela de fitossociologia. Utilize os dados de caixeta (caixeta-completo.csv) como teste.
Sua função é aplicável tanto para o conjunto de dados completo, como para cada valor da variável local?

Exercício 5.5.C. Verificando os Argumentos

Acrescente à sua função do exercício 10.5.A. acima (“Índices de Diversidade de Espécies”) o código necessário para que a função verifique se seus argumentos são de fato do tipo character.