Ferramentas do usuário

Ferramentas do site


03_apostila:programar_ale

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Próxima revisão
Revisão anterior
03_apostila:programar_ale [2020/08/12 06:04]
127.0.0.1 edição externa
03_apostila:programar_ale [2020/09/23 17:13] (atual)
adalardo link
Linha 1: Linha 1:
  
 <WRAP tabs> <WRAP tabs>
-  * [[bie5782:02_tutoriais:​tutorial8:​start|Tutorial]] +  * [[02_tutoriais:​tutorial8:​start|Tutorial]] 
-  * [[bie5782:01_curso_atual:​exercicios9| Exercícios]] +  * [[01_curso_atual:​exercicios9| Exercícios]] 
-  * [[bie5782:03_apostila:​programar_ale| Apostila]]+  * [[03_apostila:​programar_ale| Apostila]]
 </​WRAP>​ </​WRAP>​
 ====== 9. Noções de Programação ​ ====== ====== 9. Noções de Programação ​ ======
Linha 20: Linha 20:
  
 Vejamos um exemplo.  ​ Vejamos um exemplo.  ​
-<​code>​+<​code ​rsplus>
 > zoo > zoo
  ​onça ​ anta  tatu guará  ​onça ​ anta  tatu guará
Linha 36: Linha 36:
  
 Qualquer vetor sempre terá uma classe e um comprimento,​ mas o atributo '''​names'''​ é opcional: Qualquer vetor sempre terá uma classe e um comprimento,​ mas o atributo '''​names'''​ é opcional:
-<​code>​+<​code ​rsplus>
 > b > b
 [1] 1 2 3 4 5 6 7 8 [1] 1 2 3 4 5 6 7 8
Linha 49: Linha 49:
  
 A função '''​attributes'''​ nos mostra os atributos de um objeto, mas é de uso limitado no caso de vetores: A função '''​attributes'''​ nos mostra os atributos de um objeto, mas é de uso limitado no caso de vetores:
-<​code>​+<​code ​rsplus>
 > zoo > zoo
  ​onça ​ anta  tatu guará  ​onça ​ anta  tatu guará
Linha 69: Linha 69:
  
 As funções do R também são objetos, mas da classe '''​function''':​ As funções do R também são objetos, mas da classe '''​function''':​
-<​code>​+<​code ​rsplus>
 > class( ls ) > class( ls )
 [1] "​function"​ [1] "​function"​
Linha 80: Linha 80:
  
 No caso das funções, podemos associar a elas os **argumentos** que elas necessitam para serem executadas: No caso das funções, podemos associar a elas os **argumentos** que elas necessitam para serem executadas:
