Fundamentos de Lógica e Algoritmos Aula 2.3 Introdução a Algoritmos Prof. Dr. Bruno Moreno bruno.moreno@ifrn.edu.br
Fundamentos de Lógica e Algoritmos Aula 2.3 Introdução a Algoritmos Prof. Dr. Bruno Moreno bruno.moreno@ifrn.edu.br
Fundamentos de Lógica e Algoritmos Aula 2.3 Introdução a Algoritmos Prof. Dr. Bruno Moreno bruno.moreno@ifrn.edu.br
Introdução Um algoritmo é um esquema lógico que permite resolver um problema; Pode ser implementado com qualquer sequência de valores ou objetos e de acordo com regras pré-estabelecidas usando um conjunto de códigos Uma linguagem natural: português, inglês, espanhol; Uma notação gráfica: fluxogramas; Uma linguagem de programação: Python, Java, Pascal, C 4
Introdução Exemplo: definir um algoritmo em linguagem natural para o problema acender a luz : Se a luz estiver acesa, o problema já está resolvido. Se a luz não estiver acesa, aperte o botão para ligá-la. Se a lâmpada ligar: o problema resolvido! Senão, veja se a mesma está bem enroscada no bocal. Se a lâmpada estiver perfeitamente enroscada, verifique se a mesma está queimada ou quebrada. Se a lâmpada estiver queimada ou quebrada, compre outra lâmpada. Se a lâmpada não estiver queimada nem quebrada, troque o bocal da lâmpada. Se a lâmpada não estiver bem enroscada no bocal, enrosque-a e aperte o botão para ligá-la. Se a lâmpada ligar, temos o problema resolvido. Se a lâmpada não ligar, troque o bocal da lâmpada. 5
Introdução O algoritmo acender a lâmpada pode ficar mais legível se organizarmos em categorias de comandos : 1. Se a luz estiver acesa, o problema já está resolvido. 2. Se a luz não estiver acesa, aperte o botão para ligá-la. 2.1. Se a lâmpada ligar: o problema resolvido! 2.2. Senão, veja se a mesma está bem enroscada no bocal. 2.3. Se a lâmpada estiver perfeitamente enroscada, verifique se a mesma está queimada ou quebrada. 2.3.1. Se a lâmpada estiver queimada ou quebrada, compre outra lâmpada. 2.3.2. Se a lâmpada não estiver queimada nem quebrada, troque o bocal da lâmpada. 2.4. Se a lâmpada não estiver bem enroscada no bocal, enrosque-a e aperte o botão para ligá-la. 2.4.1. Se a lâmpada ligar, temos o problema resolvido. 2.4.2. Se a lâmpada não ligar, troque o bocal da lâmpada. 6
Introdução O algoritmo acender a lâmpada pode, ainda, ser representado utilizando uma notação gráfica Notação comumente utilizada para isso: fluxogramas; Nessa notação, losangos representam pontos de decisão e retângulos representam estados DECISÃO INSTRUÇÃO / PROCESSAMENTO / ESTADO INÍCIO (PONTO DE PARTIDA) FIM (PONTO DE PARADA) 7
Introdução Fluxograma do algoritmo acender a lâmpada : Enrosque a lâmpada Obtém estado da lâmpada Lâmpada está acesa? NÃO NÃO SIM Troque o bocal Lâmpada bem enroscada? SIM NÃO Lâmpada danificada? SIM Troque a lâmpada 8
Introdução Fluxograma do algoritmo acender a lâmpada : Esse é o único fluxograma correto? NÃO Enrosque a lâmpada RegraObtém básica estado de algoritmos: Lâmpada da lâmpada está acesa? NÃO Lâmpada bem enroscada? Diversos algoritmos podem resolver o mesmo problema; Um algoritmo pode resolver o problema melhor SIM do que SIM outro Resolução melhor: mais rápida, utilizanão menos recursos, Lâmpada Troque o bocal menos informações; danificada? Pessoas diferentes podem implementar algoritmos SIM diferentes; Troque a lâmpada 9
Introdução Utilizamos algoritmos em diversas situações de nossas vidas... 10
Introdução Utilizamos algoritmos em diversas situações de nossas vidas... 11
Introdução Utilizamos algoritmos em diversas situações de nossas vidas... 12
Introdução Um programa de computador é desenvolvido por meio de algoritmos; Para desenvolver um algoritmo que será implementado em um computador precisamos, antes, pensá-lo em nossa própria língua Precisamos montar um esquema mental da lógica que o algoritmo implementará; O esquema mental construído evitará ou diminuirá erros; 13
Introdução Construir uma boa lógica (um bom esquema mental) envolve rabisco de ideias 14
Introdução Para implementar um algoritmo, utiliza-se uma linguagem de programação; Linguagem humana: Se expressão for verdade, acontece isto, senão, aquilo Python if expressao: declarações aqui else: declarações aqui Java if(expressao){ declarações aqui; }else{ declarações aqui; } 15
Níveis de Linguagens Python, Java, C são linguagens consideradas de alto nível É mais fácil programar utilizando-as do que utilizando zeros e uns; Seria muito trabalhoso lidar com dados de computador bit-a-bit (linguagem de máquina); Linguagem binária que representam operações e operandos usados no processamento do programa. 16
Níveis de Linguagens Para um ser humano, a linguagem de máquina é muito difícil de se compreender; Assim, surgiu a linguagem de montagem (assembly) Representada por comandos que reproduz as tarefas que a serem executadas pelo computador; 17
Níveis de Linguagens Com a linguagem de montagem o nível de abstração era maior É mais alto nível: mais próxima da compreensão do programador; Menor complexidade do que linguagem de máquina; O conceito de linguagens de programação surgiu, exatamente, com o objetivo de criar linguagens mais alto nível. 18
Níveis de Linguagens Existem, portanto, linguagens de baixo nível e de alto nível; Linguagens de Baixo Nível: Tratam a informação na linguagem de máquina; Linguagens de Alto Nível: São linguagens mais próximas do entendimento de um ser humano; Precisam ser convertidas para linguagem de máquina. 19
Linguagens de Programação Assim como as linguagens naturais, linguagens de programação possuem sintaxe própria (regras); A sintaxe de cada linguagem deve ser respeitada e aprendida pelo programador que deseja utilizar a linguagem em seus programas; No entanto, não é necessário que o programador aprenda todas as diversas linguagens disponíveis no mercado; Cada linguagem é recomendada para determinadas aplicações; Com o aprendizado de lógica, o aluno entenderá os conceitos básicos da programação e poderá com menor ou maior dificuldade, dependendo da linguagem escolhida, aprender a linguagem que quiser. 20
Algoritmos As linguagens de programação tratam os dados de um computador através do uso de algoritmos; Um algoritmo é uma estruturação passo-apasso de como um determinado problema deve ser resolvido de forma não-ambígua; 21
Algoritmos Um algoritmo pode ser visto como a receita do bolo e o bolo como o programa 22
Algoritmos A lógica que aprendemos até aqui, será utilizada explicitamente e implicitamente para estruturar os algoritmos que construiremos. 23
Algoritmos Antes de estruturar o algoritmo de forma lógica, deve-se saber o que se segue: Qual o tipo de problema proposto; Quais informações serão manipuladas; Quais passos serão efetuados para atingir-se um fim específico. 24
Exemplos de Algoritmos Algoritmo sobre tomar banho : 1. Tirar a roupa 2. Abrir o registro 3. Ensaboar-se 4. Enxaguar o corpo 5. Passar shampoo nos cabelos 6. Enxaguar o cabelo 7. Fechar o registro 25
Representação de Algoritmos Formas de representação mais utilizadas Linguagem Natural ou Descrição Narrativa; Fluxograma; Pseudocódigo. 26
Representação de Algoritmos Formas de representação mais utilizadas Linguagem Natural ou Descrição Narrativa; Fluxograma; Pseudocódigo. 27
Linguagem Natural / Descrição Algoritmo Trocar pneu de carro 1. Afrouxar ligeiramente as porcas; 2. Suspender o carro; 3. Retirar as porcas e o pneu; 4. Colocar o pneu reserva; 5. Apertar as porcas; 6. Abaixar o carro; 7. Dar o aperto final nas porcas. 28
Linguagem Natural / Descrição Algoritmo Calcular média de aluno 1. Obter duas notas do aluno; 2. Realizar a soma das duas notas; 3. Dividir o resultado por dois; 4. Exibir a média do aluno. 29
Representação de Algoritmos Formas de representação mais utilizadas Linguagem Natural ou Descrição Narrativa; Fluxograma; Pseudocódigo. 30
Fluxograma Algoritmo Calcular média de aluno Obter as 2 notas Calcular média Exibir Média 31
Fluxograma Algoritmo Avaliar se aluno está aprovado Obter as 2 notas Aluno aprovado Calcular média SIM Média é maior ou igual a 60? NÃO Exibir Média Aluno reprovado 32
Representação de Algoritmos Formas de representação mais utilizadas Linguagem Natural ou Descrição Narrativa; Fluxograma; Pseudocódigo. 33
Pseudocódigo Forma intermediária entre a linguagem natural e a linguagem de programação de alto nível; Utiliza uma linguagem simples, sendo uma forma genérica de se resolver um problema; O mais conhecido PORTUGOL Nós não aprenderemos portugol em sala de aula, mas sim uma linguagem de programação Python! 34
Algoritmo da Amizade Sheldon Cooper https://www.youtube.com/watch?v=mqd-ozki7cu 35
Algoritmo da Amizade Sheldon Cooper 36
Exercícios Exercícios a serem apresentados (no papel) ao professor na próxima sexta (01/09). 1- Crie a sua versão do Algoritmo da Amizade Esse algoritmo deve ser criado no formato de fluxograma; 2- Crie a sua versão do algoritmo para trocar o pneu do carro Crie a em linguagem narrativa e em fluxograma; 3- Crie um algoritmo que ajuda um aluno a pegar um ônibus Crie a em linguagem narrativa e em fluxograma; 37