Exercícios do Projeto de algoritmos

Este espaço é para o desenvolvimento do projeto de algoritmos.

Exercícios

vamos começar a desenvolver os exercícios.

Exercício 1

O que vem a ser um algoritmo?

RESPOSTA:

#É um conjunto de comandos, instruções e regras, ou seja, uma sequência finita de ações excutaveis. O algoritimo é uma sequencia de comandos e condições que devem ser sequidas para chegar ao aobjtivo esperado.

Exercício 2

Segundo o livro da referência, quais são as etapas para a construção de um algoritmo?

RESPOSTA:

#Segundo o livro, fundamentos da programação de computadores, 2ª ediçao (2007), os autores descrevem as seguintes etepas pata a construção de um algoritimo
 
# 1 Compreender completamente o problemas a ser resolvido, destacando os pontos mais importantes e os objetivos que o compôem.
 
# 2 Definir os dados de entreda, ou seja, quais dados serão fornecidos e quais objetos fazer parte desse cenário-problema.
 
# 3 Definir o processamento, ou seja, quais cálculos serão efetuados e quais as restrições para esses cálculos. O processamento é responsável pelas atividades.
 
# 4 Definir os dados de saída, ou seja, quais dados serão gerados depois do processamento.
 
# 5 Construir o algoritmo utilizandos: Descrição narrativa; Fluxograma; pseudocódigo 
 
# 6 Testar o algoritmo realizando simulações

Exercício 3

Quais são os passos para a construção de um algoritmo?

RESPOSTA:

# Entender e definir o cenario-problema, ajustando aos seus objtivos; Definir as regras e atividades do processamento e como esses dados sairam; Defina o tipo de código que irá usar e construa o conjutos de comando e instruções de sua olgoritmo; Faça um perido de homologação testando os possiveis cenarios.

Exercício 4

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.

RESPOSTA:

# O homem deve pegar a cabra 
# O homem deve caminhar até o barco com a cabra
# O homem deve suavemente colocar a cabra no barco 
# O homem deve pegar o remo
# O hoeme deve subir no barco com cuidado
# O homem deve alternar as remadas para enquerda e para direita
# O homem deve remar até chegar a outra margem do rio
# O homem deve sair do Barco
# O hoeme deve pegar a cabra do barco
# O homem deve deixar a cabra a 5 metros da margem do rio
# O hoeme deve retornar ao barco
# O homem deve subir no barco
# O homem deve alternar as remadas para enquerda e para direira
# O homem deve remar até retorna a outra margem do rio
# O homem deve sair do Barco
# O homem deve caminhar até o repolho
# O homem deve pegar o repolho
# O homem deve caminhar até o barco com o repolho
# O homem deve suavemente colocar o repolho no barco 
# O homem deve pegar o remo
# O hoeme deve subir no barco com cuidado
# O homem deve alternar as remadas para enquerda e para direita
# O homem deve remar até chegar a outra margem do rio
# O homem deve sair do Barco
# O hoeme deve pegar o repolho do barco
# O homem deve deixar o repolho a 5 metros da margem do rio
# O homem deve pegar a cabra 
# O hoeme deve retornar ao barco com a cabara
# O homem deve suavemente colocar a cabra no barco 
# O homem deve pegar o remo
# O hoeme deve subir no barco com cuidado
# O homem deve alternar as remadas para enquerda e para direita
# O homem deve remar até chegar a outra margem do rio
# O homem deve sair do Barco
# O hoeme deve pegar a cabra do barco
# O homem deve deixar a cabra no local de origem
# O homem deve pegar o lobo 
# O homem deve caminhar até o barco com o lobo
# O homem deve suavemente colocar o lobo no barco 
# O homem deve pegar o remo
# O hoeme deve subir no barco com cuidado
# O homem deve alternar as remadas para enquerda e para direita
# O homem deve remar até chegar a outra margem do rio
# O homem deve sair do Barco
# O hoeme deve pegar o lobo do barco
# O homem deve deixar o lobo a 5 metros da margem do rio
# O homem deve retornar ao barco
# O homem deve subir no barco
# O homem deve alternar as remadas para enquerda e para direira
# O homem deve remar até retorna a outra margem do rio
# O homem deve sair do Barco
# O homem deve pegar a cabra 
# O homem deve caminhar até o barco com a cabra
# O homem deve suavemente colocar a cabra no barco 
# O homem deve pegar o remo
# O hoeme deve subir no barco com cuidado
# O homem deve alternar as remadas para enquerda e para direita
# O homem deve remar até chegar a outra margem do rio
# O homem deve sair do Barco
# O homem deve pegar a cabra do barco
# O homem deve caminhar com a cabra até o repolho e o lobo
# O homem deve seguir viagem com suas mercadorias