-<​code>​+<​code ​rsplus>
 > args( ls ) > args( ls )
 function (name, pos = -1, envir = as.environment(pos),​ all.names = FALSE, function (name, pos = -1, envir = as.environment(pos),​ all.names = FALSE,
Linha 92: Linha 92:
  
 Algumas funções matemáticas,​ no entanto, tem sempre apenas um argumento e são consideradas **funções primitivas**:​ Algumas funções matemáticas,​ no entanto, tem sempre apenas um argumento e são consideradas **funções primitivas**:​
-<​code>​+<​code ​rsplus>
 > args( sin ) > args( sin )
 NULL NULL
Linha 116: Linha 116:
  
 Um aspecto importante num ambiente orientado a objetos é que **tudo** o que o ambiente trabalha são objetos e o ambiente não pode trabalhar com nada que não seja um objeto conhecido. ​  ​Inclui nessa categoria tudo aquilo que o R apresenta na tela, por isso toda saída do R pode ser guardada num objeto: Um aspecto importante num ambiente orientado a objetos é que **tudo** o que o ambiente trabalha são objetos e o ambiente não pode trabalhar com nada que não seja um objeto conhecido. ​  ​Inclui nessa categoria tudo aquilo que o R apresenta na tela, por isso toda saída do R pode ser guardada num objeto:
-<​code>​+<​code ​rsplus>
 > length( zoo ) > length( zoo )
 [1] 4 [1] 4
Linha 140: Linha 140:
  
 Quando o R nos mostra, como resultado de uma operação, ​ valores como '''​NULL''' ​ e '''​integer(0)'''​ ele está dizendo que o resultado é **vazio**, isto é, não há resultado: ​ Quando o R nos mostra, como resultado de uma operação, ​ valores como '''​NULL''' ​ e '''​integer(0)'''​ ele está dizendo que o resultado é **vazio**, isto é, não há resultado: ​
-<​code>​+<​code ​rsplus>
 > b > b
 [1] 1 2 3 4 5 6 7 8 [1] 1 2 3 4 5 6 7 8
Linha 151: Linha 151:
  
 Veja que o valor '''​NULL'''​ é um valor válidos que podem ser utilizados. Veja que o valor '''​NULL'''​ é um valor válidos que podem ser utilizados.
-<​code>​+<​code ​rsplus>
 > zoo2 = zoo > zoo2 = zoo
 > zoo2 > zoo2
Linha 178: Linha 178:
  
 Para obter a freqüência das espécies podemos usar a função '''​table''':​ Para obter a freqüência das espécies podemos usar a função '''​table''':​
-<​code>​+<​code ​rsplus>
 > table( sp ) > table( sp )
 sp sp
Linha 221: Linha 221:
  
 A estrutura básica de uma função é: A estrutura básica de uma função é:
-<​code>​+<​code ​rsplus>
  
 > minha.funcao <- function( argumento1, argumento2, argumento3, . . .) > minha.funcao <- function( argumento1, argumento2, argumento3, . . .)
Linha 245: Linha 245:
  
 Vejamos alguns exemplos simples: Vejamos alguns exemplos simples:
-<​code>​+<​code ​rsplus>
  
 ##criar um vetor de dados com 20 valores aleatórios de uma distribuição Poisson ​ ##criar um vetor de dados com 20 valores aleatórios de uma distribuição Poisson ​
Linha 373: Linha 373:
  
   * **Índice de Morisita**: ​   * **Índice de Morisita**: ​
-                     {{:bie5782:​03_apostila:​indice_morisita.jpg|}}+                     ​{{:​03_apostila:​indice_morisita.jpg|}}
 onde: onde:
    
Linha 393: Linha 393:
   * utilizando o **nome** dos argumentos **em qualquer ordem**;   * utilizando o **nome** dos argumentos **em qualquer ordem**;
   * utilizando a **ordem** dos argumentos, mas **omitindo** os nomes.   * utilizando a **ordem** dos argumentos, mas **omitindo** os nomes.
-<​code>​+<​code ​rsplus>
 > plot( col="​red",​ pch=2, y=egr$ht, x=egr$dap ) > plot( col="​red",​ pch=2, y=egr$ht, x=egr$dap )
 > plot( egr$dap, egr$ht ) > plot( egr$dap, egr$ht )
Linha 400: Linha 400:
  
 Para qualquer argumento podemos definir um **valor default** apresentando esse valor junto com argumento na definição da função: Para qualquer argumento podemos definir um **valor default** apresentando esse valor junto com argumento na definição da função:
-<​code>​+<​code ​rsplus>
 > myplot <- function(...,​ col="​red"​) { plot(..., col="​red"​) } > myplot <- function(...,​ col="​red"​) { plot(..., col="​red"​) }
 > myplot( cax$dap, cax$h ) > myplot( cax$dap, cax$h )
Linha 423: Linha 423:
  
 Para saber qual é o editor padrão do R use o comando: Para saber qual é o editor padrão do R use o comando:
-<​code>​+<​code ​rsplus>
 > getOption("​editor"​) > getOption("​editor"​)
 [1] "​vi"​ [1] "​vi"​
Linha 430: Linha 430:
  
 Para alterar o editor padrâo use o comando: Para alterar o editor padrâo use o comando:
-<​code>​+<​code ​rsplus>
 > options( editor= "​gedit"​ )       # Faz o editor "​gedit"​ ser o editor padrão do R  > options( editor= "​gedit"​ )       # Faz o editor "​gedit"​ ser o editor padrão do R 
 </​code>​ </​code>​
Linha 436: Linha 436:
  
 No caso de editar sua função num editor externo ao R (p.ex., no arquivo '''​minhas-funcoes.R'''​), ​ você traz o código para dentro do R utilizando o comando **"​source"​**:​ No caso de editar sua função num editor externo ao R (p.ex., no arquivo '''​minhas-funcoes.R'''​), ​ você traz o código para dentro do R utilizando o comando **"​source"​**:​
-<​code>​+<​code ​rsplus>
 > source( "​minhas-funcoes.R"​ ) > source( "​minhas-funcoes.R"​ )
 </​code>​ </​code>​
Linha 472: Linha 472:
  
 A estrutura de loop no R é: A estrutura de loop no R é:
-<​code>​+<​code ​rsplus>
                        for( "​variável" ​ in  "vetor de valores"​)                        for( "​variável" ​ in  "vetor de valores"​)
                        {                        {
Linha 486: Linha 486:
  
 Vejamos um exemplo: //​Convergência da distribuição t de Student para distribuição Normal Padronizada//:​ Vejamos um exemplo: //​Convergência da distribuição t de Student para distribuição Normal Padronizada//:​
-<​code>​+<​code ​rsplus>
 > # > #
 > # Convergência da distribuição t de Student para distribuição Normal Padronizada > # Convergência da distribuição t de Student para distribuição Normal Padronizada
Linha 517: Linha 517:
  
 Considere o problema o seguinte problema: temos a localização espacial de plantas num plano cartesiano com coordenadas **(x,​y)**. ​ Por exemplo: Considere o problema o seguinte problema: temos a localização espacial de plantas num plano cartesiano com coordenadas **(x,​y)**. ​ Por exemplo:
-<​code>​+<​code ​rsplus>
 > x = runif(100) > x = runif(100)
 > y = runif(100) > y = runif(100)
Linha 524: Linha 524:
  
 O objetivo é obter as **distâncias** entre as plantas duas-a-duas. ​ Primeiro consideremos uma solução através de loop: O objetivo é obter as **distâncias** entre as plantas duas-a-duas. ​ Primeiro consideremos uma solução através de loop:
-<​code>​+<​code ​rsplus>
 inter.edist = function(x, y) inter.edist = function(x, y)
 { {
Linha 541: Linha 541:
  
 Consideremos agora uma solução vetorial: Consideremos agora uma solução vetorial:
-<​code>​+<​code ​rsplus>
 inter.edist.v = function(x, y) inter.edist.v = function(x, y)
 { {
Linha 553: Linha 553:
  
 Qual dessas soluções é mais eficiente em termos do uso do tempo? Qual dessas soluções é mais eficiente em termos do uso do tempo?
-<​code>​+<​code ​rsplus>
 > x = runif(100) > x = runif(100)
 > y = runif(100) > y = runif(100)
Linha 582: Linha 582:
  
 <box 80% red> <box 80% red>
-<​code>​+<​code ​rsplus>
 ================================================================= =================================================================
  ​OPERADOR ​        ​DESCRIÇÃO ​                         PRIORIDADE  ​OPERADOR ​        ​DESCRIÇÃO ​                         PRIORIDADE
03_apostila/programar_ale.1597223092.txt.gz · Última modificação: 2020/08/12 06:04 por 127.0.0.1