Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

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

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

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

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

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

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

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

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

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

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

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

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

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

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

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

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

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

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

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

Prévia do material em texto

TEMA Roteiro de Aula
Prática 
 
Adriano de Vasconcelos Freire 
 
BACHARELADO EM ENGENHARIA DE AUTOMAÇÃO E
CONTROLE 
PORTIFÓLIO 
Seropédica
2024 
Relatório apresentado a disciplina
Algoritmo e Lógica de Programação como
requisito parcial de obtenção de nota do
curso de Bacharelado em Engenharia de
Automação e Controle.
Tutor (a) EaD – Jessica Fernandes
Lopes 
Seropédica
2024 
SUMÁRIO 
 
INTRODUÇÃO.................................................................................................5
DESENVOLVIMENTO.....................................................................................5
2.1 Floresta Sussurante………………………………………………………...…6 
2.1.1. Função inicio()........................................................................................6 
2.1.2 Função escolher_caminho(caminho)......................................................7 
2.1.3. Função caminho_da_luz()......................................................................8 
2.1.4. Função caminho_das_sombras().........................................................10 
2.1.5. Função caminho_das_criaturas()..........................................................13 
2.2 Labirinto do Tesouro Perdido ............…..............................................… 13 
2.2.1. Análise do Cenário................................................................................13 
2.2.2. Criação de Variáveis e Constantes.......................................................14 
2.2.3. Geração Aleatória do Tesouro e Labirinto............................................15 
2.2.4. Loop Principal - Movimento do Explorador............................................15 
2.2.5. Interação com o Jogador.......................................................................16 
2.2.6. Finalização.............................................................................................18 
2.3 Classificação de Alunos……………………………………………………....20 
2.3.1. Análise de Cenário.................................................................................20 
2.3.2. Criação de Variáveis e Constantes........................................................20 
2.3.3. Cálculo da Média e Ordenação .............................................................21 
2.3.4. Entrada de Dados (Cadastro de Alunos) ...............................................21 
2.3.5. Classificação dos Alunos .......................................................................22 
2.3.6. Salvamento dos Dados em Arquivo.......................................................23 
2.3.7. Finalização.............................................................................................24 
2.4 Sistema de Aprovação de Empréstimos ..……………..…………………...25 
2.4.1. Análise de Cenário ................................................................................25 
2.4.2. Criação de Variáveis e Entrada de Dados ............................................25
2.4.3. Cálculo e Condições para Aprovação....................................................26
2.4.4. Finalização.............................................................................................27
CONSIDERAÇÕES FINAIS.............................................................................28
REFERÊNCIAS BIBLIOGRÁFICAS................................................................28 
Este portfólio apresenta quatro programas distintos, cada um desenvolvido para
explorar conceitos-chave de programação e lógica em diferentes ambientes de
desenvolvimento. Os programas foram criados utilizando duas linguagens de programação 
 
INTRODUÇÃO 
diferentes: Portugol e C, cada um rodando em seu respectivo ambiente de desenvolvimento
(Portugol Web Studio e Visual Studio Code). 
Os códigos apresentados são: 
1. Floresta Sussurrante (Portugol Web Studio): Este programa é um jogo de aventura textual 
onde o jogador, na pele de um explorador corajoso, deve escolher entre diferentes caminhos 
em uma floresta misteriosa. Cada escolha leva a um desfecho diferente, incentivando o uso 
de estruturas condicionais e loops para navegar pelas escolhas narrativas. 
2. Labirinto do Tesouro Perdido (Portugol Web Studio): Neste segundo programa, o jogador 
está em uma missão para encontrar um tesouro escondido no meio de um labirinto perigoso, 
cheio de armadilhas, corredores estreitos, bifurcações e salas ocultas. A lógica do jogo 
envolve a utilização de algoritmos de busca e controle de fluxo para guiar o jogador ao tesouro, 
evitando armadilhas e obstáculos pelo caminho. 
3. Classificação de Alunos (C, Visual Studio Code): Este programa foi desenvolvido para 
classificar alunos com base em suas notas. Utilizando estruturas de controle como loops e 
condicionais, o programa calcula a média das notas de cada aluno, determinando sua 
classificação final. Este exercício enfatiza a importância da manipulação de dados e do 
controle de fluxo na programação em C. 
4. Sistema de Aprovação de Empréstimos (C, Visual Studio Code): O último programa é 
um sistema de aprovação de empréstimos que avalia a elegibilidade do solicitante com base 
em critérios financeiros pré-estabelecidos. Utilizando estruturas condicionais avançadas, o 
programa determina se o empréstimo deve ser aprovado ou negado, considerando fatores 
como renda, histórico de crédito, e outros dados financeiros. Este programa demonstra o uso 
de lógica condicional complexa e manipulação de dados em C. 
Cada um desses programas foi criado com o objetivo de praticar e aprimorar diferentes 
habilidades de programação, desde o controle de fluxo básico até a implementação de 
algoritmos mais complexos. Nas seções a seguir, cada programa será detalhado com 
explicações sobre o código fonte e a lógica de cada função, proporcionando uma visão 
abrangente do desenvolvimento de software em diferentes contextos. 
 
