Prévia do material em texto
NOME DA DISCIPLINA: ALGORITMOS E LÓGICA
DE PROGRAMAÇÃO
Unidade: U2 _ELEMENTOS DE ALGORITMOS
Aula: A2_ EXECUÇÃO SEQUENCIAL E ESTRUTURAS DE
DECISÃO
Algoritmo de Decisão: Aventura na Floresta Sussurrante
obs: títulos das atividades são autorais baseados no que a questão pede
programa {
// Importando as bibliotecas necessárias
inclua biblioteca Util --> u
// Variável global para armazenar o nome do jogador
cadeia var = ""
funcao inicio() {
// Exibindo a mensagem de boas-vindas ao jogador
escreva("Bem-vindo ao Mini Jogo!")
// Aguardando o jogador pressionar ENTER para iniciar
escreva("\nAperte ENTER para iniciar o jogo...")
leia(var)
limpa() // Limpando a tela do terminal
// Introduzindo o contexto do jogo
escreva("\nVocê é um explorador corajoso que se aventura em uma misteriosa
\nFloresta Sussurrante em busca de tesouros lendários e segredos perdidos...")
u.aguarde(1500) // Pausa dramatica
escreva("\n\nAo adentrar na floresta, você se depara com três caminhos diferentes,
\ncada um levando a uma parte desconhecida e perigosa da floresta.")
u.aguarde(1500)
escreva("\n\nSua missão é escolher sabiamente o caminho a seguir, enfrentando
desafios e \ntomando decisões que impactarão sua jornada e sua pontuação final.")
u.aguarde(1500)
escreva("\n\nPrepare-se para esta aventura cheia de mistérios!")
u.aguarde(7000) // Tempo reduzido
limpa()
escreva("VAMOS LÁ")
// Iniciando o percurso - solicitando o nome do herói
cadeia heroi
escreva("\nQual seu nome nobre guerreiro(a)?\n")
leia(heroi)
// Apresentando as opções de caminhos ao jogador
inteiro opcao
escreva( heroi+"!, escolha um caminho:\n")
escreva("1. O caminho das Sombras\n")
escreva("2. O Caminho da Luz\n")
escreva("3. O Caminho das Criaturas\n")
escreva("Digite apenas o caminho que deseja 1, 2 ou 3\n\nEscolha: ")
leia(opcao)
// Estrutura de repetição para processar a escolha do jogador
inteiro pontos
escolha(opcao) {
// Caminho das Sombras
caso 1:
pontos = caminho_das_sombras()
pare
// Caminho da Luz
caso 2:
pontos = caminho_da_luz()
pare
// Caminho das Criaturas
caso 3:
pontos = caminho_das_criaturas()
pare
// Caso a escolha seja inválida
caso contrario:
escreva("Escolha inválida. Por favor escolha um caminho válido...\n")
escreva("Caminho 1, 2 ou 3: ")
leia(opcao)
}
}
// Função para o Caminho das Sombras
funcao inteiro caminho_das_sombras() {
cadeia resposta_correta = "caveira"
cadeia resposta_jogador = ""
inteiro pontos = 0
inteiro tentativas = 0
// Descrição do caminho e do desafio
escreva("Este caminho é cercado por árvores antigas e sombrias, \ncom raios de lua
penetrando entre os galhos. \nParece ser o caminho mais misterioso e perigoso da floresta.")
escreva("\nVocê encontrou um obstáculo!!")
escreva("\nVocê encontra uma criatura mágica guardiã do caminho, \nque exige um
enigma para deixá-lo passar. \nvocê tem 3 tentativas; \nse errar as 3, o guardião te matará.")
escreva("O ENIGMA:\n\n")
escreva("Quem sou eu? \nTenho olhos, mas não vejo. \nTenho boca, mas não falo. \nO
que sou?")
// Loop para permitir até 3 tentativas
enquanto (tentativas u // Inclui a biblioteca Util para usar a função sorteia()
// Variáveis globais
inteiro labirinto[10][10]
inteiro posX, posY // Posição do jogador
inteiro tesouroX, tesouroY // Posição do tesouro
funcao inicio()
{
// Inicializa o labirinto com caminhos livres (somente 0)
inicializaLabirinto()
// Gera a posição do tesouro aleatoriamente
gerarTesouro()
// Gera os obstáculos
gerarObstaculos()
// Gera os buracos negros
gerarBuracosNegros()
// Posição inicial do jogador no canto superior esquerdo
posX = 0
posY = 0
// Loop de jogo
enquanto (verdadeiro)
{
mostrarLabirinto()
mostrarOpcoesMovimento()
movimentarJogador()
limpa()
// Verifica se o jogador encontrou o tesouro
se (posX == tesouroX e posY == tesouroY)
{
escreva("Parabéns! Você encontrou o tesouro!\n")
pare // Termina o jogo
}
}
}
// Inicializa o labirinto com caminhos livres (0)
funcao inicializaLabirinto()
{
para (inteiro i = 0; i")!\nFaça o próximo
movimento...\n")
}
}
// Exibe as opções de movimento
funcao mostrarOpcoesMovimento()
{
escreva("Opções de movimento:\n")
se (posX > 0) // Movimento para cima
{
escreva("1 - Mover para cima\n")
}
se (posX 0) // Movimento para esquerda
{
escreva("3 - Mover para esquerda\n")
}
se (posY 0 e labirinto[posX - 1][posY] != 1)
{
posX = posX - 1 // Mover para cima
}
senao
{
escreva("\nVocê encontrou um obstáculo na posição (", posX, ", ", posY + 1, ")!\n")
}
pare
caso 2:
se (posX 0 e labirinto[posX][posY - 1] != 1)
{
posY = posY - 1 // Mover para esquerda
}
senao
{
escreva("\nVocê encontrou um obstáculo na posição (", posX, ", ", posY + 1, ")!\n")
}
pare
caso 4:
se (posY 0)
{
inteiro x = u.sorteia(0, 9)
inteiro y = u.sorteia(0, 9)
// Garante que não colocamos obstáculos na posição inicial do jogador nem no tesouro
se ((x != posX ou y != posY) e (x != tesouroX ou y != tesouroY))
{
labirinto[x][y] = 1 // 1 representa um obstáculo
obstaculos = obstaculos - 1
}
}
}
// Gera buracos negros aleatórios no labirinto, preenchendo 10% do mapa
funcao gerarBuracosNegros()
{
inteiro totalCaminhos = 100 // Labirinto 10x10 tem 100 células no total
inteiro buracosNegros = totalCaminhos * 0.1 // 10% de buracos negros
enquanto (buracosNegros > 0)
{
inteiro x = u.sorteia(0, 9)
inteiro y = u.sorteia(0, 9)
// Garante que não colocamos buracos na posição inicial do jogador, no tesouro ou em
um obstáculo
se ((x != posX ou y != posY) e (x != tesouroX ou y != tesouroY) e (labirinto[x][y] != 1))
{
labirinto[x][y] = 8 // 8 representa um buraco negro
buracosNegros = buracosNegros - 1
}
}
}
}
Unidade: U3_CONCEITOS DE PROGRAMAÇÃO
Aula: A3_ESTRUTURAS CONDICIONAIS EM LINGUAGEM C
Algoritmo de Aprovação de Empréstimos: Análise de Critérios Financeiros
#include
// Função para verificar se o empréstimo pode ser aprovado
// Parâmetros: renda mensal, valor do empréstimo, histórico de crédito,
estabilidade no emprego e valor da entrada
int aprovarEmprestimo(float rendaMensal, float valorEmprestimo, int
historicoCredito, int estabilidadeEmprego, float valorEntrada) {
// Critério 1: O valor do empréstimo pode ser até 10 vezes a renda
mensal do cliente
float limiteEmprestimo = rendaMensal * 30;
// Critério 2: O cliente deve fornecer pelo menos 20% do valor do
empréstimo como entrada
float percentualEntradaMinima = 0.2;
// Verifica se o valor do empréstimo está dentro do limite permitido
if (valorEmprestimo > limiteEmprestimo) {
return 0; // Retorna 0 se o valor do empréstimo for maior que o
limite (empréstimo negado)
}
// Verifica se o valor da entrada é suficiente (pelo menos 20% do
valor do empréstimo)
if (valorEntrada