Prévia do material em texto
Anhanguera PORTIFÓLIO ALGORITMOS E LÓGICA DE PROGRAMAÇÃO Engenharia Mecânica ALUNO - RAMON ALTIVO ALMEIDA CÂNDIDO - 6° SEMESTRE 2026Anhanguera SUMÁRIO 1 INTRODUÇÃO 1 2 MÉTODOS E RESULTADOS 2 2.1 ATIVIDADE 1 2 2.2 ATIVIDADE 2 7 2.3 ATIVIDADE 3 12 2.4 ATIVIDADE 4 14 3 CONCLUSÃO 19 REFERÊNCIAS BIBLIOGRÁFICAS 21Anhanguera 1 INTRODUÇÃO Este portfólio de aula prática de Algoritmos e Lógica de Programação é composto por quatro atividades, cada uma com objetivos específicos que visam desenvolver habilidades essenciais na interpretação de requisitos, desenvolvimento de algoritmos e aplicação de estruturas fundamentais em linguagens de programação. A prática contínua e a resolução de problemas utilizando diferentes estruturas de controle e repetição são cruciais para a formação de uma base sólida em programação. Na Atividade 1, foco é compreender e traduzir requisitos em algoritmos precisos, explorando todas as ramificações possíveis durante a execução. Para isso, aplica- se uma estrutura de decisão como "SE" ou "ESCOLHA CASO" no desenvolvimento de algoritmos computacionais com a pseudolinguagem Portugol. Esta atividade permitirá controlar fluxo do programa, garantindo que diferentes condições sejam adequadamente tratadas. A Atividade 2 envolve, além da correta interpretação dos requisitos, a implementação de estruturas de repetição para executar blocos de código repetidamente enquanto uma condição for verdadeira. Utilizando a pseudolinguagem Portugol, aplica-se a estrutura "ENQUANTO FAÇA", criando algoritmos mais dinâmicos e eficientes. Na Atividade 3, transita-se para a Linguagem de Programação "C", onde utiliza-se a estrutura condicional "IF" para desenvolver algoritmos. Esta prática com "C" introduz conceitos de programação mais próximos de linguagens utilizadas profissionalmente, solidificando a lógica aprendida anteriormente. AAtividade 4 expande o conhecimento para a manipulação de arquivos e estruturas de dados complexas como "Structs" em "C". Esta habilidade é fundamental para a criação de programas que necessitam armazenar, acessar e manipular grandes volumes de dados de maneira eficiente. Ao final destas quatro atividades, desenvolve-se uma compreensão robusta de algoritmos e lógica de programação, aplicando diversas estruturas de controle e Página 1 de 21Anhanguera repetição em diferentes linguagens. Esta prática contínua não só reforça a habilidade de interpretar e desenvolver algoritmos precisos como também prepara para desafios mais complexos na programação. 2 MÉTODOS E RESULTADOS 2.1 ATIVIDADE 1 Atividade proposta: Desenvolve-se um programa em Portugol, utilizando-se do Portugol Webstudio. Desenvolvimento do programa: O programa apresenta os três caminhos e lê a opção do jogador. A estrutura escolha encaminha a execução para a função correspondente; uma opção fora de 1 a 3 produz mensagem de erro. Em cada caminho, uma condição avalia a resposta ou decisão e apresenta resultado e a premiação prevista. programa { // Função principal que inicia a execução do programa funcao inicio() { // Declaração de uma variável inteira para armazenar a opção escolhida pelo jogador inteiro // Mensagens introdutórias que descrevem a situação inicial e caminhos disponíveis 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, cada um levando a uma parte desconhecida e perigosa da floresta. \n") Página 2 de 21Anhanguera escreva("Sua missão é escolher sabiamente caminho a seguir, enfrentando desafios e tomando decisões que impactarão sua jornada e sua pontuação final. Prepare-se para esta aventura cheia de mistérios!\n") escreva("Caminho 1: Caminho das escreva("Caminho 2: Caminho da Luz\n") escreva("Caminho 3: Caminho das // Solicita ao jogador que escolha um dos caminhos escreva("Escolha um caminho (1, 2 ou 3): ") leia(opcao) // Lê a opção escolhida pelo jogador // Estrutura de seleção "ESCOLHA CASO" para desviar a execução do código de acordo com a opção escolhida escolha(opcao) { caso 1: // Chama a função que lida com Caminho das Sombras pare caso 2: // Chama a função que lida com Caminho da Luz caminho_da_luz() pare caso 3: // Chama a função que lida com Caminho das Criaturas pare caso contrario: // Mensagem exibida quando jogador escolhe uma opção inválida escreva("Escolha inválida. Por favor, selecione um caminho válido. \n") } } // Função para lidar com Caminho das Sombras Página 3 de 21Anhanguera funcao caminho_das_sombras() { escreva("Você escolheu Caminho das Sombras.\n") escreva("Este caminho é cercado por árvores antigas e sombrias, com raios de lua penetrando entre galhos. Parece ser caminho mais misterioso e perigoso da floresta. escreva("Você encontra uma criatura mágica guardiã do caminho, que exige um enigma para deixá-lo passar.\n") escreva("O enigma é: \"Quem sou eu? Tenho olhos, mas não vejo. Tenho boca, mas não falo. que sou?\"\n") // Declaração de uma variável para armazenar a resposta do jogador cadeia resposta leia(resposta) // Lê a resposta do jogador // Estrutura condicional "SE" para verificar se a resposta está correta se (resposta == "caveira") { // Mensagem e pontuação quando a resposta está correta escreva("Correto! Você encontra um baú escondido contendo uma gema preciosa que vale 100 pontos. // Mensagem quando a resposta está errada escreva("Resposta errada! Você não pode passar.\n") } } // Função para lidar com Caminho da Luz funcao caminho_da_luz() { escreva("Você escolheu Caminho da escreva("Este caminho é iluminado por raios de sol que filtram entre as copas das árvores. Parece ser caminho mais seguro e reconfortante da escreva("Você encontra uma ponte quebrada sobre um rio turbulento. Você deve decidir se tentará atravessar a ponte quebrada ou procurará um desvio seguro.\n") Página 4 de 21Anhanguera escreva("Digite 'atravessar' para atravessar a ponte ou 'desvio' para procurar um desvio: ") // Declaração de uma variável para armazenar a decisão do jogador cadeia decisao leia(decisao) // Lê a decisão do jogador // Estrutura condicional "SE" para verificar a decisão do jogador se (decisao == "atravessar") { // Mensagem e pontuação quando jogador atravessa a ponte escreva("Você atravessa ponte quebrada com sucesso e encontra uma fonte mágica que restaura sua saúde e adiciona 50 pontos à sua } senao { // Mensagem quando jogador procura um desvio escreva("Você encontra um desvio seguro, mas não há } } // Função para lidar com Caminho das Criaturas funcao { escreva("Você escolheu Caminho das Criaturas.\r escreva("Este caminho é repleto de sons estranhos e pegadas misteriosas no chão. Parece ser caminho mais imprevisível e enigmático da floresta. \n") escreva("Você se depara com uma criatura mágica adormecida bloqueando caminho. Você deve decidir se tentará contornar a criatura com cuidado ou acordá- la para passar. \n") escreva("Digite 'contornar' para tentar contornar ou 'acordar' para acordá-la: ") // Declaração de uma variável para armazenar a decisão do jogador cadeia decisao leia(decisao) // Lê a decisão do jogador // Estrutura condicional "SE" para verificar a decisão do jogador Página 5 de 21Anhanguera se (decisao == "contornar") { // Mensagem e pontuação quando jogador contorna a criatura escreva("Você contorna a criatura com sucesso e encontra uma árvore encantada que concede a habilidade especial de camuflagem, adicionando 75 pontos à sua pontuação. } senao { // Mensagem quando jogador acorda a criatura escreva("A criatura acorda e você precisa fugir sem premiação. \n") As capturas de tela registram as escolhas e respostas testadas, incluindo tratamento de uma opção inválida. Testes: Figura 1 Teste 1. e um explorador corajoso que se aventura em uma misteriosa Floresta Sussurrante em busca de tesouros lendários e segredos perdidos. Ao adentrar na floresta, você se depara com três caminhos diferentes, cada um levando a uma parte desconhecida e perigosa da floresta. Sua missão é escolher sabiamente caminho a seguir, enfrentando desafios e tomando decisões que impactarão sua jornada e sua pontuação final. Prepare-se para esta aventura cheia de mistérios! Caminho 1: Caminho das Sombras Caminho 2: 0 Caminho da Luz Caminho 3: 0 Caminho das Criaturas Escolha um caminho (1, 2 ou 3): Fonte: Autor (2026). Figura 2 Teste 2. Você é um explorador corajoso que se aventura em uma misteriosa Floresta Sussurrante em busca de tesouros lendários e segredos perdidos. Ao adentrar na floresta, você se depara com três caminhos diferentes, cada um levando a uma parte desconhecida e perigosa da floresta. Sua missão é escolher sabiamente caminho a seguir, enfrentando desafios e tomando decisões que impactarão sua jornada e sua pontuação final. Prepare-se para esta aventura cheia de mistérios! Caminho 1: Caminho das Sombras Caminho 2: o Caminho da Luz Caminho 3: Caminho das Criaturas Escolha um caminho (1, 2 ou 3): 4 Escolha inválida. Por favor, selecione um caminho válido. Programa finalizado. Tempo de execução: 19086 milissegundos Fonte: Autor (2026). Figura 3 Teste 3. Você um explorador corajoso que se aventura em uma misteriosa Floresta Sussurrante em busca de tesouros lendários e segredos perdidos. Ao adentrar na floresta, você se depara com três caminhos diferentes, cada um levando a uma parte desconhecida e perigosa da floresta. Sua missão é escolher sabiamente caminho a seguir, enfrentando desafios e tomando decisões que impactarão sua jornada e sua pontuação final. Prepare-se para esta aventura cheia de mistérios! Caminho 1: Caminho das Sombras Caminho 2: Caminho da Luz Caminho 3: Caminho das Criaturas Escolha um caminho (1, 2 ou 3): 1 Você escolheu Caminho das Sombras. Este caminho é cercado por árvores antigas e sombrias, com raios de lua penetrando entre os galhos. Parece ser caminho mais misterioso e perigoso da floresta. Você encontra uma criatura mágica guardiã do caminho, que exige um enigma para deixá-lo passar. enigma é: "Quem sou eu? Tenho olhos, mas não vejo. Tenho boca, mas não falo. que sou?" caveira Correto! Você encontra um baú escondido contendo uma gema preciosa que vale 100 pontos. Fonte: Autor (2026). Página 6 de 21Anhanguera Figura 4 Teste 4. Você é um explorador corajoso que se aventura em uma misteriosa Floresta Sussurrante em busca de tesouros lendários e segredos perdidos. Ao adentrar na floresta, você se depara com três caminhos diferentes, cada um levando a uma parte desconhecida e perigosa da floresta. Sua missão é escolher sabiamente caminho a seguir, enfrentando desafios e tomando decisões que impactarão sua jornada e sua pontuação final. Prepare-se para esta aventura cheia de mistérios! Caminho 1: Caminho das Sombras Caminho 2: Caminho da Luz Caminho 3: Caminho das Criaturas Escolha um caminho (1, 2 ou 3): 1 Você escolheu Caminho das Sombras. Este caminho é cercado por árvores antigas e sombrias, com raios de lua penetrando entre os galhos. Parece ser caminho mais misterioso e perigoso da floresta. Você encontra uma criatura mágica guardiã do caminho, que exige um enigma para deixá-lo passar. enigma é: "Quem sou eu? Tenho olhos, mas não vejo. Tenho boca, mas não falo. que sou?" nao sei Resposta Você não pode passar. Fonte: Autor (2026). Figura 5 Teste 5. Você é um explorador corajoso que se aventura em uma misteriosa Floresta Sussurrante em busca de tesouros lendários e segredos perdidos. Ao adentrar na floresta, você se depara com três caminhos diferentes, cada um levando a uma parte desconhecida e perigosa da floresta. Sua missão é escolher sabiamente caminho a seguir, enfrentando desafios e tomando decisões que impactarão sua jornada e sua pontuação final. Prepare-se para esta aventura cheia de mistérios! Caminho 1: Caminho das Sombras Caminho 2: Caminho da Luz Caminho 3: Caminho das Criaturas Escolha um caminho (1, 2 ou 3): 2 Você escolheu Caminho da Luz. Este caminho é iluminado por raios de sol que filtram entre as copas das árvores. Parece ser caminho mais seguro e reconfortante da floresta. Você encontra uma ponte quebrada sobre um rio turbulento. Você deve decidir se tentará atravessar a ponte quebrada ou procurará um desvio seguro. Digite 'atravessar' para atravessar a ponte ou 'desvio' para procurar um desvio: desvio Você encontra um desvio seguro, mas não há premiação. Fonte: Autor (2026). Figura 6 Teste 6. Você é um explorador corajoso que se aventura em uma misteriosa Floresta Sussurrante em busca de tesouros lendários e segredos perdidos. Ao adentrar na floresta, você se depara com três caminhos diferentes, cada um levando a uma parte desconhecida e perigosa da floresta. Sua missão é escolher sabiamente caminho a seguir, enfrentando desafios e tomando decisões que impactarão sua jornada e sua pontuação final. Prepare-se para esta aventura cheia de mistérios! Caminho 1: Caminho das Sombras Caminho 2: Caminho da Luz Caminho 3: Caminho das Criaturas Escolha um caminho (1, 2 ou 3): 2 Você escolheu Caminho da Luz. Este caminho é iluminado por raios de sol que filtram entre as copas das árvores. Parece ser 0 caminho mais seguro e reconfortante da floresta. Você encontra uma ponte quebrada sobre um rio turbulento. Você deve decidir se tentará atravessar a ponte quebrada ou procurará um desvio seguro. Digite para atravessar a ponte ou 'desvio' para procurar um desvio: atravessar Você atravessa a ponte quebrada com sucesso e encontra uma fonte mágica que restaura sua saúde e adiciona 50 pontos à sua pontuação. Fonte: Autor (2026). Figura 7 Teste 7. Você é um explorador corajoso que se aventura em uma misteriosa Floresta Sussurrante em busca de tesouros lendários e segredos perdidos. Ao adentrar na floresta, você se depara com três caminhos diferentes, cada um levando a uma parte desconhecida e perigosa da floresta. Sua missão é escolher sabiamente caminho a seguir, enfrentando desafios e tomando decisões que impactarão sua jornada e sua pontuação final. Prepare-se para esta aventura cheia de mistérios! Caminho 1: Caminho das Sombras Caminho 2: Caminho da Luz Caminho 3: Caminho das Criaturas Escolha um caminho (1, 2 ou 3): 3 Você escolheu Caminho das Criaturas. Este caminho é repleto de sons estranhos e pegadas misteriosas no chão. Parece ser caminho mais imprevisível e enigmático da floresta. Você se depara com uma criatura mágica adormecida bloqueando caminho. Você deve decidir se tentará contornar a criatura com cuidado ou acordá-la para passar. Digite contornar' para tentar contornar ou 'acordar' para acordá-la: acordar A criatura acorda e você precisa fugir sem premiação. Fonte: Autor (2026). Figura 8 Teste 8. Voce é um explorador corajoso que se aventura em uma misteriosa Floresta Sussurrante em busca de tesouros lendários e segredos perdidos. Ao adentrar na floresta, você se depara com três caminhos diferentes, cada um levando a uma parte desconhecida e perigosa da floresta. Sua missão é escolher sabiamente caminho a seguir, enfrentando desafios e tomando decisões que impactarão sua jornada e sua pontuação final. Prepare-se para esta aventura cheia de mistérios! Caminho 1: Caminho das Sombras Caminho 2: Caminho da Luz Caminho 3: Caminho das Criaturas Escolha um caminho (1, 2 ou 3): 3 Você escolheu Caminho das Criaturas. Este caminho é repleto de sons estranhos e pegadas misteriosas no chão. Parece ser caminho mais imprevisível e enigmático da floresta. Você se depara com uma criatura mágica adormecida bloqueando caminho. Você deve decidir se tentará contornar a criatura com cuidado ou acordá-la para passar. Digite 'contornar' para tentar contornar ou 'acordar' para acordá-la: contornar Você contorna a criatura com sucesso e encontra uma árvore encantada que concede a habilidade especial de camuflagem, adicionando 75 pontos à sua pontuação. Fonte: Autor (2026). 2.2 ATIVIDADE 2 Atividade proposta: Desenvolve-se um programa em Portugol, utilizando-se do Portugol Webstudio. Página 7 de 21Anhanguera Desenvolvimento do programa: A matriz 5 5 representa paredes pelo valor 1, caminho livre pelo valor 0 e tesouro pelo valor 2. A biblioteca Util sorteia, em cada início, uma das oito casas alcançáveis do corredor para receber tesouro. layout permanece fixo, possibilidade admitida pelo roteiro; sorteios independentes podem repetir uma posição em execuções diferentes. programa { inclua biblioteca Util --> u inteiro TAMANHO = 5 inteiro labirinto[5][5] inteiro posX = 0 inteiro posY = 0 funcao inicio() { inicializarLabirinto() escreva("Encontre tesouro. Posições livres: 0; paredes: 1.\n") enquanto != 2) { escreva("Explorador na posição: (", posX, ",", posY, ")\n") cadeia direcao escreva("Digite cima, baixo, esquerda ou direita: ") leia(direcao) moverExplorador(direcao) } escreva("Parabéns! Tesouro encontrado em (", posX, posY, ").\n") } funcao inicializarLabirinto() { inteiro i, j, indice // Reinicia todas as 25 posições como paredes. Página 8 de 21Anhanguera para (i = 0; iAnhanguera labirinto[3][2] = 2 pare caso 6: labirinto[3][3] = 2 pare caso 7: labirinto[4][3] = 2 pare caso 8: labirinto[4][4] = 2 pare } } funcao direcao) { inteiro novoX = posX inteiro novoY = posY se (direcao == "cima") { novoX = novoX 1 } senao se (direcao == "baixo") { novoX = novoX + 1 } senao se (direcao == "esquerda") { novoY = novoY 1 } senao se (direcao == "direita") { novoY = novoY + 1 escreva("Direção inválida. Escolha uma das quatro opções.\n") retorne } // Valida limites antes de acessar a matriz. Página 10 de 21Anhanguera se (novoX = TAMANHO ou novoY = TAMANHO) { escreva("Borda do labirinto! Retornando ao início.\n") posX = 0 posY = 0 } senao se (labirinto[novoX][novoY] == 1) escreva("Parede! Retornando ao início.\n") posX = 0 posY = 0 } senao { posX = novoX posY = novoY } } } laço enquanto solicita movimentos até chegar à casa do tesouro. A posição pretendida é verificada antes de acessar a matriz. Em duas execuções no Portugol WebStudio, o tesouro surgiu em (1, 1) e em (3, 3). Também foram confirmados o retorno ao início após atingir uma parede ou borda e o tratamento de direção inválida. As figuras mostram os resultados do código atualizado. Testes: Figura 9 Teste 1. Encontre 0 tesouro. Posições livres: 0; paredes: 1. Explorador na posição: (0, Digite cima, baixo, esquerda ou direita: Direção Escolha uma das quatro opções. Explorador na posição: 0) Digite cima, baixo, esquerda ou direita: Direção inválida. Escolha uma das quatro opções. Explorador na posição: Digite cima, baixo, esquerda ou direita: direita Explorador na posição: (0, 1) Digite cima, baixo, esquerda ou direita: cima Borda do labirinto! Retornando ao inicio. Explorador na posição: Digite cima, baixo, esquerda ou direita: baixo Parede! Retornando ao inicio. Explorador na posição: Digite cima, baixo, esquerda ou direita: direita Explorador na posição: (0, 1) Digite cima, baixo, esquerda ou direita: baixo Tesouro encontrado em (1, 1). Programa finalizado. Tempo de execução: 405195 milissegundos Fonte: Autor (2026). Página 11 de 21Anhanguera Figura 10 Teste 2. Encontre 0 tesouro. Posições livres: 0; paredes: 1. Explorador na posição: (0, 0) Digite cima, baixo, esquerda ou direita: direita Explorador na posição: 1) Digite cima, baixo, esquerda ou direita: baixo Explorador na posição: (1, 1) Digite cima, baixo, esquerda ou direita: direita Explorador na posição: (1, 2) Digite cima, baixo, esquerda ou direita: baixo Explorador na posição: (2, 2) Digite cima, baixo, esquerda ou direita: baixo Explorador na posição: (3, 2) Digite cima, baixo, esquerda ou direita: direita Tesouro encontrado em (3, 3). Programa Tempo de execução: 39910 milissegundos Fonte: Autor (2026). 2.3 ATIVIDADE 3 Atividade proposta: Desenvolve-se um programa em c para realizar o solicitado. Desenvolvimento do programa: As três funções avaliam separadamente a relação entre valor solicitado e renda, histórico de crédito e a estabilidade no emprego. Após a leitura dos dados, bloco if aprova apenas quando os três critérios são verdadeiros; caso contrário, informa quais verificações falharam. #include #include // Função para verificar se a relação entre renda e valor do empréstimo é válida int renda, float valorEmprestimo) { return valorEmprestimoAnhanguera int verificarEstabilidadeEmprego(char estabilidade[]) { return strcmp(estabilidade, "estavel") == } int main() { float renda, valorEmprestimo, valorEntrada; char historicoCredito[10], estabilidadeEmprego[10]; // Solicitar informações do cliente printf("Informe a sua renda mensal: "); scanf("%f", &renda); printf("Informe valor do emprestimo desejado: "); scanf("%f", &valorEmprestimo); printf("Informe seu historico de credito (bom/ruim): "); scanf("%s", historicoCredito); printf("Informe a sua estabilidade no emprego (estavel/instavel): "); scanf("%s", printf("Informe valor da entrada: "); scanf("%f", &valorEntrada); // Verificar os critérios para aprovação do empréstimo int criterio1 = valorEmprestimo); int criterio2 = int criterio3 // Analisar os critérios if (criterio1 && criterio2 && criterio3) { printf("Parabéns! Seu empréstimo foi aprovado.\n"); } else { Página 13 de 21Anhanguera printf("Desculpe, seu empréstimo foi rejeitado.\n"); if (!criterio1) { printf("O valor do empréstimo excede 30%% da sua renda mensal.\n"); } if (!criterio2) { printf("Seu histórico de crédito é ruim.\n"); } if (!criterio3) { printf("Sua estabilidade no emprego é instável.\n"); } } return 0; } O valor da entrada é coletado, mas não participa da decisão nesta implementação. Os testes apresentados mostram o comportamento do programa com dados informados. Testes: Figura 11 - Teste 1. Informe a sua renda mensal: 7000 Informe valor do emprestimo desejado: 2000 Informe seu historico de credito (bom/ruim) : bom Informe a sua estabilidade no emprego (estavel/instavel) : estavel Informe o valor da entrada: 600 Parabéns! Seu empréstimo foi aprovado. Fonte: Autor (2026). Figura 12 Teste 2. Informe a sua renda mensal: 2000 Informe valor do emprestimo desejado: 4000 Informe historico de credito (bom/ruim) : bom Informe a sua estabilidade no emprego : estavel Informe valor da entrada: 200 Desculpe, seu empréstimo foi rejeitado. valor do empréstimo excede 30% da sua renda mensal. Fonte: Autor (2026). 2.4 ATIVIDADE 4 Atividade proposta: Página 14 de 21Anhanguera Você foi designado pela sua instituição de ensino para desenvolvedor um programa de classificação dos alunos. programa deverá solicitar alguns dados, inclusive as médias das disciplinas de cada aluno para que ele possa fazer cálculo da média do aluno. Deverá solicitar também nome do aluno. Desenvolvimento do programa: A estrutura Aluno reúne nome, médias das duas disciplinas, média geral e classificação. programa calcula a média de cada aluno, ordena os registros em ordem decrescente com qsort e atribui posições conforme a ordem obtida. #include #include #include // Definição da estrutura Aluno typedef struct { char nome[50]; float mediaDisciplina1 float mediaDisciplina2; float mediaGeral; int classificacao; } Aluno; // Função para calcular a média geral de um aluno float mediaDisciplina1, float mediaDisciplina2) { return (mediaDisciplina1 + mediaDisciplina2) / 2; } // Função para comparar as médias gerais de dois alunos (para ordenação) int compararMedias(const void *a, const void *b) { Aluno *alunoA = (Aluno *)a; Aluno *alunoB = (Aluno *)b; if (alunoB->mediaGeral > alunoA->mediaGeral) return 1; if (alunoB->mediaGeral mediaGeral) return -1; Página 15 de 21Anhanguera return 0; } int main() { int numAlunos, i; Aluno *alunos; FILE *arquivo; // Solicitar número de alunos printf("Informe número de alunos: "); scanf("%d", &numAlunos); Alocar memória para array de alunos alunos = (Aluno *)malloc(numAlunos * sizeof(Aluno)); Solicitar os dados de cada aluno for (i 0; iAnhanguera for (i = 0; iAnhanguera printf("Dados dos alunos foram salvos em return } Em seguida, abre alunos.txt, grava os registros e a média da turma, fecha arquivo e libera a memória alocada. As figuras registram exemplos de execução e do resultado gerado. Testes: Figura 13 Teste 1. Informe o número de alunos : 2 Informe o nome do aluno 1: lucas Informe a média da disciplina 1 do aluno 1: 4 Informe a média da disciplina 2 do aluno 1: 7 Informe o nome do aluno 2: gabriel Informe a média da disciplina 1 do aluno 2: 8 Informe a média da disciplina 2 do aluno 2: 9 Dados dos alunos foram salvos em 'alunos.txt' Fonte: Autor (2026). Figura 14 Teste 2. 1 Nome do Aluno: gabriel 2 Média Disciplina 1: 8.00 3 Média Disciplina 2: 9.00 4 Média Geral: 8.50 5 Classificação: 1 6 7 Nome do Aluno: lucas 8 Média Disciplina 1: 4.00 9 Média Disciplina 2: 7.00 10 Média Geral: 5.50 11 Classificação: 2 12 13 Média Geral da Turma: 7.00 14 Fonte: Autor (2026). Página 18 de 21Anhanguera 3 CONCLUSÃO desenvolvimento deste portfólio proporcionou uma valiosa oportunidade para aplicar conceitos de programação, algoritmos e estruturas de dados em contextos práticos e variados. Cada atividade apresentou desafios únicos e contribuiu de maneira significativa para aprofundamento das minhas habilidades técnicas e de resolução de problemas. Na primeira atividade, a criação de um jogo de exploração em uma floresta misteriosa utilizando Portugol foi uma experiência enriquecedora. A implementação das estruturas de seleção "ESCOLHA CASO" e "SE" permitiu desenvolver um fluxo narrativo envolvente, desafiando usuário a tomar decisões estratégicas para avançar na história. A atenção aos detalhes e a criatividade foram essenciais para criar uma narrativa que mantivesse jogador interessado e engajado. Na segunda atividade, a construção de um algoritmo para guiar um explorador através de um labirinto perigoso, utilizando a estrutura "ENQUANTO-FAÇA" em Portugol, destacou a importância do planejamento e da lógica no desenvolvimento de soluções eficientes. A definição de variáveis e a criação de um labirinto representado por uma matriz demonstraram como a programação pode ser utilizada para modelar e resolver problemas complexos. A inclusão de elementos aleatórios e obstáculos adicionou um nível de imprevisibilidade e desafio, tornando a atividade ainda mais intrigante. Já na terceira atividade, desenvolvimento de um sistema de aprovação de empréstimos em foi uma oportunidade de aplicar lógica condicional e estruturas de seleção para resolver um problema real do mundo financeiro. A análise criteriosa das informações fornecidas pelos clientes e a implementação da lógica de aprovação baseada em critérios pré-estabelecidos ressaltaram a importância de desenvolver sistemas robustos e confiáveis. A capacidade de comunicar de maneira clara os resultados e as razões por trás das decisões do sistema foi um aspecto crucial para a usabilidade do programa. Por fim, na quarta atividade, a criação de um programa de classificação de alunos utilizando structs e arquivos em c foi uma demonstração prática da importância das Página 19 de 21Anhanguera estruturas de dados e da manipulação de arquivos. A definição da estrutura "Aluno", a implementação das funções de cálculo de média e de comparação, e a ordenação dos alunos de acordo com suas médias gerais foram etapas fundamentais para desenvolver um sistema organizado e eficiente. A escrita dos dados em um arquivo "txt" proporcionou uma maneira prática de armazenar e compartilhar as informações de maneira estruturada e legível. Este portfólio, ao abranger uma gama diversa de atividades, proporcionou uma visão abrangente das capacidades e aplicações da programação em diferentes contextos. Cada tarefa reforçou a importância do planejamento, da lógica e da atenção aos detalhes na criação de soluções eficazes e funcionais. Através deste processo, não apenas aprimorei minhas habilidades técnicas, mas também desenvolvi uma abordagem mais estratégica e criativa para resolver problemas complexos. Este portfólio representa um marco significativo no meu aprendizado contínuo e na minha jornada como desenvolvedor de software. Página 20 de 21Anhanguera 4. REFERÊNCIAS BIBLIOGRÁFICAS 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. Página 21 de 21