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

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

Já tem uma conta?

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

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

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

Já tem uma conta?

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

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

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

Já tem uma conta?

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

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

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

Já tem uma conta?

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

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

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

Já tem uma conta?

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

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

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

Já tem uma conta?

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

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

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

Já tem uma conta?

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

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

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

Já tem uma conta?

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

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

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

Já tem uma conta?

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

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

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

Já tem uma conta?

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

Prévia do material em texto

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

Mais conteúdos dessa disciplina