O que vem a ser um algoritmo?
R: Um algoritmo é um conjunto finito de diretrizes que descrevem como executar uma tarefa.
Segundo o livro da referência, quais são as etapas para a construção de um algoritmo?
R: a)Coompreender completamente o problema a ser resolvido, destacandoos pontos mais importantes e os objetos que o compõe.
b)Definir os dados de entrada, ou seja, quais dados foram fornecidos e quais objetos fazem parte desse cenario problema.
c)Definir o processamento, ou seja, quais cálculos serão efetuados e quais restrições para esses calculos. O processamento é responsável pela transformação dos dados de entrada em dados de saída. Além disso, deve-se verificar quais objetos são responsáveis pelas atividades.
d)Definir os dados de saída, ou seja, quais dados serão gerados depois do processamento.
e)Construir o algoritmoutilizando um dos tipos descritos na próxima sação.
f)Testar o algoritmo utilizando simulações.
Quais são os passos para a construção de um algoritmo?
#Para a construção de um algorítmo é necessário definir o tipo de processamento e os dados de entrata e saída
Faça um algoritmo, apresentado cada passo, para ao seguinte problema. um homem precisa atravessar um rio com um barco que possui capacidade somente para carregar ele mesmo e mais uma de suas três cargas, que são um lobo, uma cabra e um repolho. O que o homem deve fazer para conseguir atravessar o rio sem perder suas cargas? Escreva os passos necessários mostrando a resposta, ou seja, indicando todas as ações necessárias para efetuar uma travessia segura.
# atravessar o rio com a ovelha
# voltar sozinho
# atravessar com o repolho
# voltar com a ovelha
# atravessar com o lobo
# voltar sozinho
# atravessar com a ovelha
# fim da travessia
Faça um algoritmo, apresentado cada passo, para ao seguinte problema: três jesuítas e três canibais precisam atravessar um rio; para tal dispõem de um barco com capacidade para duas pessoas. Por medidas de segurança, não se deve permitir que em alguma margem a quantidade de jesuítas seja inferior a de canibais. Qual a solução para efetuar a travessia com segurança? Elabore os passos de forma a mostrar a resposta, indicando as ações que concretizam a resolução deste problema.
# atravessar o rio com dois canibais
# voltar sozinho
# atravessar com 1 jesuita
# voltar com o 2 canibais
# atravessar com 2 jesuitas
# voltar sozinho
# atravessar com dois canibais
# voltar sozinho
# atravessar com 1 canibal
# fim da travessia
Criar três variáveis que contenham números e apresentar o resultado da soma das combinações dois a dois destes três números. Por exemplo, se forem lidos A, B e C, mostrar A + B, A + C, B + C.
A <- 1
B <- 2
C <- 3
A+B
## [1] 3
A+C
## [1] 4
B+C
## [1] 5
Faça um programa em RStudio para criar duas variáveis A e B e trocar seus valores. Ex: Entrada: A=6 e B=8 Saída: A=8 e B=6.
a <- 8
b <- 6
x <- a
a <- b
b <- x
a - b
## [1] -2
a + b
## [1] 14
Faça um programa em RStudio para converter uma temperatura de Fahrenheit para Centígrados. C = (F - 32) * ( 5 / 9 ).
Fa <- 50
(Fa - 32) * (5/9)
## [1] 10
Faça um programa em RStudio que crie uma variável X e calcule: X <- 3 a) X³ - 4
3 ^ 3 - 4
## [1] 23
3%%3
## [1] 0
3^(3/3) + 2
## [1] 5
sqrt (3*3)
## [1] 3
Faça um programa em RStudio que crie 11 variáveis com os valores abaixo, calcule a soma e mostre-a no final. Ex. lista de números: 3, 5, 7, 4, 3, 2, 1, 9, 12, 15, 9 | Soma dos números = 70. Agora calcule a média desses números | Média = 70 / 11 = 6,3636.``
x1 <- 2
x2 <- 4
x3 <- 6
x4 <- 8
x5 <- 10
x6 <- 12
x7 <- 14
x8 <- 16
x9 <- 18
x10 <- 20
x11 <- 22
soma <- (x1+x2+x3+x4+x5+x6+x7+x8+x9+x10+x11)
soma
## [1] 132
x1 <- 2
x2 <- 4
x3 <- 6
x4 <- 8
x5 <- 10
x6 <- 12
x7 <- 14
x8 <- 16
x9 <- 18
x10 <- 20
x11 <- 22
media <- (x1+x2+x3+x4+x5+x6+x7+x8+x9+x10+x11)/11
media
## [1] 12
Faça um programa em RStudio que calcule o fatorial de um número.
factorial(4)
## [1] 24
Crie uma matriz 4x4. Uma matriz no R comporta somente um tipo de dado (número, texto ou boleano). O comando para criar a matriz é “x <- matrix(data = 1, nrow = 4, ncol = 4, byrow = TRUE)”
x <- matrix(data = 1:4, nrow = 2, ncol = 2, byrow = TRUE)
Agora, crie uma matriz com a sequência de 1 a 16.
mat <- matrix(data = 1:16, nrow = 4, ncol = 4, byrow = TRUE)
Transforme essa matriz em um data.frame
Um data.frame é uma estrutura de dados similar a matriz que pode conter dados diferentes em suas variáveis.
Lembre-se que também chamamos as colunas de variáveis e as linhas de registros.
Uma variável (coluna) não pode conter dados de formas diferentes (textos e números, por exemplo). Ou todas as linhas dessa variável são números, ou todas são texto, ou ainda, boleanos.
Utilize o comando “df <- as.data.frame(x)”
df <- as.data.frame(mat)
Utilizando os comandos de repetição e decisão (se for necessário), calcule:
soma <- 0
for(i in 1:4){
soma <- soma + mat[i,2]
}
media <- soma/i
media
## [1] 8
soma <- 0
for(j in 1:4){
for(i in 1:4){
media <- soma + mat[j,i]
}
print(media)
}
## [1] 4
## [1] 8
## [1] 12
## [1] 16
for(i in 1:4){
soma <- 0
for(j in 1:4){
soma <- soma + mat[i,j]
}
media <- soma/j
print(media)
}
## [1] 2.5
## [1] 6.5
## [1] 10.5
## [1] 14.5
for(coluna in 1:4){
soma <- 0
contador <- 0
for(linha in 1:4){
if(mat[linha,coluna]%%2 == 0){
soma <- soma + mat[linha,coluna]
contador <- contador + 1
}
}
if(contador != 0){
media <- soma/contador
cat("a média da coluna", coluna, "é", media, "\n")
} else {
cat("não existe número par na coluna", coluna, "\n")
}
}
## não existe número par na coluna 1
## a média da coluna 2 é 8
## não existe número par na coluna 3
## a média da coluna 4 é 10
for(coluna in 1:4){
contador <- 0
soma <- 0
for(linha in 1:4){
if(mat[coluna,linha]%%2 != 0){
soma <- soma + mat[coluna,linha]
contador <- contador + 1
}
}
if(contador != 0){
media <- soma/contador
cat("a média da linha", linha, "é", media, "\n")
} else {
cat("não existe número impar na linha", linha, "\n")
}
}
## a média da linha 4 é 2
## a média da linha 4 é 6
## a média da linha 4 é 10
## a média da linha 4 é 14
soma <- 0
for(coluna in 1:4){
for(linha in 1:4){
if(linha == coluna){
soma <- soma + mat[linha,coluna]
}
}
}
cat("a soma da diagonal principal", linha, "é", soma, "\n")
## a soma da diagonal principal 4 é 34
soma_coluna_secundaria <- (mat[linha,coluna])
soma
## [1] 34
Repita o exercício “15)” com os dados do data.frame do exercício “14)”.
matriz <- matrix(data = 1:16, nrow = 4, ncol = 4, byrow = TRUE)
df <- as.data.frame(matriz)
soma_coluna <- 0
for(linha in 1:dim(df)[1]){
for(coluna in 1:dim(df)[2]){
if(coluna == 2){
soma_coluna <- soma_coluna + df[linha, coluna]
}
}
}
media_coluna <- soma_coluna/dim(df)[1]
media_coluna
## [1] 8
v_soma_colunas <- rep(0,dim(df)[1])
for(linha in 1:dim(df)[1]){
for(coluna in 1:dim(df)[2]){
v_soma_colunas[coluna] <- v_soma_colunas[coluna] + df[linha, coluna]
}
}
v_soma_colunas
## [1] 28 32 36 40
media_colunas <- v_soma_colunas/linha
media_colunas
## [1] 7 8 9 10
v_soma_linhas <- rep(0,4)
for(linha in 1:4){
for(coluna in 1:4){
v_soma_linhas[linha] <- v_soma_linhas[linha] + matriz[linha, coluna]
}
}
v_soma_linhas
## [1] 10 26 42 58
media_linhas <- v_soma_linhas/coluna
media_linhas
## [1] 2.5 6.5 10.5 14.5
v_soma_npar_colunas <- rep(0,4)
for(linha in 1:4){
for(coluna in 1:4){
if(matriz[linha, coluna]%%2 == 0){
v_soma_npar_colunas[coluna] <- v_soma_npar_colunas[coluna] + matriz[linha, coluna]}
}
}
v_soma_npar_colunas
## [1] 0 32 0 40
media_npar_colunas <- v_soma_npar_colunas/linha
media_npar_colunas
## [1] 0 8 0 10
v_soma_nimpar_linhas <- rep(0,4)
cont <- rep(0,4)
for(linha in 1:4){
for(coluna in 1:4){
if(matriz[linha, coluna]%%2 != 0){
v_soma_nimpar_linhas[linha] <- v_soma_nimpar_linhas[linha] + matriz[linha, coluna]
cont[linha] <- cont[linha] +1}
}
}
v_soma_nimpar_linhas
## [1] 4 12 20 28
media_nimpar_linhas <- rep(0,4)
for(linha in 1:dim(matriz)[1]){
if(cont[linha] != 0){
media_nimpar_linhas[linha] <- v_soma_nimpar_linhas[linha]/cont[linha]}
else{
media_nimpar_linhas[linha] <- 0
}
}
media_nimpar_linhas
## [1] 2 6 10 14
soma_diagonal <- 0
for(linha in 1:4){
for(coluna in 1:4){
if(linha == coluna){
soma_diagonal <- soma_diagonal + matriz[linha, coluna]}
}
}
soma_diagonal
## [1] 34
soma_diagonal_secundaria <- 0
for(linha in 1:4){
for(coluna in 1:4){
if((linha + coluna) == 5){
soma_diagonal_secundaria <- soma_diagonal_secundaria + matriz[linha, coluna]}
}
}
soma_diagonal_secundaria
## [1] 34
Faça um programa em RStudio que crie uma matriz VALOR 6x6 e calcule a soma de cada uma das linhas da matriz. Os valores das somas calculadas devem ser armazenados em um vetor RESULTADO de tamanho 6. Ao final do programa o vetor deve ser impresso.
mt <- matrix(data = 1:36, nrow = 6, ncol = 6, byrow = TRUE)
RESULTADO <- rowSums(mt)
print(RESULTADO)
## [1] 21 57 93 129 165 201
Faça um programa em RStudio que crie um data.frame D 5x5 e calcule a média dos valores armazenados na diagonal principal e a soma dos valores armazenados na diagonal secundária.
df <- as.data.frame(matrix(data = 1:25, nrow = 5, ncol = 5, byrow = TRUE))
dfaa1.1 <- 1
dfaa2.2 <- 7
dfaa3.3 <- 13
dfaa4.4 <- 19
dfaa5.5 <- 25
soma <- dfaa1.1 + dfaa2.2 + dfaa3.3 + dfaa4.4 + dfaa5.5
media <- soma/5
media
## [1] 13
dfaa5.5 <- 5
dfaa4.4 <- 9
dfaa3.2 <- 13
dfaa2.1 <- 17
dfaa1.4 <- 21
soma3<- dfaa5.5 + dfaa4.4 + dfaa3.2 + dfaa2.1 + dfaa1.4
soma
## [1] 65
Faça um programa em RStudio que crie um data.frame D 4x4, que contenha números entre 0 e 100, e calcule e imprima:
set.seed(123)
D <- data.frame(matrix(sample(0:100, 16, replace = TRUE), nrow = 4))
colnames(D) <- c("A", "B", "C", "D")
media
## [1] 13
media_pares <- mean(D[D%%2 == 0])
media_pares
## [1] 63.09091
maiores_50 <- sum(D > 50)
maiores_50
## [1] 8
media_impares <- mean(D[D%%2!=0&D<30])
media_impares
## [1] 13
maior_valor <- max(D)
maior_valor
## [1] 100
menor_valor <- min(D)
menor_valor
## [1] 13
Faça um programa em RStudio que com base no salário de um funcionário (criado por vocês), calcule e mostre o seu salário a receber, sabendo-se que esse funcionário tem gratificação de 5% sobre seu salário base e paga 10% de imposto sobre o salário base.
# salario base é o salario sobre o qual iremos calcular os valores de gratificação e impostos
salario_base <- 3000
# gratificação é 5% do valor do salario base
grat <- salario_base * 0.05
imposto <- salario_base * 0.1
# imposto 10% do salario base
salario <- salario_base + grat * imposto
salario
## [1] 48000
Faça um programa em RStudio para calcular o salário mensal final de um vendedor. As seguintes informações determinam esse valor:
salario_base <- 3000
vendas <- 25000
percentual_vendas <- 0.05 * vendas
irpf <- salario_base * 0.075
inss <- (salario_base + percentual_vendas) * 0.11
salario <- salario_base + percentual_vendas - irpf - inss
salario
## [1] 3557.5
cat("BILHETE DE PAGAMENTO \n, ",
"_________________________________________________", "\n",
"Salario base ", salario_base, "\n",
"Gratificação de vendas ", percentual_vendas, "\n",
"Imposto de Renda ", irpf, "\n",
"INSS ", inss, "\n",
"________________________________"
)
## BILHETE DE PAGAMENTO
## , _________________________________________________
## Salario base 3000
## Gratificação de vendas 1250
## Imposto de Renda 225
## INSS 467.5
## ________________________________
Faça um programa em RStudio para efetuar a estimativa da quantidade de litros de cervejaconsumida por um determinado bloco durante o carnaval. Outras informações: • o bloco tem 1000 pessoas; • cada pessoa consome em média 3 latões; • considerar que uma caixa de cerveja tem 12 latões; • sabe-se que cada latão tem 473 ml e que 1 litro tem 1000 ml; • considerar que o carnaval são quatro dias; Qual a quantidade de caixas de cerveja consumidas durante um dia? E durante os cinco dias? Supondo que cada caixa custa R$ 42,00 e é vendida a R$ 84,00 (R$ 7,00 cada lata), informar o consumo em litros do bloco e o lucro auferido.
n_pessoas <- 1000
media_consumo <- 3
latoes_por_caixa <- 12
ml_por_latao <- 473
ml_por_litro <- 1000
dias_carnaval <- 5
preco_custo_caixa <- 42
preco_venda_caixa <- 84
litros_total <- n_pessoas * media_consumo * ml_por_latao / ml_por_litro * dias_carnaval
litros_total
## [1] 7095
caixas_por_dia <- (n_pessoas * media_consumo) / latoes_por_caixa
caixas_por_dia
## [1] 250
caixas_cinco_dias <- caixas_por_dia * dias_carnaval
caixas_cinco_dias
## [1] 1250
lucro_por_caixa <- preco_venda_caixa - preco_custo_caixa
lucro_por_caixa
## [1] 42
lucro_total <- lucro_por_caixa * caixas_cinco_dias
lucro_total
## [1] 52500
Dois times de futebol fizeram uma disputa entre eles e jogaram 10 partidas. Os resultados de cada jogo foram armazenados em uma matriz JOGO 10x2, onde cada linha representa um jogo e cada coluna um time. Faça um programa em RStudio que calcule a média de gols realizados por cada time.
jogo <- matrix(data = c(4,3,2,1,1,1,5,4,3,2,1,2,1,2,1,2,1,2,1,2), ncol = 2)
soma_fla <- 0
soma_flu <- 0
for(i in 1:10){
soma_flu <- soma_flu + jogo[i,2]
soma_fla <- soma_fla + jogo[i,1]
}
media_fla <- soma_fla/10
media_flu <- soma_flu/10
cat("A média de gols do Fla foi", media_fla, "\n")
## A média de gols do Fla foi 2.6
cat("A média de gols do Flu foi", media_flu, "\n")
## A média de gols do Flu foi 1.5