Exercício 5

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:

# Deve atravessar um jesuíta e um canibal no barco
# Deve ficar um jesuíta 
# Deve voltar um canibal no barco
# Deve atravessar dois canibais no barco
# Deve ficar um canibal 
# Deve voltar um canibal no barco
# Deve atravessar um jesuíta e um canibal
# Deve ficar um jesuíta
# Deve voltar um canibal
# Deve atravessar dois canibais
# Deve ficar um canibal 
# Deve voltar um canibal
# Deve atravessar um jesuíta e um canibal

Exercício 6

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 <- 2
b <- 3
c <- 4

resultado1 <- a + b
resultado2 <- a + c
resultado3 <- b + c

print(resultado1)
## [1] 5
print(resultado2)
## [1] 6
print(resultado3)
## [1] 7

Exercício 7

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.

UTILIZAR O CHUNK ABAIXO PARA FEITURA DA LINGUAGEM R

a <- 6
b <- 8

temp <- a
a <- b
b <- temp

print(a)
## [1] 8
print(b)
## [1] 6

Exercício 8

Faça um programa em RStudio para converter uma temperatura de Fahrenheit para Centígrados. C = (F - 32) * ( 5 / 9 ).

UTILIZAR O CHUNK ABAIXO PARA FEITURA DA LINGUAGEM R

fahrenheit <- 68

celsius <- (fahrenheit - 32) * (5/9)

print(celsius)
## [1] 20

Exercício 9

Faça um programa em RStudio que crie uma variável X e calcule: a) X3 - 4 b) O resto da divisão de X / 3 c) XB + 2 d) Raiz quadrada de X2

UTILIZAR O CHUNK ABAIXO PARA FEITURA DA LINGUAGEM R

x <- 5
b <- 2

resultado1 <- x^3 - 4
resultado2 <- x %% 3
resultado3 <- x * b + 2
resultado4 <- sqrt(x^2)

print(resultado1)
## [1] 121
print(resultado2)
## [1] 2
print(resultado3)
## [1] 12
print(resultado4)
## [1] 5

Exercício 10

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.

UTILIZAR O CHUNK ABAIXO PARA FEITURA DA LINGUAGEM R

# Criar as 11 variáveis com os valores fornecidos
var1 <- 3
var2 <- 5
var3 <- 7
var4 <- 4
var5 <- 3
var6 <- 2
var7 <- 1
var8 <- 9
var9 <- 12
var10 <- 15
var11 <- 9

# Calcular a soma das 11 variáveis
soma <- var1 + var2 + var3 + var4 + var5 + var6 + var7 + var8 + var9 + var10 + var11

# Calcular a média das 11 variáveis
media <- soma / 11

# Mostrar a soma e a média
cat("Soma dos números =", soma, "\n")
## Soma dos números = 70
cat("Média dos números =", media)
## Média dos números = 6.363636

Exercício 11

Faça um programa em RStudio que calcule o fatorial de um número.

UTILIZAR O CHUNK ABAIXO PARA FEITURA DA LINGUAGEM R

# crio uma variável para armazenar o valor do fatorial, e atribuo o valor 1 a ela.
mult <- 1

# Defino o numéro que você quer calcular o fatorial
x <- 5

for(i in 1:5){
  mult <- mult * i
}

cat("O valor do fatorial é: ", mult)
## O valor do fatorial é:  120

Exercício 12

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

UTILIZAR O CHUNK ABAIXO PARA FEITURA DA LINGUAGEM R

matriz <- matrix(data = runif(16), nrow = 4, ncol = 4)
print(matriz)
##           [,1]      [,2]      [,3]      [,4]
## [1,] 0.6853768 0.3765276 0.8619273 0.4130901
## [2,] 0.8158999 0.2265139 0.4134694 0.5932285
## [3,] 0.9259614 0.9297128 0.1971382 0.7822582
## [4,] 0.1484147 0.9437086 0.6784355 0.7933113

Exercício 13