DESENVOLVIMENTO 
2.1 Floresta Sussurante 
2.1.1. Função inicio() 
funcao escolher_caminho(inteiro caminho) { 
escolha(caminho) { 
caso 1: 
caminho_da_luz() 
funcao inicio() { 
inteiro caminho 
escreva("Você é um explorador corajoso que se aventura em uma misteriosa 
Floresta Sussurrante em busca de tesouros lendários e segredos perdidos. \n") 
escreva("Ao adentrar na floresta você se depara com três caminhos diferentes:\n") 
escreva("1 - O Caminho da Luz.\n") 
escreva("2 - O Caminho das Sombras.\n") 
escreva("3 - O Caminho das Criaturas.\n") 
escreva("Escolha um caminho para seguir (1, 2 ou 3): \n") 
leia(caminho) 
escolher_caminho(caminho) 
escreva("Fim do Programa.") 
} 
• Propósito: Esta função é o ponto de entrada do programa. Ela apresenta a 
narrativa inicial ao jogador, explicando o cenário e as opções de caminhos. 
Lógica: • 
Exibe um texto introdutório ao jogador. 
Oferece três caminhos diferentes para o jogador escolher. 
Lê a escolha do jogador e chama a função escolher_caminho() para processar a 
escolha. 
2.1.2 Função escolher_caminho(caminho) 
funcao caminho_da_luz() { 
escreva("Este caminho é iluminado por raios de sol que filtram entre as copas das 
árvores. Parece ser o caminho mais seguro e reconfortante da floresta.\n") 
escreva("O jogador encontra uma ponte quebrada sobre um rio turbulento. Ele deve 
decidir se tentará atravessar a ponte quebrada ou procurará um desvio seguro. \n") 
 pare 
caso 2: 
caminho_das_sombras() 
pare 
caso 3: 
caminho_das_criaturas() 
pare 
caso contrario: 
escreva("Escolha inválida. Por favor, selecione um caminho válido.\n") 
leia(caminho) 
escolher_caminho(caminho) 
} 
} 
• Propósito: Esta função decide qual cenário será apresentado ao jogador com 
base na escolha do caminho. 
Lógica: • 
• Usa a estrutura escolha para determinar qual função será chamada com 
base no número inserido pelo jogador. 
Se o jogador inserir uma opção inválida, a função solicita uma nova entrada 
e chama a si mesma recursivamente. 
• 
2.1.3. Função caminho_da_luz() 
 cadeia decisao 
enquanto (verdadeiro){ 
escreva("Agora decidaseu destino, escreva 'atravessar' para tentar passar pela 
ponte ou escreva 'desvio' para buscar um caminho alternativo: \n") 
leia(decisao) 
se (decisao == "atravessar") { 
escreva("Você conseguiu atravessar a ponte com maestria e segurança!\n") 
escreva("Do outro lado você se deparou com uma fonte encantada que curando 
sua saúde e revitazando por completo seu cansaço, você ganhou 50 pontos!\n") 
escreva("Você venceu!\n") 
pare // Sai do loop após resposta válida 
} 
senao se (decisao == "desvio") { 
escreva("Você decidiu contornar o rio subindo pelos penhascos próximos. No 
entanto, as rochas são instáveis, você perdeu o equilíbrio e acabou caindo de uma altura 
mortal nas águas abaixo.\n") 
escreva("Você perdeu!\n") 
pare // Sai do loop após resposta válida 
} 
senao { 
escreva("Resposta inválida. Por favor, escolha entre 'atravessar' ou 'desvio'.\n") 
} 
} 
} 
• Propósito: Simula o cenário do "Caminho da Luz", onde o jogador deve tomar 
uma decisão crítica. 
Lógica: • 
• 
• 
• 
funcao caminho_das_sombras() { 
escreva("Este caminho é cercado por árvores antigas e sombrias, com raios de lua 
penetrando entre os galhos. Parece ser o caminho mais misterioso e perigoso da floresta.\n") 
escreva("O jogador encontra uma criatura mágica guardiã do caminho, que exige um 
enigma para deixá-lo passar.\n") 
escreva("Guardião: Quem sou eu? Tenho olhos, mas não vejo. Tenho boca, mas não 
falo. O que sou?\n") 
cadeia decisao 
leia(decisao) 
se (decisao == "caveira") { 
escreva("Guardião: Resposta correta, prossiga seu caminho.\n") 
escreva("Você encontrou um bau escondido contendo uma gema preciosa que vale 
100 pontos!\n") 
escreva("Você venceu!\n") 
} 
senao { 
escreva("Guardião: Resposta incorreta. Sua alma agora pertence ao mundo 
sombrio!\n") 
escreva("Você perdeu!\n") 
} 
} 
Descreve o ambiente e o desafio (atravessar uma ponte ou procurar um desvio). 
Utiliza um loop enquanto para garantir que o jogador faça uma escolha válida. 
Dependendo da escolha do jogador, o resultado pode ser vitória (atravessar 
com sucesso) ou derrota (cair ao tentar desviar). 
 
2.1.4. Função caminho_das_sombras() 
• 
• 
• 
• 
• 
Propósito: Apresenta o cenário do "Caminho das Sombras", onde o jogador
enfrenta um desafio de enigma. 
Lógica: 
Descreve o cenário e o desafio apresentado pelo guardião. 
Solicita uma resposta para o enigma. 
Verifica a resposta e determina o resultado (vitória ou derrota) com base na 
resposta correta ("caveira"). 
funcao caminho_das_criaturas() { 
escreva("Este caminho é repleto de sons estranhos e pegadas misteriosas no chão. Parece 
ser o caminho mais imprevisível e enigmático da floresta.\n") 
escreva("O jogador se depara com uma criatura mágica adormecida bloqueando o caminho. 
Ele deve decidir se tentará contornar a criatura com cuidado ou acordá-la para passar.\n") 
cadeia decisao 
enquanto (verdadeiro) { 
escreva("Agora decida seu destino, escreva 'acordar' para despertar a criatura ou 
'contornar' para cuidadoramente seguir seu caminho:\n") 
leia(decisao) 
se (decisao == "acordar") { 
escreva("A Criatura é um monstro sanguinário impiedoso, infelizmente seu destino foi 
selado e sua morte foi brutal.\n") 
escreva("Você perdeu!\n") 
pare // Sai do loop após resposta válida 
} 
senao se (decisao == "contornar") { 
escreva("Você passou pela criatura com total silencio.\n") 
2.1.5. Função caminho_das_criaturas() 
Objetivo: Criar um labirinto onde o jogador deve encontrar o tesouro, evitando 
armadilhas e obstáculos. 
Desafios: Caminhos sem saída, paredes, e uma armadilha que leva o jogador de volta 
ao início. 
Estrutura: O labirinto é representado por uma matriz 5x5, com caminhos livres, 
paredes, armadilhas e o tesouro em posições aleatórias. 
 escreva("No caminho você encontrou uma arvore encantada que lhe condeceu uma 
habilidade especial de camuflagem e ganhando também 75 pontos.\n") 
escreva("Você venceu!\n") 
pare // Sai do loop após resposta válida 
} 
senao { 
escreva("Resposta inválida. Por favor, escolha entre 'acordar' ou 'contornar'.\n") 
} 
} 
} 
• Propósito: Representa o cenário do "Caminho das Criaturas", onde o jogador 
deve decidir como lidar com uma criatura mágica. 
Lógica: 
Descreve o cenário e apresenta as opções de ação (acordar a criatura ou 
contorná-la). 
Utiliza um loop enquanto para garantir que o jogador escolha uma opção válida. 
O resultado depende da escolha do jogador: acordar resulta em derrota, 
enquanto contornar resulta em vitória. 
• 
• 
• 
• 
 
2.2. Labirinto do Tesouro Perdido 
2.2.1. Análise do Cenário 
programa
{ 
inclua biblioteca Util --> u // Biblioteca necessária para utilizar a função "aleatorio" 
A função gerarLabirinto() inicializa o labirinto, preenchendo os caminhos livres e 
adicionando paredes e uma armadilha. 
O tesouro é colocado em uma posição aleatória com a função sorteia(), garantindo 
que não fique na posição inicial do explorador. 
// Função que gera o labirinto 
funcao gerarLabirinto() 
{ 
// Inicializar o labirinto com caminhos livres (0) 
para (inteiro i = 0; i 0) 
novoX-- 
senao se (direcao == 's' e posXe posY > 0) 
novoY-- 
senao se (direcao == 'd' e posY 
#include 
#include 
#define MAX_NOME 100 
#define MAX_ALUNOS 50 
// Definição da estrutura Aluno 
2.3 Classificação de Alunos
2.3.1. Análise de Cenário 
typedef struct { 
char nome[MAX_NOME];
float media_disciplina1;
float media_disciplina2;
float media_geral; int
classificacao; 
} Aluno;
2.3.2. Criação de Variáveis e Constantes 
Define-se a estrutura para armazenar os dados dos alunos, como o nome, as notas
nas disciplinas, a média geral e a classificação. As constantes MAX_NOME e MAX_ALUNOS
determinam os limites de entrada. 
Aqui está a função que calcula a média geral das disciplinas e outra função para comparar
as médias dos alunos para ordenação em ordem decrescente, usada pela função qsort. 
// Função para comparar as médias dos alunos (usada para ordenação) 
int compararMedias(const void *a, const void *b) { 
const Aluno *alunoA = (const Aluno *)a; 
const Aluno *alunoB = (const Aluno *)b; 
if (alunoA->media_geral media_geral) return 1; 
if (alunoA->media_geral > alunoB->media_geral) return -1; 
return 0; 
} 
2.3.4. Entrada de Dados (Cadastro de Alunos) 
// Função para calcular a média geral 
float calcularMediaGeral(float media_disciplina1, float media_disciplina2) { 
return (media_disciplina1 + media_disciplina2) / 2; 
} 
2.3.3. Cálculo da Média e Ordenação 
 
Essa parte do código recebe os dados dos alunos, incluindo nome e notas, e calcula 
a média geral para cada aluno. 
int main() { 
int num_alunos; 
Aluno alunos[MAX_ALUNOS]; 
// Solicitar o número de alunos 
printf("Quantos alunos deseja registrar? (maximo %d): ", MAX_ALUNOS); 
scanf("%d", &num_alunos); 
getchar(); // Limpa o caractere de nova linha do buffer 
// Loop para registrar os dados de cada aluno 
for (int i = 0; i 
#include 
Após registrar os dados e salvar no arquivo, o programa informa ao usuário que os 
dados foram salvos com sucesso e finaliza a execução. 
// Salvar os dados dos alunos e informar o usuário 
salvarDados(alunos, num_alunos); 
printf("Dados dos alunos salvos no arquivo 'notas_alunos.txt'.\n"); 
return 0; 
} 
2.3.7. Finalização 
2.4 Sistema de Aprovação de Empréstimos
2.4.1. Análise de Cenário 
int main() { 
// Declaração de variáveis
float rendaMensal, valorEmprestimo;
char historicoCredito, estabilidadeEmprego;
int valorEntrada; 
// Limpar a tela (opcional, pode não funcionar em todos os sistemas) 
system("clear"); // Para Windows, use system("cls"); 
// Cabeçalho do programa 
printf("** Empréstimo Financeiro **\n"); 
As variáveis são declaradas para capturar a renda mensal, o valor solicitado do empréstimo, o
histórico de crédito (bom ou ruim), a estabilidade do emprego (estável ou instável), e o valor da
entrada. Em seguida, o programa solicita ao usuário as informações necessárias. 
// Leitura das informações 
printf("Digite sua renda mensal: "); 
scanf("%f", &rendaMensal); 
printf("Digite o valor do empréstimo: "); 
scanf("%f", &valorEmprestimo); 
printf("Digite seu histórico de crédito (B=Bom, R=Ruim): "); 
scanf(" %c", &historicoCredito); // Espaço antes de %c para ignorar caracteres de 
nova linha 
printf("Digite a sua estabilidade no emprego (E=Estável, I=Instável): "); 
scanf(" %c", &estabilidadeEmprego); // Espaço antes de %c para ignorar caracteres 
de nova linha 
printf("Digite o valor da entrada: "); 
scanf("%d", &valorEntrada); 
2.4.2. Criação de Variáveis e Entrada de Dados 
2.4.4. Finalização 
2.4.3. Cálculo e Condições para Aprovação 
A lógica do programa verifica se o valor do empréstimo solicitado é viável, de acordo 
com os seguintes critérios: 
O valor do empréstimo não pode exceder 30% da renda mensal. 
O histórico de crédito deve ser bom. 
A estabilidade no emprego deve ser considerada estável. 
O valor da entrada deve ser, no mínimo, 20% do valor do empréstimo. 
Se qualquer um desses critérios não for atendido, o empréstimo será negado; caso 
contrário, será aprovado. 
// Cálculo do valor máximo permitido do empréstimo 
float valorMaximoEmprestimo = rendaMensal * 0.30; 
// Verificação dos critérios para aprovação do empréstimo 
if (valorEmprestimo > valorMaximoEmprestimo) { 
printf("Empréstimo negado! O valor do empréstimo excede 30%% da renda 
mensal.\n"); 
} else if (historicoCredito == 'R') { 
printf("Empréstimo negado! Histórico de crédito ruim.\n"); 
} else if (estabilidadeEmprego == 'I') { 
printf("Empréstimo negado! Estabilidade no emprego instável.\n"); 
} else if (valorEntradapelo menos 20%% do 
valor do empréstimo.\n"); 
} else { 
printf("Parabéns! Seu empréstimo foi aprovado.\n"); 
} 
Ao final, o programa exibe uma mensagem de acordo com os resultados da análise, 
indicando se o empréstimo foi aprovado ou negado com base nos critérios. 
// Finalização do programa 
return 0; 
} 
 
Esses quatro códigos demonstram um portfólio diversificado e sólido,
abrangendo desde jogos interativos até aplicações de utilidade prática, como
classificação acadêmica e sistemas de crédito. Cada um dos projetos utiliza diferentes
estruturas de programação, como loops, condicionais e manipulação de dados,
oferecendo uma excelente demonstração das habilidades em lógica de programação
e resolução de problemas. Além disso, eles enfatizam a importância de clareza na
lógica e organização do código, tornando-o legível, funcional e fácil de manter. 
 
CONSIDERAÇÕES FINAIS 
REFERÊNCIAS BIBLIOGRAFICAS 
CORMEN, Thomas. Algoritmos – Teoria e Prática. 3.ed. Rio de Janeiro: LTC, 2022.
MENÉNDEZ, Andrés. Simplificando algoritmos. 1. ed. - Rio de Janeiro: LTC, 2023.
SILVA, Flávio Soares Corrêa D.; FINGER, Marcelo; MELO, Ana Cristina Vieira. Lógica para
computação. 2. ed. São Paulo: Cengage Learning, 2017.

Mais conteúdos dessa disciplina