51
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

R - Introdução a Programação

Embed Size (px)

DESCRIPTION

Desenvolvendo a Gestão do RPPS

Citation preview

Page 1: R - Introdução a Programação

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

Page 2: R - Introdução a Programação

Instalando o R para Windows

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

Page 3: R - Introdução a Programação

RStudio

Interface de edição de códigos em R

Download: https://www.rstudio.com/products/rstudio/

download/

Page 4: R - Introdução a Programação

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.

Page 5: R - Introdução a Programação

RStudio

Page 6: R - Introdução a Programação

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.

Page 7: R - Introdução a Programação

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

Page 8: R - Introdução a Programação

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.

Page 9: R - Introdução a Programação

Listar e eliminar objetos

Listar:

> objects()

> ls()

Eliminar todos os objetos:

> rm()

Eliminar os objetos x e y:

> rm(x,y)

Page 10: R - Introdução a Programação

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.

Page 11: R - Introdução a Programação

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)

Page 12: R - Introdução a Programação

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“

Page 13: R - Introdução a Programação

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

Page 14: R - Introdução a Programação

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

Page 15: R - Introdução a Programação

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).

Page 16: R - Introdução a Programação

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

Page 17: R - Introdução a Programação

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)

Page 18: R - Introdução a Programação

Estruturas de Controle: Funções

Uma função em R é tratada como variável, e possui a seguinte organização:

Page 19: R - Introdução a Programação

Estruturas de Controle: Funções

Exemplo:

Função que recebe um número e retorna o quadrado do dobro dele.

Page 20: R - Introdução a Programação

Estruturas de Controle: Condicionais

A condição deve ser uma expressão que tenha retorno booleano

Page 21: R - Introdução a Programação

Estruturas de Controle: Condicionais

Exemplo:

Função que recebe um número e retorna se ele é positivo, negativo ou zero

Page 22: R - Introdução a Programação

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

Page 23: R - Introdução a Programação

Estruturas de Controle: Laços de repetição

Page 24: R - Introdução a Programaçã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)

Page 25: R - Introdução a Programação

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

Page 26: R - Introdução a Programação

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

Page 27: R - Introdução a Programação

Indexação

Exemplos:

Page 28: R - Introdução a Programação

Indexação

Exemplos:

Page 29: R - Introdução a Programação

Linguagem R

BOAS PRÁTICAS

DA PROGRAMAÇÃO

Page 30: R - Introdução a 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

Page 31: R - Introdução a Programação

Boas Práticas de Programação

Page 32: R - Introdução a 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

Page 33: R - Introdução a Programação

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”

Page 34: R - Introdução a Programação

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

Page 35: R - Introdução a Programação

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

Page 36: R - Introdução a Programação

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)

}

Page 37: R - Introdução a Programação

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

Page 38: R - Introdução a Programação

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)

}

Page 39: R - Introdução a Programação

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

Page 40: R - Introdução a Programação

Práticas de Programação: 2Padronização

Para os demais objetos, utilizar substantivos

Sempre iniciar com letra maiúscula

Exemplos:

PopulacaoHomens

SexoPopulacao

SalariosAtualizados

Idades

Page 41: R - Introdução a Programação

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

Page 42: R - Introdução a Programação

Práticas de Programação: 3Comentários

Exemplo:

Page 43: R - Introdução a Programação

Práticas de Programação: 3Comentários

Embora sejam de suma importância, os comentários não devem ser utilizados de forma exagerada

Page 44: R - Introdução a Programação

Práticas de Programação: 3Comentários

Má prática

Page 45: R - Introdução a Programação

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

Page 46: R - Introdução a Programação

Práticas de Programação: 4Indentação

Má prática

Page 47: R - Introdução a Programação

Práticas de Programação: 4Indentação

Boa prática

Page 48: R - Introdução a Programação

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

Page 49: R - Introdução a Programação

Práticas de Programação: 4Indentação

Má prática

Page 50: R - Introdução a Programação

Práticas de Programação: 4Indentação

Boa prática

Page 51: R - Introdução a Programação

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