Professional Documents
Culture Documents
Estrutura do R: Definies e
noes de boas prticas de
programao
Maro.2016
RStudio
Interface de edio de cdigos em R
Download:
https://www.rstudio.com/products/rstudio/
download/
RStudio
Vantagens:
Organizao automtica do texto por
tabulaes e cores;
Janelas de trabalho em uma s tela;
Controle das variveis criadas
Entre outras ferramentas.
RStudio
Linguagem R
O R uma linguagem orientada a
objetos.
Objetos para o R: banco de dados,
uma tabela, variveis, vetores,
matrizes, funes, etc.
Objetos so armazenados na
memria ativa do computador.
Comando HELP
Na linguagem R, possvel consultar a
documentao sobre quaisquer funes e
estruturas que j existam;
Para isto, utilize uma das opes:
Use o comando help(funo_desejada);
Use ?funo_desejada
Workspace
Cada vez que o R aberto inicia-se uma
nova sesso.
A coleo de objetos criados durante uma
sesso R denominada de workspace.
Tipos de objetos
Sete tipos bsicos de objetos, classificados
em duas categorias:
Objetos atmicos contm apenas dados
de um nico tipo: vector, matrix, array,
factor, ts.
Objetos no atmicos contm valores
de todos os tipos: data.frame, list.
Tipos de objetos
Os objetos podem ainda ser classificados de acordo:
mode: refere-se natureza dos seus elementos:
logical, numeric, complex e character.
attributes: informa sobre a estrutura e contedo do
objeto.
class: informa o tipo de objeto: vector, matrix, array,
factor, ts, data.frame, list.
mode(x), attributes(x), class(x)
Tipos de objetos
Os elementos de um objeto pode ser:
logical : Modo binrio, com valores T ou F (True
ou False)
Intervalo: range
Comprimento: lenght
Somatrio: sum
Produtrio: prod
Mdia: mean
Varincia: var
Sumrio: summary
Estruturas de Controle:
Funes
Uma funo em R tratada como varivel, e
possui a seguinte organizao:
Estruturas de Controle:
Funes
Exemplo:
Funo que recebe um nmero e retorna o quadrado do
dobro dele.
Estruturas de Controle:
Condicionais
A condio deve ser uma expresso que tenha
retorno booleano
Estruturas de Controle:
Condicionais
Exemplo:
Funo que recebe um nmero e retorna se ele
positivo, negativo ou zero
Estruturas de Controle:
Laos de repetio
Repeties de comandos em uma quantidade de
vezes pr-estabelecidas ou no
for, while, repeat
Estruturas de Controle:
Laos de repetio
Estruturas de Controle:
Laos de repetio
Exemplo:
Uma funo que recebe um inteiro n, e retorna os n
primeiros nmeros primos (utilizando for, while e
repeat)
Estruturas de Controle:
Tempo de Processamento
Em programas que consomem muito tempo,
importante descobrir quais partes do cdigo
esto pesando
As funes system.time() e proc.time() servem
para isto
Indexao
No R existem formas de acessar, modificar,
extrair e remover elementos de um objeto (lista,
matriz, vetor, etc) atravs dos ndices dos
elementos
Indexao
Exemplos:
Indexao
Exemplos:
Linguagem R
BOAS PRTICAS
DA PROGRAMAO
Prticas de Programao: 1
Nomes consistentes
Use nomes que revelam inteno do objeto
Boa prtica
MediaNotas = (Nota1 + Nota2 + Nota3)/3
Prticas de Programao: 1
Nomes consistentes
Faa distines significativas entre nomes
M prtica:
TipoServidor = municipal
InfoServidor = aposentado
Boa prtica:
VinculoServidor = municipal
StatusServidor = aposentado
Prticas de Programao: 1
Nomes consistentes
Evite utilizar nomes impronunciveis
M prtica:
#Gerar anos, meses e dias de contribuio
gerAnoMesDiasContrib
Boa prtica:
gerarTempoContribuicao
Prticas de Programao: 1
Nomes consistentes
Evite utilizar nomes impronunciveis
M prtica:
#Gerar anos, meses e dias de contribuio
gerAnoMesDiasContrib
Boa prtica:
gerarTempoContribuicao
Prticas de Programao: 1
Nomes consistentes
1) Evite mapeamento mental (objetos nomeados
apenas com uma letra)
M prtica:
secTime = function (s) {
h = s%/%(3600)
m = (s%%(3600))%/%60
s = s%%60
t = c(h,m,s)
print (t)
}
Prticas de Programao: 1
Nomes consistentes
Boa prtica
secondsToTime = function (s) {
Hours = s%/%(3600)
Minutes = (s%%(3600))%/%60
Seconds = s%%60
Time =
c(Horas=Hours,Minutos=Minutes,Segundos=Seco
nds)
print (Time)
}
Prticas de Programao: 1
Nomes consistentes
1) Evite mapeamento mental (objetos nomeados
apenas com uma letra)
M prtica:
secTime = function (s) {
h = s%/%(3600)
m = (s%%(3600))%/%60
s = s%%60
t = c(h,m,s)
print (t)
}
Prticas de Programao: 2
Padronizao
Para funes, tentar nomear com verbos, que
expressem o objetivo da funo
Sempre comeando com letra minscula, e as
demais palavras com a primeira letra mascula
Ex:
criaNovaPopulacao
calculaAliquota
geraSalarios
Prticas de Programao: 2
Padronizao
Para os demais objetos, utilizar substantivos
Sempre iniciar com letra maiscula
Exemplos:
PopulacaoHomens
SexoPopulacao
SalariosAtualizados
Idades
Prticas de Programao: 3
Comentrios
Comentrios so obrigatrios em qualquer
algoritmo, lembre-se que outras pessoas faro
edies e manutenes nele
No R, para escrever comentrios, basta utilizar o
smbolo #, e para terminar o comentrio, basta
dar uma quebra de linha
Prticas de Programao: 3
Comentrios
Exemplo:
Prticas de Programao: 3
Comentrios
Embora sejam de suma importncia, os
comentrios no devem ser utilizados de forma
exagerada
Prticas de Programao: 3
Comentrios
M prtica
Prticas de Programao: 4
Indentao
Muitos nveis de indentao devem ser evitados
em muitas condicionais mltiplias, laos de
mltiplos nveis, etc
Para resolver isto, crie funes, que simplificaro
a legibilidade do cdigo
Prticas de Programao: 4
Indentao
M prtica
Prticas de Programao: 4
Indentao
Boa prtica
Prticas de Programao: 4
Indentao
Sempre que iniciar uma estrutura condicional, de
repetio, retornos, funes, etc, colocar as
delimitaes do corpo entre chaves, mesmo
quando o corpo s apresentar um
comando/expresso.
Isto evita possveis erros de execues em
futuras edies do cdigo
Prticas de Programao: 4
Indentao
M prtica
Prticas de Programao: 4
Indentao
Boa prtica
Bibliografia
https://cran.r-project.org/doc/manuals/r-release/R-lang.pdf
http://pt.slideshare.net/andycds/linguagem-r
https://pt.wikibooks.org/wiki/R_(linguagem_de_programa%C3%A
7%C3%A3o)/Estruturas_de_controle
http://ecologia.ib.usp.br/bie5782/doku.php?id=bie5782:03_aposti
la:04-dados
http://dulimind.blogspot.com.br/2014/05/boas-praticas-emprogramacao-parte-01.html
http://linguagemc.com.br/boas-praticas-de-programacao-emlinguagem-c/
http://pt.slideshare.net/carlosschults/10-boas-prticas-deprogramao
www.mat.ufrgs.br/~camey/mat02274/Introducao_R.ppt