Logo Passei Direto
Buscar

PROTOCOLO

Relatório e código de um programa em Portugol que simula uma aventura interativa na Floresta Sussurrante. Contém descrição dos três caminhos (Sombras, Luz, Criaturas), desafios com regras de pontuação, validação de entradas inválidas e trecho do código-fonte.

Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Relatório - Programa: Aventura na Floresta Sussurrante 
 Introdução 
Este programa foi desenvolvido em Portugol WebStudio para simular uma 
aventura interativa na qual o jogador, um explorador corajoso, escolhe um dos 
três caminhos disponíveis na Floresta Sussurrante. A aplicação da lógica de 
programação ocorre por meio de condições e menus de decisão, utilizando a 
estrutura de seleção ESCOLHA-CASO e a estrutura condicional SE. A 
pontuação final do jogador é determinada com base nas escolhas feitas e nos 
desafios superados. 
 Lógica do Programa 
Ao iniciar, o programa exibe uma introdução que apresenta a aventura e 
explica que o jogador deve escolher um dos três caminhos disponíveis. 
O jogador é solicitado a selecionar uma opção digitando 1, 2 ou 3, cada uma 
correspondendo a um dos caminhos: 
Caminho das Sombras 
Caminho da Luz 
Caminho das Criaturas 
Se o jogador escolher um número diferente de 1, 2 ou 3, o programa exibe uma 
mensagem de erro informando que a opção é inválida e encerra a execução. 
Funcionamento do Programa 
Caminho 1: O Caminho das Sombras 
Descrição: O caminho é misterioso e perigoso, envolto em escuridão e com 
árvores antigas. 
Desafio: O jogador encontra uma criatura mágica que faz um enigma: 
Pergunta: "Quem sou eu? Tenho olhos, mas não vejo. Tenho boca, mas não 
falo." 
Resposta correta: Caveira. 
Lógica: 
Se o jogador acertar a resposta, o programa adiciona 100 pontos à sua 
pontuação e exibe a mensagem: "Você encontrou uma gema preciosa!" 
Se errar, o jogador não ganha pontos e a mensagem é: "Você não conseguiu 
resolver o enigma e perdeu sua chance." 
Caminho 2: O Caminho da Luz 
Descrição: Um caminho mais seguro, iluminado pela luz do sol. 
Desafio: O jogador encontra uma ponte quebrada sobre um rio perigoso e 
deve decidir: 
 Atravessar a ponte quebrada. 
 Buscar um desvio seguro. 
Lógica: 
Se escolher atravessar e for bem-sucedido, o programa adiciona 50 pontos e 
exibe: "Você encontrou uma fonte mágica e restaurou sua saúde!" 
Se buscar um desvio, o jogador não ganha pontos adicionais. 
Caminho 3: O Caminho das Criaturas 
Descrição: Este caminho é mais imprevisível, cheio de sons estranhos e 
pegadas misteriosas. 
Desafio: O jogador encontra uma criatura adormecida bloqueando o caminho e 
deve decidir: 
Contornar a criatura com cuidado. 
Acordá-la para passar. 
Lógica: 
Se o jogador decidir contornar a criatura com sucesso, ele ganha 75 pontos e 
uma habilidade especial de camuflagem. 
Se escolher acordá-la, a criatura fica furiosa e o jogador não recebe pontos. 
 Possíveis Erros e Mensagens 
