Prova de Programação de Computadores
Prova escrita em Markdown. Usou-se o package prettydoc.
Questão 1
Faça um programa em R que receba oito valores escolhidos por você e que mostre:
- A média;
- O desvio padrão amostral;
- A variância amostral;
- O coeficiente de variação amostral;
- O maior valor e o menor valor.
Os valores escolhidos foram (2, 4, 6, 8, 10, 12, 14, 16). Desta forma, temos:
q1=function(){
x=c(2,4,6,8,10,12,14,16)
cat("A média é dada por",mean(x),"..")
cat("\nO desvio padrão amostral é",sd(x),".")
cat("\nA variância amostral é",var(x),".")
cat("\nO coeficiente de variação é",round(sd(x)/mean(x)*100,2),"%.")
cat("\nO maior valor é",max(x),"e o menor valor é",min(x),".")
}Logo, para executar o código deveremos escrever q1(). Logo temos:
q1()## A média é dada por 9 ..
## O desvio padrão amostral é 4.898979 .
## A variância amostral é 24 .
## O coeficiente de variação é 54.43 %.
## O maior valor é 16 e o menor valor é 2 .
Questão 2
Após acessar o site https://www.ime.usp.br/~noproest/dados/aeusp.xls, você terá acesso a um banco de dados on-line. Use o RMarkdown para criar um relatório que responda as seguintes perguntas:
- Qual é a média das idades (Idade);
- Qual é a média do tempo de residência em São Paulo (Temposp);
- Qual é a média do número de residentes na casa (Resid);
- Qual é a média e o desvio padrão da idade em que começou a trabalhar (Itrab);
- Faça um boxplot para a variável Itrab.
Os itens que fazem parte do banco de dados da internet são referentes aos dados contidos no arquivo de nome aeusp.txt, que contém parte dos dados de uma pesquisa realizada pela Associação dos Educadores da USP, sobre aspectos sócio-econômicos e culturais de comunidades de baixa renda da região do Butantã, São Paulo.
O primeiro passo para respondermos a essa questão é obtermos a base de dados que esta no link. Iremos salvar o arquivo aeusp.xls em um diretório padrão do computador. Neste caso, escolheu-se a pasta c:/prova, e o pacote openxlsx. A instalação do pacote é dada por install.packages("openxlsx"), desta forma, temos:
setwd("C:/prova") #Fixando a pasta de trabalho
require(openxlsx) #chamando o pacote openxlsx## Loading required package: openxlsx
dados=read.xlsx("aeusp.xlsx") #Lendo a planilha em excel
head(dados) #Este comando apresenta as informações iniciais## Num Comun Sexo Idade Ecivil Reproce Temposp Resid Trab Ttrab Itrab
## 1 1 JdRaposo 2 4 4 Nordeste 21 9 3 NA 20
## 2 2 JdRaposo 2 1 1 Sudeste 24 9 1 1 14
## 3 3 JdRaposo 2 2 1 Nordeste 31 3 1 1 14
## 4 4 JdRaposo 1 2 2 Nordeste 10 3 1 4 10
## 5 5 JdRaposo 2 4 2 Nordeste 31 6 1 1 11
## 6 6 JdRaposo 2 4 2 Sudeste 24 4 2 NA 15
## Renda Acompu Serief
## 1 1 2 1
## 2 2 2 7
## 3 5 2 7
## 4 5 2 11
## 5 6 1 4
## 6 4 2 4
Por fim, precisamos atachar a base de dados, de modo que o R possa abrir o arquivo para respondermos a todas as perguntas. Para isso, temos attach(dados).
Portanto, temos:
- A média das idades é 2.25 anos.
- A média de tempo em São Paulo é 19.01 anos.
- A média do número de residentes na casa é 4.46 residentes.
O caso da determinação da média e do desvio padrão do ano em que se começou a trabalhar é muito simples, no entanto a variável Itrabapresenta valores ausentes, classificados como NA. Isto, faz com que o comando mean(Itrab) necessite de um novo argumento para o cálculo do valor médio e do desvio padrão. Logo, temos:
mean(Itrab,na.rm = T) #O argumento (na.rm = T) irá desconsiderar os NA## [1] 13.39489
- Logo o valor da média e o desvio padrão da idade em que se começou a trabalhar são respectivamente 13.39 anos e 4.29 anos.
- Por fim, para criarmos um boxplot para a variável Itrab, utilizaremos o comando
boxplot(Itrab):
boxplot(Itrab)Questão 3
O prof. Augusto gostaria de fazer um programa em R que receba dois números aleatórios e execute as operações listadas na tabela a seguir, de acordo com a escolha do usuário. Use a função Switch.
| Escolha | Operação |
|---|---|
| 1 | Divisão do primeiro pelo segundo |
| 2 | Produto entre os números digitados |
| 3 | Diferença do maior pelo menor |
| 4 | Média entre os números digitados |
Se a opção digitado for inválida, mostrar uma mensagem de erro e terminar a execução do programa. Lembre-se de que na operação 1 o segundo número deve ser diferente de zero.
Neste caso deveremos criar um código em que o usuário escolha dois números, por exemplo x = 10 e y = 2 e que de acordo com a tabela de opções acima execute um dos quatro programas, logo temos:
q3=function(x,y,op){
cat("Menu de opções: ")
cat("\n 1 - Divisão do primeiro pelo segundo")
cat("\n 2 - Produto entre os números digitados")
cat("\n 3 - Diferença do maior pelo menor")
cat("\n Média entre os números digitados")
cat("\n\n A opção desejada foi:", op)
}Logo, se escolhermos a opção (op = 1), temos:
q3(x=10,y=2,op=1)## Menu de opções:
## 1 - Divisão do primeiro pelo segundo
## 2 - Produto entre os números digitados
## 3 - Diferença do maior pelo menor
## Média entre os números digitados
##
## A opção desejada foi: 1
Para desenvolvermos este código, uma das opções a ser adotada é a utilização da função switch. A sua sintaxe é apresentada a seguir:
switch(opcao,
"1" = {},
"2" = {},
"3" = {},
stop("opção inválida")
)
Logo, temos:
q3=function(x,y,op){
cat("Menu de opções: ")
cat("\n 1 - Divisão do primeiro pelo segundo")
cat("\n 2 - Produto entre os números digitados")
cat("\n 3 - Diferença do maior pelo menor")
cat("\n 4 - Média entre os números digitados")
cat("\n A opção desejada foi:", op)
cat("\n")
switch(op,
"1" = {cat("\nA divisão do primeiro número pelo segundo número é",x/y)},
"2" = {cat("\nO produto entre os números digitados é", x*y)},
"3" = {cat("\nA diferença do maior pelo menor é", max(x,y)-min(x,y))},
"4" = {cat("\nA média entre os números digitados é",mean(c(x,y)))},
stop("Opção inválida.")
)
}Logo, se escolhermos a opção x=10 e y=2com opção (op=1), temos:
q3(10,2,1) # x=10 ; y = 2 e op=1## Menu de opções:
## 1 - Divisão do primeiro pelo segundo
## 2 - Produto entre os números digitados
## 3 - Diferença do maior pelo menor
## 4 - Média entre os números digitados
## A opção desejada foi: 1
##
## A divisão do primeiro número pelo segundo número é 5
Questão 4
Faça um relatório em RMarkdown que receba um vetor de tamanho 5 escolhido pelo aluno que determine:
- O primeiro elemento menos o 2;
- A raiz quadrada do terceiro elemento;
- A raiz cúbica do 5 elemento;
- A soma dos quadrados de todos os elementos dos vetores;
- O somatório de todos os elementos do vetor.
Nesta questão o aluno devera escolher um vetor de tamanho 5. Suponhdo que a escolha seja 10,15,20,25,30.
Portanto, um código para responder as questões é apresentado a seguir:
q4=function(t=c(10,15,20,25,30)){
cat("O primeiro elemento menos o segundo elemento é",t[1]-t[2])
cat("\nA raiz quadrada do terceiro elemento é",sqrt(t[3]))
cat("\nA raiz cúbica do quinto elemento é",t[5]^(1/3))
cat("\nA soma dos quadrados de todos os elementos dos vetores",sum(t^2))
cat("\nO somatório de todos os elementos do vetor é",sum(t))
}Logo, para compilarmos o código acima, teríamos que chama-lo usando q4()
q4()## O primeiro elemento menos o segundo elemento é -5
## A raiz quadrada do terceiro elemento é 4.472136
## A raiz cúbica do quinto elemento é 3.107233
## A soma dos quadrados de todos os elementos dos vetores 2250
## O somatório de todos os elementos do vetor é 100