Prévia do material em texto
ELEMENTOS DE ALGORITMOS Aula 1 ESTRUTURAS DE ALGORITMOS FUNDAMENTAIS Estruturas de algoritmos fundamentais Olá, estudante! Nesta primeira videoaula da Unidade, apresentaremos os conceitos essenciais de algoritmos, sua definição e aplicabilidade. Além disso, desenvolveremos os tópicos introdutórios de funções e modularização. Aproveite esta aula para agregar informações relevantes ao seu aprendizado, e assim, expandir sua compreensão e entendimento da área de algoritmos e lógica de programação. Estudante, esta videoaula foi preparada especialmente para você. Nela, você irá aprender conteúdos importantes para a sua formação Alto Contraste A- A+ Imprimir 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 1/53 profissional. Vamos assisti-la? Clique aqui para acessar os slides da sua videoaula. Bons estudos! Ponto de Partida Olá, estudante! Seja bem-vindo à esta aula sobre estruturas de algoritmos fundamentais. Em primeiro lugar, vamos entender o que são algoritmos e algumas de suas aplicabilidades. Posteriormente, abordaremos suas propriedades e alguns exemplos práticos no que se refere à sua aplicação. Traremos, também, conteúdos que introduzirão o tema funções e modularização. Estudar algoritmos não apenas aprimorará suas habilidades de resolução de problemas, como também proporcionará um entendimento mais profundo do funcionamento interno dos programas e dos sistemas que moldam nosso cotidiano. Além disso, você será capaz de compreender o quanto as funções e a modularização desempenham papéis cruciais na criação de códigos eficientes e organizados. Por meio das explicações e exemplos dados, ficará claro que as funções são blocos de construção fundamentais em qualquer linguagem de programação e que a modularização, ao dividir o código em partes menores e 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 2/53 https://cm-kls-content.s3.amazonaws.com/202401/ALEXANDRIA/ALGORITMOS_E_LOGICA_DE_PROGRAMACAO/PPT/u2a1_algo_log_pro.pdf independentes, facilita a compreensão e promove a reutilização e manutenção eficiente de um software. Diante desses pontos, como exemplo prático imagine que em um posto de combustível movimentado, os funcionários enfrentam dificuldades para registrar as vendas de maneira eficiente. Para melhorar esse processo, você foi convidado a criar um sistema simples que armazene informações essenciais sobre as transações. Os dados a serem registrados incluem o tipo de combustível escolhido pelo cliente, a quantidade abastecida, além do preço por litro dependendo do tipo de combustível. Convidamos você a explorar o material da aula e a praticar os conteúdos aqui trabalhados. Aproveite! Vamos Começar! Definição, conceito e aplicabilidade dos algoritmos Os algoritmos, muitas vezes considerados o ponto principal da ciência da computação, desempenham um papel determinante na resolução de problemas e na execução eficiente de tarefas em diversas áreas. No âmbito da programação, entender a definição e a aplicabilidade dos algoritmos é essencial para qualquer desenvolvedor ou cientista de dados. Nesta aula, exploraremos o que são algoritmos, como eles são estruturados e como são aplicados no mundo real. Os algoritmos são sequências ordenadas de instruções que visam realizar uma atividade específica ou solucionar um problema. Eles são como receitas detalhadas, fornecendo passos claros para atingir um resultado desejado. A aplicabilidade dos algoritmos é vasta, abrangendo desde a ordenação de dados até a resolução de complexos problemas matemáticos. Por exemplo, o algoritmo 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 3/53 Bubble Sort organiza elementos em uma lista de forma ascendente ou descendente, enquanto o algoritmo de Dijkstra é utilizado para encontrar o caminho mais curto em redes. Vale lembrar que esses exemplos são mais complexos e sua construção exige uma maior habilidade. Consideremos, pois, um exemplo mais simples, um algoritmo em Portugol que utiliza comandos básicos de entrada e saída. Esse algoritmo solicita ao usuário que insira dois números, realiza a soma e exibe o resultado, como podemos observar na Figura 1: Figura 1 | Exemplo de algoritmo com comandos básicos. Fonte: elaborada pelo autor. Neste exemplo, o algoritmo utiliza os comandos “escreva” para exibir mensagens no console e “leia” para capturar a entrada do usuário. Os números fornecidos são armazenados nas variáveis “numero1” e “numero2”. Em seguida, a soma é calculada e armazenada na variável “resultado”, que é exibida ao usuário. Este é um exemplo básico que demonstra o uso fundamental de entrada e saída em algoritmos simples. Outro exemplo clássico é o cálculo da média de um aluno. Baseado em informações solicitadas para o usuário, é possível apresentar o resultado de cálculos como a média aritmética ou a média ponderada de uma turma de alunos, ou até mesmo determinar qual aluno ficou com a maior média da turma. Na Figura 2 a seguir, vemos um exemplo desse algoritmo: 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 4/53 Figura 2 | Cálculo da média de um aluno. Fonte: elaborada pelo autor. Note que a figura apresenta a criação das variáveis na linha 3. Nesse caso, todas as variáveis foram declaradas como reais, pois existem valores nos cálculos de divisão que podem retornar resultados fracionários. Em seguida, é solicitado do usuário as notas e, após essa etapa, é realizado o cálculo da média. O algoritmo finaliza apresentando o resultado da média na tela do programa como uma mensagem textual que acompanha o valor numérico. Em síntese, compreender a definição e aplicabilidade dos algoritmos é essencial para qualquer pessoa envolvida no mundo da programação e da ciência de dados, uma vez que possibilitam a automação de processos, a solução de problemas básicos e complexos e a otimização de sistemas. Portanto, mergulhar no entendimento e na prática dos algoritmos é não apenas uma escolha sábia, mas uma necessidade para quem busca excelência na área da programação e na resolução de desafios computacionais. Propriedades de um algoritmo O aprendizado das propriedades de um algoritmo é fundamental no campo da ciência da computação. Imagine os algoritmos como os mecanismos complexos que impulsionam a engrenagem por trás do 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 5/53 funcionamento eficiente dos softwares que utilizamos diariamente. Compreender suas propriedades permite aprimorar, então, a capacidade de resolução de problemas e criar soluções mais eficazes para desafios complexos. Ao iniciar os estudos nesse domínio, os futuros programadores aprimoram suas habilidades técnicas, além de cultivar uma perspicácia analítica que é essencial para navegar no cenário em constante evolução da tecnologia. Debruçar-se sobre os algoritmos e suas propriedades não se trata, pois, de uma exploração acadêmica, mas de uma habilidade indispensável para quem busca a perfeição na arte da programação e da resolução de problemas computacionais. Na sequência, apresentaremos alguns exemplos práticos que englobam as principais propriedades de um algoritmo: 1. Passo a passo para realizar uma tarefa A característica de seguir um passo a passo em um algoritmo é crucial para garantir a execução ordenada e lógica de uma tarefa específica. Isso significa que cada ação é cuidadosamente planejada e executada em uma sequência predeterminada. A analogia pode ser feita com uma receita de cozinha, na qual cada instrução precisa ser acompanhada na ordem correta para se obter o resultado desejado. No contexto da programação, a clareza e a precisãonos passos são essenciais para evitar erros e garantir o desfecho almejado. Observe, na Figura 3, o exemplo de um passo a passo na realização de uma tarefa: 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 6/53 Figura 3 | Exemplo em Portugol: média ponderada. Fonte: elaborada pelo autor. A propriedade de passo a passo é essencial para guiar a execução de um algoritmo de maneira sequencial e lógica, como este que calcula a média ponderada de três notas, seguindo um processo ordenado de entrada, cálculo e exibição do resultado. 2. Processamento e instruções lógicas O processamento e as instruções lógicas são a essência do funcionamento de um algoritmo. Cada passo do algoritmo envolve a manipulação de dados através de operações lógicas, como comparações, cálculos e tomadas de decisão. Por exemplo, ao verificar se um número é positivo, o algoritmo utiliza a instrução lógica “se” para comparar o número com zero. Essas operações são a base que permite que o algoritmo resolva problemas complexos, decompondo-os em operações lógicas mais simples, como vemos na Figura 4: 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 7/53 Figura 4 | Exemplo em Portugol: verificação e divisibilidade por 3. Fonte: elaborada pelo autor. A propriedade de processamento e instruções lógicas é exemplificada em um algoritmo que verifica se um número é divisível por 3. Em outras palavras, o processamento envolve a verificação lógica da condição de divisibilidade. Aqui, as instruções lógicas determinam se o número é ou não divisível por 3. Siga em Frente... 3. Início e fim A propriedade de ter um início e um fim é essencial para estruturar e delimitar a execução de um algoritmo. O início é o ponto de partida, onde são recebidos os dados ou parâmetros necessários para realizar a tarefa. O fim, por sua vez, marca o encerramento do processo, resultando na conclusão da tarefa ou na produção do resultado desejado. Essa estruturação clara proporciona uma melhor compreensão do escopo do algoritmo, facilitando o controle do desenvolvedor sobre o fluxo de execução, como na Figura 5: 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 8/53 Figura 5 | Exemplo em Portugol: conversão de Celsius para Fahrenheit. Fonte: elaborada pelo autor. Na Figura 5, a propriedade de ter um início e um fim é evidente em um algoritmo que converte temperatura de Celsius para Fahrenheit. O início envolve a entrada da temperatura em Celsius e o fim marca a exibição da temperatura convertida. 4. Instruções claras e objetivas Instruções claras e objetivas são fundamentais para garantir que o algoritmo seja compreendido e executado corretamente. A clareza nas instruções significa que cada passo do algoritmo é descrito de maneira direta, sem ambiguidades, evitando interpretações errôneas. A objetividade, por seu turno, está relacionada à eficiência na comunicação das ações a serem realizadas, sem informações desnecessárias. Essas instruções são como um manual detalhado que guia a execução do algoritmo de forma inequívoca. Veja o exemplo a seguir: 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 9/53 Figura 6 | Exemplo em Portugol: verificação de número primo. Fonte: elaborada pelo autor. A clareza e objetividade nas instruções, como vemos na Figura 6, são primordiais em um algoritmo que verifica se um número é primo. A estrutura de controle de fluxo é clara, tornando o algoritmo compreensível. Em suma, cada uma dessas propriedades desempenha um papel elementar na criação de algoritmos robustos e eficientes. A sequencialidade garante uma execução ordenada, o processamento e as instruções lógicas são a essência da operação, o início e fim delimitam o escopo, e as instruções claras e objetivas asseguram uma compreensão e execução adequadas. Ao entender e aplicar essas propriedades, os programadores são capazes de desenvolver algoritmos mais eficazes, precisos e fáceis de manter. Introdução a funções e modularização As funções possuem grande relevância na construção de algoritmos. Elas são blocos de código que realizam tarefas específicas e podem ser chamadas de diferentes partes do programa. Ao introduzir funções, a programação se torna mais modular e compreensível. Imagine-as como ferramentas especializadas no kit de um desenvolvedor, cada qual projetada para executar um trabalho único. No mercado da Tecnologia da Informação, isso se traduz em eficiência e reutilização de código. Por exemplo, uma função que valida senhas pode ser usada em 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 10/53 diferentes partes de um sistema, promovendo consistência e economizando tempo de desenvolvimento. A seguir, veremos quatro exemplos básicos e contextualizados de funções no campo da TI. 1. Validação de e-mail Cenário: em um sistema de cadastro online, é necessário validar se o endereço de e-mail fornecido pelos usuários está no formato correto. Função: uma função específica pode ser criada para validar e- mails, sendo utilizada em várias partes do sistema, desde o cadastro até a recuperação de senha. 2. Geração de relatórios Cenário: um sistema de gerenciamento financeiro precisa gerar relatórios mensais para os usuários. Função: uma função especializada para gerar relatórios pode ser desenvolvida, proporcionando uma abordagem modular para lidar com diferentes tipos de relatórios. 3. Ordenação de lista Cenário: um sistema de gerenciamento de tarefas precisa exibir as tarefas em uma ordem específica, como por data de vencimento. Função: desenvolver uma função de ordenação que aceite a lista de tarefas como entrada e retorne a lista ordenada. Essa função pode ser usada sempre que for necessário exibir as tarefas em uma ordem específica. 4. Conversão de moeda Cenário: um aplicativo financeiro permite que o usuário converta valores entre diferentes moedas. Função: criar uma função de conversão de moeda que aceite o valor a ser convertido, a moeda de origem e a moeda de destino como parâmetros. Essa função encapsula a lógica de 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 11/53 conversão e pode ser chamada sempre que uma conversão for necessária. Dessa forma, conclui-se que, ao dominar os conceitos de funções, os programadores podem organizar melhor seus programas, facilitando a manutenção e a depuração destes. Além disso, o uso adequado de funções promove a abstração e a encapsulação, permitindo que partes do código sejam isoladas e modificadas independentemente, o que contribui para a escalabilidade e a flexibilidade do software. Portanto, investir tempo no estudo das funções na programação é fundamental para se tornar um desenvolvedor mais competente e eficaz. Quanto à modularização, podemos defini-la como o princípio de dividir um sistema complexo em módulos ou componentes independentes e interconectados. Esse conceito traz inúmeras vantagens para o desenvolvimento de software no mercado de TI. Em termos de desempenho, a modularização permite a otimização de cada módulo individual, melhorando a eficiência geral do sistema. Além disso, ela também simplifica a manutenção, uma vez que alterações ou atualizações podem ser feitas em módulos específicos sem impactar o sistema como um todo. Isso se traduz em economia de tempo e recursos, que são essenciais no cenário tecnológico e na vida de um desenvolvedor. A seguir, discorreremos sobre essas vantagens com mais detalhes. 1. Manutenibilidade: ao dividir um sistema em módulos, torna-se mais fácil localizar e corrigir problemas específicossem afetar outras partes do código. Isso simplifica a manutenção e atualização do software. 2. Reusabilidade de código: módulos bem definidos podem ser reutilizados em diferentes partes do sistema ou mesmo em projetos futuros, o que economiza tempo de desenvolvimento e promove consistência no código. 3. Escalabilidade: sistemas modulares são mais fáceis de escalar, pois novos módulos podem ser adicionados conforme 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 12/53 necessário, o que ajuda na adaptação do sistema às mudanças nos requisitos. 4. Colaboração eficiente: a modularização permite o trabalho colaborativo, pois diferentes equipes podem se concentrar em módulos específicos sem interferir no trabalho umas das outras. Como pudemos notar por meio dos exemplos citados, a modularização tem um papel importante no mercado de Tecnologia da Informação (TI), pois oferece uma abordagem organizada e escalável. Ao dividir um sistema complexo em módulos independentes e interconectados, os desenvolvedores podem aumentar a eficiência em desenvolvimento, testes e manutenção de software. Isso permite que equipes trabalhem de forma colaborativa em diferentes partes do projeto, facilitando a identificação e correção de erros, além de promover a reutilização do código. A modularização também permite a integração de novos recursos e a adaptação a mudanças nos requisitos do cliente ou do mercado, tornando o processo de desenvolvimento mais ágil e adaptável. Logo, a modularização não somente melhora a qualidade e confiabilidade dos produtos de software, como também contribui para a entrega oportuna de soluções inovadoras e eficientes para os clientes. As funções e a modularização são, portanto, elementos de grande importância no desenvolvimento de software e no mundo da programação. Ao utilizar funções, os desenvolvedores podem criar blocos de código reutilizáveis, promovendo eficiência e coesão no desenvolvimento. A modularização, por sua vez, traz vantagens significativas, desde a melhoria do desempenho até a facilitação da manutenção e escalabilidade do sistema. Esses princípios formam uma ótima base para o desenvolvimento de sistemas de qualidade que sejam flexíveis e fáceis de manter, qualidades muito valorizadas no ambiente tecnológico atual. 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 13/53 Vamos Exercitar? Vamos retomar a situação apresentada no início da aula, na qual em um posto de combustível movimentado, os funcionários enfrentam dificuldades para registrar as vendas de maneira eficiente. Para melhorar esse processo, é necessário criar um sistema simples que armazene informações essenciais sobre as transações. Os dados a serem registrados incluem o tipo de combustível escolhido pelo cliente, a quantidade abastecida, além do preço por litro dependendo do tipo de combustível. Vamos à resolução? Registro do tipo de combustível Solicite ao cliente tipo de combustível desejado (gasolina, etanol, diesel etc.). Criar uma variável do tipo “Caractere” que armazene o tipo de combustível. Registro da quantidade abastecida Solicite ao cliente a quantidade de litros desejada para o combustível escolhido. Armazene a quantidade em uma variável do tipo “Real”, pois a quantidade pode ser fracionada. Registro do valor por litro O valor por litro deve ser consultado na tabela de preços do posto. Armazene o valor por litro em uma variável do tipo “Real”. Cálculo do valor total Calcule o valor total da compra multiplicando a quantidade de litros pelo preço por litro. Apresente o valor total ao cliente. 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 14/53 Este método simplificado de gerenciamento de transações ressalta a relevância da utilização de variados tipos de dados para armazenar informações em um posto de abastecimento de combustível. A habilidade em lidar com dados e realizar cálculos é essencial para assegurar um serviço ágil e preciso aos clientes. Saiba Mais Para saber mais sobre conceitos básicos de algoritmos, entre os quais estão os tipos de dados e operadores aritméticos, consulte o Capítulo 2 – Algoritmos e a Lógica de Programação, do livro Algoritmos – Lógica para Desenvolvimento de Programação de Computadores, de Manzano e Oliveira, disponível no repositório da Biblioteca virtual. MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Capítulo 2 – Algoritmos e a Lógica de Programação. In: Algoritmos – Lógica para Desenvolvimento de Programação de Computadores. São Paulo: Editora Saraiva, 2019, p. 29. Referências Bibliográficas CORMEN, T. et al. Algoritmos: teoria e prática. 3. ed. Rio de Janeiro: LTC, 2022. MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Algoritmos - Lógica para Desenvolvimento de Programação de Computadores. São Paulo: Editora Saraiva, 2019. MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Estudo dirigido de algoritmos. São Paulo: Érica, 2000. MENÉNDEZ, A. Simplificando algoritmos. São Paulo: LTC, 2023. SILVA, F. S. C. da; FINGER, M.; MELO, A. C. V. Lógica para computação. 2. ed. São Paulo: Cengage Learning, 2017. 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 15/53 https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/]https://integrada.minhabiblioteca.com.br/reader/books/9788536531472/pageid/29 https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/]https://integrada.minhabiblioteca.com.br/reader/books/9788536531472/pageid/29 https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/]https://integrada.minhabiblioteca.com.br/reader/books/9788536531472/pageid/29 https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/]https://integrada.minhabiblioteca.com.br/reader/books/9788536531472/pageid/29 https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/]https://integrada.minhabiblioteca.com.br/reader/books/9788536531472/pageid/29 https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/]https://integrada.minhabiblioteca.com.br/reader/books/9788536531472/pageid/29 ZIVIANI, N. Projeto de algoritmos com implementações em Pascal e C. 3. ed. São Paulo: Cengage Learning, 2011. Aula 2 EXECUÇÃO SEQUENCIAL E ESTRUTURAS DE DECISÃO Execução sequencial e estruturas de decisão Olá, estudante! Nesta videoaula, temos como objetivo apresentar os conceitos básicos de algoritmos que abrangem os primeiros passos no desenvolvimento da tomada de decisão em códigos. Além disso, abordaremos como deve ser a estrutura de um código de decisão, que utiliza condicionais, e como ele funciona. Não perca a oportunidade de agregar informações valiosas ao seu aprendizado e, assim, ampliar seu conhecimento e compreensão da área de algoritmos. Clique aqui para acessar os slides da sua videoaula. Bons estudos! 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 16/53 https://cm-kls-content.s3.amazonaws.com/202401/ALEXANDRIA/ALGORITMOS_E_LOGICA_DE_PROGRAMACAO/PPT/u2a2_algo_log_pro.pdf Ponto de Partida Olá, caro estudante! Seja bem-vindo à esta aula sobre estrutura sequencial e estrutura de decisão, as quais constituem a base para a construção lógica de programas. As estruturas sequenciais são como os blocos de construção iniciais de um projeto em que as instruções são executadas em ordem linear, uma após a outra. Essa abordagem é essencial para organizar o fluxo de execução do programa, permitindo que a lógica siga de forma ordenada e compreensível. Seja na simples exibição de mensagens ou até em cálculos mais complexos, as estruturas de sequência fornecemum ponto de partida para qualquer programador iniciante. À medida que avançamos, entramos no domínio da estrutura de decisão, um conceito-chave para a tomada de decisões dinâmicas em um programa. Através de declarações condicionais, como “se” e “senao”, podemos introduzir ramificações lógicas no fluxo do código. Essas estruturas permitem que um programa escolha entre diferentes caminhos de execução com base em condições específicas, aumentando, assim, a flexibilidade e adaptabilidade às aplicações. 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 17/53 Para ilustrar a aprendizagem dos conteúdos desta aula, imagine que você precisa desenvolver um módulo para um sistema de comércio eletrônico que oferece descontos aos clientes com base em suas compras anteriores. O sistema deve aplicar um percentual de desconto de acordo com o valor total da compra. Ao compreender esses princípios básicos, estaremos prontos para explorar cenários e desafios de programação mais complexos no futuro. Vale lembrar que esses conceitos iniciais são a chave para desbloquear o enorme potencial da programação. Vamos Começar! No vasto universo da programação, as estruturas que moldam a execução dos algoritmos são partes que integram a eficácia do código. Sua compreensão é um pré-requisito elementar para qualquer programador que busca criar sistemas coesos e funcionais. Nesse contexto, destacam-se três aspectos fundamentais: a estrutura de programação, que define o esqueleto do código; as estruturas sequenciais, que determinam a execução linear das instruções; e as estruturas de decisão, que conferem ao programa a capacidade de se adaptar a diferentes cenários por meio de lógica condicional. Em um nível macro, a estrutura de programação estabelece a ordem geral das operações, enquanto as estruturas sequenciais e de decisão refinam essa ordem, proporcionando ao código a flexibilidade necessária para enfrentar desafios diversos. Este mergulho no centro dessas estruturas é essencial para capacitar programadores a criar códigos mais claros, concisos e eficientes, podendo, assim, solucionar problemas de forma sofisticada no mundo da programação. Estrutura de programação 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 18/53 A estrutura de programação refere-se ao esqueleto básico de um programa, estabelecendo a ordem em que as instruções são executadas. No contexto do pseudocódigo Portugol, podemos ilustrar essa qualidade com um exemplo simples: Figura 1 | Exemplo de estrutura de programação. Fonte: elaborada pelo autor. Na Figura 1, é evidente a estrutura de programação. O programa começa com a entrada de dados, quando o usuário fornece dois números. Em seguida, ocorre o processamento, em que os números são subtraídos e o resultado é armazenado na variável "sub". Por fim, a saída de dados exibe a subtração ao usuário. Essa sequência lógica de operações exemplifica a estrutura de programação, na qual cada passo é crucial para alcançar o resultado desejado. Essa abordagem estruturada é essencial para garantir a clareza e a funcionalidade do código. Em projetos mais complexos, a organização eficaz das operações por meio de uma estrutura de programação bem definida torna-se ainda mais crítica, permitindo que programadores e equipes colaborem de maneira mais eficiente e mantenham o código de forma sustentável ao longo do tempo. Assim, a estrutura de programação não apenas estabelece a ordem de execução, mas também promove a legibilidade e a manutenção 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 19/53 do código, fatores cruciais no desenvolvimento de um software de qualidade. Estruturas sequenciais As estruturas sequenciais representam a execução de instruções em ordem linear, uma após a outra. Em linguagens de programação, isso ocorre de forma natural, mas é importante compreender como organizá-las de maneira lógica. Para tanto, vamos expandir o exemplo anterior para incluir uma estrutura sequencial. Figura 2 | Estruturas sequenciais. Fonte: elaborada pelo autor. Neste exemplo ampliado, após a saída de dados que exibe a soma, adicionamos instruções sequenciais para calcular e exibir o dobro do resultado. Essa adição ilustra como as estruturas sequenciais permitem a execução linear de operações, uma após a outra. No caso, o dobro da soma é calculado imediatamente após a exibição da soma, seguindo o fluxo sequencial do programa. As estruturas sequenciais são, pois, capitais para a organização lógica e compreensão do código. Elas possibilitam que os 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 20/53 desenvolvedores expressem a lógica de execução de maneira clara e direta. Em programas mais complexos, essa sequencialidade torna-se primordial para evitar resultados inesperados e garantir que as operações sejam realizadas na ordem desejada. A clareza proporcionada por estruturas sequenciais também facilita a depuração e a manutenção do código, contribuindo para um desenvolvimento mais eficiente e eficaz. Siga em Frente... Estruturas de decisão No universo da programação, as estruturas de decisão são fundamentais para conferir ao código a capacidade de tomar diferentes caminhos de execução com base em condições específicas. Na pseudolinguagem Portugol, a estrutura condicional básica é representada pelo comando "se-então-senão". As estruturas de decisão podem ser classificadas em três tipos principais: desvio condicional simples, desvio condicional composto e desvio condicional encadeado. Exploremos cada uma delas com exemplos claros em Portugol. Desvio condicional simples O desvio condicional simples é o tipo mais básico, no qual o código executa uma instrução se uma condição for verdadeira; caso contrário, ele simplesmente continua sua execução normal. Na Figura 3, vemos como o programa verifica se um número digitado é positivo. 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 21/53 Figura 3 | Positivo?. Fonte: elaborada pelo autor. Neste caso, a mensagem "O número é positivo" será exibida apenas se a condição numero > 0 for verdadeira. Desvio condicional composto O desvio condicional composto inclui um bloco de instruções para cada possível resultado da condição. No exemplo a seguir, além de verificar se o número é positivo, também apura-se se é negativo ou igual a zero. Figura 4 | Positivo ou negativo?. Fonte: elaborada pelo autor. Logo, o código aborda todas as possibilidades, garantindo que a mensagem correta seja exibida com base no valor do número inserido. Desvio condicional encadeado O desvio condicional encadeado ocorre quando uma série de decisões está interligada. Cada decisão é tomada com base na 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 22/53 condição anterior. Na Figura 5, observamos o programa classificar um aluno com base em sua nota. Figura 5 | Aprovado, recuperação ou reprovado?. Fonte: elaborada pelo autor. Neste caso, o programa avalia primeiro se a nota é maior ou igual a 7,0. Se sim, o aluno é aprovado. Caso contrário, se a nota for maior ou igual a 4,0, ele está em recuperação. Se não atender a nenhuma dessas condições, o aluno é considerado reprovado. Tais exemplos demonstram como as estruturas de decisão em Portugol podem ser aplicadas de maneiras simples e compreensíveis, proporcionando ao programador flexibilidade para lidar com diferentes situações. A escolha entre essas estruturas dependerá da complexidade do problema a ser resolvido e da lógica específica que se deseja implementar. ConclusãoEm resumo, as estruturas de programação constituem a espinha dorsal do desenvolvimento de software, proporcionando a organização lógica necessária para a criação de algoritmos eficientes. Ao definirem o esqueleto do código, elas estabelecem as bases sobre as quais as estruturas sequenciais e de decisão se desdobrarão. As estruturas sequenciais, por sua vez, asseguram a 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 23/53 execução ordenada das instruções, conferindo clareza e linearidade ao fluxo do programa. Da mesma forma, as estruturas de decisão emergem como ferramentas cruciais para a adaptação dinâmica do código, permitindo que ele responda a condições específicas. Ao aplicar esses conceitos no ambiente de programação em Portugol, os desenvolvedores têm a oportunidade de criar códigos mais legíveis, organizados e eficientes. A clareza proporcionada pelas estruturas de programação é fundamental para facilitar a compreensão do código não apenas pelo criador, mas também por outros membros da equipe envolvida no projeto. Além disso, a capacidade de tomar decisões lógicas por meio das estruturas condicionais permite que os programas lidem de maneira adaptável com diferentes cenários, contribuindo para a robustez e versatilidade das soluções desenvolvidas. Em última análise, o entendimento profundo dessas estruturas é uma habilidade essencial para programadores que aspiram a construir soluções de software robustas e funcionalmente sólidas. Vamos Exercitar? Vamos retomar a situação apresentada no início da aula onde você precisa desenvolver um módulo para um sistema de comércio eletrônico que oferece descontos aos clientes com base em suas compras anteriores. O sistema deve aplicar um desconto de 10% em relação ao valor total da compra. Vamos à resolução? Identificação do cliente Crie uma estrutura de dados para representar as informações do cliente: nome, e-mail e total gasto em compras anteriores. Solicite ao usuário que insira seu nome, e-mail e o valor total gasto em compras anteriores. 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 24/53 Aplicação de desconto Implemente uma estrutura de seleção (condicional) para verificar o valor total gasto pelo cliente. Aplique um desconto de 10% se o valor total for superior a R$ 500. Exibição do resultado Mostre ao usuário o valor original da compra, o desconto aplicado (se houver) e o valor final a ser pago. Exiba uma mensagem incentivando o cliente a continuar comprando. Usando a Linguagem C Figura 6 | Identificação do cliente. Fonte: elaborada pelo autor. Figura 7 | Aplicação do desconto. Fonte: elaborada pelo autor. Figura 8 | Resultado. Fonte: elaborada pelo autor. Saiba Mais 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 25/53 Para saber mais sobre as estruturas de decisão e formas de aplicação dos desvios condicionais na linguagem de programação C e quais suas características, consulte o Capítulo 7. Estruturas condicionais do livro Elementos de programação em C, de Pinheiro, disponível no repositório da Biblioteca virtual. PINHEIRO, F. de A. C. Capítulo 7. Estrutura Condicionais. In: Elementos de programação em C. Porto Alegre: Bookman, 2012, p. 148-165. Referências Bibliográficas CORMEN, T. et al. Algoritmos: teoria e prática. 3. ed. Rio de Janeiro: LTC, 2022. MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Estudo dirigido de algoritmos. São Paulo: Érica, 2000. MENÉNDEZ, A. Simplificando algoritmos. São Paulo: LTC, 2023. PINHEIRO, F. de A. C. Elementos de programação em C. Porto Alegre: Bookman, 2012. SILVA, F. S. C. da; FINGER, M.; MELO, A. C. V. Lógica para computação. 2. ed. São Paulo: Cengage Learning, 2017. ZIVIANI, N. Projeto de algoritmos com implementações em Pascal e C. 3. ed. São Paulo: Cengage Learning, 2011. Aula 3 ESTRUTURAS DE REPETIÇÃO 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 26/53 https://integrada.minhabiblioteca.com.br/reader/books/9788540702035/pageid/165 https://integrada.minhabiblioteca.com.br/reader/books/9788540702035/pageid/165 https://integrada.minhabiblioteca.com.br/reader/books/9788540702035/pageid/165 https://integrada.minhabiblioteca.com.br/reader/books/9788540702035/pageid/165 Estruturas de repetição Olá, estudante! Esta videoaula será dedicada às estruturas de repetição, as quais proporcionarão uma imersão completa nos elementos essenciais para o desenvolvimento de algoritmos mais complexos. Durante nosso encontro, exploraremos os conceitos fundamentais dessas estruturas, discutindo como elas podem ser aplicadas para otimizar e automatizar processos em programação. A habilidade de criar loops eficientes é crucial para qualquer programador, e esta aula visa fornecer uma compreensão sólida do assunto. Além disso, abordaremos a importância da clareza na estrutura do código e como essa qualidade contribui para um desenvolvimento mais eficiente. Entender como organizar e controlar o fluxo de um programa é primordial para qualquer aspirante a desenvolvedor. Clique aqui e acesse os slides da sua videoaula. Bons estudos! Ponto de Partida Olá, caro estudante! Seja bem-vindo à esta aula dedicada às estruturas de repetição em Portugol. Nesta jornada, apresentaremos 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 27/53 https://cm-kls-content.s3.amazonaws.com/202401/ALEXANDRIA/ALGORITMOS_E_LOGICA_DE_PROGRAMACAO/PPT/u2a3_algo_log_pro.pdf essas estruturas essenciais para a criação de algoritmos dinâmicos e eficientes. Elas são como os fios que tecem a complexidade dos programas, proporcionando a flexibilidade necessária para enfrentar desafios variados. Assim como alicerces firmes sustentam uma construção, entender o "Enquanto-Faça", "Para-Até-Faça" e "Repita- Até" permitirá, assim, que você construa códigos mais robustos e adaptáveis. Para ilustrar a aprendizagem dos conteúdos desta aula, imagine que você trabalha em uma loja de pneus que deseja otimizar o controle de estoque e conta com a sua ajuda para criar um programa que facilite a contagem de produtos. Cada pneu vendido é registrado, e o estoque precisa ser atualizado constantemente. Portando, você precisará desenvolver um algoritmo que permita ao vendedor informar quantos pneus foram vendidos e, com base nessa informação, realizar a contagem atualizada do estoque. Este é apenas o começo; o conhecimento adquirido aqui será a chave para desbloquear as possibilidades infinitas que a programação oferece. Abrace cada conceito, participe ativamente e não hesite em explorar e questionar. Estamos aqui para apoiar sua aprendizagem e guiá-lo na compreensão plena dessas estruturas. Boa aula! Vamos Começar! A lógica de programação é uma parte fundamental do desenvolvimento de software, e entre suas muitas nuances, destacam-se as estruturas de repetição como ferramentas essenciais para construir algoritmos eficientes e dinâmicos. Nesta aula, vamos explorar a profundidade dessas estruturas em Portugol, uma linguagem pseudocódigo que serve como ponte intuitiva para entender os conceitos básicos da área. À medida que nos aprofundarmos no universo do "Enquanto-Faça", "Para-Até-Faça" e "Repita-Até", desvendaremos os segredos por trás dessas 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 28/53 construções que capacitam os programadores a automatizar tarefas, criar lógicas complexas e dar vida a algoritmos mais eficientes. Resumidamente, a estrutura "Enquanto-Faça" oferece uma abordagem dinâmica, permitindo que um bloco de código seja repetido enquanto uma condição específica permanecerverdadeira. Essa capacidade de adaptação é crucial, pois permite a execução de tarefas variáveis, condicionando o fluxo do programa à avaliação contínua de uma expressão booleana. No entanto, há também a necessidade de estruturas que possam lidar com um número fixo de repetições, e é aqui que o "Para-Até-Faça" assume o palco, simplificando o controle de iterações. Por fim, para cenários em que é necessário garantir que um bloco de código seja executado pelo menos uma vez, independentemente da condição inicial, a estrutura "Repita-Até" se destaca como um instrumento valioso, proporcionando robustez e adaptabilidade aos algoritmos. Ao desbravar esses conceitos, os programadores estarão equipados não apenas com conhecimentos práticos, como também com uma compreensão mais profunda da arte de criar algoritmos eficientes. Enquanto-Faça A estrutura de repetição "Enquanto-Faça" destaca-se como uma ferramenta dinâmica e versátil no contexto da programação. Sua lógica é centrada na execução de um bloco de código enquanto uma condição específica permanece verdadeira. No exemplo prático do contador, inicializamos uma variável em 1. Enquanto essa variável for menor ou igual a 5, o bloco de código dentro do "Enquanto-Faça" será repetido. Cada iteração incrementa o contador, proporcionando uma contagem sequencial de 1 a 5. Essa flexibilidade torna o "Enquanto-Faça" ideal para situações em que a quantidade de repetições não é conhecida antecipadamente. 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 29/53 Figura 1 | Contador. Fonte: elaborada pelo autor. Uma das características marcantes do "Enquanto-Faça" é a sua capacidade de adaptar dinamicamente o fluxo de execução do programa. A condição que determina a repetição é avaliada antes de cada iteração, permitindo que o bloco de código seja executado apenas enquanto a condição for verdadeira. Isso proporciona um controle preciso e flexível sobre o número de repetições, adequando-se a cenários em que a lógica do programa precisa ajustar-se às condições variáveis, tornando-o uma escolha ideal para contextos dinâmicos. Além de seu papel em loops, o "Enquanto-Faça" contribui significativamente para a construção lógica sequencial de um programa. Sua adaptabilidade ao lidar com conjunturas em que as condições de repetição podem depender de variáveis externas ou interações do usuário é valiosa. Ao dominar o uso dessa estrutura, os programadores adquirem uma ferramenta capital para criar algoritmos dinâmicos e ajustáveis, abrindo portas para a resolução eficiente de uma variedade de problemas. Para-Até-Faça A estrutura de repetição "Para-Até-Faça" é um instrumento poderoso que proporciona um controle preciso sobre o número de iterações em um bloco de código. Ao contrário do "Enquanto-Faça", no qual a execução depende de uma condição booleana, o "Para-Até-Faça" é especialmente útil quando sabemos previamente quantas repetições são precisas. Essa estrutura é conduzida por uma variável de 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 30/53 https://s3.amazonaws.com/platos-alexandria-prod/kroton/image/66193c8bea5e5e4fa5b8f049/63fc42a9-24c9-4d7c-bc7d-b13a041f032d/original https://s3.amazonaws.com/platos-alexandria-prod/kroton/image/66193c8bea5e5e4fa5b8f049/63fc42a9-24c9-4d7c-bc7d-b13a041f032d/original controle, muitas vezes chamada de índice, que é inicializada com um valor específico e incrementada automaticamente a cada iteração. Imagine, a título de ilustração, que estamos desenvolvendo um programa para calcular a soma dos primeiros cinco números inteiros. Utilizando o "Para-Até-Faça", podemos criar um código conciso e eficiente: Figura 2 | Somando 5 números. Fonte: elaborada pelo autor. Neste exemplo, a variável soma é inicializada em zero, e o "Para- Até-Faça" é utilizado para iterar de 1 até 5. A cada iteração, o valor de i é somado à variável soma. Ao final do loop, obtemos a soma total dos primeiros cinco números inteiros. Essa abordagem é eficaz quando conhecemos antecipadamente o número de iterações necessárias, proporcionando um controle preciso sobre o fluxo do programa. Essa estrutura é particularmente eficiente em operações que envolvem listas, arrays ou qualquer contexto em que a quantidade de elementos seja conhecida. O "Para-Até-Faça" simplifica a implementação de iterações controladas, tornando o código mais legível e fácil de compreender. Aprofundar-se nesse conceito, assim, proporcionará um entendimento sólido e versátil das estruturas de repetição em Portugol. Siga em Frente... Repita-Até 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 31/53 https://s3.amazonaws.com/platos-alexandria-prod/kroton/image/66193c8bea5e5e4fa5b8f049/27305487-97b7-4d65-9061-4829c87e92ab/original https://s3.amazonaws.com/platos-alexandria-prod/kroton/image/66193c8bea5e5e4fa5b8f049/27305487-97b7-4d65-9061-4829c87e92ab/original A estrutura de repetição "Repita-Até" é muito útil quando desejamos que um bloco de código seja executado pelo menos uma vez, independentemente da condição inicial. Ao contrário do "Enquanto- Faça", que verifica a condição antes da execução, o "Repita-Até" executa o bloco primeiro e, em seguida, verifica a condição para determinar se deve repetir o processo. Considere um exemplo prático: suponha que estamos desenvolvendo um programa para solicitar ao usuário um número entre 1 e 10. Utilizando o "Repita-Até", podemos garantir que o código seja executado pelo menos uma vez, independentemente da entrada do usuário. Figura 3 | Verificando número válido. Fonte: elaborada pelo autor. Na Figura 3, o bloco de código dentro de "Repita-Até" solicita ao usuário que digite um número repetidamente até que a condição número >= 1 e número <= 10 seja atendida. Essa estrutura garante que o programa não avance até que o usuário forneça uma entrada válida, tornando-a útil para situações em que é essencial garantir a execução de um bloco pelo menos uma vez. O "Repita-Até" é um instrumento interessante para cenários nos quais a execução do bloco deve ocorrer antes da verificação da condição. Ao compreender a dinâmica dessa estrutura, os programadores podem criar algoritmos mais flexíveis e adaptáveis. Conclusão 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 32/53 https://s3.amazonaws.com/platos-alexandria-prod/kroton/image/66193c8bea5e5e4fa5b8f049/575b4bb6-b7ee-44e3-970d-aca871ecf493/original https://s3.amazonaws.com/platos-alexandria-prod/kroton/image/66193c8bea5e5e4fa5b8f049/575b4bb6-b7ee-44e3-970d-aca871ecf493/original Exploramos, nesta aula, as fundamentais estruturas de repetição em Portugol, o "Enquanto-Faça", "Para-Até-Faça" e "Repita-Até", construções valiosas para o desenvolvimento de algoritmos mais dinâmicos e eficientes. Ao compreender a aplicação adequada de cada uma delas, os programadores adquirem a capacidade de criar códigos mais claros, flexíveis e adaptáveis, essenciais em cenários complexos. O "Enquanto-Faça" destaca-se por sua flexibilidade, permitindo que um bloco de código seja repetido enquanto uma condição específica permanecer verdadeira. Isso é especialmente útil quando a quantidade de repetições é incerta e depende de condições variáveis. O “Para-Até-Faça”, por sua vez, é ideal quando o número de iterações é conhecido antecipadamente, proporcionando um controle preciso sobre o fluxo do programa. Essa estrutura simplifica a implementação de iterações controladas, tornando o código mais legível e eficiente. Já o "Repita-Até" evidencia-se por garantir que um bloco de código seja executado pelo menos uma vez, independentemente da condição inicial. Essa característica faz com ele que seja proveitoso em situações em que é necessário assegurar a execuçãode um bloco antes de verificar a condição. Tais estruturas, em conjunto, formam uma base sólida para a criação de algoritmos poderosos. Ao dominá-las, os programadores estarão preparados para enfrentar desafios mais complexos, construindo códigos mais eficientes e adaptáveis. A jornada na lógica de programação continua, e o entendimento profundo dessas estruturas de repetição serve como um trampolim para explorar cenários e desafios mais avançados no vasto mundo da programação. Vamos Exercitar? 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 33/53 Retomando a situação apresentada no início da aula onde você trabalha em uma loja de pneus que deseja otimizar o controle de estoque e conta com a sua ajuda para criar um programa que facilite a contagem de produtos. E a sua responsabilidade é desenvolver um algoritmo que permita ao vendedor informar quantos pneus foram vendidos e, com base nessa informação, realizar a contagem atualizada do estoque. Vamos à resolução? Inicialização do estoque Inicialize o estoque de pneus com um valor pré-definido, por exemplo, 100 pneus. Registro de vendas Implemente um loop (estrutura de repetição) que permita ao vendedor registrar as vendas de pneus. Solicite ao vendedor que informe a quantidade de pneus vendidos a cada transação. Atualize o estoque subtraindo a quantidade vendida. Exibição do estoque atualizado Após cada registro de venda, exiba ao vendedor o estoque atualizado. Continue o processo até que o vendedor decida encerrar a contagem. 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 34/53 Figura 4 | Controle de estoque. Fonte: elaborada pelo autor. O investimento em soluções computacionais que integrem estruturas de controle proporciona vantagens competitivas e eficiência operacional, elementos cruciais em um mercado cada vez mais tecnológico e orientado por dados. Continue, pois, aprimorando suas habilidades para enfrentar desafios mais complexos na área de programação. Saiba Mais Para saber mais sobre laços de repetição na linguagem de programação C e suas características, consulte o Capítulo 8 - Estruturas de Repetição do livro Elementos de programação em C, de Pinheiro, disponível no repositório da Biblioteca virtual. PINHEIRO, F. de A. C. Capítulo 8 - Estruturas de Repetição. In: Elementos de programação em C. Porto Alegre: Bookman, 2012, p. 171-187. Referências Bibliográficas CORMEN, T. et al. Algoritmos: teoria e prática. 3. ed. Rio de Janeiro: LTC, 2022. 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 35/53 https://integrada.minhabiblioteca.com.br/reader/books/9788540702035/pageid/188 https://integrada.minhabiblioteca.com.br/reader/books/9788540702035/pageid/188 https://integrada.minhabiblioteca.com.br/reader/books/9788540702035/pageid/188 https://integrada.minhabiblioteca.com.br/reader/books/9788540702035/pageid/188 MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Estudo dirigido de algoritmos. São Paulo: Érica, 2000. MENÉNDEZ, A. Simplificando algoritmos. São Paulo: LTC, 2023. PINHEIRO, F. A. C. Elementos de programação em C. Porto Alegre: Bookman, 2012. SILVA, F. S. C. da; FINGER, M.; MELO, A. C. V. Lógica para computação. 2. ed. São Paulo: Cengage Learning, 2017. ZIVIANI, N. Projeto de algoritmos com implementações em Pascal e C. 3. ed. São Paulo: Cengage Learning, 2011. Aula 4 VARIÁVEIS INDEXADAS Variáveis indexadas Olá, estudante! Esta videoaula tem como objetivo apresentar os conceitos básicos de algoritmos que abrangem os primeiros passos no desenvolvimento da tomada de decisão em códigos. Abordaremos, também, como deve ser a estrutura de um código e como ele funciona. Não perca a oportunidade de agregar informações valiosas ao seu aprendizado e de ampliar seu conhecimento e compreensão da área de algoritmos. Clique aqui para acessar os slides da sua videoaula. Bons estudos! 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 36/53 https://cm-kls-content.s3.amazonaws.com/202401/ALEXANDRIA/ALGORITMOS_E_LOGICA_DE_PROGRAMACAO/PPT/u2a4_algo_log_pro.pdf Ponto de Partida Olá, caro estudante! Seja bem-vindo à esta aula dedicada à utilização de vetores, às variáveis indexadas unidimensionais e variáveis compostas na construção eficiente de algoritmos. Começaremos entendendo as estruturas sequenciais, que são como blocos de construção iniciais para projetos. Nelas, as instruções são executadas em ordem linear, passo a passo, o que é vital para organizar o fluxo do programa, desde tarefas simples, como exibir mensagens, até manipulações mais complexas usando vetores e variáveis indexadas unidimensionais. Na sequência, mergulharemos no domínio das variáveis compostas, ferramentas poderosas que permitem agrupar dados relacionados em uma única estrutura. Nesse contexto, exploraremos como vetores e variáveis indexadas unidimensionais são primordiais para construir algoritmos eficientes e resolver problemas computacionais de forma organizada. Portanto, para ilustrar a aprendizagem do conteúdo desta aula, vamos exercitar com um algoritmo em Portugol que faça operações utilizando a estrutura de vetores. Será apresentando um algoritmo que vai solicitar informações ao usuário que serão armazenadas em 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 37/53 2 vetores. Um terceiro vetor será necessário para fazer a soma dos elementos dos dois vetores e apresentar o seu resultado no final do programa. A jornada está apenas começando, e esses conceitos iniciais são a chave para enfrentar cenários e desafios de programação mais complexos no futuro. Vamos Começar! A programação é uma linguagem que utiliza diversos conceitos para representar e manipular dados. Entre esses conceitos, destacam-se a utilização de vetores, variáveis indexadas unidimensionais e variáveis compostas, essenciais para organizar e acessar informações de maneira eficiente. Nesta aula, portanto, exploraremos cada um desses conteúdos, exemplificando seu uso por meio da linguagem de programação Portugol. Utilização de vetores Os vetores são estruturas fundamentais na programação, permitindo armazenar e organizar dados de forma sequencial em memória, o que facilita seu acesso e manipulação eficaz. Em linguagens como Portugol, a declaração e manipulação desses vetores são tarefas comuns, proporcionando uma abordagem estruturada para lidar com conjuntos de dados relacionados. A declaração de um vetor em Portugol envolve a especificação dos elementos e a definição da faixa de índices. Assim, ao criar um vetor de notas, podemos utilizar a declaração vetor [1.5] de real, indicando que ele terá elementos do tipo real e índices variando de 1 a 5. O acesso aos elementos se dará por meio dos índices que representam uma posição única no vetor. Para atribuir ou recuperar valores, basta referenciar o vetor e o índice desejado. 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 38/53 Considere, na Figura 1, o exemplo em Portugol no qual criamos um vetor “notas” para armazenar as notas dos alunos, permitindo acessar, por meio do índice, a segunda nota: Figura 1 | Exemplo de vetor. Fonte: elaborada pelo autor. Vetores são versáteis, podendo armazenar diferentes tipos de dados, desde números até caracteres. Além disso, são eficientes para lidar com conjuntos de dados homogêneos, como uma lista de temperaturas mensais ou um histórico de vendas diárias. Sua utilização simplifica a manipulação desses dados, proporcionando uma estrutura organizada e acessível e contribuindo para o desenvolvimento de algoritmosmais claros e efetivos. Variáveis indexadas unidimensionais As variáveis indexadas unidimensionais são extensões do conceito de vetores, proporcionando uma forma mais flexível de representar e acessar dados em programação. Elas permitem organizar informações de maneira estruturada, associando valores a índices específicos. No contexto do Portugol, a utilização de variáveis indexadas unidimensionais oferece uma abordagem eficaz para lidar com conjuntos de dados que não seguem necessariamente uma sequência contígua de índices. Mas, ao contrário dos vetores, elas não requerem uma faixa de índices fixa durante a declaração. Podemos definir índices de forma mais dinâmica, tornando-as ideais para situações em que os dados 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 39/53 https://s3.amazonaws.com/platos-alexandria-prod/kroton/image/6619402c5ee97b6e8477469e/7a527af5-1db6-4696-9c86-bfab94c8ca36/original https://s3.amazonaws.com/platos-alexandria-prod/kroton/image/6619402c5ee97b6e8477469e/7a527af5-1db6-4696-9c86-bfab94c8ca36/original não seguem uma ordem sequencial predefinida. No Portugol, a declaração de uma variável indexada unidimensional é feita como var nome: vetor de tipo, permitindo a atribuição de índices em tempo de execução. O acesso aos elementos ocorre da mesma forma, utilizando índices para referenciar valores específicos. A seguir, apresentamos um exemplo em Portugol no qual criamos uma variável indexada “meses” para representar os meses do ano e acessarmos o terceiro mês: Figura 2 | Variável indexada. Fonte: elaborada pelo autor. Variáveis indexadas unidimensionais são especialmente úteis em situações dinâmicas, como a representação de dados esparsos ou informações que podem ser atualizadas ao longo do tempo. Podem ser empregadas em cenários que envolvam, por exemplo, a categorização de eventos no decorrer de um ano, sem a necessidade de reservar espaço para todos os meses. Essa flexibilidade as torna uma ferramenta poderosa na programação, contribuindo para uma gestão eficiente de dados em contextos menos estruturados. Siga em Frente... Variáveis compostas Variáveis compostas evoluem além das estruturas simples de dados, permitindo uma representação mais rica e abrangente na 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 40/53 programação. Como discutimos anteriormente, o uso de registros em Portugol para criar variáveis compostas é essencial para explorar duas variantes avançadas, as multidimensionais e as heterogêneas, as quais oferecem recursos adicionais para lidar com conjuntos de dados mais complexos e diversificados. Variáveis compostas multidimensionais No contexto das variáveis compostas multidimensionais, a declaração envolve a criação de estruturas que possuem mais de uma dimensão. Matrizes ou arrays bidimensionais são exemplos comuns nessa categoria. Ao declarar uma matriz em Portugol, especificamos o número de linhas e colunas. O acesso aos elementos ocorre por meio da referência a índices em ambas as dimensões. Assim, uma matriz pode representar uma tabela em que as linhas são os meses do ano e as colunas são os dias, facilitando a organização e manipulação de dados mais elaborados. Figura 3 | Variável composta multidimensional. Fonte: elaborada pelo autor. Variáveis compostas heterogêneas As variáveis compostas heterogêneas introduzem a ideia de estruturas que contêm campos de diferentes tipos de dados. Enquanto os registros em Portugol são homogêneos, as estruturas heterogêneas permitem uma abordagem mais flexível. Pode-se ter um campo que armazena um número inteiro, enquanto outro armazena um caractere, por exemplo. Essa versatilidade é muito vantajosa ao modelar entidades que possuem atributos diversos e não uniformes. 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 41/53 Figura 4 | Variável composta heterogenia. Fonte: elaborada pelo autor. Em resumo, a incorporação de variáveis compostas multidimensionais e compostas heterogêneas enriquece significativamente a capacidade de representar dados na programação. Ao entender e aplicar esses conceitos em Portugol, os programadores podem desenvolver soluções adaptáveis, adequadas para lidar com desafios mais complexos. A linguagem Portugol, integrando essas formas, proporciona, então, uma base sólida para o desenvolvimento de habilidades programáticas mais avançadas em linguagens subsequentes, preparando programadores para enfrentar problemas cada vez mais sofisticados na construção de softwares. Conclusão A integração de vetores, variáveis indexadas unidimensionais e variáveis compostas emerge como prática essencial na programação, promovendo uma estrutura organizada e eficiente para a manipulação de dados. A compreensão profunda desses temas e sua aplicação criteriosa em contextos específicos capacitam os programadores a conceberem sistemas mais transparentes, modulares e de fácil manutenção. A linguagem Portugol, ao dar suporte para esses elementos, destaca-se como uma ferramenta inestimável para aqueles que buscam aprender a programar de maneira estruturada e eficaz. Vamos Exercitar? 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 42/53 Retomando a situação apresentada no início da aula, de exercitar com um algoritmo em Portugol que faça operações utilizando a estrutura de vetores, criando um algoritmo que vai solicitar informações ao usuário que serão armazenadas em 2 vetores. Um terceiro vetor será necessário para fazer a soma dos elementos dos dois vetores e apresentar o seu resultado no final do programa. Vamos à resolução? Inicialização dos vetores Crie dois vetores inteiros: vetorA e vetorB, com um tamanho pré-definido. Leitura dos elementos Implemente um loop para solicitar ao usuário que informe os elementos de cada vetor. Para cada posição i do vetorA e vetorB, leia um valor inteiro e armazene no vetor correspondente. Somatória dos vetores Crie um terceiro vetor, vetorSoma, com o mesmo tamanho dos vetores vetorA e vetorB, para armazenar a soma dos elementos de cada posição. Para cada posição i, realize a soma dos elementos das posições correspondentes dos vetores vetorA e vetorB e armazene o resultado no vetorSoma. Apresentação dos vetores Após a leitura e somatória, exiba ao usuário os elementos dos vetores vetorA, vetorB e vetorSoma, mostrando os valores de cada posição. Fim do programa Encerre a execução do programa. 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 43/53 Segue o demonstrativo da codificação em Portugol: Figura 5 | Soma de vetores. Fonte: elaborada pelo autor. Figura 6 | Soma de vetores – cont. Fonte: elaborada pelo autor. Nesta atividade, você aprendeu como utilizar vetores em Portugol para armazenar e manipular conjuntos de dados. Você criou um algoritmo que permite ao usuário inserir elementos em dois vetores, somá-los e depois apresentar os vetores originais e o vetor resultante da soma. Esta prática é essencial para entender o 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 44/53 conceito de vetores e como aplicá-los na resolução de problemas computacionais. Saiba Mais Para saber mais sobre estruturas de dados homogêneas e heterogêneas, vetores e matrizes, consulte o Capítulo 6 – Estruturas de Dados Homogêneas de Uma Dimensão, do livro Algoritmos – Lógica para Desenvolvimento de Programação de Computadores, de Manzano e Oliveira, disponível no repositório da Biblioteca virtual. MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Capítulo 6 - Estruturas de Dados Homogêneas de UmaDimensão. In: Algoritmos – Lógica para Desenvolvimento de Programação de Computadores. São Paulo: Saraiva, 2019, p. 145-158. Referências Bibliográficas CORMEN, T. et al. Algoritmos: teoria e prática. 3. ed. Rio de Janeiro: LTC, 2022. MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Algoritmos - Lógica para Desenvolvimento de Programação de Computadores. São Paulo: Editora Saraiva, 2019. MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Estudo dirigido de algoritmos. São Paulo: Érica, 2000. MENÉNDEZ, A. Simplificando algoritmos. São Paulo: LTC, 2023. SILVA, F. S. C. da; FINGER, M.; MELO, A. C. V. Lógica para computação. 2. ed. São Paulo: Cengage Learning, 2017. ZIVIANI, N. Projeto de algoritmos com implementações em Pascal e C. 3. ed. São Paulo: Cengage Learning, 2011. 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 45/53 https://integrada.minhabiblioteca.com.br/reader/books/9788536531472/pageid/146 https://integrada.minhabiblioteca.com.br/reader/books/9788536531472/pageid/146 https://integrada.minhabiblioteca.com.br/reader/books/9788536531472/pageid/146 https://integrada.minhabiblioteca.com.br/reader/books/9788536531472/pageid/146 https://integrada.minhabiblioteca.com.br/reader/books/9788536531472/pageid/146 https://integrada.minhabiblioteca.com.br/reader/books/9788536531472/pageid/146 https://integrada.minhabiblioteca.com.br/reader/books/9788536531472/pageid/146 Encerramento da Unidade ELEMENTOS DE ALGORITMOS Videoaula de Encerramento Olá, estudante! Seja bem-vindo à videoaula de encerramento desta Unidade, na qual destacaremos as estruturas de seleção, também conhecidas como condicionais. Essa estrutura é uma das mais presentes nos algoritmos desenvolvidos em todas as aplicações do mercado de software, portanto muito relevante para quem já atua ou está planejando entrar para a área da computação. Preparado para finalizar essa jornada? Clique aqui para acessar os slides da sua videoaula. Bons estudos! Ponto de Chegada 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 46/53 https://cm-kls-content.s3.amazonaws.com/202401/ALEXANDRIA/ALGORITMOS_E_LOGICA_DE_PROGRAMACAO/PPT/u2enc_algo_log_pro.pdf Olá, estudante! Para desenvolver a competência desta Unidade, a saber, desenvolver algoritmos com a utilização das estruturas de decisão e repetição por meio de pseudocódigos na programação, tivemos, primeiramente, que conhecer os conceitos fundamentais de algoritmos, entender a sua importância e, ainda, compreender por que eles são tão utilizados no desenvolvimento de sistemas. Embarcar no universo da programação é abrir as portas para a resposta a desafios complexos e a criação de soluções inovadoras. É preciso se inteirar a respeito das estruturas existentes para construir soluções inteligentes e essenciais na atualidade. Isso não apenas torna o código mais eficiente, como também proporciona uma abordagem flexível para a resolução de problemas. As empresas buscam profissionais capazes de criar códigos robustos, que respondam dinamicamente a variáveis e situações diversas. A capacidade de implementar condicionais de forma inteligente, assim, otimiza processos e demonstra uma compreensão sólida da lógica de programação. Especialistas que dominam as estruturas de seleção são capazes de criar algoritmos mais desenvolvidos, adaptáveis e eficazes. Essa habilidade facilita a resolução de problemas complexos e destaca os programadores como ativos valiosos em um mercado cada vez mais competitivo e dinâmico. Ela enriquece o repertório técnico, além de ser um diferencial estratégico. Portanto, ao compreender as estruturas condicionais, os programadores se capacitam para criar soluções arrojadas, contribuindo para o progresso contínuo no mundo da programação. É Hora de Praticar! Chegou o momento, caro estudante, de colocar em prática o conhecimento adquirido nesta unidade de ensino. Para tanto, vamos abordar um estudo de caso sobre Processo de conserto de motocicleta com o cenário descrito a seguir. 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 47/53 Suponha que você trabalhe em uma oficina de motocicletas e receba um cliente com um veículo apresentando problemas de funcionamento. O cliente relata que a moto está falhando e deseja uma análise mecânica para identificar o problema. O desafio é criar um algoritmo que ajude o mecânico a diagnosticar o mau funcionamento com eficiência em todo o processo. O passo a passo seria o seguinte: 1. Coleta de informações: o algoritmo deve solicitar o input das informações do cliente colhidas pelo mecânico ou atendente. 2. Inspeção da motocicleta: o veículo segue para diagnóstico dos possíveis problemas. 3. Proposta de solução: já com o diagnóstico provisório, o cliente recebe uma proposta de solução do(s) problema(s) apresentado(s). Agora é a sua vez! Utilize seus conhecimentos em algoritmos para criar soluções para o estudo de caso apresentado. Siga os passos sugeridos no gabarito e demonstre suas habilidades para a resolução desse desafio. Reflita No contexto do aprendizado de programação, é essencial compreender não apenas as técnicas específicas, como também a importância de estruturas, como as estruturas condicionais dentro da lógica de programação e o uso de pseudocódigos. A seguir, apresentamos duas questões de reflexão para aprofundar nossa compreensão sobre esses temas: 1. Estruturas de seleção Após ter explorado as estruturas de seleção, pense quais habilidades específicas são necessárias para criar condicionais claros e eficazes? 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 48/53 Como o domínio dessas estruturas pode impactar diretamente na qualidade e adaptabilidade do código? Ao colocar essas questões, procure compreender a importância de aprimorar suas competências no campo e como isso pode influenciar positivamente a resolução de problemas complexos no mundo da programação. 2. Estruturas de repetição Ao refletir sobre as estruturas de repetição, analise como a habilidade de criar loops eficientes pode otimizar a execução de algoritmos. Considere as situações em que a repetição controlada é necessária e como diferentes estruturas, como o enquanto-faça e o repita até, podem ser aplicadas de maneira inteligente. Quais são os benefícios de criar algoritmos que podem lidar dinamicamente com tarefas repetitivas? Como o domínio das estruturas de repetição pode influenciar a eficiência e a escalabilidade do código? Ao fazer essas reflexões, busque compreender a importância de desenvolver conhecimentos sólidos na área para enfrentar desafios variados e criar soluções mais robustas em programação. Dê o Play! Clique aqui para acessar os slides do Dê o play! Resolução do estudo de caso Processo de conserto de motocicleta Passo 1: Coleta de informações O mecânico inicia o processo coletando informações do cliente sobre os sintomas da motocicleta, o que inclui questioná-lo 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 49/53 https://cm-kls-content.s3.amazonaws.com/202401/ALEXANDRIA/ALGORITMOS_E_LOGICA_DE_PROGRAMACAO/PPT/u2play_algo_log_pro.pdf sobre quando os problemas começaram, se há algum padrão nas falhas, entre outras perguntas relevantes. Passo 2: Inspeção física O próximo passo envolve uma inspeção física da motocicleta. O mecânico verifica o sistema de ignição, o filtro de ar, as velas de ignição e outros componentes essenciais. Ele realiza testes visuais e, se necessário, testes práticos para observar o comportamento da moto. Passo 3: Análise de dados Com as informações coletadas, o mecânico analisa os dados para identificar a causa raiz do problema. Ele verificaos resultados dos testes, os códigos de falha e as observações para formar um diagnóstico preciso. Passo 4: Proposta de solução Com o diagnóstico em mãos, o mecânico propõe uma solução ao cliente. Isso pode incluir a substituição de peças, ajustes específicos ou reparos necessários. O cliente é informado sobre o custo estimado e a extensão do trabalho a ser feito. Conclusão Esse estudo de caso destaca a importância de uma abordagem sistemática para resolver problemas em um contexto de reparo mecânico de motocicletas. A coleta cuidadosa de informações, a inspeção física, o uso de ferramentas de diagnóstico e a análise de dados são, portanto, passos para uma resolução eficiente. Esse processo exemplifica, assim, como a lógica de programação pode ser aplicada de forma prática na resolução de desafios do mundo real. Dê o play! 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 50/53 Assimile Neste infográfico, apresentamos, resumidamente, os principais conceitos relacionados aos elementos de algoritmos. 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 51/53 Figura | Elementos algoritmos. Fonte: elaborada pelo autor. Referências CORMEN, T. et al. Algoritmos: teoria e prática. 3. ed. Rio de Janeiro: LTC, 2022. MENÉNDEZ, A. Simplificando algoritmos. São Paulo: LTC, 2023. SILVA, F. S. C. da; FINGER, M.; MELO, A. C. V. Lógica para computação. 2. ed. São Paulo: Cengage Learning, 2017. ZIVIANI, N. Projeto de algoritmos com implementações em Pascal e C. 3. ed. São Paulo: Cengage Learning, 2011. 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 52/53 01/08/2024, 14:15 Elementos de Algoritmos https://alexandria-html-published.platosedu.io/16ac6071-3df3-4021-90e9-1d7caf2db65d/v1/index.html 53/53