Agora, crie uma matriz com a sequência de 1 a 16. UTILIZAR O CHUNK ABAIXO PARA FEITURA DA LINGUAGEM R

mat <- matrix(data = 1:16, nrow = 4, ncol = 4, byrow = TRUE)

Exercício 14

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

UTILIZAR O CHUNK ABAIXO PARA FEITURA DA LINGUAGEM R

df <- as.data.frame(mat)

Exercício 15

Utilizando os comandos de repetição e decisão (se for necessário), calcule: a. a média de uma coluna da matriz do exercício “13)”.

soma <- 0
for (i in 1:4){
  soma <- soma + mat[i,2]
}
  
medía <- soma/i
medía
## [1] 8
  1. A média de todas as colunas da matriz do exercício “13)”.
for(j in 1:4){ 
  soma <- 0
  for(i in 1:4){
  soma <- soma + mat[i,j]
}
medía <- soma/i
print(medía)
}
## [1] 7
## [1] 8
## [1] 9
## [1] 10
  1. A média de todas as linhas da matriz do exercício “13)”.
for(i in 1:4){ 
  soma <- 0
  for(j in 1:4){
  soma <- soma + mat[i,j]
}
medía <- soma/j
print(medía)
}
## [1] 2.5
## [1] 6.5
## [1] 10.5
## [1] 14.5
  1. A média dos números pares de todas as colunas da matriz do exercício “13)”.
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 0 0 0
  1. A média dos números ímpares de todas as linhas da matriz do exercício “13)”.
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] 2.336922 2.049112 2.835071 2.563870
  1. 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] 1.90234
  1. A soma da diagonal secundária da matriz (desafio).
# Uma dica: a soma dos índices da diagonal secundária de uma matriz é a sua dimensão mais 1.
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] 1.904687

UTILIZAR O CHUNK ABAIXO PARA FEITURA DA LINGUAGEM R

Exercício 16

Repita o exercício “15)” com os dados do data.frame do exercício “14)”.

UTILIZAR O CHUNK ABAIXO PARA FEITURA DA LINGUAGEM R

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]
    }
  }
}

# A média da coluna é a soma da coluna dividido pela quantidade de linhas dessa coluna
media_coluna <- soma_coluna/dim(df)[1]
media_coluna
## [1] 0.6191157

Exercício 17

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.

UTILIZAR O CHUNK ABAIXO PARA FEITURA DA LINGUAGEM R

# Criando a matriz VALOR 6x6 com valores aleatórios entre 1 e 10
VALOR <- matrix(sample(1:10, 36, replace=TRUE), nrow=6, ncol=6)

# Calculando a soma de cada uma das linhas da matriz
RESULTADO <- apply(VALOR, 1, sum)

# Imprimindo o vetor RESULTADO
print(RESULTADO)
## [1] 35 36 44 29 36 47

Exercício 18

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.

UTILIZAR O CHUNK ABAIXO PARA FEITURA DA LINGUAGEM R

Exercício 19

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:

D <- data.frame(matrix(sample(0:100, 4*4, replace = TRUE), nrow = 4))

cat("Data.frame D:")
## Data.frame D:
print(D)
##   X1 X2 X3 X4
## 1 15 21 20 50
## 2 86 21 21 15
## 3  8 13  1 75
## 4 54 49 56 10
  1. A média dos valores pares armazenados no data.frame;
valores_pares <- D[D %% 2 == 0]
media_pares <- mean(valores_pares)
cat("\nMédia dos valores pares:", media_pares, "\n")
## 
## Média dos valores pares: 40.57143
  1. A quantidade de elementos com valor maior que 50;
maiores_que_50 <- sum(D > 50)
cat("Quantidade de elementos maiores que 50:", maiores_que_50, "\n")
## Quantidade de elementos maiores que 50: 4
  1. A média dos valores ímpares menores que 30 armazenados no data.frame;
valores_impares_menores_que_30 <- D[(D %% 2 != 0) & (D < 30)]
media_impares_menores_que_30 <- mean(valores_impares_menores_que_30)
cat("Média dos valores ímpares menores que 30:", media_impares_menores_que_30, "\n")
## Média dos valores ímpares menores que 30: 15.28571
  1. A soma dos valores das colunas ímpares.

  2. O maior e o menor valor armazenado.

maior_valor <- max(D)
menor_valor <- min(D)
cat("Maior valor:", maior_valor, "\n")
## Maior valor: 86
cat("Menor valor:", menor_valor, "\n")
## Menor valor: 1

