You are on page 1of 51

Projeto Desenvolvendo a gesto de RPPS:

um programa para auxlio dos gestores de previdncia de


servidores pblicos.
Coordenao: Profa. Cristiane Silva Corra
DDCA/CCET/UFRN

Estrutura do R: Definies e
noes de boas prticas de
programao

Maro.2016

Instalando o R para Windows


Dowload: http://www.r-project.org

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

No Rstudio, clique na aba Help e digite o nome


da funo a se consultar

Workspace
Cada vez que o R aberto inicia-se uma
nova sesso.
A coleo de objetos criados durante uma
sesso R denominada de workspace.

Todos os objetos criados podem ser salvos


em um arquivo denominado .Rdata.

Listar e eliminar objetos


Listar:
> objects()
> ls()

Eliminar todos os objetos:


> rm()
Eliminar os objetos x e y:
> rm(x,y)

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)

numeric : Nmeros reais


complex : Nmeros complexos, a + bi
character : Caracteres, "Maria

Tipos de objetos: vetores


So objetos que contm apenas um modo
(logical, integer, real, complex, string ou raw)
Possuem dois atributos bsicos: tamanho e modo
Variveis de tamanho unitrio so vetores, por
definio, de tamanho 1

Tipos de objetos: vetores


Algumas funes bsicas entre vetores:

Intervalo: range
Comprimento: lenght
Somatrio: sum
Produtrio: prod
Mdia: mean
Varincia: var
Sumrio: summary

Tipos de objetos: listas


Coleo ordenada de objetos que podem ser de
diferentes modos
Ex:
>x=list(nome=Anderson,num.animais=2,idade.
animais=c(3,4),vacinados=TRUE).

Tipos de objetos: fatores


um vetor de objetos usados para especificar
uma classificao discreta (agrupamento)
Possui nveis (levels) internamente
Ex:
> sexo = c(m, m, f, m, f, m, f, f, f, m, f)
> sexof = factor(sexo)
> sexof
[1] m m f m f m f f f m f
Levels: f m

Tipos de objetos: data.frame


Matrizes com colunas que podem ser de modos
diferentes
Tambm pode ser considerada um tipo restrito de
listas (ou um vetor de listas)

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

Boas Prticas de Programao


Um algoritmo precisa ser claro, legvel e objetivo
Tenha em mente que o cdigo no est sendo
escrito apenas para si mesmo
Estima-se que a proporo de leitura e escrita
durante a programao seja 10:1

Boas Prticas de Programao

Prticas de Programao: 1
Nomes consistentes
Use nomes que revelam inteno do objeto

No h problemas em utilizar nomes grandes,


contanto que fique compreensvel
M prtica
m = (n1 + n2 + n3)/3

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

You might also like