Upload
projeto-rpps
View
15
Download
0
Embed Size (px)
DESCRIPTION
Desenvolvendo a Gestão do RPPS
Citation preview
Projeto Desenvolvendo a gestão de RPPS:um programa para auxílio dos gestores de previdência de
servidores públicos. Coordenação: Profa. Cristiane Silva Corrêa
DDCA/CCET/UFRN
Estrutura do R: Definições e
noções de boas práticas de
programação
Março.2016
Instalando o R para Windows
Dowload: http://www.r-project.org
RStudio
Interface de edição de códigos em R
Download: https://www.rstudio.com/products/rstudio/
download/
RStudio
Vantagens:
Organização automática do texto por tabulações e cores;
Janelas de trabalho em uma só tela;
Controle das variáveis criadas
Entre outras ferramentas.
RStudio
Linguagem R
O R é uma linguagem orientada a objetos.
Objetos para o R: banco de dados, uma tabela, variáveis, vetores, matrizes, funções, etc.
Objetos são armazenados na memória ativa do computador.
Comando HELP
Na linguagem R, é possível consultar a documentação sobre quaisquer funções e estruturas que já existam;
Para isto, utilize uma das opções:
Use o comando help(função_desejada);
Use ?função_desejada
No Rstudio, clique na aba Help e digite o nome da função a se consultar
Workspace
Cada vez que o R é aberto inicia-se uma nova sessão.
A coleção de objetos criados durante uma sessão 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 básicos de objetos, classificados em duas categorias:
Objetos atômicos – contém apenas dados de um único tipo: vector, matrix, array, factor, ts.
Objetos não atômicos – contém 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 conteúdo 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 binário, com valores T ou F (True ou False)
numeric : Números reais
complex : Números complexos, a + bi
character : Caracteres, "Maria“
Tipos de objetos: vetores
São objetos que contém apenas um modo (logical, integer, real, complex, string ou raw)
Possuem dois atributos básicos: tamanho e modo
Variáveis de tamanho unitário são vetores, por definição, de tamanho 1
Tipos de objetos: vetores
Algumas funções básicas entre vetores: Intervalo: range
Comprimento: lenght
Somatório: sum
Produtório: prod
Média: mean
Variância: var
Sumário: summary
Tipos de objetos: listas
Coleção 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 classificação discreta (agrupamento)
Possui níveis (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
Também pode ser considerada um tipo restrito de listas (ou um vetor de listas)
Estruturas de Controle: Funções
Uma função em R é tratada como variável, e possui a seguinte organização:
Estruturas de Controle: Funções
Exemplo:
Função que recebe um número e retorna o quadrado do dobro dele.
Estruturas de Controle: Condicionais
A condição deve ser uma expressão que tenha retorno booleano
Estruturas de Controle: Condicionais
Exemplo:
Função que recebe um número e retorna se ele é positivo, negativo ou zero
Estruturas de Controle: Laços de repetição
Repetições de comandos em uma quantidade de vezes pré-estabelecidas ou não
for, while, repeat
Estruturas de Controle: Laços de repetição
Estruturas de Controle: Laços de repetição
Exemplo:
Uma função que recebe um inteiro n, e retorna os n primeiros números primos (utilizando for, while e repeat)
Estruturas de Controle: Tempo de Processamento
Em programas que consomem muito tempo, é importante descobrir quais partes do código estão pesando
As funções system.time() e proc.time() servem para isto
Indexação
No R existem formas de acessar, modificar, extrair e remover elementos de um objeto (lista, matriz, vetor, etc) através dos índices dos elementos
Indexação
Exemplos:
Indexação
Exemplos:
Linguagem R
BOAS PRÁTICAS
DA PROGRAMAÇÃO
Boas Práticas de Programação
Um algoritmo precisa ser claro, legível e objetivo
Tenha em mente que o código não está sendo escrito apenas para si mesmo
Estima-se que a proporção de leitura e escrita durante a programação seja 10:1
Boas Práticas de Programação
Práticas de Programação: 1Nomes consistentes
Use nomes que revelam intenção do objeto
Não há problemas em utilizar nomes grandes, contanto que fique compreensível
Má prática
m = (n1 + n2 + n3)/3
Boa prática
MediaNotas = (Nota1 + Nota2 + Nota3)/3
Práticas de Programação: 1Nomes consistentes
Faça distinções significativas entre nomes
Má prática:
TipoServidor = “municipal”
InfoServidor = “aposentado”
Boa prática:
VinculoServidor = “municipal”
StatusServidor = “aposentado”
Práticas de Programação: 1Nomes consistentes
Evite utilizar nomes impronunciáveis
Má prática:
#Gerar anos, meses e dias de contribuição
gerAnoMesDiasContrib
Boa prática:
gerarTempoContribuicao
Práticas de Programação: 1Nomes consistentes
Evite utilizar nomes impronunciáveis
Má prática:
#Gerar anos, meses e dias de contribuição
gerAnoMesDiasContrib
Boa prática:
gerarTempoContribuicao
Práticas de Programação: 1Nomes consistentes
1) Evite mapeamento mental (objetos nomeados apenas com uma letra)
Má prática:
secTime = function (s) {
h = s%/%(3600)
m = (s%%(3600))%/%60
s = s%%60
t = c(h,m,s)
print (t)
}
Boa prática
secondsToTime = function (s) {
Hours = s%/%(3600)
Minutes = (s%%(3600))%/%60
Seconds = s%%60
Time =
c(Horas=Hours,Minutos=Minutes,Segundos=Seconds)
print (Time)
}
Práticas de Programação: 1Nomes consistentes
Práticas de Programação: 1Nomes consistentes
1) Evite mapeamento mental (objetos nomeados apenas com uma letra)
Má prática:
secTime = function (s) {
h = s%/%(3600)
m = (s%%(3600))%/%60
s = s%%60
t = c(h,m,s)
print (t)
}
Práticas de Programação: 2Padronização
Para funções, tentar nomear com verbos, que expressem o objetivo da função
Sempre começando com letra minúscula, e as demais palavras com a primeira letra maíscula
Ex:
criaNovaPopulacao
calculaAliquota
geraSalarios
Práticas de Programação: 2Padronização
Para os demais objetos, utilizar substantivos
Sempre iniciar com letra maiúscula
Exemplos:
PopulacaoHomens
SexoPopulacao
SalariosAtualizados
Idades
Práticas de Programação: 3Comentários
Comentários são obrigatórios em qualquer algoritmo, lembre-se que outras pessoas farão edições e manutenções nele
No R, para escrever comentários, basta utilizar o símbolo #, e para terminar o comentário, basta dar uma quebra de linha
Práticas de Programação: 3Comentários
Exemplo:
Práticas de Programação: 3Comentários
Embora sejam de suma importância, os comentários não devem ser utilizados de forma exagerada
Práticas de Programação: 3Comentários
Má prática
Práticas de Programação: 4Indentação
Muitos níveis de indentação devem ser evitados em muitas condicionais múltiplias, laços de múltiplos níveis, etc
Para resolver isto, crie funções, que simplificarão a legibilidade do código
Práticas de Programação: 4Indentação
Má prática
Práticas de Programação: 4Indentação
Boa prática
Práticas de Programação: 4Indentação
Sempre que iniciar uma estrutura condicional, de repetição, retornos, funções, etc, colocar as delimitações do corpo entre chaves, mesmo quando o corpo só apresentar um comando/expressão.
Isto evita possíveis erros de execuções em futuras edições do código
Práticas de Programação: 4Indentação
Má prática
Práticas de Programação: 4Indentação
Boa prática
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%A7%C3%A3o)/Estruturas_de_controle
http://ecologia.ib.usp.br/bie5782/doku.php?id=bie5782:03_apostila:04-dados
http://dulimind.blogspot.com.br/2014/05/boas-praticas-em-programacao-parte-01.html
http://linguagemc.com.br/boas-praticas-de-programacao-em-linguagem-c/
http://pt.slideshare.net/carlosschults/10-boas-prticas-de-programao
www.mat.ufrgs.br/~camey/mat02274/Introducao_R.ppt