~~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''**. \\ ----------------------- \\