Este espaço será para o desenvolvimento do projeto de algoritmos.
vamos começar a desenvolver os exercícios.
O que vem a ser um algoritmo?
Resposta: É uma sequência lógica, sem repetição de passos, com objetivo final de dar solução de um proposto problema, trazendo pensamentos lógicos para a feitura do mesmo, ordenando nossos pensamentos.
Segundo o livro da referência, quais são as etapas para a construção de um algoritmo?
Resposta:
Identificação do problema: o primeiro passo é entender claramente qual é o problema a ser resolvido pelo algoritmo.
Definição dos requisitos: a partir da compreensão do problema, é necessário definir quais são as funcionalidades e requisitos que o algoritmo deve ter para solucioná-lo.
Planejamento do algoritmo: esta etapa envolve a escolha da linguagem de programação, estrutura de dados e algoritmos a serem utilizados, além da definição da arquitetura e da lógica geral do algoritmo.
Implementação do algoritmo: com o planejamento pronto, é hora de colocar as mãos na massa e começar a escrever o código que irá compor o algoritmo.
Testes e depuração: uma vez implementado, o algoritmo precisa ser testado e validado para garantir que ele está funcionando corretamente e cumprindo com os requisitos definidos anteriormente. Caso seja necessário, é preciso fazer ajustes no código para corrigir eventuais bugs e problemas de desempenho.
Documentação: por fim, é importante documentar todo o processo de desenvolvimento do algoritmo, incluindo a descrição do problema, os requisitos, a arquitetura, o código fonte e os testes realizados. Esta documentação será útil para que outros desenvolvedores possam entender e utilizar o algoritmo no futuro.
Quais são os passos para a construção de um algoritmo?
Resposta:
Definição do problema: É importante compreender o problema que se deseja resolver e definir claramente o objetivo do algoritmo.
Coleta de dados: O algoritmo deve ser alimentado com dados relevantes que permitam resolver o problema em questão. Esses dados podem vir de diversas fontes, tais como arquivos, bancos de dados, sensores, etc.
Análise dos dados: Os dados coletados devem ser analisados e tratados para que possam ser utilizados pelo algoritmo. Isso pode incluir limpeza, organização, transformação e redução de dimensionalidade.
Escolha do algoritmo: Existem vários algoritmos disponíveis para resolver diferentes tipos de problemas. É importante escolher um algoritmo que seja adequado ao problema em questão.
Treinamento do modelo: O algoritmo deve ser treinado com os dados disponíveis para que possa aprender a resolver o problema em questão.
Avaliação do modelo: É importante avaliar o modelo para verificar se ele está resolvendo o problema de forma adequada. Isso pode ser feito através de métricas de avaliação, tais como precisão, recall, F1-score, etc.
Ajuste do modelo: Se o modelo não estiver performando de forma adequada, é necessário fazer ajustes no algoritmo, nos dados ou na forma como o problema está sendo abordado.
Implantação do modelo: Depois que o modelo estiver funcionando de forma adequada, é possível implantá-lo em um ambiente de produção para que possa ser utilizado para resolver o problema em questão.
Manutenção do modelo: É importante monitorar o modelo após a implantação e fazer ajustes quando necessário para garantir que ele continue funcionando de forma adequada ao longo do tempo.
Faça um algoritmo, apresentando 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.
Resposta:
Informações do exercício: Homem, Barco, Lobo, Bode e Alface
Ações necessárias para atravessar o rio e não perder as cargas
Objetivo final: Atravessar todas as cargas, até ao outro lado da margem do Rio.
Algoritmo:
início
pegar Bode
embarcar
atravessar homem com o bode no barco
desembarcar bode lá ao outro lado da margem
voltar homem depois com barco vazio
chegar ao início
pegar o lobo
embarcar
atravessar com o lobo
desembarcar lobo no outro lado da margem
embarcar bode
voltar com o bode ao início
desembarcar o Bode ao inicio
pegar alface
embarcar a alface
atravessar a alface ao outro lado da margem
desembarcar a alface
voltar ao inicio homem depois com barco vazio
pegar o bode
embarcar o bode
atravessar homem com o bode ao outro lado da margem
desembarcar o bode ao outro lado da margem
fim
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.
Resposta:
Informações do exercício: Três Jesuítas, Barco, Três Canibais
Ações necessárias para atravessar o rio com a devida segurança
Objetivo final: Atravessar todos os três Jesuítas e os três canibais até ao outro lado da margem do Rio.
Algoritmo:
início
Embarcar um jesuita e um canibal
atravessar um jesuíta e um canibal
desembarcar um jesuíta ao outro lado da margem
voltar ao inicio com um canibal
embarcar mais um canibal
atravessar com dois canibais ao outro lado da margem
desembarcar um canibal
voltar ao inicio com um canibal
embarcar um jesuita
atravessar um jesuíta e um canibal ao outro lado da margem
desembarcar um jesuita
voltar ao inicio com um canibal
embarcar um canibal
atravessar dois canibais ao outro lado da margem
desembarcar um canibal
voltar um canibal
embarcar um jesuita
atravessar um jesuíta e um canibal ao outro lado da margem
desembarcar um jesuita e um canibal
fim
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 <- 10
b <- 20
c <- 30
soma1 <- (a + b)
soma2 <- (a + c)
soma3 <- (b + c)
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
#ENTRADA A=6 E B=8
#SAíDA A=8 E B=6
a <- 6
b <- 8
print (" a valendo", a)
## [1] " a valendo"
print (" b valendo", b)
## [1] " b valendo"
print (" trocar valores de a e b entre si")
## [1] " trocar valores de a e b entre si"
# Aplicando a troca de valores
aux <- b
b <- a
a <- aux
print (" a valendo", a)
## [1] " a valendo"
print (" b valendo", b)
## [1] " b valendo"
Faça um programa em RStudio para converter uma temperatura de Fahrenheit para Centígrados. C = (F - 32) * ( 5 / 9 ).
F <- 100
C <- (F-32)*(5/9)
Faça um programa em RStudio que crie uma variável X e calcule:
X3 - 4
O resto da divisão de X / 3
XB + 2
Raiz quadrada de X2
x <- 6
y <- 3
b <- 3
total <- (x ^ y - 4) # a) X^3-4
total1 <- (x %% y) # b) RESTO DA DIVISÃO DE X/3
total2 <- (x ^ b + 2) # c) X^B+2
total3 <- sqrt(x^2) # d) RAIZ QUADRADA DE X^2
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.
Repita o exercício com um vetor armazenando os valores.
a <- 3
b <- 5
c <- 7
d <- 4
e <- 3
f <- 2
g <- 1
h <- 9
i <- 12
j <- 15
k <- 9
soma <- a+b+c+d+e+f+g+h+i+j+k
media <- soma/11
# VETOR ARMAZENANDO OS VALORES
MEDIA <- c (3,5,7,4,3,2,1,9,12,15,9)
mean(MEDIA)
## [1] 6.363636
Faça um programa em RStudio que calcule o fatorial de um número.
# Fatorial do número 8
a <-1
b <-2
c <-3
d <-4
e <-5
f <-6
g <-7
h <-8
fatorial1 <- (a*b*c*d*e*f*g*h)
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, nrow = 4, ncol = 4, 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(matrix(data = 1:16, nrow = 4, ncol = 4, byrow = TRUE))
Utilizando os comandos de repetição e decisão (se for necessário), calcule:
a média de uma coluna da matriz do exercício “13)”.
A média de todas as colunas da matriz do exercício “13)”.
A média de todas as linhas da matriz do exercício “13)”.
A média dos números pares de todas as colunas da matriz do exercício “13)”.
A média dos números ímpares de todas as linhas da matriz do exercício “13)”.
A soma da diagonal principal da matriz.
A soma da diagonal secundária da matriz (desafio).
#a. a média de uma coluna da matriz do exercício “13)
mat <- matrix(data = 1:16, nrow = 4, ncol = 4, byrow = TRUE)
mean(mat[,1])
## [1] 7
# b. A média de todas as colunas da matriz do exercício “13)”
mean(mat[,1])
## [1] 7
mean(mat[,2])
## [1] 8
mean(mat[,3])
## [1] 9
mean(mat[,4])
## [1] 10
# c. A média de todas as linhas da matriz do exercício “13)”
mean(mat[1,])
## [1] 2.5
mean(mat[2,])
## [1] 6.5
mean(mat[3,])
## [1] 10.5
mean(mat[4,])
## [1] 14.5
# d. A média dos números pares de todas as colunas da matriz do exercício “13)”.
pares1 <- c(1,2,3,4)
mean(pares1[3],pares1[1])
## [1] 3
pares2 <- c(5,6,7,8)
mean(pares2[3],pares2[1])
## [1] 7
pares3 <- c(9,10,11,12)
mean(pares3[3],pares3[1])
## [1] 11
pares4 <- c(13,14,15,16)
mean(pares4[3],pares4[1])
## [1] 15
# e. A média dos números ímpares de todas as linhas da matriz do exercício “13)”.
impares1 <- c(1,2,3,4)
mean(impares1[2],impares1[4])
## [1] 2
impares2 <- c(5,6,7,8)
mean(impares2[2],impares2[4])
## [1] 6
impares3 <- c(9,10,11,12)
mean(impares3[2],impares3[4])
## [1] 10
impares4 <- c(13,14,15,16)
mean(impares4[2],impares4[4])
## [1] 14
# f. A soma da diagonal principal da matriz.
a1.1 <- 1
a2.2 <- 6
a3.3 <- 11
a4.4 <- 16
somadiagonalprincipal <- a1.1 + a2.2 + a3.3 + a4.4
# g. A soma da diagonal secundária da matriz (desafio).
a4.1 <- 4
a3.2 <- 7
a2.3 <- 10
a1.4 <- 13
somadiagonalsecundaria <- a4.1 + a3.2 + a2.3 + a1.4
Repita o exercício “15)” com os dados do data.frame do exercício “14)”.
a média de uma coluna da matriz do exercício “14)”.
A média de todas as colunas da matriz do exercício “14)”.
A média de todas as linhas da matriz do exercício “14)”.
A média dos números pares de todas as colunas da matriz do exercício “14)”.
A média dos números ímpares de todas as linhas da matriz do exercício “14)”.
A soma da diagonal principal da matriz.
A soma da diagonal secundária da matriz (desafio).
df <- as.data.frame(matrix(data = 1:16, nrow = 4, ncol = 4, byrow = TRUE))
# a. a média de uma coluna da matriz do exercício “14”.
mean(df[,1])
## [1] 7
# b. A média de todas as colunas da matriz do exercício “14”.
mean(df[,1])
## [1] 7
mean(df[,2])
## [1] 8
mean(df[,3])
## [1] 9
mean(df[,4])
## [1] 10
# c. A média de todas as linhas da matriz do exercício “14”.
for(i in 1:4){
soma <- 0
for(j in 1:4){
soma <- soma + df[i,j]
}
media <- soma/j
print (media)
}
## [1] 2.5
## [1] 6.5
## [1] 10.5
## [1] 14.5
#d. A média dos números pares de todas as colunas da matriz do exercício “14)”.
dfpares1 <- c(1,2,3,4)
mean(dfpares1[3],dfpares1[1])
## [1] 3
dfpares2 <- c(5,6,7,8)
mean(dfpares2[3],dfpares2[1])
## [1] 7
dfpares3 <- c(9,10,11,12)
mean(dfpares3[3],dfpares3[1])
## [1] 11
dfpares4 <- c(13,14,15,16)
mean(dfpares4[3],dfpares4[1])
## [1] 15
# e. A média dos números ímpares de todas as linhas da matriz do exercício “14)”.
dfimpares1 <- c(1,2,3,4)
mean(dfimpares1[2],dfimpares1[4])
## [1] 2
dfimpares2 <- c(5,6,7,8)
mean(dfimpares2[2],dfimpares2[4])
## [1] 6
dfimpares3 <- c(9,10,11,12)
mean(dfimpares3[2],dfimpares3[4])
## [1] 10
dfimpares4 <- c(13,14,15,16)
mean(dfimpares4[2],dfimpares4[4])
## [1] 14
# f. A soma da diagonal principal da matriz.
dfa1.1 <- 1
dfa2.2 <- 6
dfa3.3 <- 11
dfa4.4 <- 16
somadiagonalprincipal <- dfa1.1 + dfa2.2 + dfa3.3 + dfa4.4
# g. A soma da diagonal secundária da matriz (desafio).
dfa4.1 <- 4
dfa3.2 <- 7
dfa2.3 <- 10
dfa1.4 <- 13
somadiagonalsecundaria <- dfa4.1 + dfa3.2 + dfa2.3 + dfa1.4
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.
VALOR <- matrix(data = 1:36, nrow = 6, ncol = 6, byrow = TRUE)
vetor1<- c(1,2,3,4,5,6)
soma1 <- vetor1[1] + vetor1[2] + vetor1[3] + vetor1[4] + vetor1[5] + vetor1[6]
vetor2 <- c(7,8,9,10,11,12)
soma2 <- vetor2[1] + vetor2[2] + vetor2[3] + vetor2[4] + vetor2[5] + vetor2[6]
vetor3 <- c(13,14,15,16,17,18)
soma3 <- vetor3[1] + vetor3[2] + vetor3[3] + vetor3[4] + vetor3[5] + vetor3[6]
vetor4 <- c(19,20,21,22,23,24)
soma4 <- vetor4[1] + vetor4[2] + vetor4[3] + vetor4[4] + vetor4[5] + vetor4[6]
vetor5 <- c(25,26,27,28,29,30)
soma5 <- vetor5[1] + vetor5[2] + vetor5[3] + vetor5[4] + vetor5[5] + vetor5[6]
vetor6 <- c(31,32,33,34,35,36)
soma6 <- vetor6[1] + vetor6[2] + vetor6[3] + vetor6[4] + vetor6[5] + vetor6[6]
vetorresultado <- c(soma1,soma2,soma3,soma4,soma5,soma6)
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))
# MÉDIA DOS VALORES ARMAZENADOS NA DIAGONAL PRINCIPAL
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
# VALORES ARMAZENADOS NA DIAGONAL SECUNDÁRIA
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
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:
A média dos valores pares armazenados no data.frame;
A quantidade de elementos com valor maior que 50;
A média dos valores ímpares menores que 30 armazenados no data.frame;
A soma dos valores das colunas ímpares.
O maior e o menor valor armazenado.
# Criar o data.frame D 4x4 com valores aleatórios entre 0 e 100
D <- data.frame(matrix(sample(0:100, 4*4, replace=TRUE), ncol=4))
# Calcular a média dos valores pares armazenados no data.frame
media_pares <- mean(D[D %% 2 == 0])
# Calcular a quantidade de elementos com valor maior que 50
qtd_maior_50 <- sum(D > 50)
# Calcular a média dos valores ímpares menores que 30 armazenados no data.frame
media_impares_menores_30 <- mean(D[D %% 2 != 0 & D < 30])
# Calcular a soma dos valores das colunas ímpares
soma_colunas_impares <- sum(D[, seq(1, ncol(D), 2)])
# Identificar o maior e o menor valor armazenado
maior_valor <- max(D)
menor_valor <- min(D)
# Imprimir os resultados
cat("A média dos valores pares armazenados no data.frame é:", round(media_pares, 2), "\n")
## A média dos valores pares armazenados no data.frame é: 64
cat("A quantidade de elementos com valor maior que 50 é:", qtd_maior_50, "\n")
## A quantidade de elementos com valor maior que 50 é: 10
cat("A média dos valores ímpares menores que 30 armazenados no data.frame é:", round(media_impares_menores_30, 2), "\n")
## A média dos valores ímpares menores que 30 armazenados no data.frame é: 15.67
cat("A soma dos valores das colunas ímpares é:", soma_colunas_impares, "\n")
## A soma dos valores das colunas ímpares é: 406
cat("O maior valor armazenado no data.frame é:", maior_valor, "\n")
## O maior valor armazenado no data.frame é: 97
cat("O menor valor armazenado no data.frame é:", menor_valor, "\n")
## O menor valor armazenado no data.frame é: 12
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.
# Definindo o salário base do funcionário
salario_base <- 3000
# Calculando a gratificação de 5%
gratificacao <- salario_base * 0.05
# Calculando o imposto de 10%
imposto <- salario_base * 0.1
# Calculando o salário a receber
salario_receber <- salario_base + gratificacao - imposto
# Imprimindo o resultado na tela
cat("Salário a receber: R$ ", salario_receber, "\n")
## Salário a receber: R$ 2850
Faça um programa em RStudio para calcular o salário mensal final de um vendedor. As seguintes informações determinam esse valor:
salário fixo: R$ 3.000,00
total de vendas por ele efetuadas: R$ 25.000,00
percentual que ele recebe sobre o total de vendas (5%)
IRPF de 7,5% sobre o salário fixo
INSS de 11% sobre o salário fixo mais a comissão de vendas
# Definindo variáveis
salario_fixo <- 3000
total_vendas <- 25000
comissao_percentual <- 0.05
irpf_percentual <- 0.075
inss_percentual <- 0.11
# Calcular a comissão sobre as vendas
comissao <- total_vendas * comissao_percentual
# Calcular o salário bruto
salario_bruto <- salario_fixo + comissao
# Calcular o valor do IRPF
irpf <- salario_fixo * irpf_percentual
# Calcular o valor do INSS
inss <- (salario_fixo + comissao) * inss_percentual
# Calcular o salário líquido
salario_liquido <- salario_bruto - irpf - inss
# Imprimir resultado
cat("O salário mensal final do vendedor é R$", round(salario_liquido, 2))
## O salário mensal final do vendedor é R$ 3557.5
Faça um programa em RStudio para efetuar a estimativa da quantidade de litros de cerveja consumida 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 o consumo em litros do bloco e o lucro auferido.
# Definindo variáveis
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
# Calcular o consumo total em litros
litros_total <- n_pessoas * media_consumo * ml_por_latao / ml_por_litro * dias_carnaval
# Calcular a quantidade de caixas de cerveja consumidas em um dia
caixas_por_dia <- (n_pessoas * media_consumo) / latoes_por_caixa
# Calcular a quantidade de caixas de cerveja consumidas em cinco dias
caixas_cinco_dias <- caixas_por_dia * dias_carnaval
# Calcular o lucro auferido
lucro_por_caixa <- preco_venda_caixa - preco_custo_caixa
lucro_total <- lucro_por_caixa * caixas_cinco_dias
# Imprimir resultados
cat("Quantidade de caixas de cerveja consumidas por dia:", round(caixas_por_dia, 2), "\n")
## Quantidade de caixas de cerveja consumidas por dia: 250
cat("Quantidade de caixas de cerveja consumidas em cinco dias:", round(caixas_cinco_dias, 2), "\n")
## Quantidade de caixas de cerveja consumidas em cinco dias: 1250
cat("Consumo total de cerveja em litros:", round(litros_total, 2), "\n")
## Consumo total de cerveja em litros: 7095
cat("Lucro auferido em cinco dias:", round(lucro_total, 2))
## Lucro auferido em cinco dias: 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.
# Criando a matriz JOGO 10x2 com os resultados dos jogos
JOGO <- matrix(c(2,1,1,2,2,2,1,0,0,0,1,1,2,2,1,2,0,0,0,1), nrow = 10, ncol=2)
# Calcular a média de gols realizados por cada time
media_time1 <- mean(JOGO[,1])
media_time2 <- mean(JOGO[,2])
# Imprimir os resultados
cat("A média de gols realizados pelo time 1 foi:", media_time1, "\n")
## A média de gols realizados pelo time 1 foi: 1.1
cat("A média de gols realizados pelo time 2 foi:", media_time2, "\n")
## A média de gols realizados pelo time 2 foi: 1