~~NOTOC~~
Linguagem de Programação S
Fundamentos e Aplicações em Recursos Florestais
{{ :pt:cursos_online:s_linguagem:s-language-s3.png?50 |}}
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 ({{:pt:cursos_online:s_linguagem:00-dados: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''**.
\\
-----------------------
\\