Um algoritmo é uma sequência finita e ordenada de instruções bem definidas e executáveis que resolvem um problema específico.
###Segundo o livro da referência, quais são as etapas para a construção de um algoritmo?
Entender o problema: O primeiro passo é entender o problema que o algoritmo deve resolver. É importante entender os requisitos e as limitações do problema para criar um algoritmo eficaz.
Definir a entrada e a saída: Em seguida, é preciso definir quais serão os dados de entrada e saída do algoritmo. É importante definir claramente os tipos de dados, como eles serão fornecidos e como serão exibidos.
Identificar os passos: A próxima etapa é identificar os passos necessários para resolver o problema. É importante criar uma lista clara de passos que o algoritmo deve seguir para atingir o resultado esperado.
Organizar os passos: Após identificar os passos, é preciso organizar a sequência dos mesmos em uma ordem lógica e coerente, levando em consideração a eficiência do algoritmo.
Testar e ajustar: Após criar o algoritmo, é importante testá-lo para garantir que ele resolva o problema de maneira correta e eficiente. Caso necessário, é preciso fazer ajustes no algoritmo para melhorar seu desempenho.
Documentar: Por fim, é importante documentar o algoritmo, para que outras pessoas possam entendê-lo e usá-lo no futuro.
###Quais são os passos para a construção de um algoritmo?
"Entender o problema: O primeiro passo é entender claramente o problema que o algoritmo deve resolver. Isso envolve identificar os requisitos e as limitações do problema, bem como as informações necessárias para resolvê-lo.
Identificar as entradas e saídas: Em seguida, é preciso identificar quais são os dados de entrada necessários para o algoritmo e o que ele deve produzir como saída. Isso pode incluir informações como números, texto, imagens, entre outros.
Projetar a solução: Com base nas informações identifica das nas etapas anteriores, é preciso projetar a solução para o problema. Isso envolve identificar os passos específicos que o algoritmo deve seguir para chegar à solução, bem como os métodos e estruturas de dados que serão usados.
Escrever o algoritmo: Com a solução projetada, é possível escrever o algoritmo usando uma linguagem de programação. Isso envolve codificar os passos identificados na etapa anterior de maneira clara e precisa.
Testar e depurar: Depois de escrever o algoritmo, é importante testá-lo para garantir que ele funcione corretamente. Isso envolve executar o algoritmo com diferentes entradas e verificar se a saída está correta. Se houver erros, é necessário depurá-los para corrigi-los.
Otimizar: Se o algoritmo estiver funcionando corretamente, é possível otimizá-lo para melhorar sua eficiência e desempenho. Isso envolve fazer mudanças no algoritmo para torná-lo mais rápido ou usar menos recursos.
Documentar: Por fim, é importante documentar o algoritmo para que outras pessoas possam entendê-lo e usá-lo no futuro. Isso pode envolver escrever comentários no código, criar documentação técnica ou fornecer exemplos de uso"
###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.
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
Obj final: Atravessar todas as cargas, até ao outro lado da margem do Rio.
Resposta:
inicio
O homem leva a cabra para a outra margem do rio. (O homem volta sozinho.)
O homem leva o lobo para a outra margem do rio. (O homem retorna com a cabra.)
O homem deixa a cabra na primeira margem e leva o repolho para a outra margem do rio. (O homem volta sozinho.)
O homem leva a cabra para a outra margem do rio.
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.
inicio
Dois jesuítas cruzam o rio. (Um jesuíta e dois canibais permanecem na margem.)
Um jesuíta retorna para a margem inicial e dois canibais cruzam o rio. (Um jesuíta e um canibal permanecem na margem.)
Dois jesuítas cruzam o rio. (Três canibais permanecem na margem.)
Um jesuíta retorna para a margem inicial e dois canibais cruzam o rio. (Dois jesuítas e um canibal permanecem na margem.)
Dois jesuítas cruzam o rio. (Dois canibais permanecem na margem.)
Um jesuíta retorna para a margem inicial e dois canibais cruzam o rio. (Um jesuíta e dois canibais permanecem na margem.)
Dois jesuítas cruzam o rio.
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 <- 20
b <- 8
c <- 12
a + b
## [1] 28
a + c
## [1] 32
b + c
## [1] 20
###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 <- 5
B <- 15
cat("A e B são ", A, " e " , B)
## A e B são 5 e 15
Aux <- 0
Aux <- A
A <- B
B <- Aux
cat("A e B são ", A, " e " , B)
## A e B são 15 e 5
###Converta uma temperatura de Fahrenheit para Centígrados. C = (F - 32) * ( 5 / 9 )
Temperatura <- 42
graus_celsius <- (Temperatura - 32) * (5/9)
cat("A temperatura equivalente é ", graus_celsius)
## A temperatura equivalente é 5.555556
###Crie uma variável X e calcule:
x <- 2
# a) X3 - 4
x^3 -4
## [1] 4
# b) O resto da divisão de X / 3
x %% 3
## [1] 2
# c) X(x/3) + 2
x^3 -4
## [1] 4
# d) Raiz quadrada de x^2
sqrt(x^2)
## [1] 2
x1 <- 3
x2 <-5
x3 <-7
x4 <-4
x5 <-3
x6 <-2
x7 <-1
x8 <-9
x9 <-12
x10 <-15
x11 <-9
media <- (x1+x2+x3+x4+x5+x6+x7+x8+x9+x10+x11)/11
cat("Média é =", media)
## Média é = 6.363636
###Calcule o fatorial de um número
mult <- 1
x <- 8
for(i in 1:8){
mult <- mult * i
}
cat("O valor do fatorial é: ", mult)
## O valor do fatorial é: 40320
###Crie uma matriz 4x4.
matriz <- matrix(data = 1, nrow = 4, ncol = 4, byrow = TRUE)
matriz
## [,1] [,2] [,3] [,4]
## [1,] 1 1 1 1
## [2,] 1 1 1 1
## [3,] 1 1 1 1
## [4,] 1 1 1 1
###Crie uma matriz com a sequência de 1 a 16
matriz <- matrix(data = 1:16, nrow = 4, ncol = 4, byrow = TRUE)
matriz
## [,1] [,2] [,3] [,4]
## [1,] 1 2 3 4
## [2,] 5 6 7 8
## [3,] 9 10 11 12
## [4,] 13 14 15 16
###Transforme essa matriz em um data.frame
df <- as.data.frame(matriz)
df
## V1 V2 V3 V4
## 1 1 2 3 4
## 2 5 6 7 8
## 3 9 10 11 12
## 4 13 14 15 16
###Utilizando os comandos de repetição e decisão (se for necessário), calcule:
## a. a média de uma coluna da matriz do exercicio 13
soma <- 0
for( i in 1:4) {
soma <- soma + matriz[i,2]
}
media <- soma/i
media
## [1] 8
## b. A média de todas as colunas da matriz do exercicio 13
for(ypsolon in 1:4){
soma <- 0
for(i in 1:4){
soma <- soma + matriz[i,ypsolon]
}
media <- soma/i
print(media)
}
## [1] 7
## [1] 8
## [1] 9
## [1] 10
## c. A média de todas as linhas do exercicios 13
for(i in 1:4){
soma <- 0
for(j in 1:4){
soma <- soma + matriz[i,j]
}
media <- soma/j
print(media)
}
## [1] 2.5
## [1] 6.5
## [1] 10.5
## [1] 14.5
## d. A média dos numeros pares de todas as colunas
v_soma_npar_colunas <- rep(0,4) # repete 4 vezes o valor 0
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
for(coluna in 1:4){
soma <- 0
contador <- 0
for(linha in 1:4){
if(matriz[linha,coluna]%%2 != 0){
soma <- soma + matriz[linha,coluna]
}
}
media <- soma/i
print(media)
}
## [1] 7
## [1] 0
## [1] 9
## [1] 0
media_npar_colunas <- v_soma_npar_colunas/linha
media_npar_colunas
## [1] 0 8 0 10
## e. a média dos números ímpares de todas as linhas da matriz do exercício “12)”.
v_soma_nimpar_linhas <- rep(0,4) # repete 4 vezes o valor 0
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
cont
## [1] 2 2 2 2
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
## f. a soma da diagonal principal da matriz.
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
## g. a soma da diagonal secundária da matriz
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
###Repita o exercício “15)” com os dados do data.frame do exercício “14)”.
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){ # serão somados somente os valores da coluna 2
soma_coluna <- soma_coluna + df[linha, coluna]
}
}
}
media_coluna <- soma_coluna/dim(df)[1]
media_coluna
## [1] 8
###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. Ao final do programa o vetor deve ser impresso.
v <- matrix(data = 1:36, nrow = 6, ncol = 6, byrow = TRUE)
Res <- rowSums(v)
print(Res)
## [1] 21 57 93 129 165 201
###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.
df2 <- as.data.frame(matrix(data = 1:25, nrow = 5, ncol = 5, byrow = TRUE))
# Média dos valores diagonal principal
dp1 <- 1
dp2 <- 7
dp3 <- 13
dp4 <- 19
dp5 <- 25
somadiaprinc <- dp1 + dp2 + dp3 + dp4 + dp5
MEDIA <- somadiaprinc/5
print(MEDIA)
## [1] 13
# VALORES ARMAZENADOS NA DIAGONAL SECUNDÁRIA
ds6 <- 5
ds7 <- 9
ds8 <- 13
ds9<- 17
ds10 <- 21
somadiagsecun <- ds6 + ds7 + ds8 + ds9 + ds9
print(somadiagsecun)
## [1] 61
###Crie um data.frame D 4x4, que contenha números entre 0 e 100, e calcule e imprima: a) A média dos valores pares armazenados no data.frame; b) A quantidade de elementos com valor maior que 50; c)A média dos valores ímpares menores que 30 armazenados no data.frame; d)A soma dos valores das colunas ímpares. e)O maior e o menor valor armazenado
set.seed(123)
D <- data.frame(matrix(sample(0:100, 16, replace = TRUE), nrow = 4))
colnames(D) <- c("A", "B", "C", "D")
# calculando a média dos valores pares
media_pares <- mean(D[D %% 2 == 0])
# calculando a quantidade de elementos maiores que 50
maiores_50 <- sum(D > 50)
# calculando a média dos valores ímpares menores que 30
media_impares <- mean(D[D %% 2 != 0 & D < 30])
# calculando a soma dos valores das colunas ímpares
soma_colunas_impares <- sum(D[, c(TRUE, FALSE)])
# encontrando o maior e o menor valor
maior_valor <- max(D)
menor_valor <- min(D)
# imprimindo os resultados
cat("Média dos valores pares: ", media_pares, "\n")
## Média dos valores pares: 63.09091
cat("Quantidade de elementos maiores que 50: ", maiores_50, "\n")
## Quantidade de elementos maiores que 50: 8
cat("Média dos valores ímpares menores que 30: ", media_impares, "\n")
## Média dos valores ímpares menores que 30: 13
cat("Soma dos valores das colunas ímpares: ", soma_colunas_impares, "\n")
## Soma dos valores das colunas ímpares: 397
cat("Maior valor armazenado: ", maior_valor, "\n")
## Maior valor armazenado: 100
cat("Menor valor armazenado: ", menor_valor, "\n")
## Menor valor armazenado: 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 <- 3000
grat <- salario_base * 0.05
imposto <- salario_base * 0.1
salario <- salario_base + grat - imposto
salario
## [1] 2850
salario_fixo <- 3000
tot_vendas <- 25000
grat_vendas <- tot_vendas * 0.05
irpf <- salario_fixo * 0.075
inss <- (salario_fixo + grat_vendas) * 0.11
salario <- salario_fixo + grat_vendas - irpf - inss
cat(" BILHETE DE PAGAMENTO \n",
"-------------------------------------------", "\n",
"Sálario base" , salario_fixo, "\n",
"Gratificação de vendas" , grat_vendas, "\n",
"Imposto de Renda" , irpf, "\n",
"INSS" , inss, "\n",
" ------------------------------------------------", "\n",
"Liquido a receber" , salario
)
## BILHETE DE PAGAMENTO
## -------------------------------------------
## Sálario base 3000
## Gratificação de vendas 1250
## Imposto de Renda 225
## INSS 467.5
## ------------------------------------------------
## Liquido a receber 3557.5
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
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.
jogo <- matrix(data =
c(4,2,2,3,5,2,1,3,2,1,1,1,1,1,1,1,1,1,1,1), ncol = 2)
soma_fla <- 0
soma_flu <- 0
for(i in 1:10){
soma_flu <- soma_fla + 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.5
cat("A média de gols do Flu foi", media_flu, "\n")
## A média de gols do Flu foi 2.5