UTILIZAR O CHUNK ABAIXO PARA FEITURA DA LINGUAGEM R

Exercício 20

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.

UTILIZAR O CHUNK ABAIXO PARA FEITURA DA LINGUAGEM R

# Solicitar o salário base ao usuário
salario_base <- as.numeric(readline(prompt = "Digite o salário base do funcionário: "))
## Digite o salário base do funcionário:
# Calcular a gratificação (5% do salário base)
gratificacao <- 0.05 * salario_base

# Calcular o imposto (10% do salário base)
imposto <- 0.1 * salario_base

# Calcular o salário a receber
salario_a_receber <- salario_base + gratificacao - imposto

# Exibir o salário a receber
cat("Salário a receber: R$", salario_a_receber, "\n")
## Salário a receber: R$ NA

Exercício 21

Faça um programa em RStudio para calcular o salário mensal final de um vendedor. As seguintes informações determinam esse valor:

  1. salário fixo: R$ 3.000,00
  2. total de vendas por ele efetuadas: R$ 25.000,00
  3. percentual que ele recebe sobre o total de vendas (5%)
  4. IRPF de 7,5% sobre o salário fixo
  5. INSS de 11% sobre o salário fixo mais a comissão de vendas
# Definir as informações iniciais
salario_fixo <- 3000
total_vendas <- 25000
percentual_comissao <- 0.05
percentual_irpf <- 0.075
percentual_inss <- 0.11

# Calcular o valor da comissão sobre o total de vendas
comissao <- percentual_comissao * total_vendas

# Calcular o valor do IRPF sobre o salário fixo
irpf <- percentual_irpf * salario_fixo

# Calcular o valor do INSS sobre o salário fixo mais a comissão
inss <- percentual_inss * (salario_fixo + comissao)

# Calcular o salário mensal final
salario_final <- salario_fixo + comissao - irpf - inss

# Exibir o salário mensal final
cat("Salário mensal final: R$", salario_final, "\n")
## Salário mensal final: R$ 3557.5

Exercício 22

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.

UTILIZAR O CHUNK ABAIXO PARA FEITURA DA LINGUAGEM R

# Definir as informações iniciais
n_pessoas <- 1000
consumo_medio_por_pessoa <- 3
latoes_por_caixa <- 12
ml_por_latao <- 473
ml_por_litro <- 1000
dias_carnaval <- 4

# Calcular o total de latões de cerveja consumidos pelo bloco
total_latoes_consumidos <- n_pessoas * consumo_medio_por_pessoa

# Calcular o total de caixas de cerveja consumidas pelo bloco
total_caixas_consumidas <- ceiling(total_latoes_consumidos / latoes_por_caixa)

# Calcular o total de litros de cerveja consumidos pelo bloco
total_litros_consumidos <- total_caixas_consumidas * latoes_por_caixa * ml_por_latao / ml_por_litro

# Calcular a estimativa do consumo por dia
consumo_por_dia <- total_litros_consumidos / dias_carnaval

# Exibir a estimativa do consumo total e por dia
cat("Estimativa do consumo de cerveja durante o carnaval:\n")
## Estimativa do consumo de cerveja durante o carnaval:
cat("Consumo total: ", total_litros_consumidos, " litros\n")
## Consumo total:  1419  litros
cat("Consumo por dia: ", consumo_por_dia, " litros\n")
## Consumo por dia:  354.75  litros

Exercício 23

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.

UTILIZAR O CHUNK ABAIXO PARA FEITURA DA LINGUAGEM R

# Criar a matriz JOGO com os resultados dos jogos
JOGO <- matrix(c(2, 1, 1, 3, 0, 2, 3, 2, 0, 1,
                 1, 2, 2, 1, 3, 1, 0, 1, 2, 1), nrow = 10, ncol = 2, byrow = TRUE)

# Calcular a média de gols realizados por cada time
media_gols_time1 <- mean(JOGO[, 1])
media_gols_time2 <- mean(JOGO[, 2])

# Exibir a média de gols realizados por cada time
cat("Média de gols realizados por cada time:\n")
## Média de gols realizados por cada time:
cat("Time 1: ", media_gols_time1, " gols por jogo\n")
## Time 1:  1.4  gols por jogo
cat("Time 2: ", media_gols_time2, " gols por jogo\n")
## Time 2:  1.5  gols por jogo