Baixe o app para aproveitar ainda mais
Prévia do material em texto
19/11/2020 Estácio estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D2338254ABBF19DC3C579057D5F6751F493C453DDA5EC2326A3618B072… 1/26 Disciplina: Informática para Engenharia Aula 2: Design de Programas Apresentação Analistas, programadores, engenheiros e demais profissionais envolvidos, direta ou indiretamente, que utilizam a Informática usam algoritmos e estruturas de dados todos os dias em suas atividades. Ter uma boa compreensão desses algoritmos e saber quando os aplicar é essencial para a produção de softwares que funcionem não apenas de maneira correta, mas também eficiente. Nesta aula, pretendemos explicar os algoritmos e as representações mais comumente utilizadas, tendo como enfoque inicial a organização do pensamento lógico segundo a ótica do funcionamento do computador. Posteriormente, descreveremos os algoritmos por meio de uma linguagem narrativa, simbólica e estruturada, sempre apresentando as vantagens e desvantagens de cada abordagem em cada etapa da análise do problema. Por fim, concentraremos os esforços na transcrição dessas etapas para uma linguagem genérica estruturada: o pseudocódigo. Considerada uma forma intermediária entre o design e a codificação para a linguagem de programação, o pseudocódigo é uma forma universal de representar algoritmos independentemente da linguagem a ser utilizada. Assim, esperamos que, além de uma compreensão dos algoritmos e sua importância na solução de problemas, você tenha uma apreciação mais profunda sobre como construir softwares robustos, extensíveis e, é claro, funcionais. Objetivos Descrever as tarefas envolvidas no projeto e desenvolvimento de problemas com o apoio de algoritmos; Ilustrar as diferentes formas de se representarem os algoritmos; Discutir como o uso da lógica pode auxiliar a construção de algoritmos. 19/11/2020 Estácio estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D2338254ABBF19DC3C579057D5F6751F493C453DDA5EC2326A3618B072… 2/26 Projeto e Desenvolvimento de Algoritmos O computador é capaz de auxiliar-nos em qualquer tarefa que lhe seja solicitada, é consciente, trabalhador e possui muita energia, mas não tem iniciativa e nenhuma independência, além de não ser criativo nem inteligente; por isso, precisa receber instruções nos mínimos detalhes. Para que o computador compreenda e execute um programa, devemos escrevê-lo usando uma linguagem que tanto o computador quanto o desenvolvedor de softwares entendam; trata-se da linguagem de programação. (Fonte: pfluegler-photo / Shutterstock) Sabemos que o desenvolvimento de um programa envolve uma série de etapas, por meio de uma minuciosa investigação no enunciado do problema. De maneira geral, podemos classificar essas tarefas em dois grandes grupos: 19/11/2020 Estácio estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D2338254ABBF19DC3C579057D5F6751F493C453DDA5EC2326A3618B072… 3/26 Análise Estuda-se o enunciado do problema para definir os dados de entrada, o processamento e os dados de saída. Ainda nessa etapa, fazemos um esboço do projeto por meio de um algoritmo para descrever o problema. Implementação O programa é construído (ou codificado) e testado de acordo com as especificações da etapa anterior com alguma linguagem de programação. Podemos definir algoritmos como: uma sequência finita de instruções ou operações cuja execução, em tempo finito, resolve um problema computacional, qualquer que seja sua instância SALVETTI, 1999; 19/11/2020 Estácio estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D2338254ABBF19DC3C579057D5F6751F493C453DDA5EC2326A3618B072… 4/26 uma sequência de passos que visa atingir um objetivo bem definido FORBELLONE, 1999; regras formais para a obtenção de um resultado ou da solução de um problema, englobando fórmulas de expressões aritméticas MANZANO, 1997; Analisando as definições anteriores, podemos observar que executamos no dia a dia vários algoritmos, como podemos observar nos exemplos descritos a seguir: 19/11/2020 Estácio estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D2338254ABBF19DC3C579057D5F6751F493C453DDA5EC2326A3618B072… 5/26 ALGORITMO 1 Fazer um sanduíche 01 Pegar o pão. 02 Cortar o pão ao meio. 03 Pegar a maionese. 04 Passar a maionese no pão. 05 Pegar e cortar a alface e o tomate. 06 Colocar a alface e o tomate no pão. 07 Pegar o hambúrguer. 08 Fritar o hambúrguer. 09 Colocar o hambúrguer no pão. 19/11/2020 Estácio estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D2338254ABBF19DC3C579057D5F6751F493C453DDA5EC2326A3618B072… 6/26 ALGORITMO 2 Sacar dinheiro no banco 24 horas 01 Ir a um banco 24 horas. 02 Inserir o cartão na máquina. 03 Digitar a senha. 04 Solicitar a quantia desejada. 05 Se o saldo for maior ou igual à quantia desejada, sacar; caso contrário, mostrar mensagem de impossibilidade de saque. 06 Retirar o cartão. 07 Sair do banco 24 horas. Podemos observar nos dois exemplos anteriores que seguimos uma sequência de passos, estabelecendo assim um padrão de comportamento, retratando geralmente a maneira que qualquer pessoa adotaria na resolução de tais problemas. Vale lembrar que até o momento utilizamos o português coloquial para representar nossa linha de raciocínio. No entanto, podemos representar os algoritmos de outras formas, por meio de elementos gráficos ou de uma notação textual mais rigorosa. 19/11/2020 Estácio estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D2338254ABBF19DC3C579057D5F6751F493C453DDA5EC2326A3618B072… 7/26 Tipos de algoritmo Ao realizarmos a análise do enunciado de um problema, surge uma dúvida crucial: Como devemos retratá-lo? Vimos que até o momento representamos o problema por meio da nossa língua portuguesa. No entanto, surgem algumas dúvidas: qual é a melhor maneira de descrever? Existe algum padrão de escrita? Sobre a primeira dúvida, o significado de “melhor” depende do nível de detalhamento desejado. Pode ser uma boa opção utilizar estruturas gráficas que têm como foco o funcionamento do algoritmo, escondendo assim, nessa etapa, detalhes desnecessários. Em relação ao segundo questionamento, existe sim um padrão de escrita mais estruturado do que a forma narrativa utilizada; é o chamado pseudocódigo. Os três tipos mais utilizados de algoritmos são: Descrição narrativa ; Fluxograma; Pseudocódigo ou portugol. ALGORITMO 3 Fazer um sanduíche 01 1 http://estacio.webaula.com.br/cursos/gon956/aula2.html 19/11/2020 Estácio estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D2338254ABBF19DC3C579057D5F6751F493C453DDA5EC2326A3618B072… 8/26 Pegar o pão. 02 Cortar o pão ao meio. 03 Pegar a maionese. 04 Passar a maionese no pão. 05 Pegar e cortar a alface e o tomate. 06 Colocar a alface e o tomate no pão. 07 Fritar o hambúrguer por aproximadamente 5 minutos. 08 Pegar o hambúrguer e colocar no pão. Veja no algoritmo anterior o passo 7: “Fritar o hambúrguer por aproximadamente 5 minutos”. Essa imprecisão pode dar margem a diferentes interpretações. Por exemplo, menos de 5 minutos ou mais de 5 minutos? Para a linguagem de programação, a linguagem natural é abstrata, imprecisa e pouco confiável. Isso poderia trazer problemas na hora de transcrever o algoritmo para o programa (em uma linguagem de programação). Devido a esses motivos, essa forma de representação é pouco utilizada na prática. 19/11/2020 Estácio estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D2338254ABBF19DC3C579057D5F6751F493C453DDA5EC2326A3618B072… 9/26 (Fonte: NicoElNino / Shutterstock) Fluxograma Consiste em analisar o enunciado do problema e escrever, por meio de símbolos gráficos predefinidos, os passos a serem seguidos para a resolução do problema. 1 Vantagem O entendimento de elementos gráficos é mais fácil que o entendimento de textos. 2 Desvantagem É necessário aprender a simbologia dos fluxogramas. Além disso, o algoritmo resultante não apresenta muitos detalhes, dificultando a sua transcrição para um programa. 19/11/2020Estácio estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D2338254ABBF19DC3C579057D5F6751F493C453DDA5EC2326A3618B07… 10/26 Início e fim do algoritmo Sentido do fluxo de dados Cálculos e atribuições de valores Entrada de dados Saída de dados Tomada de uma decisão (possibilidade de desvios) O algoritmo a seguir representa em forma de fluxograma o processo necessário para calcular a média aritmética entre duas notas de um aluno e mostrar sua situação, que pode ser aprovado ou reprovado. 19/11/2020 Estácio estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D2338254ABBF19DC3C579057D5F6751F493C453DDA5EC2326A3618B072… 11/26 Pseudocódigo ou Portugol Consiste em analisar o enunciado do problema e escrever, por meio de regras predefinidas, os passos a serem seguidos para a resolução do problema. 1 Vantagem A passagem do algoritmo para qualquer linguagem de programação é quase imediata, bastando conhecer as palavras reservadas da linguagem de programação que será utilizada. 2 Desvantagem É necessário aprender as regras do pseudocódigo. 19/11/2020 Estácio estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D2338254ABBF19DC3C579057D5F6751F493C453DDA5EC2326A3618B07… 12/26 O algoritmo a seguir representa em forma de pseudocódigo o processo necessário para calcular a média aritmética entre duas notas de um aluno e mostrar a situação dele, que pode ser aprovado ou reprovado. ALGORITMO DECLARE N1, N2, M NUMÉRICO ESCREVA “Digite as duas notas” LEIA N1, N2 M = (N1 + N2)/2 ESCREVA “Média = “,M SE M>= 7 ENTÃO ESCREVA “Aprovado” SENÃO ESCREVA “Reprovado” FIM_ALGORITMO Observe no pseudocódigo um conjunto de estruturas bem-definidas, também denominadas de palavras reservadas, como ALGORITMO, DECLARE, NUMÉRICO, ESCREVA, SE, ENTÃO, SENÃO e FIM_ALGORITMO. Temos um bom e claro motivo para o uso desse recurso: a ambiguidade. 19/11/2020 Estácio estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D2338254ABBF19DC3C579057D5F6751F493C453DDA5EC2326A3618B07… 13/26 Ilustração do problema decorrente do uso da linguagem natural. (Fonte: Vida de Programador <https://vidadeprogramador.com.br/2011/03/22/logica- de-programacao/> ) Algoritmos e Raciocínio Lógico De maneira simples, podemos dizer que a lógica trata da correção do pensamento. É a arte de pensar corretamente, de ensinar a colocar ordem no pensamento. Trata-se da correção do raciocínio. Exemplo Todo mamífero é animal; Todo cavalo é mamífero; Portanto, todo cavalo é animal. Mas, na verdade, o que é lógica? Poderíamos enfocar essa pergunta dentro de uma visão matemática, psicológica, filosófica e tantas outras, mas, em essência, teríamos a mesma resposta: é uma forma de conexão das estruturas do raciocínio. https://vidadeprogramador.com.br/2011/03/22/logica-de-programacao/ 19/11/2020 Estácio estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D2338254ABBF19DC3C579057D5F6751F493C453DDA5EC2326A3618B07… 14/26 Aplicando o raciocínio lógico: De quem é o retrato? 1. Carlos olha um retrato, e alguém lhe pergunta: “De quem é este retrato?”. Ele responde: “Eu não tenho nem irmão nem irmã, mas o pai deste homem é o filho de meu pai”. R: O pai deste homem é você; você é filho do seu pai. Logo é o filho de Carlos! Então, para que estudar lógica? Para ordenar e relacionar informações com o objetivo de gerar (resultar em) novas informações. No contexto da Computação, onde aplicar lógica? Nas instruções dos programas, para controlar o processamento das informações (montar programa). Podemos então chegar à seguinte relação: Lógica Montagem 19/11/2020 Estácio estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D2338254ABBF19DC3C579057D5F6751F493C453DDA5EC2326A3618B07… 15/26 Programar Codificar Um programa pode ser construído segundo a análise lógica do problema, geralmente tendo um fluxo de informação de característica: 1 Sequencial Conjunto de ações que será executado passo a passo, um após o outro. 2 Seletiva Situação em que nem sempre todas as ações devem ser executadas. Nesse caso, somente um conjunto de ações será executado após realizado um teste condicional. 3 Repetitiva Conjunto de ações executado diversas vezes até que uma condição seja satisfeita. 19/11/2020 Estácio estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D2338254ABBF19DC3C579057D5F6751F493C453DDA5EC2326A3618B07… 16/26 Como exemplo de uma estrutura sequencial, podemos ilustrar uma série de passos para a troca de uma lâmpada queimada. 01 Pegue uma escada. 02 Posicione-a embaixo da lâmpada. 03 Busque uma lâmpada nova. 04 Suba na escada. 05 Retire a lâmpada velha. 06 Coloque a lâmpada nova. 19/11/2020 Estácio estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D2338254ABBF19DC3C579057D5F6751F493C453DDA5EC2326A3618B07… 17/26 E se a lâmpada não estiver queimada? 01 Pegue uma escada. 02 Posicione-a embaixo da lâmpada. 03 Busque uma lâmpada nova. 04 Ligue o interruptor. 19/11/2020 Estácio estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D2338254ABBF19DC3C579057D5F6751F493C453DDA5EC2326A3618B07… 18/26 05 SE a lâmpada não acender, ENTÃO: 05.1 suba na escada 05.2 retire a lâmpada velha 05.3 coloque a lâmpada nova Imagine se no algoritmo anterior, ao executar o passo 4, a lâmpada ligasse? Não teria sentido pegar a escada, posicioná-la embaixo da lâmpada e muito menos buscar uma nova lâmpada. Como estamos na fase de projeto, podemos fazer um refinamento da solução, conforme ilustrado no próximo algoritmo. 01 Ligue o interruptor. 02 SE a lâmpada não acender, ENTÃO: 02.1 pegue uma escada 02.2 posicione-a embaixo da lâmpada 02.3 busque uma lâmpada nova 02.4 suba na escada 19/11/2020 Estácio estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D2338254ABBF19DC3C579057D5F6751F493C453DDA5EC2326A3618B07… 19/26 02.5 retire a lâmpada velha 02.6 coloque a lâmpada nova Apesar de improvável, temos de considerar no nosso algoritmo que a nova lâmpada possa estar com defeito. Podemos pensar mais além! E se todo o lote da lâmpada estiver com defeito? 01 Ligue o interruptor. 02 SE a lâmpada não acender, ENTÃO: 02.1 pegue uma escada 02.2 posicione-a embaixo da lâmpada 02.3 busque uma caixa de lâmpadas novas 02.4 suba na escada 02.5 retire a lâmpada velha 02.6 coloque a lâmpada nova 02.7 19/11/2020 Estácio estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D2338254ABBF19DC3C579057D5F6751F493C453DDA5EC2326A3618B07… 20/26 SE a lâmpada nova não acender, ENTÃO: 02.7.1 retire a lâmpada nova; 02.7.2 coloque outra lâmpada... (até quando?) A linha 2.7.2 do algoritmo ilustra bem esse problema. Podemos perceber que existe a possibilidade de que uma série de ações semelhantes seja executada de forma repetitiva e indefinida. Uma forma de solucionar tal comportamento consiste em expressar os passos repetidos com a delimitação de um limite para essa repetição, por meio de uma condição de parada. 01 Ligue o interruptor. 02 SE a lâmpada não acender, ENTÃO: 02.1 pegue uma escada 02.2 posicione-a embaixo da lâmpada 02.3 busque uma caixa de lâmpadas novas 02.4 suba na escada 02.5 retire a lâmpada velha 19/11/2020 Estácio estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D2338254ABBF19DC3C579057D5F6751F493C453DDA5EC2326A3618B07… 21/26 02.6 coloque a lâmpada nova 02.7 ENQUANTO a lâmpada nova não acender, FAÇA: 02.7.1 retire a lâmpada nova; 02.7.2 coloque outra lâmpada Analisando a linha 2.7, podemos perceber que não existe um limite para a troca de lâmpadas. (Fonte: Creative Mood / Shutterstock) Etapas e desafios na construção de algoritmos Podemos então adotar a seguinte “fórmula” para a construção de algoritmos eficientes: 1 Ler o enunciado do problema. 2 Relacionar as entradas de dados. 3 Relacionar as saídas de dados. 19/11/2020 Estácio estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D2338254ABBF19DC3C579057D5F6751F493C453DDA5EC2326A3618B07… 22/26 4 Determinaro conjunto de ações necessárias para transformar as entradas em saídas. 5 Construir o algoritmo. 6 Executar o algoritmo (“validando”). Exemplo O vencimento do funcionário João Silva é de 8 salários mínimos. Sabe-se que a empresa no mês de maio dá um aumento em torno de 15% aos funcionários. Quanto João passaria a receber com esse aumento? Entradas (E): salário mínimo atual; Saídas (S): salário com aumento; Ações para transformar E→ S: multiplicar o salário por 1.15 para obter 15% de um salário. Depois, multiplicar esse valor por 8 (quantidade de salários recebidos por João). Algoritmo (em pseudocódigo): ALGORITMO DECLARE salario ,novo_salario NUMÉRICO salario = 960,00 novo_salario = (salario * 1,15)*8 ESCREVA “O novo salário de João é: “,novo_salario FIM_ALGORITMO 19/11/2020 Estácio estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D2338254ABBF19DC3C579057D5F6751F493C453DDA5EC2326A3618B07… 23/26 Dentre as dificuldades na construção de um algoritmo, podemos citar: Complexidade Variedade de situações diferentes que um problema pode apresentar; Legibilidade Capacidade de compreensão de um algoritmo; Portabilidade (compatibilidade) Facilidade na implementação (programação) do algoritmo em uma linguagem de programação. Atividade 1. Apresente os passos envolvidos na preparação de um bolo. Reflita sobre as desvantagens dessa abordagem. 19/11/2020 Estácio estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D2338254ABBF19DC3C579057D5F6751F493C453DDA5EC2326A3618B07… 24/26 2. Com base no algoritmo do bolo, poderíamos realizar passos seguindo certas condições e/ou repeti-los? Descreva situações que podem se encaixar nessas estruturas condicionais e de repetição. 3. Carlos olha um retrato, e alguém lhe pergunta: “De quem é este retrato?”. Ele responde: “Eu não tenho nem irmão nem irmã, mas o filho deste homem é o filho de meu pai”. 4. Sabe-se que um dólar no início do ano custava R$ 3,33 e atualmente custa R$ 3,72. Faça um algoritmo (pseudocódigo) que me retorne à variação percentual entre o valor do início do ano e o atual.. 19/11/2020 Estácio estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D2338254ABBF19DC3C579057D5F6751F493C453DDA5EC2326A3618B07… 25/26 Notas Modal descrição narrativa Consiste em analisar o enunciado do problema e escrever, por meio de uma linguagem natural (língua portuguesa), os passos a serem seguidos para a resolução do problema. Vantagem: não é necessário aprender nenhum conceito novo, pois uma língua natural, nesse ponto, já é bem conhecida. Desvantagem: a língua natural abre espaço para várias interpretações, o que posteriormente dificultará a transcrição desse algoritmo para programa. Para melhor entendimento, vamos analisar o primeiro algoritmo (agora modificado e chamado Algoritmo 3). Referências AGUILAR, L. J. Fundamentos de programação: algoritmos, estruturas de dados e objetos. 3. ed. São Paulo: McGraw-Hill, 2008. DE SOUZA, M. A. F. et al. Algoritmos e lógica de programação: um texto introdutório para engenharia. 2. ed. São Paulo: Cengage Learning, 2011. FORBELLONE, A. L. V. Lógica de programação: a construção de algoritmos e estrutura de dados. 3 ed. São Paulo: Pearson Prentice Hall, 2005. FOROUZAN, B.; MOSHARRAF, F. Fundamentos da ciência da computação. São Paulo: Cengage Learning, 2011. 1 19/11/2020 Estácio estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D2338254ABBF19DC3C579057D5F6751F493C453DDA5EC2326A3618B07… 26/26 Próximos Passos Apresentar a estrutura geral de um programa com o apoio da linguagem de programação Python; Analisar as instruções e os tipos de dados mais comuns na linguagem; Dar os primeiros passos para desenvolver algoritmos que permitam manipular dados informados por usuário. Explore mais Assista ao documentário “Entenda o seu mundo {volume 6} – Entendendo o computador”, produzido por History Channel Brasil. Disponível em <https:// www.youtube.com/ watch? v=wTBOhNe8kIM&t=1021s <https://www.youtube.com/watch? v=wTBOhNe8kIM&t=1021s> >. Acesso em 30 jun 2018; Assista ao vídeo “As Regras Secretas da Vida Moderna – Algoritmos”. Disponível em <https:// www.youtube.com/ watch?v=IqNuQDo- P-I <https://www.youtube.com/watch?v=IqNuQDo-P-I> >. Acesso em 30 de jun 2018. https://www.youtube.com/watch?v=wTBOhNe8kIM&t=1021s https://www.youtube.com/watch?v=IqNuQDo-P-I
Compartilhar