Se o jogador digitar uma opção que não seja 1, 2 ou 3, o programa exibe a 
mensagem: 
"Opção inválida. Por favor, escolha 1, 2 ou 3." 
Em seguida, o programa encerra. 
Conclusão 
Este programa utiliza as estruturas ESCOLHA-CASO para decidir qual caminho 
o jogador segue e SE-SENÃO para validar as respostas e ações do usuário 
dentro de cada caminho. A lógica foi estruturada para proporcionar uma 
narrativa envolvente e recompensar escolhas corretas com pontos. 
Testes realizados: 
Todas as opções de caminho foram testadas e funcionam corretamente. 
A pontuação é calculada corretamente com base nas escolhas do jogador. 
Mensagens de erro são exibidas adequadamente para entradas inválidas. 
Este programa cumpre o objetivo de aplicar os fundamentos de lógica de 
programação e estruturas de decisão em uma narrativa interativa. Além disso, 
ele foi testado para garantir que todas as funcionalidades e mensagens sejam 
exibidas corretamente durante a execução. 
programa {} 
funcao inicio() 
escreval("Você é um explorador corajoso que se aventura em uma misteriosa 
Floresta Sussurrante em busca de tesouros lendários e segredos 
perdidos.\n") 
escreval("Ao adentrar na floresta, você se depara com três caminhos 
diferentes:\n") 
 
escreval("1. O Caminho das Sombras\n") 
escreval("2. O Caminho da Luz\n") 
escreval("3. O Caminho das Criaturas\n") 
escreva("Escolha um caminho (1, 2 ou 3): ") 
 
inteiro opcao 
leia(opcao) 
 
// Verificar a opção escolhida 
escolha opcao 
caso 1: 
caminho_das_sombras() 
pare 
caso 2: 
caminho_da_luz() 
pare 
caso 3: 
caminho_das_criaturas() 
pare 
caso contrario: 
escreval("Escolha inválida. Por favor, selecione um caminho válido.\n") 
inicio() // Reinicia a função para escolher novamente 
fimescolha 
fimfuncao 
funcao caminho_das_criaturas() 
escreval("Você escolheu o Caminho das Criaturas.\n") 
escreval("Este caminho é repleto de estranhas pegadas misteriosas no 
chão. Parece ser o caminho mais imprevisível...\n") 
escreval("Você se depara com uma criatura mágica adormecida, bloqueando a 
passagem.\n") 
 
 
 
cadeia decisao 
escreval("Digite 'contornar' para tentar contornar a criatura ou 
'acordar' para acordá-la: ") 
leia(decisao) 
se (decisao = "contornar") entao 
escreval("Você tenta contornar a criatura silenciosamente...\n") 
senao se (decisao = "acordar") entao 
escreval("Você decide acordar a criatura com cuidado...\n") 
senao 
escreval("Decisão inválida. Tente novamente.\n") 
caminho_das_criaturas() // Reinicia a função para nova decisão 
fimenquanto 
fimfuncao 
funcao caminho_das_sombras() 
escreval("Você escolheu o Caminho das Sombras...\n") 
// Implementar o que acontece nesse caminho 
fimfuncao 
 
funcao caminho_da_luz() 
escreval("Você escolheu o Caminho da Luz...\n") 
// Implementar o que acontece nesse caminho 
fimfuncao 
{} 
 
 
 
Relatório do Programa - Labirinto com Estrutura "Enquanto-Faça" 
Introdução 
Este relatório descreve o desenvolvimento e o funcionamento de um programa 
escrito em Portugol, cujo objetivo é simular a exploração de um labirinto 5x5. 
O jogador é representado como um explorador que deve encontrar um tesouro 
escondido no labirinto, enfrentando caminhos livres e limites de 
movimentação. O programa utiliza a estrutura de repetição "enquanto-faça" 
para manter a exploração até que o jogador encontre o tesouro. 
 Objetivo 
Implementar um labirinto 5x5 em forma de matriz, com a posição do tesouro 
definida aleatoriamente. 
Utilizar a estrutura de repetição "enquanto-faça" para manter o jogo em 
execução até o tesouro ser encontrado. 
Permitir a movimentação do jogador pelas teclas (w - cima, s - baixo, a - 
esquerda, d - direita). 
Aplicar lógica de programação, uso de matrizes e controle de fluxo com 
condições. 
 Passo a Passo do Código 
Logo no início, declaramos as variáveis principais do programa: 
portugol 
Copiar código 
inteiro labirinto[5][5] // Matriz do labirinto 5x5 
inteiro posX = 0, posY = 0 // Posição inicial do explorador (0,0) 
inteiro tesouroX, tesouroY // Posição aleatória do tesouro 
caractere movimento // Para capturar a entrada do jogador 
logico encontrouTesouro = falso // Indica se o tesouro foi encontrado 
A matriz labirinto[5][5] representa o labirinto com 25 posições. 
As variáveis posX e posY indicam a posição atual do explorador. 
tesouroX e tesouroY armazenam a posição aleatória onde o tesouro será 
colocado. 
A variável encontrouTesouro controla a execução do loop principal. 
 Geração Aleatória do Tesouro 
A função sorteiaTesouro() gera a posição do tesouro usando a função 
aleatorio(). O objetivo é garantir que o tesouro esteja em uma posição aleatória 
diferente a cada execução do programa. 
portugol 
Copiar código 
funcao sorteiaTesouro() 
{ 
 tesouroX = inteiro(aleatorio(5)) 
 tesouroY = inteiro(aleatorio(5)) 
 
 // Impede que o tesouro apareça na posição inicial (0,0) 
 se (tesouroX == 0 && tesouroY == 0) 
 { 
 tesouroX = 4 
 tesouroY = 4 
 } 
 
 labirinto[tesouroX][tesouroY] = 2 // Marca o tesouro na matriz 
}Se a posição gerada for (0,0), o tesouro é colocado na posição (4,4) para 
garantir que ele não esteja na posição inicial. 
Loop Principal do Programa - Estrutura "enquanto-faça" 
O loop principal mantém o jogo rodando até que o explorador encontre o 
tesouro. 
portugol 
Copiar código 
enquanto (encontrouTesouro == falso) 
{ 
 limpaTela() // Limpa a tela para atualizar o labirinto 
 mostraLabirinto() // Mostra o estado atual do labirinto 
 escreva("\nEscolha um movimento (w: cima, a: esquerda, s: baixo, d: direita): 
") 
 leia(movimento) // Lê o movimento do jogador 
 moverExplorador(movimento) // Move o explorador com base no comando 
 verificaTesouro() // Verifica se o tesouro foi encontrado 
} 
• limpaTela(): Atualiza a tela a cada movimento. 
• mostraLabirinto(): Exibe a matriz atualizada com a posição do jogador 
e os caminhos livres. 
• leia(movimento): Lê o comando do jogador para mover o explorador. 
• moverExplorador(movimento): Executa a movimentação do 
explorador. 
• verificaTesouro(): Verifica se a posição atual do explorador coincide 
com a posição do tesouro. 
 Função de Movimentação do Explorador 
A função moverExplorador() permite que o jogador se mova pela matriz com as 
teclas indicadas: 
portugol 
Copiar código 
funcao moverExplorador(caractere movimento) 
{ 
 se (movimento == 'w' && posX > 0) // Para cima 
 { 
 posX = posX - 1 
 } 
 senao se (movimento == 's' && posX 0) // Para a esquerda 
 { 
 posY = posY - 1 
 } 
 senao se (movimento == 'd' && posY 0) 
 { 
 posX = posX - 1 
 } 
 // Movimento para baixo 
 senao se (movimento == 's' && posX 0) 
 { 
 posY = posY - 1 
 } 
 // Movimento para a direita 
 senao se (movimento == 'd' && posYcomo if-else e switch-case para a tomada de decisão. 
 Objetivo 
O sistema avalia as informações financeiras fornecidas pelo cliente e decide se o 
empréstimo será aprovado ou negado. A partir das entradas fornecidas pelo cliente 
(renda, valor solicitado, histórico de crédito e estabilidade no emprego), o programa 
analisa se todos os critérios são atendidos. Caso algum critério não seja satisfeito, o 
programa informa o motivo da rejeição. 
 Passo a Passo do Código 
Declaração das Variáveis 
Definimos variáveis para capturar as entradas fornecidas pelo usuário e outras 
necessárias para a lógica do sistema. 
c 
Copiar código 
#include 
#include // Para utilizar o tipo booleano 
 
int main() { 
 float renda, valorEmprestimo, entrada; 
 char historicoCredito; // 'B' para bom, 'R' para ruim 
 int estabilidadeEmprego; // Tempo de emprego em anos 
 bool aprovado = true; // Variável para controlar a decisão final 
 
 // Solicitação das entradas do usuário 
 printf("Digite sua renda mensal: "); 
 scanf("%f", &renda); 
 
 printf("Digite o valor do emprestimo desejado: "); 
 scanf("%f", &valorEmprestimo); 
 
 printf("Digite o valor da entrada: "); 
 scanf("%f", &entrada); 
 
 printf("Informe o historico de credito (B para bom, R para ruim): 
"); 
 scanf(" %c", &historicoCredito); // O espaço evita problemas de 
buffer 
 
 printf("Informe o tempo de estabilidade no emprego (em anos): "); 
 scanf("%d", &estabilidadeEmprego); 
• Variáveis: 
o renda: renda mensal do cliente. 
o valor Empréstimo: valor solicitado para o empréstimo. 
o entrada: valor da entrada fornecida pelo cliente. 
o Histórico Credito: histórico de crédito do cliente (Bom ou Ruim). 
o estabilidade Emprego: tempo de estabilidade no emprego. 
o aprovado: variável que indica se o empréstimo será aprovado ou não. 
Lógica de Aprovação – Estrutura 
 
A lógica de aprovação verifica se cada um dos critérios foi atendido. Caso algum deles 
não seja satisfeito, a variável aprovada é definida como falso, e uma mensagem 
específica é exibida. 
 
Critérios Implementados: 
Relação entre Renda e Valor do Empréstimo: O valor do empréstimo não pode ser 
maior que 30% da renda mensal. 
Histórico de Crédito: Se o cliente possui um histórico ruim, o empréstimo é rejeitado. 
Estabilidade no Emprego: O cliente deve ter pelo menos 2 anos de estabilidade no 
emprego. 
Entrada Mínima: A entrada deve ser de no mínimo 10% do valor do empréstimo. 
Exibição do Resultado 
Após verificar todos os critérios, o programa exibe o resultado da análise. 
c 
Copiar código 
 // Exibe o resultado final 
 if (aprovado) { 
 printf("Emprestimo aprovado! Parabens.\n"); 
 } else { 
 printf("Nao foi possivel aprovar o emprestimo.\n"); 
 } 
 
 return 0; 
} 
• Se todos os critérios forem atendidos, o programa exibe a mensagem 
"Empréstimo aprovado!". 
• Caso contrário, exibe a mensagem "Não foi possível aprovar o empréstimo" e 
explica o motivo específico durante a execução das verificações. 
Testes e Resultados 
Teste 1: Cliente com renda de R$5000, solicitando um empréstimo de R$1000 com 
entrada de R$150, histórico de crédito bom e 3 anos de estabilidade. 
Resultado: Empréstimo aprovado. 
Teste 2: Cliente com histórico de crédito ruim. 
Resultado: Empréstimo rejeitado devido ao histórico. 
Teste 3: Cliente com estabilidade de apenas 1 ano no emprego. 
Resultado: Empréstimo rejeitado por falta de estabilidade. 
 
 
 
Conclusão 
Este sistema de análise de empréstimos em C é uma solução eficiente para verificar a 
elegibilidade de clientes com base em múltiplos critérios. A implementação demonstra 
o uso prático de estruturas condicionais e lógica de programação, sendo útil para tomada 
de decisão em instituições financeiras. 
 
programa { 
 funcao inicio() { 
 
 } 
} 
#include 
#include // Para utilizar o tipo booleano 
 
int main() { 
 float renda, valorEmprestimo, entrada; 
 char historicoCredito; // 'B' para bom, 'R' para ruim 
 int estabilidadeEmprego; // Tempo de emprego em anos 
 bool aprovado = true; // Variável para controlar a decisão final 
 
 // Solicitação das entradas do usuário 
 printf("Digite sua renda mensal: "); 
 scanf("%f", &renda); 
 
 printf("Digite o valor do emprestimo desejado: "); 
 scanf("%f", &valorEmprestimo); 
 
 printf("Digite o valor da entrada: "); 
 scanf("%f", &entrada); 
 
 printf("Informe o historico de credito (B para bom, R para ruim): "); 
 scanf(" %c", &historicoCredito); 
 
 printf("Informe o tempo de estabilidade no emprego (em anos): "); 
 scanf("%d", &estabilidadeEmprego); 
 
 // Verificação dos critérios 
 if (valorEmprestimo > 0.3 * renda) { 
 printf("Emprestimo rejeitado: Valor do emprestimo excede 30%% da 
renda mensal.\n"); 
 aprovado = false; 
 } 
 
 if (historicoCredito == 'R') { 
 printf("Emprestimo rejeitado: Historico de credito ruim.\n"); 
 aprovado = false; 
 } 
 
 if (estabilidadeEmprego 
#include 
#include 
 
typedef struct { 
 char nome[50]; 
 float mediaDisciplina1; 
 float mediaDisciplina2; 
 float mediaGeral; 
 int classificacao; 
} Aluno; 
• nome: Nome do aluno. 
• mediaDisciplina1 e mediaDisciplina2: Médias das disciplinas. 
• mediaGeral: Média geral calculada. 
• classificacao: Posição do aluno na classificação geral. 
 
 Função para Calcular a Média Geral 
Esta função recebe as médias das disciplinas e retorna a média geral do aluno. 
c 
Copiar código 
float calcularMediaGeral(float nota1, float nota2) { 
 return (nota1 + nota2) / 2; 
} 
 
 
Função de Comparação para Ordenação 
Para classificar os alunos por média geral em ordem decrescente, utilizamos a função 
qsort() do C, que precisa de uma função de comparação. 
c 
Copiar código 
int compararMedias(const void *a, const void *b) { 
 Aluno *alunoA = (Aluno *)a; 
 Aluno *alunoB = (Aluno *)b; 
 return (alunoB->mediaGeral > alunoA->mediaGeral) - (alunoB-
>mediaGeral mediaGeral); 
} 
 
Função para Gravar os Dados no Arquivo .txt 
Essa função grava as informações dos alunos no arquivo e calcula a média geral da 
turma. 
c 
Copiar código 
void salvarArquivo(Aluno *alunos, int n) { 
 FILE *arquivo = fopen("classificacao_alunos.txt", "w"); 
 if (arquivo == NULL) { 
 printf("Erro ao abrir o arquivo.\n"); 
 exit(1);} 
 
 fprintf(arquivo, "Classificacao dos Alunos:\n\n"); 
 
 float mediaTurma = 0; 
 for (int i = 0; i 
#include 
#include 
 
typedef struct { 
 char nome[50]; 
 float mediaDisciplina1; 
 float mediaDisciplina2; 
 float mediaGeral; 
 int classificacao; 
} Aluno; 
 
float calcularMediaGeral(float nota1, float nota2) { 
 return (nota1 + nota2) / 2; 
} 
 
int compararMedias(const void *a, const void *b) { 
 Aluno *alunoA = (Aluno *)a; 
 Aluno *alunoB = (Aluno *)b; 
 return (alunoB->mediaGeral > alunoA->mediaGeral) - (alunoB-
>mediaGeral mediaGeral); 
} 
 
void salvarArquivo(Aluno *alunos, int n) { 
 FILE *arquivo = fopen("classificacao_alunos.txt", "w"); 
 if (arquivo == NULL) { 
 printf("Erro ao abrir o arquivo.\n"); 
 exit(1); 
 } 
 
 fprintf(arquivo, "Classificacao dos Alunos:\n\n"); 
 
 float mediaTurma = 0; 
 for (int i = 0; i

Mais conteúdos dessa disciplina